51單片機(jī)顯示數(shù)碼管(靜態(tài)和動(dòng)態(tài),示列代碼)

一著拭,什么是數(shù)碼管

? ? ?數(shù)碼管纱扭,其實(shí)就是由多個(gè)led組合在一起的組合顯示塊;有共陰極的儡遮,也有共陽(yáng)極的乳蛾。使用的數(shù)碼管不同,里面包含的led個(gè)數(shù)也會(huì)有相關(guān)的差異鄙币。我們通常使用的數(shù)碼管肃叶,里面有8個(gè)led燈,大家可以參照生活中的數(shù)碼管器件就一目了然了十嘿,你會(huì)發(fā)現(xiàn)因惭,數(shù)碼管顯示的每一個(gè)數(shù)字或字母,都是一段一段組合拼接起來(lái)的绩衷,并不是像寫的那樣圓滑蹦魔。其中激率,組合的每一個(gè)段,就是一個(gè)led燈版姑。

二柱搜,點(diǎn)亮一個(gè)數(shù)碼管

? ? ?2.1.在點(diǎn)亮數(shù)碼管之前迟郎,你還必須弄清楚剥险,改數(shù)碼管的接是共陰極還是共陽(yáng)極的接法;其次宪肖,還得弄清楚是那幾個(gè)(或一個(gè))? ? IO口是IO口 的斷選位(也就是控制顯示哪一個(gè)數(shù)碼管表制,通常由IO口控制一個(gè)譯碼器來(lái)實(shí)現(xiàn),因?yàn)檫@樣更節(jié)約IO口資源)控乾。

? ? ?2.2.弄清楚斷選位之后么介,還得知道,是哪些IO口控制我們的數(shù)碼管上的led蜕衡;

????????比如:

? ? ? ? ? ? P0.0 控制數(shù)碼管上的led.0;(注意:數(shù)碼管上對(duì)應(yīng)的led位壤短,可以參照原理圖上的或查閱相關(guān)資料獲得,這里僅僅舉列)

? ? ? ? ? ? P0.1-->led.1? ? ? ? ? ? ? ? ?P0.2-->led2? ? ? ? ......

2.3.想要點(diǎn)亮數(shù)碼管很容易慨仿,只要開(kāi)啟對(duì)應(yīng)的數(shù)碼管斷選位久脯,再設(shè)置數(shù)碼管上led的值為點(diǎn)亮(有的數(shù)碼管是共陰極接法,有的是共陽(yáng)極接法镰吆,根據(jù)具體的設(shè)計(jì)帘撰,給出相關(guān)的高或低電平即可)就OK了。但是万皿,我們要在數(shù)碼管上顯示我們想要的數(shù)字增么辦呢摧找?這個(gè)時(shí)候,就是考研創(chuàng)造力的時(shí)候了牢硅,有的數(shù)碼管的資料會(huì)直接給出它的真值表蹬耘,但有的卻不一定找得到。在這個(gè)時(shí)候减余,我們就得根據(jù)我們想要顯示的數(shù)字综苔,點(diǎn)亮并熄滅對(duì)應(yīng)數(shù)碼管上的led來(lái)實(shí)現(xiàn)。(推薦:你可以自己先實(shí)驗(yàn)佳励,找出0-9休里,或其他想要顯示的字符所對(duì)應(yīng)的IO口的值,來(lái)保存起來(lái)赃承,這樣你就可以重復(fù)利用啦C钍颉)

三,點(diǎn)亮多個(gè)數(shù)碼管

????????3.1 我們想要點(diǎn)亮多個(gè)數(shù)碼管瞧剖,首先可以根據(jù)2.1拭嫁,弄清楚你的數(shù)碼管的斷選位可免,然后周期性的改變斷選位的值,以此動(dòng)態(tài)逐個(gè)顯示你的數(shù)碼管做粤。

????????3.2 在顯示多個(gè)數(shù)碼管時(shí)浇借,建議周期大于100hz,這樣人眼難以識(shí)別起關(guān)和開(kāi)的瞬間怕品,我們看起來(lái)就像時(shí)很多個(gè)數(shù)碼管同時(shí)點(diǎn)亮了一樣妇垢。

四,動(dòng)態(tài)顯示數(shù)碼管

? ? ? ? 4.1 肉康,在動(dòng)態(tài)顯示數(shù)碼管的值時(shí)闯估,建議先根據(jù)2.2和2.3,把對(duì)應(yīng)的數(shù)碼管顯示參數(shù)照準(zhǔn)吼和,并保存下來(lái)涨薪,這樣你用起來(lái)也方便。

? ? ? ? 4.2炫乓, 動(dòng)態(tài)顯示數(shù)碼管刚夺,我們可以在規(guī)定的時(shí)間周期,改變數(shù)碼管對(duì)應(yīng)led的開(kāi)關(guān)個(gè)數(shù)來(lái)實(shí)現(xiàn)末捣,比如說(shuō):

? ? ? ? ? ? ? ? 0 在數(shù)碼管中顯示的值為0xc0? ? ? 1是0xf9

