實驗二中斷顯示控制 單片機控制led燈亮和滅,led燈初始狀態從左到右兩個燈間隔一個燈循環亮滅,然后從右到左循環亮滅,,當按下按鍵,led燈全亮,然后全滅。然后再恢復循環。 二、實驗過程 (一)實驗項目的方案分析 1.設計原理 STC12C5A60S2單片機內部包括微處理器、存儲器(存放程序指令或數據的ROM、RAM等)、輸入/輸出口(I/O口)及其他功能部件如定時/計數器、中斷系統等。它們通過地址總線、數據總線和控制總線連接起來。 本實驗充分利用了8051芯片的I/O引腳。系統已采用STC12C5A60S2系列單片機為中心器件來設計數碼管顯示系統,實現數碼管循環顯示。 2.器件配置清單 表1器件配置表
(二)實驗項目的硬件電路設計 通過Proteus仿真電路軟件搭建電路,電路圖如圖所示。
圖1硬件設計圖 (三)實驗項目的程序設計 1、C51程序編寫
2、keil軟件調試截圖 通過Keil軟件進行C51控制程序的編寫,通過不斷調試修改,最終的調試好的Keil 程序截圖如圖2所示。 
圖2調試無措的Keil程序 (四)實驗項目的虛擬仿真 打開Keil C軟件將上面程序輸入,調試無誤后編譯輸出".hex"文件,打開Proteus軟件,將之前編譯好的".hex"文件加入到芯片中,開始運行仿真。
(五)實驗項目的實際驗證電路及驗證結果 將單片機C51程序編譯無誤后,生成HEX文件,通過STC-ISP下載到單片機中,下載的軟件界面如圖4所示,搭建的實際電路如圖5所示。 
圖4下載HEX文件到單片機
圖5面包板搭建的實際電路
以下為實際效果的截圖:
總結: 感覺中斷程序比前兩個程序流水燈以及數碼管顯示要難一些,寫程序過程中遇到當按下按鍵,led亮7個,有一個沒亮,檢查發現是寫錯了。改正后又有一些其他問題,在經過反復改正后,終于完成了。
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define LED P0
- sbit key=P3^2;
- uint i;
- void delay_1ms(uint t)
- {
- uint i;
- while(t--)
- for(i=0;i<120;i++);
- }
- main()
- {
- EA=1;
- EX0=1;
- IT0=1;
- while(1)
- {
- LED=0xfa;
- for(i=0;i<5;i++)
- {
- delay_1ms(1000);
- LED=(LED<<1)|0x01;
- }
- for(i=0;i<5;i++)
- {
- delay_1ms(1000);
- LED=(LED>>1)|0x80;
- }
- }
- }
- void EX_INT0() interrupt 0
- { P1=0X00;
- delay_1ms(1000);
- P1=0XFF;
- }
復制代碼
完整的Word格式文檔51黑下載地址:
外部中斷說明書.doc
(1.21 MB, 下載次數: 15)
2019-1-12 21:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|