8位8段數碼管顯示

见证奇迹 2024-05-14 09:48 11次浏览 0 条评论 taohigo.com

1、8位8段數碼管顯示原理

1.1、 8段數碼管顯示原理

本文采用共陰極8段數碼管,圖1是8段數碼管的顯示原理,圖2是編碼方式。

圖1 8段數碼管顯示原理

編碼方式:

圖2 8段數碼管編碼方式

采用圖2的編碼方式對0~f進行編碼所得的數碼碼表見表2(沒有點)、表3(帶點)。

1.2、鎖存器(74HC573)使用說明

下圖是8位鎖存器(74HC573),其中1D~8D為輸入端(直接領與單片機的IO連接),1Q~8Q是輸出端,與數碼管的段選或者位選連接。

圖3 74HC573圖4 74HC573的功能表

圖4是8位鎖存器(74HC573)的功能表,即:

LE=1,輸出端Q的數值隨輸入端D數據的變化而變化,從而將輸入端D的數據鎖存起來。

LE=0,輸出端Q的數據保持不變,輸入端D的數據變化不會改變輸出端Q的數據。

鎖存器的另一功能就是將輸入端D和輸出端Q隔離開來。從而避免數碼管工作時的大電流沖擊微控制器(單片機)。如果不采用鎖存器,數碼管的位選需要加三極管來驅動數碼管,也是為瞭防止數碼管工作的大電流對微處理器的沖擊甚至破壞。

2、硬件電路

圖5是8位8段數碼管顯示模塊的框圖,主要包括微處理器、鎖存器和數碼管。當顯示一位數碼管時,單片機將位選信息和段選信息分別鎖存到鎖存器1和鎖存器2中,即可實現任意一位數碼管的顯示,這種顯示方式稱為靜態顯示。當顯示多位(≥2)的數值信息時就要用到數碼管的動態顯示瞭,此時的顯示過程中,分時輪流對多位數碼管的各位進行位選和段選操作,即分時輪流對鎖存器1和鎖存器2進行寫操作。利用二極管的餘暉和人眼時間暫留機制,使人的感覺多位數碼管的各位同時都在顯示。

圖5 數碼管顯示模塊結構框圖

圖6和圖7分別是數碼管鎖存器和數碼管的接口電路原理圖。其中D0-D7是來自單片機的位選信息和段選信息,WELA為鎖存器(位選)使能信號,高電平有效。DULA位鎖存器(段選)使能信號,高電平有效。鎖存器1的Q0-Q7接數碼管的位選,低電平有效。鎖存器2的Q0-Q7接數碼管的段選,高電平有效。

圖6 鎖存器1(位選)和鎖存器2(段選)的接口電路圖7 8位共陰極數碼管的接口電路

3、代碼實現

3.1、靜態顯示(一個數碼管)

第二位顯示5為例。

#include <reg52.h>
//數碼管
//位選使能信號
sbit wei_enable = P2^7; //與鎖存器配合使用
//段選使能信號
sbit duan_enable = P2^6; //與鎖存器配合使用
unsigned char dat_wei[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //從做到右
//個位→0x7f;十位→0xbf;百位→0xdf;千位→0xef;萬位→0xf7;十萬位→0xfb;百萬位→0xfd;千萬位→0xfe;
unsigned char dat_duan[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-f
//0x3f→0;0x06→1;0x5b→2;0x4f→3;0x66→4;0x6d→5;0x7d→6;0x07→7;0x7f→8;0x6f→9;
//0x77→A;0x7c→B;0x39→C;0x5e→D;0x79→E;0x71→F;0x76→H;0x38→L;0x40→-;0x00→熄滅
void main()
{
wei_enable = 0;
duan_enable = 0;
//第2位顯示5
//位選
P0 = 0xbf;
wei_enable = 1;
wei_enable = 0;
//段選
P0 = 0x6d;
duan_enable = 1;
duan_enable = 0;
while(1);
}