單片機數碼管的原理大概是這樣的,分別對一個字節進行編碼,暫且將其叫a,b,c,d,e,f,g,h,當取不同的值時,將會得到不同的顯示,那為什么是八位呢,因為在計算機里8位剛好是一個字節,這樣就使其變的合理起來,可以把一個字節的數據送到某個寄存器里面,然后再送給數碼管,得到相應的顯示。編碼如下:
----------------------------------------------------
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
0 1 2 3 4 5
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,
6 7 8 9 A B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 無顯示
------------------------------------------------------
為了節約資源,又引入了2個鎖存器(74HC573),這樣就可以使用少的單片機引腳達到完全控制數碼管的目的。為什么會選擇鎖存器呢,,其實,我模電學的太菜了,里面的原理還不明白,以后有空的話,會去看看補充一下。
再說說鎖存器的功能,就是鎖存器有一個控制位,當她的高位電位不同,會有不同的效果,當是高電平的時候,導通,當是低電平的時候,就斷開了,并且保持右邊的電位狀態。所以利用這一功能,就可以達到控制數碼管的目的。
因此,可以如下示例程序:效果是點亮2個數碼管,顯示0
#include<reg52.h>
sbit wela=P2^7;
sbit dula=P2^6;
void main()
{
wela=0;
P0=0xc0;
wela=1;
dula=0;
P0=0x06;
dula=1;
} |