【實(shí)驗(yàn)?zāi)康摹?/div>
熟悉51單片機(jī)的基本輸入/輸出應(yīng)用,掌握Proteus ISIS模塊的原理圖繪圖方法及單片機(jī)系統(tǒng)仿真運(yùn)行方法。
【實(shí)驗(yàn)內(nèi)容】
(1)觀察Proteus ISIS模塊的軟件結(jié)構(gòu),熟悉菜單欄、工具欄、對話框等基本單元功能;
(2)學(xué)會(huì)選擇元件、畫導(dǎo)線、畫總線、修改屬性等基本操作;
(3)學(xué)會(huì)可執(zhí)行文件加載及程序仿真運(yùn)行方法;
(4)驗(yàn)證計(jì)數(shù)顯示器的功能;
(5)實(shí)現(xiàn)跑馬燈的循環(huán)閃爍。
【實(shí)驗(yàn)步驟】
(1)提前閱讀與實(shí)驗(yàn)1相關(guān)的閱讀材料;
(2)參考圖A.1和表A.1,在ISIS中完成電路原理圖的繪制;
(3)加載可執(zhí)行文件,觀察仿真結(jié)果,檢查電路圖繪制的正確性。
二、實(shí)驗(yàn)環(huán)境
Win7系統(tǒng),Proteus ISIS 7 Professional,Keil uVision4
三、元器件列表
四、實(shí)驗(yàn)原理
實(shí)驗(yàn)電路原理圖如圖A.1所示,圖中含有如下6個(gè)分支電路:由共陰極數(shù)碼管LED1和LED2、P0口、P2口、上拉電阻RP1以及Vcc組成的LED輸出電路,以及外接在P3口的八只低電平驅(qū)動(dòng)的發(fā)光二極管組成二極管輸出電路;由按鈕開關(guān)BUT、P3.2和接地點(diǎn)組成的計(jì)數(shù)輸入電路.
在編程軟件的配合下,該電路可實(shí)現(xiàn)如下計(jì)數(shù)顯示功能:可統(tǒng)計(jì)按鈕BUT的按壓次數(shù),并將按壓結(jié)果以十進(jìn)制數(shù)形式顯示出來;當(dāng)顯示值達(dá)到99后可自動(dòng)從1開始,無限循環(huán)。在程序內(nèi), LED燈一直循環(huán)閃爍,按動(dòng)按鈕BUT后下降沿觸發(fā)0號(hào)中斷,啟動(dòng)計(jì)數(shù),并輸出數(shù)字。
圖片1.png (2.16 MB, 下載次數(shù): 70)
下載附件
實(shí)驗(yàn)原理
2019-12-11 19:14 上傳
五、實(shí)驗(yàn)源代碼
#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;
}
}
六、實(shí)驗(yàn)結(jié)果
圖片2.png (2.06 MB, 下載次數(shù): 55)
下載附件
實(shí)驗(yàn)結(jié)果
2019-12-11 19:13 上傳