本文主要介紹基于C51單片機(jī),設(shè)計(jì)8*8晶陣顯示“孫”“金”“云”“加”“油”“I”“L”“O”“V”“E”“U”“笑臉顏文字”其徙。
首先讓我們先來(lái)了解一下C51單片機(jī)晶陣顯示屏的原理吧嬉挡!
前期知識(shí)儲(chǔ)備
1.對(duì)于共陰極數(shù)碼管來(lái)說(shuō)钝鸽,當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮庞钢,相應(yīng)的段被顯示拔恰。共陽(yáng)極相反。
2.8X8點(diǎn)陣LED工作原理說(shuō)明 :8X8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成基括,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上仁连,當(dāng)對(duì)應(yīng)的某一列置0電平,某一行置1電平阱穗,則相應(yīng)的二極管就亮。原理圖如圖所示:
那么想讓8*8的晶陣顯示需要位選信號(hào)以及段選信號(hào)使鹅。先進(jìn)行位選揪阶,再進(jìn)行段選。也就是先給行送信號(hào)患朱,再給列送信號(hào)鲁僚。
(1)位選信號(hào)
基于C51中單片機(jī)中,本次實(shí)驗(yàn)位選信號(hào)通過(guò)P0端口裁厅。
位選信號(hào)為橫著寫(xiě)的冰沙,利用位選信號(hào)選中一列顯示;位選信號(hào)選中值為0的那一列执虹。
位選信號(hào)為:0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe拓挥。
(2)段選信號(hào)
基于C51單片機(jī)中袋励,本次實(shí)驗(yàn)段選信號(hào)通過(guò)P3端口侥啤。由下圖可知,段選信號(hào)豎著寫(xiě)茬故,是給列發(fā)送盖灸,選中高電平的那一行顯示。(74HC595是反向的磺芭,有待繼續(xù)深入研究赁炎。)
接下來(lái)我們確定字符的段選信號(hào)钾腺,方法有如下兩種:
a:手動(dòng)畫(huà)圖徙垫,寫(xiě)出十六進(jìn)制的代碼讥裤,如下圖所示:
b:利用軟件子模生成軟件:PCtoLCD2002軟件。點(diǎn)擊百度云鏈接即可下載使用松邪。
https://pan.baidu.com/s/1KFXI1MWZBEmrqWpTl4iHig
具體教程請(qǐng)看文章二坞琴。
通過(guò)以上兩種方法我得出的段選信號(hào)為:
0x92,0x9F,0xB2,0xD4,0x0A,0xFF,0x08,0x04, //孫
0x11,0x2D,0x6B,0xBF,0xAB,0x6D,0x29,0x11,//金
0x00,0xA2,0xA6,0xAA,0xB2,0xA6,0xA2,0x01, //云
0x22,0xFC,0x22,0x3F,0x00,0x1C,0x14,0x1C, //加
0x91,0x4A,0x00,0x3E,0x2A,0xFE,0x2A,0x3E, //油
0x00,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,//I
0x00,0x00,0x7E,0x02,0x02,0x02,0x02,0x00,//L
0x00,0x00,0x7E,0x42,0x42,0x42,0x7E,0x00,//O
0x00,0xF8,0x04,0x02,0x02,0x04,0xF8,0x00,//V
0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x00,//E
0x00,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,//U
0x60,0x48,0x64,0x02,0x02,0x64,0x48,0x60,//笑臉顏文字
實(shí)驗(yàn)部分
一、打開(kāi)Keil uVision5軟件逗抑,進(jìn)行編程剧辐。
新建項(xiàng)目
打開(kāi)軟件之后,鼠標(biāo)點(diǎn)擊Project后邮府,單擊紅色選中欄目荧关。
如圖所示,完善名字點(diǎn)擊保存
選擇Atmel
選擇AT89C52
點(diǎn)擊否
右鍵單擊Source group1
接下來(lái)寫(xiě)代碼
初始定義與賦值
延時(shí)函數(shù):
向74HC595發(fā)送段選信號(hào)
主函數(shù)部分:
代碼鏈接:https://pan.baidu.com/s/1tIWj_jG5W9GRDRNRFEPRag
Rebuild
注意進(jìn)行如下操作:
打開(kāi)普中科技軟件
下載成功后的實(shí)驗(yàn)結(jié)果:
重點(diǎn)
消隱現(xiàn)象的解釋?zhuān)?/p>
單片機(jī)的LED數(shù)碼動(dòng)態(tài)顯示需要消隱仙辟。因?yàn)閯?dòng)態(tài)顯示是利用 人眼的暫留效應(yīng)來(lái)多位顯示的同波。原理是其多位數(shù)碼管的每位段碼控制只由一個(gè)IO口8 位輸出,先位選 叠国,送段碼未檩,延時(shí)(1~3ms),關(guān)位選
(這個(gè)就是消隱作用粟焊,如果沒(méi)關(guān)冤狡,下一位的段碼送出時(shí),這一位也顯示下一位的段碼项棠,這樣就亂了)再下一位悲雳,重復(fù)上述過(guò)程。
例子解釋
當(dāng)位選選中最右邊一列時(shí)香追,段選信號(hào)表示全部不選中(全部不亮)
tab++后合瓢,進(jìn)入下一位位選
由于刷新時(shí)間較顯示時(shí)間快,在第二個(gè)位選信號(hào)來(lái)臨時(shí)第一個(gè)位選信號(hào)還在亮透典,這時(shí)沒(méi)有給一個(gè)全部熄滅的段選(即0xff)歪玲,會(huì)導(dǎo)致新的段選來(lái)臨時(shí),上一個(gè)位選尚未結(jié)束掷匠,就導(dǎo)致最右邊第一列會(huì)亮第二列的段選信號(hào)滥崩,但是由于第一次位選已經(jīng)持續(xù)了一段時(shí)間,其熄滅的快讹语,顏色較淺钙皮。
(此現(xiàn)象我跟陳磊同學(xué)經(jīng)過(guò)苦苦鉆研終于得出結(jié)論,還有待考證)
個(gè)人編程心路
1.在之前的學(xué)習(xí)中,有些知識(shí)掌握的不是很扎實(shí)短条,當(dāng)實(shí)踐操作時(shí)才發(fā)現(xiàn)要想獨(dú)立完成一個(gè)實(shí)驗(yàn)导匣,前后聯(lián)系很多,對(duì)于C51單片機(jī)的基礎(chǔ)知識(shí)必須掌握透徹茸时。
2.最開(kāi)始的時(shí)候贡定,我沒(méi)有想到有代碼可以參考(對(duì)云盤(pán)資料研究不夠),自己照著課本寫(xiě)代碼可都,沒(méi)有成功缓待,后來(lái)得知有參考代碼,瞬間有了方向渠牲,自己寫(xiě)代碼的話(huà)還是很難的旋炒。
3.單片機(jī)的跳線帽少一個(gè),借用同學(xué)的签杈,同時(shí)我還發(fā)現(xiàn)手指也能當(dāng)跳線帽瘫镇。
4.我總覺(jué)得手繪寫(xiě)出十六進(jìn)制挺麻煩的,有點(diǎn)強(qiáng)迫癥答姥,找了小半天的字模生成軟件铣除。
5.感謝石雅文對(duì)于段選以及位選的指正!
5.實(shí)驗(yàn)不易鹦付,且做且心記通孽。