電子/微電子專業 《單片機與嵌入式系統》 課程設計指導書 電子科學與技術系
目錄----課程設計題目
題目1. 智能電子鐘 題目2. 電子時鐘 題目3. 定時鬧鐘 題目4. 音樂倒數計數器 題目5. 數字溫度計 題目6. 十字路口交通燈控制 題目7. 波形發生器 題目8. 8位競賽搶答器的設計 題目9. 單詞記憶測試器程序設計 題目10. 數字電壓表設計 題目11. 雙機之間的串行通信設計 題目12. 電子琴設計 題目13. 數字音樂盒的設計 課程設計要求: 1、參考所用的單片機實驗板用Proteus設計所做項目的電路原理圖和PCB圖等。采用Keil C51或A51編程,在Proteus中實現軟件仿真,題目中的Proteus原理圖只作為參考的示意圖。 2、在單片機實驗板上進行硬件調試和運行,也可以采用芯片的開發板,如STM32等來完成課程設計。 3、撰寫實驗報告。
1. 設計要求 以51單片機為核心,制作一個LCD顯示的智能電子鐘: (1) 計時:秒、分、時、天、周、月、年。 (2) 閏年自動判別。 (3) 五路定時輸出,可任意關斷(最大可到16路)。 (4) 時間、月、日交替顯示。 (5) 自定任意時刻自動開/關屏。 (6) 計時精度:誤差≤1秒/月(具有微調設置)。 (7) 鍵盤采用動態掃描方式查詢。所有的查詢、設置功能均由功能鍵K1、K2完成。 2. 工作原理 設計采用市場上流行的時鐘芯片DS1302進行制作。DS1302是DALLAS公司推出的涓流充電時鐘芯片,內含一個實時時鐘/日歷和31字節靜態RAM,可以通過串行接口與計算機進行通信,使得管腳數量減少。實時時鐘/日歷電路能夠計算2100年之前的秒、分、時、日、星期、月、年的,具有閏年調整的能力。 DS1302時鐘芯片的主要功能特性: (1) 能計算2100年之前的年、月、日、星期、時、分、秒的信息;每月的天數和閏年的天數可自動調整;時鐘可設置為24或12小時格式。 (2) 31B的8位暫存數據存儲RAM。 (3) 串行I/O口方式使得引腳數量最少。 (4) DS1302與單片機之間能簡單地采用同步串行的方式進行通信,僅需3根線。 (5) 寬范圍工作電壓2.0-5.5V。 (6) 工作電流為2.0A時,小于300nA。 (7) 功耗很低,保持數據和時鐘信息時功率小于1mW。 3. 電路設計(Proteus軟件仿真通過) 
4. Proteus仿真 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-1.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 仿真如圖所示,其中,浮動窗口中顯示的為DS1302當前時鐘狀態:  
1. 設計要求 以AT89C51單片機為核心的時鐘,在LCD顯示器上顯示當前的時間: 使用字符型LCD顯示器顯示當前時間。 顯示格式為“時時:分分:秒秒”。 用4個功能鍵操作來設置當前時間。功能鍵K1~K4功能如下。 K1—進入設置現在的時間。 K2—設置小時。 K3—設置分鐘。 K4—確認完成設置。 程序執行后工作指示燈LED閃動,表示程序開始執行,LCD顯示“00:00:00”,然后開始計時。 2. 實驗原理 題目難點在于鍵盤的指令輸入,由于每個按鍵都具有相應的一種或多種功能,程序中需要大量使用do{}while或while{}循環結構,以檢測是否有按鍵按下。按鍵檢測函數的詳解如下(略) 3. 參考電路(Proteus軟件仿真通過) 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-2.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真,按下按鍵1后,可發現LED停止閃爍,即時鐘停止走時,時鐘停在當前時刻,按下按鍵2和按鍵3后,可改變時間,按下按鍵4后,時鐘復位到修改后的時間,時鐘重新開始運轉,如下圖所示。 
1. 設計要求 使用AT89C51單片機結合字符型LCD顯示器設計一個簡易的定時鬧鐘LCD時鐘,若LCD選擇有背光顯示的模塊,在夜晚或黑暗的場合中也可使用。 定時鬧鐘的基本功能如下: 顯示格式為“時時:分分”。 由LED閃動來做秒計數表示。 一旦時間到則發出聲響,同時繼電器啟動,可以擴充控制家電開啟和關閉。 程序執行后工作指示燈LED閃動,表示程序開始執行,LCD顯示“00:00”,按下操作鍵K1~K4動作如下: (1) K1—設置現在的時間。 (2) K2—顯示鬧鐘設置的時間。 (3) K3—設置鬧鈴的時間。 (4) K4—鬧鈴ON/OFF的狀態設置,設置為ON時連續三次發出“嘩”的一聲,設置為OFF發出“嘩”的一聲。 設置當前時間或鬧鈴時間如下。 (1) K1—時調整。 (2) K2—分調整。 (3) K3—設置完成。 (4) K4—鬧鈴時間到時,發出一陣聲響,按下本鍵可以停止聲響。 本項目的難點在于4個按鍵每個都具有兩個功能,以最終實現菜單化的輸入功能。通過逐層嵌套的循環掃描,實現嵌套式的鍵盤輸入。以對小時的設置的流程為例,其流程如下圖。 
2. 參考電路(Proteus軟件仿真通過) 
3. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-3.hex”;在“Clock Frequency”欄中輸入晶振頻率為12MHz。 啟動仿真,下圖為按下“開始”按鍵后的情況,在按下前,數碼管無顯示。期間如果按下“復位”按鍵,則LED顯示歸零,走時停止。 
1. 設計要求 利用AT89C51單片機結合字符型LCD顯示器設計一個簡易的倒數計數器,可用來煮方便面、煮開水或小睡片刻等。做一小段時間倒計數,當倒計數為0時,則發出一段音樂聲響,通知倒計數終了,該做應當做的事。 定時鬧鐘的基本功能如下。 字符型LCD(16?2)顯示器。 顯示格式為“TIME 分分:秒秒”。 用4個按鍵操作來設置當前想要倒計數的時間。一旦按下鍵則開始倒計數,當計數為0時,發出一陣音樂聲。 程序執行后工作指示燈LED閃動,表示程序開始執行,按下操作鍵K1~K4動作如下。 K1—可調整倒計數的時間1~60分鐘。 K2—設置倒計數的時間為5分鐘,顯示“0500”。 K3—設置倒計數的時間為10分鐘,顯示“1000”。 K4—設置倒計數的時間為20分鐘,顯示“2000”。 復位后LCD的畫面應能顯示倒計時的分鐘和秒數,此時按K1鍵, 在此基礎上,可將樂曲的簡譜轉化為單片機可以“識別”的“數組譜”,進一步加入對音長、休止符等的控制量后,可以實現音樂的播放。 3.電路設計(Proteus仿真通過) 本題目制作的帶有LCD顯示的音樂倒數計數器電路原理圖,如下頁圖所示。 4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-5.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖所示,當鬧鐘到達時,可以聽見蜂鳴器演奏的樂曲。再次提示,本題目必須選用蜂鳴器SOUNDER,否則不能發出聲音。
1. 設計要求 采用數字溫度傳感器DS18B20與單片機結合來測量溫度。利用數字溫度傳感器DS18B20測量溫度信號,計算后在LED數碼管上顯示相應的溫度值。其溫度測量范圍為?55℃~125℃,精確到0.5℃。數字溫度計所測量的溫度采用數字顯示,控制器使用單片機AT89C51,測溫傳感器使用DS18B20,用3位共陽極LED數碼管以串口傳送數據,實現溫度顯示。 2. 實驗原理 從溫度傳感器DS18B20可以很容易直接讀取被測溫度值,進行轉換即滿足設計要求。 DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9~12位的數字讀數方式。 DS18B20的性能如下: 獨特的單線接口僅需要一個端口引腳進行通信。多個DS18B20可以并聯在串行傳輸的數據線上,實現多點組網功能。無須外部器件。 3.電路設計(Proteus仿真通過) 本項目制作的數字溫度計電路原理圖,如下所示: 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-6.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖所示,其中,DS18B20窗口顯示的為當前環境溫度,若調整DS18B20旁邊的箭頭,可改變環境溫度,可以看到LED顯示屏上的溫度值發生相應的變化。 
1. 設計要求 設計一個十字路口交通燈控制器。用單片機控制LED燈模擬指示。模擬東西方向的十字路口交通信號控制情況。東西向通行時間為80s,南北向通行時間為60s,緩沖時間為3s。 2. 實驗原理 本項目為典型的LED顯示和中斷定時電路。利用定時器T0產生每10ms一次的中斷,每100次中斷為1s。對兩個方向分別顯示紅、綠、黃燈,已經相應的剩余時間即可。值得注意的是,需要意識到,A方向紅燈時間=B方向綠燈時間+黃燈緩沖時間這一常識。 本項目使用的MAX7219芯片使用方法請自行查詢。 3.電路設計(Proteus仿真通過) 本項目制作的十字路口交通燈控制電路原理圖,如下圖: 
1. 設計要求 設計一個能產生正弦波、方波、三角波、梯形波、鋸齒波的波形發生器。 2. 實驗原理 產生指定波形可以通過DAC來實現,不同波形產生實質上是對輸出的二進制數字量進行相應改變來實現的。本題目中,方波信號是利用定時器中斷產生的,每次中斷時,將輸出的信號按位反即可;三角波信號是將輸出的二進制數字信號依次加1,達到0xff時依次減1,并實時將數字信號經D/A轉換得到;鋸齒波信號是將輸出的二進制數字信號依次加1,達到0xff時置為0x00,并實時將數字信號經D/A轉換得到的; 梯形波是將輸出的二進制數字信號依次加1,達到0xff時保持一段時間,然后依次減1直至0x00,并實時將數字信號經D/A轉換得到的; 正弦波是利用MATLAB將正弦曲線均勻取樣后,得到等間隔時刻的y方向上的二進制數值,然后依次輸出后經D/A轉換得到。 3.電路設計(Proteus仿真通過) 本波形發生器的設計電路原理圖,如下圖所示: 
1.設計要求 以單片機為核心,設計一個8位競賽搶答器:同時供8名選手或8個代表隊比賽,分別用8個按鈕S0~S7表示。可簡化為4位。 設置一個系統清除和搶答控制開關S,開關由主持人控制。 搶答器具有鎖存與顯示功能。即選手按按鈕,鎖存相應的編號,并在優先搶答選手的編號一直保持到主持人將系統清除為止。 搶答器具有定時搶答功能,且一次搶答的時間由主持人設定(如30秒)。 當主持人啟動“開始”鍵后,定時器進行減計時,同時揚聲器發出短暫的聲響,聲響持續的時間為0.5s左右。 參賽選手在設定的時間內進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統清除為止。 如果定時時間已到,無人搶答,本次搶答無效,系統報警并禁止搶答,定時顯示器上顯示00。 2. 實驗原理 通過鍵盤改變搶答的時間,原理與鬧鐘時間的設定相同,將定時時間的變量置為全局變量后,通過鍵盤掃描程序使每按下一次按鍵,時間加1(超過30時置0)。同時單片機不斷進行按鍵掃描,當參賽選手的按鍵按下時,用于產生時鐘信號的定時計數器停止計數,同時將選手編號(按鍵號)和搶答時間分別顯示在LED上。 3. 電路設計(Proteus仿真通過) 8位競賽搶答器的設計電路原理圖,如下圖所示: 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-19.hex”;在“Clock Frequency”欄中輸入晶振頻率為12MHz。仿真:單擊按鈕,啟動仿真,結果如下圖所示: 
1. 設計要求 設計一個以單片機為核心的單詞記憶測試器: ?實現單詞的錄入(為使程序具有可演示性,單詞不少于10個)。 ?單詞用按鍵控制依次在屏幕上顯示,按鍵選擇認識還是不認識,也可以直接進入下一個或者上一個。 ?單詞背完后給出正確率。 2. 實驗原理 本題目實質上是一個具有一定復雜程度鍵盤掃描程序,可將單詞存儲在一個二維數組中,按“確定”鍵開始程序后,次顯示0行的數組,即第一個單詞。之后按下“向上”按鍵,顯示上一行數組,即上一個單詞; 按下“向下”按鍵,顯示下一行數組,即下一個單詞。當顯示的行數超過9時,程序結束,并通過按“確認”的次數,計算出正確率。 3.電路設計(Proteus仿真通過) 本項目制作的單詞記憶測試器程序設計電路如下圖所示。 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-18.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖 (a)-(c)所示: 
圖(a) 單詞記憶測試器程序設計啟動界面仿真效果圖 
圖(b) 單詞記憶測試器程序設計測試界面仿真效果圖

