51單片機(九)—— 8位數碼管-顯示一位

一、原理介紹

        關於數碼管的控制電路,在《51單片機(八)》中有詳細的介紹,硬件電路如下圖所示。

在這個實驗中,我們對8位數碼管的一位進行控制,在進行實驗時,需要將單片機的P00~P07引腳與J44相連。接口的對應關係是(P00—D0),……,(P07—D7)。將單片機的P10和P11引腳與J45相連,P10與J45上的DM對應,P11與WM對應。

二、實例介紹

        這個實驗的代碼如下所示

#include<reg52.h> //包含頭文件,一般情況不需要改動

#define DATA P0 //定義數據端口 程序中遇到DATA 則用P0口 替換
sbit DM = P1^0;  //定義鎖存使能端口 段鎖存
sbit WM = P1^1;  //定義鎖存使能端口 位鎖存

void main(void) 
{
	for(;;) 
	{
		DATA=0xfe; //取位碼,第一位數碼管選通,即二進制1111 1110
		WM=1;      //位鎖存
		WM=0;
		
		DATA=0x7f; //取顯示數據,段碼 "8"
		DM=1;      //段鎖存
		DM=0;   
	} 
}

將代碼燒寫到單片機中,現象如下所示。

       這個實驗使用兩個鎖存器來驅動發光二極管。控制數碼管的位碼和段碼都通過單片機的P0口輸出。U43用來輸出位碼,U42用來輸出段碼。

        P0口首先輸出0xfe,WM=1;這個語句使U43輸出值爲0xfe,WM=0;這個語句使U43爲鎖存狀態。U43的輸出保持爲0xfe。0xfe轉換爲二進制爲1111 1110,這8個數值輸出給8位數碼管的共陰極。輸出爲1的位,由於陰極爲高電平,數碼管被關斷,輸出0的位,陰極爲低電平,數碼選通。因此數碼管的第一位選通,其它位關斷。

        之後,P0口輸出0x7f,DM=1;這個語句使U42輸出值爲0x7f,DM=0;這個語句使U42爲鎖存狀態。U42的輸出保持爲0x7f。0x7f對應的二進制爲0111 1111,即數碼管的A、B、C、D、E、F、G段都爲高電平,因此A、B、C、D、E、F、G都可以點亮,顯示的是數值“8”,又由於只有第一位選通,因此最後的實驗現象是第一位顯示“8”。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章