新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)動(dòng)態(tài)數(shù)碼管的設(shè)計(jì)

單片機(jī)動(dòng)態(tài)數(shù)碼管的設(shè)計(jì)

作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
一、數(shù)碼管動(dòng)態(tài)顯示

動(dòng)態(tài)顯示

本文引用地址:http://butianyuan.cn/article/201611/322008.htm

LED數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。

二、Proteus仿真實(shí)驗(yàn)



源程序:

#include//C51頭文件
#include//函數(shù)頭文件
#define uchar unsigned char//宏定義uchar=unsigned char
#define uint unsigned int//宏定義uint=unsigned int

uchar duan_code[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f
};//共陰極數(shù)碼管段碼0~9
uchar wei_code[]={0xFE,0XFD}; //共陰極數(shù)碼管位碼

void delay_ms(uint z)//ms級(jí)延遲函數(shù),z表示形參,是幾就是幾ms延遲
{
uint x,y;
for(x=z;x>0;x--)
for(y=99;y>0;y--)
{ _nop_();
_nop_();
}
}

void main(void)//主函數(shù)
{
uint i=23;//初始化數(shù)碼管顯示的值
P0=0X00;//初始化P0口為低電平
P2=0XFF;
while(1)
{
P2=0XFE;//十位顯示
P0=duan_code[i/10];//通過對(duì)i取整,求出十位顯示的數(shù)字
delay_ms(5);//每次間隔2ms
P2=0XFF;

P2=0XFD;//個(gè)位顯示
P0=duan_code[i];//通過對(duì)i取余,求出個(gè)位顯示的數(shù)字
delay_ms(5);//每次間隔2ms
P2=0XFF;

}
}



評(píng)論


技術(shù)專區(qū)

關(guān)閉