第6課 數碼管靜態顯示
2數碼管靜態顯示
明白了顯示原理后,我們就可以對數碼管進行操作了,讓我們先看看一下實驗板的原理圖。





實驗板上的數碼管為兩個3位一體的數碼管,共同組成一個6位8段共陽極數碼管,
相同段的發光二極管陰極全部接在一起,引出8個引腳abcdefgdp,分別接到鎖存器的數據輸出口,而鎖存器74hc573的數據輸入口直接接到單片機P1口的8信引腳,注意此時P0口同時接了10K的上拉電阻;每一位數碼管內部發光二極管陽極接在一起,然后分別引出6個腳w1w2w3w4w5w6,并能過鎖存器74hc573接到了單片機P1口的6個腳。兩個鎖存器的鎖存端分別與單片機的P2^6和P2^7相連。
也就是這六位數碼管“段選”全部連在一起,而“位選”是可以獨立控制的,我們可通過控制位選信號而選擇讓哪幾個數碼管發光,具體顯示的內容可以通過段選信號進行,但由于所有段選是全部連在一起的,送入所在數碼管的段選信號必定相同,所以位選選通的數碼管上顯示的數字始終一樣,數碼管的這種顯示方式稱為靜態顯示。
下面我們就寫一個簡單的程序讓第一個數碼管顯示一個8字。先來分析如下:讓第一個數碼管顯示8字,那么別的數碼管的位選就要關閉,即只打開第一個數碼管的位選。在操作時,我從頭先給U2數碼管的鎖存端一個高電平,然后將數據從單片機的口P0直接送出到鎖存器的U2的數據輸出端,然后再關閉U2鎖存器。由于實驗板上的數碼管為共陽極,所以位選選通時為高電平,位選關閉時為低電平。即只有W1端對應的數據為1,其它的都為0,因此P0口呆輸出的數據0x01;(二進制為0000 0001)。位選確定后,再確定段選,要顯示8,那么只有h段為0,其余段為1,所以用操作U2的方法一樣操作U1,讓U1數據輸出端輸出0x7f(二進制為0111 1111)
程序:單片機顯示8
#include
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
void main()//第一個數碼管顯示8
{
while(1)
{
duan=1;
P0=0x7f;
duan=0;
wei=1;
P0=0xfe;
wei=0;
while(1);
}
}
下面先下載到實驗板上看現象。
主站蜘蛛池模板:
武乡县|
定日县|
林甸县|
林周县|
房产|
花莲市|
英德市|
彩票|
宁南县|
通道|
鄄城县|
儋州市|
徐州市|
崇州市|
沙雅县|
新绛县|
吉林市|
聊城市|
莱西市|
襄城县|
永修县|
泰和县|
高青县|
宁晋县|
新竹县|
兴仁县|
遂川县|
黄龙县|
罗江县|
嘉荫县|
双流县|
大兴区|
浦县|
大同市|
临武县|
江达县|
尚志市|
上饶县|
绥宁县|
宁南县|
玉溪市|

通過上面的現象我們實現了數碼管靜態顯示的功能,這里大家家可能已經知道,程序中段用了單片機的8個引腳,而位用到了單片機的6個引腳,按理說我們一共需要14個引腳,而因為鎖存器的原因,實際上我們只用到了P1口8個腳就實現了,這就是上面講的鎖存器的第二個作用,使用鎖存器可以達到節約單片機的I/O口的作用。
關鍵詞:
數碼管靜態顯示單片
評論