一、設計要求及目的 【實驗目的】 熟悉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
|