用AT90S8515單片機(jī)實(shí)現(xiàn)LED數(shù)碼顯示
一、電路
附圖是AT90S8515控制數(shù)碼顯示的電路略圖(圖中只畫(huà)出了與數(shù)碼管接口的電路,其余接線略)。單片機(jī)的PBO~PB7接LED共陰數(shù)碼管的a~h腳,控制段碼;單片機(jī)的PDO—PD5分別接六只LED數(shù)碼管DO~D5的共陰極,控制位碼。其中PDO~PD5是通過(guò)SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器上的LED數(shù)碼管短路塊DLED接至數(shù)碼管DO—D5的。
二、字符8右循環(huán)移位顯示程序
在SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器LED上實(shí)現(xiàn)字符8右循環(huán)移位顯示的源程序清單如下:
第1行表示程序中包含定義AT90S8515特殊功能寄存器的頭文件8515def.inc,指明所用器件為AT90S85150接著定義寄存器r16、r22分別為暫存器temp、scndp。在程序前面用偽指令equ為寄存器賦予能幫助編程者識(shí)別數(shù)據(jù)用途的符號(hào),提高了程序的可讀性,便于程序的修改,讀者也應(yīng)養(yǎng)成用這種方法編程的習(xí)慣。程序中其他語(yǔ)句的功能見(jiàn)注釋。
本程序在SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器的隨機(jī)光盤(pán)中的文件名為SLAVR731.ASM。
三、編輯、匯編、串行下載和運(yùn)行
1.編輯、匯編
運(yùn)行匯編程序wavr.asm,編輯SIJAVR731.ASM。
執(zhí)行Assemble命令對(duì)SLAVR731.ASM程序進(jìn)行匯編,生成SLAVR731.EEP、SLAVR731.OBJ、SLAVR731.HEX、SLAVR731.LST文件。
2.串行下載和運(yùn)行
用串行下載線將SL-AVR的C22與AT3接好,將單片機(jī)AT90S8515插入鎖緊插座并鎖緊。將SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器與PC機(jī)串口連接好,接上電源,開(kāi)電源,運(yùn)行串行一F載程序Avl'Prog,將SLAVR731.
HEX文件下載到SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器中的AT90S8515中。按復(fù)位鍵,程序開(kāi)始運(yùn)行,符號(hào)8從塊接至左側(cè)的發(fā)光二.極管,因此,程序運(yùn)行時(shí)鎖綮插座左側(cè)對(duì)應(yīng)于PD0一PD5輸出狀態(tài)指示的發(fā)光二極管也在同時(shí)循環(huán)顯示。
四、修改顯示程序練習(xí)
1.修改、顯示字符
共陰數(shù)碼管顯示0—F,所對(duì)應(yīng)的段碼為3FH、06H、SBH、4FH、66H、6DH7DH、07H、7FH、6FH、77H、7CH、39H、5EH、79H、71H、F3H、76H.如欲點(diǎn)亮小數(shù)點(diǎn);則要將最高位高位寫(xiě)為1.$修改顯示字符只需修改源程序中的指令$lclitemp,穢’o如要循環(huán)顯示字符A,則將“l(fā)ditemp,7f”改成“l(fā)ditemp,77”。tSL-AVR開(kāi)發(fā)實(shí)驗(yàn)器的隨機(jī)光盤(pán)中的SLAVR731.ASM為只讀文件。先將其屬性改為“正?!薄缎薷奈募傩缘牟僮魅缦拢哼x中待改文件SLAVR731.ASM,從顯示框的左邊可見(jiàn)文件屬性為“只讀”。單擊鼠標(biāo)右鍵,,彈出選擇菜單,點(diǎn)擊“屬性”彈出屬性顯示框,取消屬性顯示選擇框中只讀欄的黑點(diǎn),按“確定”鍵,就將SLAVR731.ASM文件的屬性改為“正?!绷恕4藭r(shí),從顯示框的左邊可見(jiàn)文件屬J為“正?!保?。運(yùn)行匯編程序wavr.a(chǎn)$ni,打開(kāi)文件SLAV$731.ASM,將指令“l(fā)ditemp.7f”改成“l(fā)dlitemp.‘77”。按第三條進(jìn)行匯編,串行“下載,并運(yùn)行程序,顯示的字符就改變了。
2.顯示2位字符
置顯示初值指令“l(fā)discndp,Ob11()11111”中的二進(jìn)制數(shù)Ob11011111的低6位對(duì)應(yīng)LED數(shù)碼管的顯示。
狀態(tài)。其O的個(gè)數(shù)表示顯示字符的個(gè)數(shù)。因此,最簡(jiǎn)單的方法是修改Ob11011111來(lái)改變同時(shí)顯示的字符數(shù)。如要同時(shí)顯示2位數(shù),可將Ob11011111改成Ob11001111。但應(yīng)當(dāng)注意的是,由于數(shù)碼管DO~D5的a—h直接接到單片機(jī)的PBO—PB7,同時(shí)顯示的位數(shù)多了,會(huì)增加口線的負(fù)載電流,必須考慮單片機(jī)的口線驅(qū)動(dòng)能力,故用此法同時(shí)顯示的位數(shù)不宜多。
采用動(dòng)態(tài)掃描的方式顯示兩位數(shù)若干次后,再向右循環(huán)顯示下兩位數(shù),依此類(lèi)推,則可根據(jù)需要同時(shí)顯示任意位數(shù)的字符。
3.改變字符移動(dòng)的方向
將指令“l(fā)discndp,Ob11011111”改為“l(fā)discndp,Ob11111110”,指令“rors.cndp”改為“r1scndp”,便可以將字符移動(dòng)的方向改成從右向左。
4.改變字符移動(dòng)的$速度
將指令“l(fā)ditemp,40”中的立即數(shù)40改大,字右到左循環(huán)顯示。由于SL-AVR中的PDO~PD5用短路符移動(dòng)的.速度變慢,反之字符移動(dòng)的速度變快。
以上為同一字符的移動(dòng)顯示,也可以:過(guò)程序進(jìn)行修改,增加查表程序,實(shí)現(xiàn)字符O~F交替循環(huán)移動(dòng),還可以先將欲顯示的字符存到指定的顯示緩沖區(qū),用查表的方式取出對(duì)應(yīng)的段碼,再進(jìn)行動(dòng)態(tài)顯示。
通過(guò)以上實(shí)驗(yàn),讀者對(duì)AVR單片機(jī)的指令系統(tǒng)、AVR匯編軟件、AVR串行下載軟件,以及SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器的硬件環(huán)境有了進(jìn)一步的了解,同時(shí)熟悉了利用SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器隨機(jī)光盤(pán)中提供的程序進(jìn)行編程實(shí)驗(yàn)的方法。
SL-AVR開(kāi)發(fā)實(shí)驗(yàn)器隨機(jī)光盤(pán)中的實(shí)驗(yàn)程序很多,讀者可以自選程序進(jìn)行實(shí)驗(yàn),通過(guò)此法掌握AVR單片機(jī)的設(shè)計(jì)開(kāi)發(fā)方法。