久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 關于51Hei開發板板數碼管消隱的研究 [打印本頁]

作者: a123    時間: 2011-3-17 00:17
標題: 關于51Hei開發板板數碼管消隱的研究

  想必大家都看過站長推薦的能配合51hei-5開發板電路的那個視頻教程吧。我后來發現了視頻里有一個小小的失誤在消隱方面,如果完全按照視頻教程里的來就會出現數碼管暗亮影響美觀,于是我在找到原因之后做了一些修改,代碼在下面。

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


//*===============================
//接線要求:P0口分時復用輸出,P2.6,P2.7做74ls573片選
//入口參數:0000--9999范圍內的二進制或十進制數
//出口參數:無
//函數功能:數碼管實現小于9999數的十進制顯
//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延時
void undo(void)
{    
WEI=1;
P0=0xff;
WEI=0;
}//使位選失效

void wei_cs(uchar a)
{  
P0=wei[a];//=====關鍵之處---------------------------------------------------消隱------
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);
}

消隱的研究:隱紅的出現:1 ,段碼改變時,位碼未變,在位碼變化之前,會在前一個位碼處產生殘影;

2 ,位碼改變時,如先使P2^7有效,則段碼在位碼寫入之前會在新的位碼處產生殘影。

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

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

 

視頻教程中的代碼是:

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

 

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

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

[此貼子已經被作者于2011-3-17 0:21:47編輯過]

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




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品久久久久久久久久久 | 欧美中文字幕在线观看 | 日韩久久久久 | 欧美精品入口蜜桃 | 国产第一页在线 | 国产91av视频 | 亚洲精品美女 | 免费在线观看黄 | 精品国产毛片 | 91久久久久久久久久 | 天天操天天干天天 | 五月婷婷激情 | 日韩中文字幕视频 | 一级特黄妇女高潮 | 欧洲一区二区 | 日本a级大片 | 91精品国产乱码久久久久久 | 亚洲精品区 | 国产精品久久久久久久午夜 | 日韩国产一区 | 99精品久久久久久 | 久久久久女人精品毛片九一 | 国产精品国产成人国产三级 | 日韩黄色免费视频 | 能看毛片的网站 | 在线日韩一区 | 亚洲视频在线观看 | 国产成人影视 | 亚洲精品区 | 久久久久蜜桃 | 一级a毛片 | 欧美精品一区在线观看 | 国产激情一区 | 精品国产伦一区二区三区 | 国产精品久久久久久久久久久久久久久 | 男同在线观看 | 亚洲一区二区在线视频 | 亚洲一区二区在线播放 | 亚洲国产区 | 伊人成人在线视频 | 久久久久久亚洲 |