三、 實驗內容與實驗過程及分析 (寫出詳細的實驗步驟,并分析實驗結果) 流水燈實驗步驟: 1、I/O 端口的編程 (1)頭文件 對 I/O 端口編程控制時,要對 I/O 端口特殊功能寄存器聲明,在 C51 的編 譯器中,這項聲明包含在頭文件 reg51.h 中,編程時,可通過預處理命令 #include。 《單片機原理及應用》教案 使用移位運算符“>>”、“<<”或移位函數_crol_,把送 P1 口顯示控制數 據進行移位,從而實現發光二極管依次點亮。編程中一定要把含有移位函數的 頭文件 intrins.h 包含在內,編程時,可通過預處理命令#include 。 (2)驅動電路 8 個發光二極管 D0~D7 經限流電阻分別接至 P1 口的 P1.0~P1.7 引腳上, 陽極共同接高電平。 2、軟件延時程序編寫一個延時 1ms 程序。 void delayms( unsigned char int j) { unsigned char i; while(j- -) { for(i=0;i<125;i++) {;} } } 用 for 的內部循環大約延時 8μs,但不是特別精確。不同編譯器會產生不 同延時,因此 i 的上限值 125 應根據實際情況進行補償調整。 - 單片機最小系統 以 AT89S51 為例,AT89S51 內部有 4KB 閃存,本身就是一個數字量輸入/輸 出的最小應用系統。在構建 AT89S51 單片機最小應用系統時,AT89S51 單片機 需要外接時鐘電路和復位電路即可,如圖 1 所示。 注意,本最小應用系統只能作為小型的數字量的測控單元。
圖1 AT89S51單片機構成的最小應用系統 #include
#include void delay() { unsigned char i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); } void main() { P1=0xfe; while(1) { P1=_crol_(P1,1); delay(); } } 電路圖為 
圖2 硬件電路原理圖 實驗成果截圖: 
圖3實驗結果展示 矩陣鍵盤實驗步驟: - 判別是否有鍵按下,識別哪一個鍵被按下,并求出相應的鍵值。根據鍵值,找到相應鍵值處理程序入口。
- 按鍵閉合與否,反應在行線輸出電壓上就是高電平或低電平,對行線電平高低狀態檢測,便可確認按鍵是否按下與松開。為了確保單片機對一次按鍵動作只確認一次按鍵有效,必須消除抖動期t1和t3的影響。
- 在檢測到有鍵按下時,該鍵所對應的行線為低電平,執行一段延時10ms的子程序后,確認該行線電平是否仍為低電平,如果仍為低電平,則確認該行確實有鍵按下。當按鍵松開時,行線的低電平變為高電平,執行一段延時10ms的子程序后,檢測該行線為高電平,說明按鍵確實已經松開。如圖3和圖4所示
- 數碼管顯示由P0口控制,當4×4矩陣鍵盤中的某一按鍵按下時,數碼管上顯示對應鍵號。例如,1號鍵按下時,數碼管顯示“1”;12鍵按下時,數碼管顯示“12”等
- 如果串行通信選用很低波特率(如波特率選為55),可將定時器T1設置
實驗代碼截圖: 圖4矩陣代碼截圖 實驗結果圖:
圖5 矩陣鍵盤按鍵結果 電路圖: 
圖6 硬件電路圖 四、實驗總結(每項不少于20字)存在問題:1.一開始對于_crol_不是很理解,對于單片機的一些電路圖不知道如何去畫。 - 數碼管的位選和段選操作不夠熟練,對矩陣鍵盤的行列掃描不夠熟練,通過數碼管的顯示來體現矩陣鍵盤的掃描。
- 開發板的原理圖明曉,導致代碼出現錯誤,
解決方法:查看課本溫習移位的理解,進一步敲好代碼,對于電路圖我選擇反復看視頻去了解每一個實驗的器件。 收獲:懂得如何運用_crol_和_cror_左移和右移,以及本次實驗應該挑選的實驗器材,以及延時函數、主函數這些的相關重點。對矩陣鍵盤的原理理解加深,學會了通過按鍵控制數碼管的值變化。
以上的Word格式文檔51黑下載地址:
文檔.doc
(882.8 KB, 下載次數: 4)
2020-12-29 16:06 上傳
點擊文件名下載附件
實驗報告
|