|
1. 實(shí)驗(yàn)?zāi)康?br />
熟悉 Proteus 仿真軟件,掌握單片機(jī)原理圖的繪圖方法;熟悉 uVision3 編
譯軟件,掌握 C51 編程與調(diào)試方法。
2. 實(shí)驗(yàn)內(nèi)容
(1)熟悉 Proteus 軟件,了解軟件的結(jié)構(gòu)組成與功能;
(2)熟悉 uVision3 編譯軟件,了解軟件的結(jié)構(gòu)組成與功能;
(3)學(xué)習(xí) C51 語(yǔ)言的程序設(shè)計(jì)方法;
(4)學(xué)會(huì)在 uVision3 中進(jìn)行 C51 程序錄入、編譯和調(diào)試;
(5)理解 Proteus 與 Keil 聯(lián)合仿真原理,實(shí)現(xiàn) LED 指示燈循環(huán)控制功能。
3. 實(shí)驗(yàn)步驟
① 按照下圖,在 ISIS 中繪制電路原理圖,將元件添加到編輯環(huán)境中;
② 在 uVision3 中編寫(xiě) C51 程序;
③ 利用 uVision3 的編譯調(diào)試功能檢查程序的語(yǔ)法和邏輯錯(cuò)誤;
④ 下載可執(zhí)行文件,在 Proteus 中觀察仿真結(jié)果,檢驗(yàn)程序的正確性。
圖中8只 LED 指示燈接于P1口,且都接有上拉電阻。時(shí)鐘電路、復(fù)位電路與前面的實(shí)驗(yàn)電路相同。
在編程軟件的配合下,要求實(shí)現(xiàn)如下功能:8只LED做循環(huán)點(diǎn)亮控制,且亮燈順序?yàn)镈1→D2→D3→…→D8→D7→…→D1,無(wú)限循環(huán),兩次亮燈的時(shí)間間隔約為0.5s。
軟件編程原理為:
首先使 P1.0←0,其余端口←1,這樣可使最右側(cè)D1燈亮,其余燈滅;軟件延時(shí)0.5s 后,使 P1 口整體左移 1 位,得到 P1.1←0,其余端口←1,這樣可使 D2 燈亮其余燈滅;照此思路 P1 整體左移7次,再右移7次,如此無(wú)限往復(fù)即可實(shí)現(xiàn)上述功能。
4. 實(shí)驗(yàn)程序
#include <reg51.h>
unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //LED燈的花色數(shù)據(jù)
void delay(unsigned int time) //延時(shí)函數(shù)
{unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void main()
{char i;
while(1)
{
for(i=0;i<=8;i++) //從右向左循環(huán)控制(變量i的初值為1,終值小于8,增量為+1)
{P1=led[ i];
delay(300); //調(diào)用函數(shù)delay,傳入?yún)?shù)值為300ms
}
for(i=7;i>1;i--) //從左往右循環(huán)控制(變量i的初值為7,終值大于1,增量為-1)
{P1=led[i-1];
delay(300); //調(diào)用函數(shù)delay,傳入?yún)?shù)值為300ms
}
}
}
|
|