? ? ? ?那么我們就可以在規(guī)定的時(shí)間里侠姑,切換該值,從而達(dá)到動(dòng)態(tài)效果塔粒。

? ? ? ? 4.3 我們應(yīng)該注意的時(shí)结借,掃描數(shù)碼管(即顯示多個(gè)數(shù)碼管)應(yīng)該與設(shè)置數(shù)碼管的值(數(shù)碼管中l(wèi)ed的狀態(tài)更新)區(qū)分開(kāi),掃描周期我們可以放短一點(diǎn)卒茬,而改變它的值的周期我們可以一秒或者是2秒改變一次船老。

? ? ? ?4.4 消除余暉,大家實(shí)驗(yàn)后圃酵,可能會(huì)發(fā)現(xiàn)柳畔,你顯示的值有的時(shí)候并不是想要的,它會(huì)跳動(dòng)或者是亮滅不清晰郭赐,這個(gè)我們就叫做余暉效應(yīng)薪韩。

產(chǎn)生余暉效應(yīng)的原因是因?yàn)槟阍谶x則下一個(gè)數(shù)碼管的時(shí)候,還保留了上一個(gè)數(shù)碼管的顯示值捌锭,所以我們消除余暉俘陷,只需要在改變數(shù)碼管顯示值的時(shí)候,先關(guān)閉所有數(shù)碼管的顯示观谦,在值跟新完成后我們?cè)俅蜷_(kāi)顯示拉盾。這里你不用擔(dān)心關(guān)閉和開(kāi)啟會(huì)有閃爍,更新值的時(shí)間會(huì)很短豁状,肉眼時(shí)幾乎察覺(jué)不到滴捉偏。

5倒得,示列代碼

/*

芯片:stc89c52

器件:38譯碼器等

編譯環(huán)境:UV4,C語(yǔ)言

*/

#include<reg52.h>

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = {

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

};//數(shù)碼管顯示值真值表緩存數(shù)組

unsigned char LedBuff[6] = {

0xff,0xff,0xff,0xff,0xff,0xff

};//數(shù)碼管顯示值緩存數(shù)組

void main()

{

unsigned char i =0;

unsigned int cnt = 0;

unsigned long sec = 0;

ENLED = 0;

ADDR3 = 1;

TMOD = 0x01;

TH0 = 0xfc;

TL0 = 0x67;

TR0 = 1;

while(1)

{

if(TF0==1)

{

TF0 = 0;

TH0 = 0xfc;

TL0 = 0x67;

cnt++;

if(cnt>=1000)

{

cnt = 0;

sec++;

LedBuff[0] = LedChar[sec%10];

LedBuff[1] = LedChar[sec/10%10];

LedBuff[2] = LedChar[sec/100%10];

LedBuff[3] = LedChar[sec/1000%10];

LedBuff[4] = LedChar[sec/10000%10];

LedBuff[5] = LedChar[sec/100000%10];

}

switch(i)

{

case 0:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];ENLED = 0;break;

case 1:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];ENLED = 0;break;

case 2:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];ENLED = 0;break;

case 3:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];ENLED = 0;break;

case 4:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];ENLED = 0;break;

case 5:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];ENLED = 0;break;

default:break;

}

}

}

}

以上代碼夭禽,僅供參考霞掺,您需要根據(jù)自己原理圖的設(shè)計(jì)來(lái)實(shí)現(xiàn)。



三文原創(chuàng)讹躯,多謝各位指出不足與錯(cuò)誤菩彬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜀撑,隨后出現(xiàn)的幾起案子挤巡,更是在濱河造成了極大的恐慌,老刑警劉巖酷麦,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異喉恋,居然都是意外死亡沃饶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門轻黑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)糊肤,“玉大人,你說(shuō)我怎么就攤上這事氓鄙」萑啵” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵抖拦,是天一觀的道長(zhǎng)升酣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)态罪,這世上最難降的妖魔是什么噩茄? 我笑而不...
    開(kāi)封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮复颈,結(jié)果婚禮上绩聘,老公的妹妹穿的比我還像新娘。我一直安慰自己耗啦,他們只是感情好凿菩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著帜讲,像睡著了一般衅谷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舒帮,一...
    開(kāi)封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天会喝,我揣著相機(jī)與錄音陡叠,去河邊找鬼。 笑死肢执,一個(gè)胖子當(dāng)著我的面吹牛枉阵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播预茄,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兴溜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了耻陕?” 一聲冷哼從身側(cè)響起拙徽,我...
    開(kāi)封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诗宣,沒(méi)想到半個(gè)月后膘怕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡召庞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年岛心,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篮灼。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忘古,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诅诱,到底是詐尸還是另有隱情髓堪,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布娘荡,位于F島的核電站干旁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏它改。R本人自食惡果不足惜疤孕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望央拖。 院中可真熱鬧祭阀,春花似錦、人聲如沸鲜戒。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遏餐。三九已至伦腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間失都,已是汗流浹背柏蘑。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工幸冻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咳焚。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓洽损,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親革半。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碑定,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容