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

51單片機(jī)74HC164串口控制數(shù)碼管顯示

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月28日   【字體:

一般數(shù)碼管需要接7個(gè)腳才能顯示,如果用單片機(jī)本身的I/O口,雖然可以但是浪費(fèi)寶貴的i/O口資源。本例用移位寄存器74HC164作為數(shù)碼管驅(qū)動(dòng)進(jìn)行控制。

74HC164特性   是一種8位串轉(zhuǎn)并口的控制芯片,用于數(shù)碼管和液晶顯示等.
                        工作電壓2--6V
              管腳定義:
                                 


    1)  A,B管腳:與門(mén)數(shù)據(jù)輸入引腳。
     2)QA---QH 數(shù)據(jù)并口輸出引腳
     3) CLR 低電平時(shí),數(shù)據(jù)清零,不能輸入
     4) CLK 數(shù)據(jù)輸入時(shí)鐘,上升沿讀取串口數(shù)據(jù)
     

    
      
                          :
                      
 時(shí)序圖:
             


             注意脈沖寬度:

               





本51單片機(jī)用的是12MHZ晶振,每條指令最小執(zhí)行時(shí)間1uS》》1ns  ,可以根據(jù)時(shí)序圖隨便使用.

原理圖:
             


程序代碼:
完整的keil工程文件下載地址: http://www.torrancerestoration.com/f/k164.rar
 
ORG 00H                       ;程序起始地址00H
START:

                MOV 50H,#9                    ;立即數(shù)9放入50H單元   第一個(gè)數(shù)碼管顯示9
MOV 51H,#4                    ;立即數(shù)4放入51H單元  第二個(gè)數(shù)碼管顯示4
MOV R0,#50H                 ;R0=50   
MOV R1,#60H                 ;R1=60   
MOV R2,#2

 
DP0:
MOV DPTR,#TABLE     ;將碼表首地址給DPTR指針
MOV A,@R0                   ;將50H單元中的9給A
MOVC A,@A+DPTR     ;查表得到(9+碼表首地址)合成的地址中的數(shù)給累加器A
MOV @R1,A                  ;把立即數(shù)9的段碼,放入 60H單元中
INC R1                            ;R1=61H
INC R0                            ;R0=51H 
DJNZ R2,DP0                ;如果R2不等于0,則跳轉(zhuǎn)到DP0

 
             //---------------從上面計(jì)算可得到: (60H)=10H,(61H)=19H
 
                MOV R0,#60H                ;R0=60重新建立映射關(guān)系
MOV R1,#2                     ;數(shù)碼管有2個(gè)段碼
 
DP1:
                MOV R2,#8                     ;一個(gè)71HC164移位寄存器需要移動(dòng)8次,以產(chǎn)生并口輸出數(shù)據(jù)給數(shù)碼管
MOV A,@R0                   ;(60H)中的數(shù)9的段碼,賦給累加器A
 
DP2:
                RLC A                              ;帶進(jìn)位標(biāo)志的左移操作
MOV P2.0,C                    ;串行輸出一位段碼數(shù)據(jù)
        CLR P2.1                        ;
SETB P2.1                     ;來(lái)個(gè)上升沿以產(chǎn)生移位時(shí)鐘, 每次來(lái)這個(gè)脈沖,移位寄存器上的數(shù)往后面移動(dòng)一位,原來(lái)A=1,
                                                          ;來(lái)個(gè)脈沖后B=1,在來(lái)個(gè)脈沖后,C=1,以此類(lèi)推。。。。。
DJNZ R2,DP2                ;判斷8位段碼是否輸出完整
INC R0                            ;下一個(gè)需要輸出的段碼地址加1
DJNZ R1,DP1                ;判斷2個(gè)段碼是否輸出完畢
JMP $                              ;程序停在此處
 
TABLE:                                            ;數(shù)碼管碼表
         DB 40H,79H,24H,30H,19H   ;0,1,2,3,4
DB 12H,02H,78H,00H,10H   ;5,6,7,8,9
END

關(guān)閉窗口

相關(guān)文章