實驗一:8×8LED點陣顯示“ABCDEFG”

一俭厚、實驗?zāi)康?/h1>

1.了解LED8×8點陣的內(nèi)部結(jié)構(gòu)户魏。

2.學(xué)會編寫點陣顯示實驗的代碼程序。

3.了解編寫程序各部分的作用。

二叼丑、實驗工具

Keil 5关翎、STC89C52實驗板、燒錄軟件鸠信、計算機

三纵寝、實驗原理

(一)功能概述

?8X8點陣共由64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點上星立,使用逐行掃描的方式爽茴,P0口輸出位碼,P3口輸出段碼绰垂,當(dāng)掃描速度加快時室奏,因為視覺暫留的原因,則看到的就是8行的顯示了劲装。

(二)硬件結(jié)構(gòu)


(三)內(nèi)部結(jié)構(gòu)

內(nèi)部結(jié)構(gòu)不同可分為共陽極和共陰極兩種胧沫。

共陰極時:當(dāng)對應(yīng)的某一行置1電平,某一列置0電平占业,則相應(yīng)的二極管就亮绒怨;如要將第一個點點亮,則1腳(位選信號)接高電平a腳(段選信號)接低電平纺酸,則第一個點就亮了窖逗。

共陽極時:當(dāng)對應(yīng)的某一行置0電平,某一列置1電平餐蔬,則相應(yīng)的二極管就亮碎紊;如要將第一個點點亮,則1腳接低電平電平a腳接高電平樊诺,則第一個點就亮了仗考,在該實驗中所采用的是共陽極電路,故在編寫代碼時位選信號低電平亮词爬,段選信號高電平亮秃嗜,且段選位選字符轉(zhuǎn)換時均是列陣顯示,由上到下為從地位到高位顯示顿膨。(內(nèi)部結(jié)構(gòu)圖如下)


四锅锨、試驗流程

1.熟悉C51程序編寫規(guī)則,了解點陣顯示代碼編寫方式恋沃。

2.Keil 5中編寫實現(xiàn)LED燈顯示的代碼必搞。

3.運行程序并導(dǎo)出hex文件。

4.打開燒錄軟件囊咏,在單片機上運行程序恕洲。

五塔橡、代碼實現(xiàn)

(一)整體代碼

#includ<reg51.h>

#include <intrins.h>//調(diào)用頭文件intrins.h實現(xiàn)空操作,執(zhí)行NOP指令

sbit SRCLK=P3^6;//位定義霜第,將P3.6引腳(第7口)定義為SRCLK

sbit RCLK=P3^5;

sbit SER=P3^4;

#define COMMONPORTS P0//定義公共端口為P0

unsigned char code TAB[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//列選低電平導(dǎo)通控制葛家,位選低電平有效

unsigned char code CHARCODE[6][8]={0x00,0x08,0x10,0x30,0x50,0x30,0x10,0x08,//A

0x00,0x00,0x7E,0x52,0x52,0x7F,0x00,0x00,//B

0x00,0x00,0x7E,0x42,0x42,0x42,0x00,0x00,//C

0x00,0x00,0x7E,0x42,0x42,0x42,0x3C,0x00,//D

0x00,0x00,0x7E,0x52,0x52,0x52,0x51,0x00,//E

0x00,0x00,0x7E,0x50,0x50,0x50,0x50,0x00,//F};

//延時函數(shù),延時時間為124×time×2泌类,在這里time為2時延時時間為0.5ms

void delay(unsigned int time)

{unsigned int i,j;

{

for(i=0;i<time;i++)

for(j=0;j<124;j++);

}

}

void Hc595SendByte(unsigned char dat)

{

? ? ? unsigned char a;

???????????? dat<<=1;

? ? ? ? ? ? ? SRCLK=1;

? ? ? ? ? ? ? _nop_();

? ? ? ? ? ? ? _nop_();

? ? ? ? ? ? ? SRCLK=0;? ?

? ? ? }

? ? ? RCLK=1;

? ? ? _nop_();

? ? ? _nop_();

? ? ? RCLK=0;

}

//主函數(shù)

void main()

{? ?

? ? ? unsigned char tab, j;

? ? ? unsigned int i;

? ? ? while(1)

? ? ? {? ?

? ? ? ? ? ? ? for(i=0; i<50; i++ )?

? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? for(tab=0;tab<8;tab++)

? ? ? ? ? ? ? ? ? ? {? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? Hc595SendByte(0x00);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? COMMONPORTS? = TAB[tab]; //輸出位選信號? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? Hc595SendByte(CHARCODE[j][tab]);

? ? ? ? ? ? ? ? ? ? ? ? ? ? delay(2);? ? ?

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }

? ? ? ? ? ? ? j++;

? ? ? ? ? ? ? if(j== 6)//6個字母循環(huán)完之后返回重新循環(huán)

? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? j= 0;

? ? ? ? ? ? ? }

? ? ? }? ?

}


(二)延時函數(shù)

