專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)循環(huán)燈點(diǎn)亮實(shí)驗(yàn)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2009年09月22日   【字體:

一:實(shí)驗(yàn)名稱:循環(huán)燈點(diǎn)亮

二:實(shí)驗(yàn)?zāi)康模毫私鈖1口 輸出,了解移位操作要通過累加器ACC來實(shí)現(xiàn),掌握89C51的匯編指令。

三:實(shí)驗(yàn)原理:

   1.八個(gè)循環(huán)燈是由發(fā)光二極管組成的陣列,發(fā)光二極管采用共陽(yáng)極連接(這樣可以提高二極管的亮度)。

   2.每個(gè)二極管外接一個(gè)電阻和一個(gè)非門,這樣把p1口輸出的高電平轉(zhuǎn)換成了低電平,二極管正常導(dǎo)電,并發(fā)光點(diǎn)亮。

   3.每個(gè)二極管對(duì)應(yīng)賦一時(shí)點(diǎn)亮,但是p1口輸出的電平值,只能對(duì)應(yīng)二極管陣列的一個(gè)確定的狀態(tài),不能實(shí)現(xiàn)循環(huán)點(diǎn)亮。所以要先把值賦給寄存器ACC,通過ACC實(shí)現(xiàn)移位操作,實(shí)現(xiàn)不同的二極管對(duì)應(yīng)賦一,這樣確定的二極管實(shí)現(xiàn)高電平點(diǎn)亮,其余的為低電平。

    4.計(jì)時(shí)實(shí)現(xiàn)了循環(huán)賦一,人的視覺還是感受不到燈在循環(huán),因?yàn)镃PU晶振的頻率為6MHZ,一個(gè)震蕩周期T=1/6M,則一個(gè)機(jī)器周期為T'=12/6M=2us。這極其短暫的時(shí)間遠(yuǎn)遠(yuǎn)不到人眼所能分辨的范圍,所以要通過延時(shí)來實(shí)現(xiàn)效果的觀察。對(duì)89C51來說,延時(shí)可以通過硬件、軟件實(shí)現(xiàn)。本實(shí)驗(yàn)通過軟件延時(shí),即通過匯編指令的循環(huán)來實(shí)現(xiàn)。

實(shí)驗(yàn)程序如下:

org 0H
LJMP start
org   4100H
start:
MOV A, #1
loop:MOV P1, A
DD2:MOV R0, 10
MOV R1,   #200
DD1:MOV R2, #126
DJNZ   R2, $
DJNZ R1, DD1
DJNZ   R0, DD2
RL A
JMP loop
end

從第七行到第十一行為循環(huán)語(yǔ)句,下面對(duì)匯編語(yǔ)言進(jìn)行解釋:

org 4100H                 起始地址為4100H
RLA                             R邏輯移位(左移)
JMP                             無條件跳轉(zhuǎn)
DJNZ   R2, $               DJNZ先減1在判斷是否等于零,若等于零則停止,若不等于零則跳轉(zhuǎn)到$

  $指令本身所在地址

本實(shí)驗(yàn)的循環(huán)周期為8s,即每隔一秒交替點(diǎn)亮下一個(gè)發(fā)光二極管。

 

本實(shí)驗(yàn)有關(guān)的計(jì)算:     

  10(1*T'+200*T'+200*126*2T+200*2T)  =10*0.1s =1s

四:本實(shí)驗(yàn)單片機(jī)硬件知識(shí)

   1.89C51上電復(fù)位后,程序計(jì)數(shù)器的內(nèi)容為0000H,所以CPU總是從0000H開始執(zhí)行程序,但是0000H~0002H用作89C51上電復(fù)位后引導(dǎo)程序的存放單元。所以要加跳轉(zhuǎn)指令。

   2.89C51上電復(fù)位后,RS1=RS0=0,CPU自動(dòng)選擇第0組為當(dāng)前寄存器組。片內(nèi)RAM地址00H~07H。

五:實(shí)驗(yàn)心得

 現(xiàn)在特別喜歡匯編語(yǔ)言,匯編不僅不區(qū)分大小寫,而且不限制中間空字符。通過本實(shí)驗(yàn)發(fā)現(xiàn)有些事情并不像別人說的那么難,只要是有一定得計(jì)算機(jī)知識(shí),學(xué)習(xí)單片機(jī)很容易的。
 

關(guān)閉窗口