基于單片機(jī)的LED漢字顯示屏的設(shè)計(jì)
2 軟件設(shè)計(jì)
2.1 主程序流程圖
主程序流程圖如圖8所示。主程序調(diào)用了2個(gè)重要子函數(shù),即顯示子函數(shù)和移位子函數(shù)。顯示子函數(shù)的功能是讓LED顯示器顯示指針?biāo)赶虻淖帜?shù)組的數(shù)據(jù),而移位子函數(shù)的功能是讓指針?biāo)傅牡刂芳?,以實(shí)現(xiàn)漢字整體上移一行的效果。整個(gè)主程序運(yùn)行后,先初始化指針p所指向的地址,讓指針指向字模數(shù)組的起始處,并且設(shè)定變量I的初值為0,用I的值來(lái)控制顯示函數(shù)的重復(fù)次數(shù),達(dá)到調(diào)整顯示漢字移動(dòng)速度的目的。當(dāng)I值未達(dá)到設(shè)定值時(shí),不斷重復(fù)顯示子函數(shù),此時(shí)屏幕上顯示的是一個(gè)靜止不動(dòng)的漢字,直到I達(dá)到設(shè)定值,調(diào)用移位子函數(shù),將指針地址加2,使指針的起始位置指向第二行,然后重新從I的初始化開(kāi)始執(zhí)行,這樣,屏幕上就呈現(xiàn)出漢字不斷上移的結(jié)果。本文引用地址:http://www.ex-cimer.com/article/170651.htm
2.2 顯示子程序流程圖
顯示子程序流程圖如圖9所示,顯示子程序的運(yùn)行過(guò)程主要是單片機(jī)I/O口對(duì)外發(fā)送數(shù)據(jù)的過(guò)程。程序首先設(shè)定了一個(gè)局部變量I,并定義其值為0。設(shè)定該變量的主要目的是為了確定掃描的行數(shù),以控制I/O口發(fā)送相應(yīng)行的字模數(shù)據(jù)。經(jīng)過(guò)判斷,如果I值小于15,說(shuō)明正在掃描顯示器上的某一行,則P0口送出相應(yīng)的行掃描命令到74HC154芯片,經(jīng)譯碼后控制顯示器接通相應(yīng)的行,然后P2、P1送出相應(yīng)的高、低八位列字模數(shù)據(jù),最后關(guān)閉列控制以防止殘影,對(duì)I值自加1就完成了一個(gè)循環(huán)。當(dāng)I>15時(shí),說(shuō)明全部的16行掃描進(jìn)行完成,此時(shí)顯示器整屏已經(jīng)出現(xiàn)了需要的圖像,程序執(zhí)行完成。
2.3 移位子程序流程圖
位移子程序就是讓地址指針自動(dòng)加2,這樣,當(dāng)濕示函數(shù)執(zhí)行時(shí),第一行顯示的就是原本第二行要顯示的內(nèi)容,依次類推,整個(gè)字形就好像上移了一行一樣。所以程序運(yùn)行過(guò)程是這樣的:首先讓地址指針自加2,以實(shí)現(xiàn)地址指針的移動(dòng),然后削定地址指針?biāo)赶虻牡刂返闹担绻刂分羔樦赶蛄俗帜?shù)組的最后一位地址,就要令地址指針歸0,否則,指針順序移動(dòng)下去,當(dāng)移出字模數(shù)組的范圍后,后面的存儲(chǔ)空間存儲(chǔ)的數(shù)據(jù)是未知的,就會(huì)出現(xiàn)非預(yù)期的圖形,例如亂碼或空白。
3 硬件調(diào)試與改進(jìn)
3.1 驅(qū)動(dòng)電路的調(diào)試與改進(jìn)
最初設(shè)計(jì)方案沒(méi)有使用驅(qū)動(dòng)電路,軟件仿真正常。在面包板上依原理圖建立物理連接后,調(diào)試中發(fā)現(xiàn)LED忽明忽暗,漢字顯示不穩(wěn)定。經(jīng)萬(wàn)用表測(cè)量,LED顯示器中單個(gè)發(fā)光二極管中通過(guò)的電流不足1.5 mA,達(dá)不到額定的工作電流。確定問(wèn)題的原因是單片機(jī)的驅(qū)動(dòng)電流不足。為解決這一問(wèn)題,本次設(shè)計(jì)采用一套利用三級(jí)管控制的驅(qū)動(dòng)電路,經(jīng)試驗(yàn),加入到電路中效果良好,上述缺陷得到解決。
3.2 限流電阻的調(diào)試與改進(jìn)
當(dāng)確定要加驅(qū)動(dòng)電路之后,怎樣用三極管來(lái)控制這個(gè)電流大小是一個(gè)問(wèn)題。起初通過(guò)三極管直接加5 V電壓。一個(gè)LED被燒壞,這就需要加要加限流電阻,但是這電阻要加多大呢?分析如下:正常點(diǎn)亮一個(gè)LED的電流大約是5~15 mA左右,動(dòng)態(tài)掃描電路,每次每列最多只點(diǎn)亮1個(gè)LED,故每個(gè)驅(qū)動(dòng)三極管流過(guò)的電流按10 mA的電流大小算。通過(guò)加不同阻值的電阻,用萬(wàn)用表測(cè)量后發(fā)現(xiàn)用4.7 kΩ的限流電阻與8550(PNP型)三極管串聯(lián)控制行,用47 kΩ的電阻與8050(NPN型)三極管串聯(lián)控制列便可以滿足要求。
3.3 譯碼器的調(diào)試與改進(jìn)
最初設(shè)計(jì)方案采用軟件編程來(lái)實(shí)現(xiàn)掃描時(shí)的換行控制,雖然硬件電路相對(duì)現(xiàn)在的有少許簡(jiǎn)單,但是軟件程序確實(shí)相當(dāng)?shù)膹?fù)雜,后發(fā)現(xiàn)只用一個(gè)譯碼器就可以大大簡(jiǎn)化程序。
3.4 上拉電阻的選擇
設(shè)計(jì)之處初用單片機(jī)的P0口通過(guò)譯碼器控制顯示屏的行,插好線后發(fā)現(xiàn)單片機(jī)不能正常工作,原因是單片機(jī)的P0口是比較特殊的。P0口在不接片外存儲(chǔ)器與不擴(kuò)展I/O口時(shí),可作為準(zhǔn)雙向輸入/輸出口。在接有片外存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口分時(shí)復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。所以P0口的帶負(fù)載能力是比較低的,一般情況下要接一個(gè)上拉電阻,所以最后在P0口接了一個(gè)10千歐的排阻之后解決了問(wèn)題。
3.5 消影調(diào)試
當(dāng)所有的線路都連接好后,顯示卻不清晰、有串?dāng)_,每行有上一行的重影。在源程序中加入消影程序后可以清晰穩(wěn)定的顯示。
4 結(jié)束語(yǔ)
文中給出了LED漢字顯示屏的系統(tǒng)框圖,各單元硬件電路、軟件設(shè)計(jì)流程圖及硬件電路的調(diào)試流程;詳細(xì)闡述了由STC89C52RC芯片、74H C154芯片、晶振電路、復(fù)位電路、驅(qū)動(dòng)電路、16x16 LED點(diǎn)陣構(gòu)成的LED漢字顯示屏系統(tǒng)。所設(shè)計(jì)的顯示屏可以實(shí)現(xiàn)漢字的滾動(dòng)顯示,顯示的漢字清晰,無(wú)串?dāng)_,無(wú)重影。
led顯示器相關(guān)文章:led顯示器原理
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
晶振相關(guān)文章:晶振原理
評(píng)論