void delay(unsigned int time)

{unsigned int i,j;

{

for(i=0;i<time;i++)

? for(j=0;j<124;j++);

}

}

延時函數(shù)2層for循環(huán)癞谒,循環(huán)次數(shù)是 NUM= 2X124 = 248次,由每次循環(huán)都有條件判斷(如 i >0)和自加語句(如 i++)末誓,因此每次循環(huán)又耗費兩個機器周期扯俱, 所以,總耗費的機器周期為SUM = NUM x 2 =496個喇澡,又因為 12M 晶振頻率迅栅,每一個機器周期為1us,所以這個函數(shù)話費的時間為856us =8.56 ms 約等于0.5ms晴玖,而把賦值語句读存,壓棧出棧操作計算在內(nèi),加起來差不多0.5ms.

(三)消隱函數(shù)

void Hc595SendByte(unsigned char dat)

{

? ? ?? unsigned char a;

???????????? dat<<=1;

? ? ? ? ? ? ? SRCLK=1;

? ? ? ? ? ? ? _nop_();

? ? ? ? ? ? ? _nop_();

? ? ? ? ? ? ? SRCLK=0;? ??

? ? ?? }

? ? ?? RCLK=1;

? ? ?? _nop_();

? ? ?? _nop_();

? ? ?? RCLK=0;

}

51單片機控制多位數(shù)碼管或者點陣LED做動態(tài)顯示呕屎,由于處理不當(dāng)會產(chǎn)生非預(yù)期的“鬼影”現(xiàn)象让簿,消除這隱藏圖像即為消隱。從產(chǎn)生這種情況的根本原因入手秀睛,在程序方面做進一步優(yōu)化從而解決此問題尔当。因為動態(tài)顯示是利用人眼的暫留效應(yīng)來多位顯示的。原理是其多位數(shù)碼管的每位段碼控制只由一個IO口8 位輸出蹂安,先位選椭迎,送段碼,延時(1~3ms)田盈,關(guān)位選(這個就是消隱作用畜号,如果沒關(guān),下一位的段碼送出時允瞧,這一位也顯示下一位的段碼简软,這樣就亂了)

六、實驗結(jié)果


七述暂、注意事項

(一)延時函數(shù)必須要有

編寫代碼時因為錯誤導(dǎo)致延時函數(shù)沒有生效痹升,則出現(xiàn)LED點陣不顯示的結(jié)果。


(二)跳線帽的連接

改變的跳線帽應(yīng)為89C52芯片左側(cè)跳線帽畦韭,UCC.LOE.GND所在位置视卢,且應(yīng)該使右側(cè)兩個條線即JOE,GND相連。

(三)列陣顯示字符碼

字符碼轉(zhuǎn)換時廊驼,不論段選還是位選編寫16進制時均是以一列的8個二進制為一個整體据过,從上到下為從高位到低位。

例如在顯示J時妒挎,因為列陣弄成行陣绳锅,則字母方向改變。(如下圖)


(四)寫程序仔細(xì)小心

稍加不注意錯一個字母酝掩,可能就會出現(xiàn)問題鳞芙,有時候還能正常編譯,只是在實驗板上無法正常實現(xiàn)期虾,我就是個例子......因此在寫代碼的時候一定要細(xì)心仔細(xì)原朝,寫完之后進行認(rèn)真檢查。否則就會出現(xiàn)失之毫厘謬以千里的狀況了镶苞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喳坠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茂蚓,更是在濱河造成了極大的恐慌壕鹉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聋涨,死亡現(xiàn)場離奇詭異晾浴,居然都是意外死亡,警方通過查閱死者的電腦和手機牍白,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門脊凰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茂腥,你說我怎么就攤上這事狸涌。” “怎么了础芍?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵杈抢,是天一觀的道長。 經(jīng)常有香客問我仑性,道長惶楼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任诊杆,我火速辦了婚禮歼捐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晨汹。我一直安慰自己豹储,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布淘这。 她就那樣靜靜地躺著剥扣,像睡著了一般巩剖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钠怯,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天佳魔,我揣著相機與錄音,去河邊找鬼晦炊。 笑死鞠鲜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的断国。 我是一名探鬼主播贤姆,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稳衬!你這毒婦竟也來了霞捡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤宋彼,失蹤者是張志新(化名)和其女友劉穎弄砍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體输涕,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡音婶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了莱坎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衣式。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖檐什,靈堂內(nèi)的尸體忽然破棺而出碴卧,到底是詐尸還是另有隱情,我是刑警寧澤乃正,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布住册,位于F島的核電站,受9級特大地震影響瓮具,放射性物質(zhì)發(fā)生泄漏荧飞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一名党、第九天 我趴在偏房一處隱蔽的房頂上張望叹阔。 院中可真熱鬧,春花似錦传睹、人聲如沸耳幢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽睛藻。三九已至启上,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間修档,已是汗流浹背碧绞。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吱窝,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓迫靖,卻偏偏與公主長得像院峡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子系宜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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