欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于51Hei開發(fā)板板數(shù)碼管消隱的研究 [打印本頁(yè)]

作者: a123    時(shí)間: 2011-3-17 00:17
標(biāo)題: 關(guān)于51Hei開發(fā)板板數(shù)碼管消隱的研究

  想必大家都看過(guò)站長(zhǎng)推薦的能配合51hei-5開發(fā)板電路的那個(gè)視頻教程吧。我后來(lái)發(fā)現(xiàn)了視頻里有一個(gè)小小的失誤在消隱方面,如果完全按照視頻教程里的來(lái)就會(huì)出現(xiàn)數(shù)碼管暗亮影響美觀,于是我在找到原因之后做了一些修改,代碼在下面。

下面是本站板子數(shù)碼管部分的電路圖,


//*===============================
//接線要求:P0口分時(shí)復(fù)用輸出,P2.6,P2.7做74ls573片選
//入口參數(shù):0000--9999范圍內(nèi)的二進(jìn)制或十進(jìn)制數(shù)
//出口參數(shù):無(wú)
//函數(shù)功能:數(shù)碼管實(shí)現(xiàn)小于9999數(shù)的十進(jìn)制顯
//by Oliver  21/03,21:59
//==================================

#include <AT89X52.H>
#define uchar unsigned char

sbit WEI=P2^7;
sbit DUAN=P2^6;
sbit LED=P1^4;
uchar wei[]={0xfe,0xfd,0xfb,0xf7};
uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay(void)   //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=222;b>0;b--)
for(a=12;a>0;a--);
}
//--------------6ms延時(shí)
void undo(void)
{    
WEI=1;
P0=0xff;
WEI=0;
}//使位選失效

void wei_cs(uchar a)
{  
P0=wei[a];//=====關(guān)鍵之處---------------------------------------------------消隱------
WEI=1;
WEI=0;
}
//-------------------位選---------
void duan_cs(uchar a)
{
P0=duan[a];
DUAN=1;
DUAN=0;
}
//-------------------段選---------
void show(int DATA)
{
uchar qian,bai,shi,ge;
uchar duan_flag=0;

if(DATA>9999)
{
LED=0;
P0=0xfe;
}//判斷是否超出顯示范圍
else
{
qian=DATA/1000;
bai=DATA%1000/100;
shi=DATA%100/10;
ge=DATA%10;
//-------------各位分離
if(qian!=0)
{
duan_cs(qian);
wei_cs(duan_flag++);
}
delay();

if((bai|qian)!=0)
{
duan_cs(bai);
wei_cs(duan_flag++);
}

delay();
if((shi|bai|qian)!=0)
{
duan_cs(shi);
wei_cs(duan_flag++);
}

delay();
if(1)
{
duan_cs(ge);
wei_cs(duan_flag);
}
}
}
void main(void)
{
while(1)
show(1545);
}

消隱的研究:隱紅的出現(xiàn):1 ,段碼改變時(shí),位碼未變,在位碼變化之前,會(huì)在前一個(gè)位碼處產(chǎn)生殘影;

2 ,位碼改變時(shí),如先使P2^7有效,則段碼在位碼寫入之前會(huì)在新的位碼處產(chǎn)生殘影。

消除方法:1, 段碼改變之前將位碼全部置成無(wú)效,此時(shí)間間隔仍能滿足視覺(jué)暫留的要求;

2, 位碼改變時(shí),先將下一個(gè)位碼寫入P0口,再使P2^7有效,則可消除此種殘
影。
另外,如P0口時(shí)序要求更為嚴(yán)格,為保證數(shù)據(jù)安全性,可將連接圖中的OC端統(tǒng)一接一控制引腳,使兩片573同時(shí)輸出使能,即可更好消除殘影。

 

視頻教程中的代碼是:

WEI=1; //開通
P0=wei[a];
WEI=0; //鎖存

 

我修改為下面的代碼后,殘影消失,感覺(jué)非常完美呵呵.

P0=wei[a];
WEI=1;
WEI=0;

[此貼子已經(jīng)被作者于2011-3-17 0:21:47編輯過(guò)]

作者: ashan    時(shí)間: 2011-5-24 02:45
不錯(cuò),解釋得很詳細(xì),難怪我以前一直都沒(méi)發(fā)現(xiàn)可以這樣處理.
作者: cir_biochem    時(shí)間: 2012-6-9 22:08
 這個(gè)程序顯示個(gè)位后面少了個(gè)delay();函數(shù),  個(gè)位顯示比其他位暗。
作者: 我思故我在    時(shí)間: 2014-9-15 15:22
樓主有心了,謝謝分享
作者: 麥浪無(wú)垠    時(shí)間: 2015-4-2 20:25
總之看完后懂了!
作者: 用戶    時(shí)間: 2015-4-11 22:16
與這個(gè)開發(fā)板配合的視頻是那個(gè)
作者: liusu    時(shí)間: 2015-6-5 21:36
贊一個(gè)
作者: admin    時(shí)間: 2018-2-22 16:40
引用小曾老師:“用鎖存器進(jìn)行數(shù)碼管顯示,遵循的原則,不管送位碼,還是段碼,都先數(shù)據(jù)到位,在開鎖存在鎖存這是第一點(diǎn),第二點(diǎn),每顯示完一位應(yīng)關(guān)掉所有顯示。這樣好處進(jìn)行動(dòng)態(tài)掃描互不干擾,顯示的數(shù)字非常干凈,感覺(jué)非常的好,不會(huì)有一點(diǎn)陰影”
作者: weilanjuedou    時(shí)間: 2019-1-24 17:43
問(wèn)題困擾了很久終于得到解決,感謝樓主!
作者: lijianbin    時(shí)間: 2019-12-21 23:34
已復(fù)制,回去研究一下
作者: aqvb5r    時(shí)間: 2019-12-27 15:51
用兩個(gè)573會(huì)不會(huì)成本太高了?普中的板子用的是138位選+573段選。
作者: 34歲老學(xué)生    時(shí)間: 2020-2-11 08:39
學(xué)習(xí)了
作者: 老圓    時(shí)間: 2020-2-28 12:56
P0=wei[a]; WEI=1; WEI=0;請(qǐng)問(wèn)樓主,這句是什么意思,是先送數(shù)據(jù)后再開通嗎?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1