一、設計要求及目的
【實驗目的】
熟悉51單片機的基本輸入/輸出應用,掌握Proteus ISIS模塊的原理圖繪圖方法及單片機系統仿真運行方法。
【實驗內容】
(1)觀察Proteus ISIS模塊的軟件結構,熟悉菜單欄、工具欄、對話框等基本單元功能;
(2)學會選擇元件、畫導線、畫總線、修改屬性等基本操作;
(3)學會可執行文件加載及程序仿真運行方法;
(4)驗證計數顯示器的功能;
(5)實現跑馬燈的循環閃爍。
【實驗步驟】
(1)提前閱讀與實驗1相關的閱讀材料;
(2)參考圖A.1和表A.1,在ISIS中完成電路原理圖的繪制;
(3)加載可執行文件,觀察仿真結果,檢查電路圖繪制的正確性。
二、實驗環境
Win7系統,Proteus ISIS 7 Professional,Keil uVision4
三、元器件列表
四、實驗原理
實驗電路原理圖如圖A.1所示,圖中含有如下6個分支電路:由共陰極數碼管LED1和LED2、P0口、P2口、上拉電阻RP1以及Vcc組成的LED輸出電路,以及外接在P3口的八只低電平驅動的發光二極管組成二極管輸出電路;由按鈕開關BUT、P3.2和接地點組成的計數輸入電路.
在編程軟件的配合下,該電路可實現如下計數顯示功能:可統計按鈕BUT的按壓次數,并將按壓結果以十進制數形式顯示出來;當顯示值達到99后可自動從1開始,無限循環。在程序內, LED燈一直循環閃爍,按動按鈕BUT后下降沿觸發0號中斷,啟動計數,并輸出數字。
圖片1.png (2.16 MB, 下載次數: 70)
下載附件
實驗原理
2019-12-11 19:14 上傳
五、實驗源代碼
#include<reg51.h>
unsigned char table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char dis[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char count=0;
void delay(unsigned int time){
unsigned int j = 0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
key0() interrupt 0 {
count++;
if(count==100)
count==1;
P0=table[count/10];
P2=table[count%10];
}
void display_mode(){
P1 = 0x00;
delay(500);
P1 = 0xff;
delay(500);
P1 = 0x00;
delay(500);
P1 = 0XFF;
delay(500);
}
void main(void){
unsigned int i = 0;
P0 = 0x3f;
P2 = 0x3f;
EA = 1;
EX0 = 1;
IT0 = 1;
display_mode();
while(1){
P1 = dis[ i];
delay(500);
i++;
if(i == 8)
i=0;
}
}
六、實驗結果
圖片2.png (2.06 MB, 下載次數: 55)
下載附件
實驗結果
2019-12-11 19:13 上傳
計時器與跑馬燈.rar
(15.77 KB, 下載次數: 43)
2019-12-11 19:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5