本專案為微處理機系統設計課程的實驗集合,使用ARM Cortex-M0微控制器(NUC100系列)實作各種嵌入式系統應用。專案包含9個主要實驗,涵蓋從基礎的組合語言程式設計到複雜的遊戲開發和硬體整合應用。
- 掌握ARM組合語言程式設計
- 學習GPIO控制和硬體介面設計
- 實作七段顯示器和LCD顯示控制
- 了解按鍵掃描和防彈跳技術
- 學習隨機數產生和密碼系統設計
- 掌握交通號誌控制系統實作
- 學習外部中斷和ADC類比輸入處理
- 理解遊戲開發和碰撞檢測技術
- 掌握Timer中斷和硬體掃描技術
- 培養嵌入式系統整合能力
- 微控制器: NUC100系列(ARM Cortex-M0核心)
- 開發板: Nu-LB-NUC140開發板
- 開發環境: Keil MDK-ARM
- 主要週邊設備:
- 3x3按鍵矩陣
- 七段顯示器(4位數)
- LCD顯示器
- LED陣列
- 蜂鳴器
- RGB LED
檔案: Lab-1/
- Q1.s: 陣列元素平方和計算
- Q2.s: 日期比較程式
- Q3.s: 反向乘積計算
- 技術重點: Thumb-1指令集、暫存器操作、迴圈控制
檔案: Lab-2/
- Q1.c: 靜態LED顯示模式
- Q2.c: 動態LED跑馬燈效果
- 技術重點: GPIO設定、按鍵掃描、LED控制、延遲函數
檔案: Lab-3/
- Q1.c: 按鍵觸發蜂鳴器和LED顯示
- Q2.c: HOLA文字滾動顯示
- 技術重點: 蜂鳴器控制、七段顯示器多工、按鍵防彈跳
檔案: Lab-4/
- Q1.c: 隨機數產生與餘數計算
- Q2.c: 交通號誌控制系統
- 技術重點: 隨機數產生、狀態機設計、倒數計時
檔案: Lab-5/
- 5.1/Q1.c: 4位數密碼鎖系統
- 5.1/Seven_Segment.c: 七段顯示器控制函數庫
- 5.2/Q2.c: 數值顯示與位元操作系統
- 5.2/Seven_Segment.c: 支援負號的七段顯示器控制
- 技術重點: 熵累積、密碼驗證、位元操作、多種顯示模式
檔案: Lab-6/
- Q1.c: 數字選擇與求和系統
- Q2.c: 交通號誌控制與LCD顯示
- 技術重點: LCD控制、狀態管理、使用者介面設計
檔案: Lab-7/
- Q1.c: 單向移動球體系統
- Q2.c: 彈跳球體與目標方塊碰撞遊戲
- 技術重點: LCD圖形繪圖、動畫控制、AABB碰撞檢測、狀態機設計
檔案: Lab-8/
- Q1.c: 數字競賽遊戲(外部中斷控制)
- Q1_LanceVer.c: 數字競賽遊戲(Lance版本)
- Q2.c: 打磚塊遊戲(ADC控制擋板)
- 技術重點: 外部中斷處理、ADC類比輸入、碰撞檢測、狀態機設計、2D繪圖
檔案: Lab-9/
- Q1.c: 基礎貪食蛇遊戲(固定長度)
- Q2.c: 完整貪食蛇遊戲(吃水果版本,軟體掃描七段顯示器)
- Q2-final.c: 完整貪食蛇遊戲(Timer中斷版本,硬體掃描七段顯示器)
- 技術重點: ADC搖桿控制、遊戲邏輯設計、碰撞檢測、動態資料結構、七段顯示器多工掃描、Timer中斷處理
- PA0,1,2,3,4,5: 3x3按鍵矩陣
- PC4,5,6,7: 七段顯示器位選
- PE0-7: 七段顯示器段選
- LCD: SPI/I2C連接
- PC12,13,14,15: LED陣列(Lab 2, 3, 5, 8)
- PB11: 蜂鳴器(Lab 3, 5, 7, 8)
- PA12,13,14: RGB LED(Lab 4, 6)
- PB15: 外部中斷按鈕(Lab 8)
- PA7: ADC可變電阻(Lab 8)
- PA0,1: ADC搖桿輸入(Lab 9)
- PC0: 重置按鈕(Lab 9)
| 按鍵 | 功能 | 適用實驗 |
|---|---|---|
| 1-6 | 數字輸入 | Lab 3, 4, 5, 6 |
| 7 | 特殊功能1 | Lab 3, 4, 5, 6 |
| 8 | 特殊功能2 | Lab 3, 4, 5, 6 |
| 9 | 確認/特殊功能3 | Lab 3, 4, 5, 6 |
- Lab 2: LED模式切換
- Lab 3: 蜂鳴器觸發、HOLA滾動控制
- Lab 4: 隨機數產生、交通號誌控制
- Lab 5: 密碼輸入、位元操作、顯示模式切換
- Lab 6: 數字選擇、交通號誌控制
- Lab 7: 球體動畫、碰撞遊戲
- Lab 8: 數字競賽、打磚塊遊戲
- Lab 9: 貪食蛇遊戲(搖桿控制)
- ARM Thumb-1指令集
- 暫存器操作(R0-R7)
- 記憶體存取和陣列處理
- 迴圈和條件分支
- 輸入/輸出模式設定
- 按鍵掃描和防彈跳
- LED控制和PWM應用
- 硬體中斷處理
- 七段顯示器多工掃描
- LCD文字和圖形顯示
- 動態效果實作
- 顯示緩衝區管理
- 多週邊設備協調
- 狀態機設計
- 時序控制
- 使用者介面設計
- GPIO外部中斷
- ADC中斷處理
- Timer中斷應用
- 中斷優先權管理
- 遊戲邏輯設計
- 碰撞檢測演算法
- 動畫和畫面更新
- 使用者輸入處理
系統初始化
├── GPIO設定
├── 週邊設備初始化
├── 變數初始化
└── 主程式迴圈
├── 按鍵掃描
├── 狀態處理
├── 顯示更新
└── 延遲控制
- 初始化狀態: 系統啟動和硬體設定
- 等待狀態: 等待使用者輸入
- 處理狀態: 執行特定功能
- 顯示狀態: 更新輸出設備
- 錯誤狀態: 處理異常情況
- 添加更多LED效果
- 整合感測器輸入
- 實作無線通訊
- 增加音效功能
- 實作更複雜的演算法
- 添加資料記錄功能
- 整合網路通訊
- 實作圖形使用者介面
- 多微控制器協作
- 即時作業系統整合
- 電源管理優化
- 故障診斷功能
- 電源供應: 確保穩定的電源供應
- 接地: 正確的接地連接
- 電流限制: 注意LED和蜂鳴器的電流消耗
- 連接穩定性: 確保所有連接牢固
- 記憶體管理: 注意堆疊和堆積的使用
- 時序控制: 適當的延遲和時序控制
- 錯誤處理: 實作適當的錯誤處理機制
- 程式碼優化: 考慮執行效率和記憶體使用
- 版本控制: 使用Git進行版本管理
- 程式碼註釋: 保持程式碼的可讀性
- 測試驗證: 充分測試所有功能
- 文件維護: 保持文件的更新
- ARM Cortex-M0 微控制器手冊
- 嵌入式系統設計原理
- C語言程式設計
- 組合語言程式設計
- ARM官方文件
- NUC100系列技術手冊
- Keil MDK-ARM使用指南
- 嵌入式系統開發論壇
- 硬體除錯方法
- 軟體測試策略
- 效能優化技巧
- 系統整合經驗
- v1.0: 初始版本,包含基礎實驗(Lab 1-6)
- v1.1: 添加詳細註釋和說明文件
- v1.2: 優化程式碼結構和效能
- v1.3: 增加擴展應用和進階功能
- v1.4: 新增Lab 7-9,包含遊戲開發和中斷處理技術
- Albert W. #7
- Lance L.
- Andy C.
- Jim C.
- Ruxiu C.
- Hank Y.
- fyljm123
- Email: damnm3@googlegroups.com
- 專案網址: [GitHub Repository]
- 問題回報: [Issues Page]
- 討論區: [Discussions Page]
本專案採用 MIT 授權條款,詳見 LICENSE 檔案。
最後更新: 2025年
版本: 1.3
狀態: 持續開發中