圖(c) 單詞記憶測試器程序設計正確率顯示界面仿真效果
1. 設計要求 以單片機為核心,設計一個數字電壓表。采用中斷方式,對2路0~5V的模擬電壓進行循環采集,采集的數據送LED顯示,并存入內存。超過界限時指示燈閃爍。 2. 實驗原理 本題目本質上是以單片機為控制器,ADC0809為ADC器件的AD轉換電路,設計要求的電壓顯示,是對ADC采集所得信號的進一步處理。 為得到可讀的電壓值,需根據ADC的原理,對采集所得的信號進行計算,并顯示在LED上。本項目中ADC0809的參考電壓為+5V,根據定義,采集所得的二進制信號addata所指代的電壓值為:
而若將其顯示到小數點后兩位,不考慮小數點的存在(將其乘以100),其計算的數值為: 
將小數點顯示在第二位數碼管上,即為實際的電壓。 本示例程序將1.25 V和2.5 V作為兩路輸入的報警值,反映在二進制數字上,分別為0x40和0x80。當AD結果超過這一數值時,將會出現二極管閃爍和蜂鳴器發聲。 3. 電路設計(Proteus仿真通過) 本單片機數字電壓表電路原理圖,如下圖所示: 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“xxxxx.hex";在“Clock Frequency”欄中輸入晶振頻率為12MHz。ADC0809的時鐘信號設置為640kHz。 啟動仿真,如下圖所示,當調節滑動變阻器時,可觀察到顯示的電壓發生變化,且兩路輸入電壓的測算值交替顯示.。當任一路電壓輸入超過預設值時,LED顯示器閃爍,蜂鳴器發聲。由于8位AD芯片精度有限,其誤差大約在幾十mV左右。 
1. 設計要求 兩片單片機利用串行口進行串行通信:串行通信的波特率可從鍵盤進行設定,可選的波特率為1200、2400、4800和9600bit/s。串行口工作方式為方式1的全雙工串行通信。 2. 實驗原理 兩個單片機之間進行通訊波特率的設定,最終歸結到對定時計數器T1計數初值TH1、TL1進行設定。故本題目本質上是通過鍵盤掃描得到設定的波特率,從而載入相應的T1計數初值TH1、TL1實現的。示例程序中將0xaa從主機傳輸到從機,并顯示在從機的數碼管上實現串口通訊的驗證。 如串口通訊線路過長,可考慮采用MAX232進行電平轉換,以延長傳輸距離。值得注意的是,為了減少計算載入初值時的誤差,本項目最好采取11.0592MHz的晶振。 3. 電路設計(Proteus仿真通過) 兩個單片機之間的串行通信接口設計電路原理圖,如下圖所示: 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“master.hex”或"slave.hex";在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖所示,當二極管間隔點亮時,表明通訊成功: 
1. 設計要求 設計一個電子琴。利用所給鍵盤的1,2,3,4,5,6,7,8八個鍵,能夠發出8個不同的音調,并且要求按下按鍵發聲,松開延時一段時間停止,中間再按別的鍵則發另一音調的聲音。 2. 實驗原理 當系統掃描到鍵盤上有鍵被按下,則快速檢測出是哪一個鍵被按下,然后單片機的定時器被啟動,發出一定頻率的脈沖,該頻率的脈沖輸入到蜂鳴器后,就會發出相應的音調。 如果在前一個按下的鍵發聲的同時有另一個鍵被按下,則啟用中斷系統,前面鍵的發音停止,轉到后按的鍵的發音程序,發出后按的鍵的音調。關于發聲原理,參見題目5。 3. 電路設計(Proteus仿真通過) 本電子琴設計電路原理圖,如下圖所示: 
4. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-23.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖所示,依次按下各按鍵可聽見不同的音階: 
1. 設計要求 以單片機為核心,設計一個數字音樂盒: 利用I/O口產生一定頻率的方波,驅動蜂鳴器,發出不同的音調,從而演奏樂曲(最少3首樂曲,每首不少于30s)。 采用LCD顯示信息。 a. 開機時有英文歡迎提示字符,播放時顯示歌曲序號(或名稱)。 b. 可通過功能鍵選擇樂曲、暫停、播放。 2. 電路設計(Proteus仿真通過) 本數字音樂盒的電路設計原理圖,如下圖所示。 
3. Proteus仿真 加載目標代碼文件 打開元器件單片機屬性窗口,在“Program File”欄中添加上面編譯好的目標代碼文件“keil-24.hex”;在“Clock Frequency”欄中輸入晶振頻率為11.0592MHz。 啟動仿真如下圖所示,其中,液晶顯示器顯示的為當前樂曲等信息,同時可聽見音樂的播放聲 
數字音樂盒的設計仿真液晶顯示效果圖
完整的Word格式文檔51黑下載地址:
單片機與嵌入式系統_課程設計指導書.doc
(786 KB, 下載次數: 23)
2019-1-4 21:19 上傳
點擊文件名下載附件
|