基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作_第1頁(yè)
基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作_第2頁(yè)
基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作_第3頁(yè)
基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作_第4頁(yè)
基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 陜西理工學(xué)院畢業(yè)設(shè)計(jì)基于單片機(jī)LED點(diǎn)陣廣告屏設(shè)計(jì)與制作  摘要LED顯示屏作為一種新型的顯示器件,是由多個(gè)發(fā)光二極管按矩陣形式排列封裝而成,通常用來(lái)顯示時(shí)間、圖文等信息。本設(shè)計(jì)是基于AT89C51單片機(jī)的16x16顯示屏,其中包含了硬件、軟件、調(diào)試等方案的設(shè)計(jì)。此外、該設(shè)計(jì)只需簡(jiǎn)單的級(jí)聯(lián)就能實(shí)現(xiàn)顯示屏的拓展,但級(jí)聯(lián)時(shí)要注意不要超過(guò)驅(qū)動(dòng)負(fù)載范圍。關(guān)鍵詞AT89C51,LED,單片機(jī)Based on SCM LED dot matrix screen of advertisement design and productionAbstract: LED display as a no

2、vel display device, is composed of a plurality of light emitting diodes are arranged in a matrix form package, usually used to display time, graphic information. The design is based on the AT89C51MCU 16x16display screen, which includes hardware, software, debugging scheme design. In addition, the de

3、sign simply cascade can realize the display of expansion, but to be careful not to exceed the cascade drive load range.Key words: AT89C51; LED; single chip microcomputer目錄引言21.LED顯示屏設(shè)計(jì)的課題背景31.1 LED顯示屏的設(shè)計(jì)背景31.2 LED顯示屏的設(shè)計(jì)依據(jù)32.課題設(shè)計(jì)方案33 硬件設(shè)計(jì)43.1設(shè)計(jì)框圖及介紹43.2 51系列單片機(jī)簡(jiǎn)介43.3 單片機(jī)最小應(yīng)用系統(tǒng)電路設(shè)計(jì)63.4 LED點(diǎn)陣介紹83.5 LED

4、顯示方式83.6 點(diǎn)陣的移動(dòng)103.7 LED陣列驅(qū)動(dòng)電路144 軟件設(shè)計(jì)154.1 單片機(jī)延時(shí)子程序154.2點(diǎn)陣左移顯示的流程圖及分析174.4 調(diào)試19結(jié)束語(yǔ)19致謝20附錄一.程序代碼21附錄二主要芯片介紹22附錄三仿真電路圖25附錄四.實(shí)物圖片26引言隨著科技技術(shù)的不斷發(fā)展,單片機(jī)以極其高的性價(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的優(yōu)點(diǎn)是體積小、重量輕、抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開(kāi)發(fā)較為容易。LED顯示屏分為圖文顯示屏和視頻顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計(jì)算機(jī)同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計(jì)算機(jī)進(jìn)行控

5、制,圖文、圖像并茂,以實(shí)時(shí)、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動(dòng)畫、錄像、電視、VCD節(jié)目以及現(xiàn)場(chǎng)實(shí)況。LED顯示屏顯示畫面色彩鮮艷,立體感強(qiáng),靜如油畫,動(dòng)如電影,廣泛應(yīng)用于交通運(yùn)輸、車站、商場(chǎng)、醫(yī)院、賓館、證券市場(chǎng)、工業(yè)企業(yè)管理等公共場(chǎng)所。 LED顯示屏可以顯示變化的數(shù)字、文字、圖形圖像;不僅可以用于室內(nèi)環(huán)境還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏無(wú)法比擬的優(yōu)點(diǎn)。 LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開(kāi)的。這些優(yōu)點(diǎn)概括起來(lái)是:亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度

6、、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。現(xiàn)代LED的發(fā)展很快,很多研究領(lǐng)域非常已經(jīng)深刻,實(shí)際情況是:很多相關(guān)的知識(shí)已經(jīng)遠(yuǎn)遠(yuǎn)超出我們?cè)谛W(xué)生的能力范圍,所以在此只是簡(jiǎn)單的研究一下用單片機(jī)驅(qū)動(dòng)的LED顯示移動(dòng)的漢字。目的有三:一是親手制作一個(gè)簡(jiǎn)單實(shí)用的顯示文字的LED點(diǎn)陣;二是通過(guò)制作LED點(diǎn)陣增強(qiáng)對(duì)LED點(diǎn)陣的了解和應(yīng)用,以及復(fù)習(xí)鞏固單片機(jī)知識(shí);三是通過(guò)團(tuán)隊(duì)合作,增強(qiáng)團(tuán)隊(duì)合作的意識(shí),為以后走向社會(huì)工作打下基礎(chǔ),并且增強(qiáng)了同學(xué)之間的友誼。為了吸引觀眾增強(qiáng)顯示效果,可以有多種顯示模式。最簡(jiǎn)單的顯示模式是靜態(tài)顯示。與靜態(tài)顯示模式相對(duì)應(yīng),就有各種動(dòng)態(tài)顯示模式,它們所顯示

7、的圖文都是能夠動(dòng)的。按照?qǐng)D文運(yùn)動(dòng)的特點(diǎn)又可以分為閃爍、平移、旋轉(zhuǎn)、縮放等多種顯示模式。產(chǎn)生不同顯示模式的方法,并不意味著一定要重新編寫顯示數(shù)據(jù),可以通過(guò)一定的算法從原來(lái)的顯示數(shù)據(jù)直接生成。例如,按順序調(diào)整行號(hào),可以使顯示圖文產(chǎn)生上下平移;而順序調(diào)整列顯示數(shù)據(jù)的位置,就可以達(dá)到左右平移的目的;刷新的時(shí)間控制,要考慮運(yùn)動(dòng)圖形文字的顯示效果。刷新太慢,動(dòng)感不顯著;刷新太快了,中間過(guò)程看不清。一般刷新周期可控制在幾十毫秒范圍之內(nèi)。本次畢業(yè)設(shè)計(jì)中,由本人尋求林贊揚(yáng),洪信根等同學(xué)的幫助,我負(fù)責(zé)硬件部分電路圖的設(shè)計(jì)和軟件部分程序的設(shè)計(jì)和調(diào)試,目的是應(yīng)用簡(jiǎn)單方便的電路連接和程序完成漢字的換色與移動(dòng)。洪信根負(fù)責(zé)

8、用設(shè)計(jì)好的點(diǎn)陣電路制作PCB電路板,包括完成PCB板的制作,林贊揚(yáng)負(fù)責(zé)制作另外一塊在面包板上連的點(diǎn)陣線連板子的焊接與調(diào)試,各人的分工不同只是工作側(cè)重點(diǎn)的不同,大家是在一起互相學(xué)習(xí)互相幫助,共同完成設(shè)計(jì)任務(wù)。1.LED顯示屏設(shè)計(jì)的課題背景1.1 LED顯示屏的設(shè)計(jì)背景隨著科學(xué)技術(shù)的發(fā)展,社會(huì)不斷的進(jìn)步,電子事業(yè)也有著突飛猛進(jìn)的改革。人們對(duì)公共傳媒質(zhì)量的要求越來(lái)越高。隨著近幾年來(lái)LED字符顯示器的推出和不斷完善,它的應(yīng)用范圍正在擴(kuò)大,應(yīng)用效果十分顯著。不難看出,這一電子信息技術(shù)發(fā)展的新成果,在宣傳、政治思想教育、廣告娛樂(lè)等方面的應(yīng)用日益突出。由于大規(guī)模集成電路技術(shù)的發(fā)展,其控制系統(tǒng)已能夠取代以前利

9、用復(fù)雜電子線路或數(shù)字電路構(gòu)成的控制系統(tǒng),還可以軟件控制來(lái)實(shí)現(xiàn),并能夠?qū)崿F(xiàn)智能化。1.2 LED顯示屏的設(shè)計(jì)依據(jù)根據(jù)LED顯示屏設(shè)計(jì)的基本原理,結(jié)合其設(shè)計(jì)要求:“1.顯示漢字;2.可以移動(dòng);3.可循環(huán)顯示。”由此設(shè)想出以下解決方案由AT89C52單片機(jī)最小系統(tǒng)、控制部分、顯示部分組成。進(jìn)行漢字的顯示,再進(jìn)一步進(jìn)行右移。2.課題設(shè)計(jì)方案本文主要講述的是“LED點(diǎn)陣字符顯示電路”,本課題的實(shí)現(xiàn)主要有兩種方案。方案一:由數(shù)字電路來(lái)實(shí)現(xiàn),由移位寄存器與鎖存器對(duì)字符數(shù)據(jù)進(jìn)行存儲(chǔ),然后并行輸入到顯示屏,來(lái)實(shí)現(xiàn)漢字的顯示。方案二:由單片機(jī)編程控制來(lái)實(shí)現(xiàn),方案利用單片機(jī)控制鎖存器和譯碼器,由鎖存器和譯碼器送出行

10、選和列選來(lái)控制LED屏的亮滅,從而顯示漢字。方案論證:不難看出,選用數(shù)字電路來(lái)實(shí)現(xiàn)比較復(fù)雜。因?yàn)橛脭?shù)字電路實(shí)現(xiàn)必須要有移位寄存器與鎖存器對(duì)字符數(shù)據(jù)進(jìn)行存儲(chǔ),然后并行輸入到顯示屏,不但如此,而且需要很大一部分的擴(kuò)展電路才能實(shí)現(xiàn)。用數(shù)字電路實(shí)現(xiàn)不但大大提高成本,而且設(shè)計(jì)出的電路的靈活性差、不易調(diào)試、成本高等缺點(diǎn)。方案二不僅能夠改進(jìn)方案一設(shè)計(jì)的不靈活,還可進(jìn)行擴(kuò)展。通過(guò)比較,從設(shè)計(jì)方案的優(yōu)點(diǎn)及所設(shè)計(jì)的方便實(shí)用性,選擇第二種設(shè)計(jì)方案。本文是基于單片機(jī)來(lái)實(shí)現(xiàn)的。由于單片機(jī)具有體積小、重量輕、價(jià)格便宜、功耗低、控制功能強(qiáng)及運(yùn)算速度快等特點(diǎn),因而在國(guó)民經(jīng)濟(jì)建設(shè)、軍事及家用電器等不同領(lǐng)域起到了舉足輕重的作用。

11、用單片機(jī)C語(yǔ)言編程,來(lái)控制16*16 LED點(diǎn)陣塊進(jìn)行顯示相應(yīng)的漢字、圖形、圖像等。使用C來(lái)開(kāi)發(fā)系統(tǒng)會(huì)更加方便快捷。一方面不會(huì)降低對(duì)硬件的控制能力,另一方面也不會(huì)使代碼長(zhǎng)度增加多少。如果運(yùn)用的好的話,就能夠開(kāi)發(fā)出非常高效的系統(tǒng)。并且非常易于維護(hù)。3 硬件設(shè)計(jì)3.1設(shè)計(jì)框圖及介紹LED點(diǎn)陣總體框圖如圖3.1所示,點(diǎn)陣電路大體上可以分成微機(jī)本身的硬件、顯示驅(qū)動(dòng)電路、控制信號(hào)電路三部分。控制電路部分包括一個(gè)51CUP和一些外圍電路。在整個(gè)電路當(dāng)中此控制電路部分相當(dāng)于一個(gè)上位機(jī),它負(fù)責(zé)控制整個(gè)電路以及相應(yīng)的程序的運(yùn)行、與PC機(jī)的串行通訊、以及給屏體電路部分發(fā)送命令。點(diǎn)陣顯示屏體、以及它的行和列的各個(gè)驅(qū)

12、動(dòng)電路。由于兩部分的電路在制板時(shí)可以放到一起,所以可以將其字庫(kù)放到控制電路部分使用串行通訊方式來(lái)與屏體電路部分進(jìn)行數(shù)據(jù)和命令的傳送。此顯示電路采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。由行譯碼器給出的行選通信號(hào),從第一行開(kāi)始,按順序依次對(duì)各行進(jìn)行掃描(把該行與電源的一端接通)。另一方而,根據(jù)各列鎖存的數(shù)據(jù),確定相應(yīng)的列驅(qū)動(dòng)器是否將該列與電源的另一端接通。接通的列,就在該行該列點(diǎn)燃相應(yīng)的LED;未接通的列所對(duì)應(yīng)的LED熄滅。圖3.1 點(diǎn)陣顯示的總體框圖3.2 51系列單片機(jī)簡(jiǎn)介單片機(jī)(Microcontroller,又稱微處理器)是在一塊硅片上集成了各種部件的微型

13、機(jī),這些部件包括中央處理器CPU、數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)器/計(jì)數(shù)器和多種I/O接口電路。8051單片機(jī)的基本結(jié)構(gòu)見(jiàn)圖3.2。圖3.2 8051單片機(jī)的基本結(jié)構(gòu)8051是MCS-51系列單片機(jī)的一個(gè)產(chǎn)品。MCS-51系列單片機(jī)是Intel公司推出的通用型單片機(jī),8051單片機(jī)系列指的是MCS-51系列和其他公司的8051衍生產(chǎn)品。這些衍生品是在基本型基礎(chǔ)上增強(qiáng)了各種功能的產(chǎn)品。這些產(chǎn)品給8位單片機(jī)注入了新的活力,給它的開(kāi)發(fā)應(yīng)用開(kāi)拓了更廣泛的前景。8051系列的內(nèi)部結(jié)構(gòu)可以劃分為CPU、存儲(chǔ)器、并行口、串行口、定時(shí)器/計(jì)數(shù)器、中斷邏輯幾部分。(1)中央處理器8051的中央處理器由

14、運(yùn)算器和控制邏輯構(gòu)成,其中包括若干特殊功能寄存器(SFR)。算術(shù)邏輯單元ALU能對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算;“與”、“或”、“異或”等邏輯運(yùn)算以及位操作運(yùn)算。ALU只能進(jìn)行運(yùn)算,運(yùn)算的操作數(shù)可以事先存放到累加器ACC或寄存器TMP中,運(yùn)算結(jié)果可以送回ACC或通用寄存器或存儲(chǔ)單元中,累加器ACC也可以寫為A。B寄存器在乘法指令中用來(lái)存放一個(gè)乘數(shù),在除法指令中用來(lái)存放除數(shù),運(yùn)算后B中為部分運(yùn)算結(jié)果。程序狀態(tài)字PSW是個(gè)8位寄存器,用來(lái)寄存本次運(yùn)算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含義是:CY:進(jìn)位標(biāo)志。有進(jìn)位/錯(cuò)位時(shí)CY=1,否則CY=0。 AC:半進(jìn)位標(biāo)志。當(dāng)D3位

15、向D4位產(chǎn)生進(jìn)位/錯(cuò)位時(shí),AC=1,否則AC=0,常用于十進(jìn)制調(diào)整運(yùn)算中。F0:用戶可設(shè)定的標(biāo)志位,可置位/復(fù)位,也可供測(cè)試。RS1、RS0:四個(gè)通用寄存器組選擇位,該兩位的四種組合狀態(tài)用來(lái)選擇03寄存器組。OV:溢出標(biāo)志。當(dāng)帶符號(hào)數(shù)運(yùn)算結(jié)果超出-128+127范圍時(shí)OV=1,否則OV=0。當(dāng)無(wú)符號(hào)數(shù)乘法結(jié)果超過(guò)255時(shí),或當(dāng)無(wú)符號(hào)數(shù)除法的除數(shù)為0時(shí)OV=1,否則OV=0。P:奇偶校驗(yàn)標(biāo)志。每條指令執(zhí)行完,若A中1的個(gè)數(shù)為奇數(shù)時(shí)P=1,否則P=0,即偶校驗(yàn)方式??刂七壿嬛饕ǘ〞r(shí)和控制邏輯、指令寄存器 、譯碼器以及地址指針DPTR和程序寄存器PC等。單片機(jī)是程序控制式計(jì)算機(jī),即它的運(yùn)行過(guò)程是

16、在程序控制下逐條執(zhí)行程序指令的過(guò)程:從程序存儲(chǔ)器中取出指令送指令存儲(chǔ)器IR,然后指令譯碼器ID進(jìn)行譯碼,譯碼產(chǎn)生一系列符合定時(shí)要求的微操作信號(hào),用以控制單片機(jī)的各部分動(dòng)作。8051的控制器在單片機(jī)內(nèi)部協(xié)調(diào)各功能部件之間的數(shù)據(jù)傳送、數(shù)據(jù)運(yùn)算等操作,并對(duì)單片機(jī)發(fā)出若干控制信息。這些控制信息的使用專門的控制線,諸如PSEN、ALE、EA以及RST,也有一些是和P3口的某些端子合用,如WR和RD就是P3.6和P3.7,他們的具體功能在介紹8051引腳是一起敘述。(2)存儲(chǔ)器組織8051單片機(jī)的存儲(chǔ)器結(jié)構(gòu)特點(diǎn)之一是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi),并有各自的尋址機(jī)構(gòu)和尋址方式,這種結(jié)構(gòu)稱為哈佛結(jié)構(gòu)單片機(jī)。這

17、種結(jié)構(gòu)與通用微機(jī)的存儲(chǔ)器結(jié)構(gòu)不同,一般微機(jī)只有一個(gè)存儲(chǔ)器邏輯空間,可隨意安排ROM或RAM,訪存時(shí)用同一種指令,這種結(jié)構(gòu)稱為普林斯頓型。8051單片機(jī)在物理上有四個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。8051片內(nèi)有256K數(shù)據(jù)存儲(chǔ)器RAM和4KB的程序存儲(chǔ)器ROM。除此之外,還可以在片外擴(kuò)展RAM和ROM,并且各有64KB的尋址范圍。也就是最多可以在外部擴(kuò)展2*64KB存儲(chǔ)器。8051的存儲(chǔ)器組織結(jié)構(gòu)如圖3.3所示。圖 3.3 8051存儲(chǔ)器組織結(jié)構(gòu)64K字節(jié)的程序存儲(chǔ)器(ROM)空間中,有4K字節(jié)地址區(qū)對(duì)于片內(nèi)ROM和片外ROM是公用的,這4K字節(jié)地址是

18、0000HFFFH。而1000HFFFFH地址區(qū)為外部ROM專用。CPU的控制器專門提供一個(gè)控制信號(hào)EA用來(lái)區(qū)分內(nèi)部ROM和外部ROM的公用地址區(qū):當(dāng)EA接高電平時(shí),單片機(jī)從片內(nèi)ROM的4K字節(jié)存儲(chǔ)器區(qū)取指令,而當(dāng)指令地址超過(guò)0FFFH后,就自動(dòng)的轉(zhuǎn)向片外ROM取指令。當(dāng)EA接低電平時(shí),CPU只從片外ROM取指令。程序存儲(chǔ)器的某些單元是保留給系統(tǒng)使用的:0000H0002H單元是所有執(zhí)行程序的入口地址,復(fù)位以后,CPU總是叢0000H單元開(kāi)始執(zhí)行程序。0003H002AH單元均勻地分為五段,用做五個(gè)中斷服務(wù)程序的入口。用戶程序不應(yīng)進(jìn)入上述區(qū)域。8051的RAM雖然字節(jié)數(shù)不很多,但卻起著十分重要

19、的作用。256個(gè)字節(jié)被分為兩個(gè)區(qū)域:00H7FH時(shí)真正的RAM區(qū),可以讀寫各種數(shù)據(jù)。而80HFFH是專門用于特殊功能寄存器(SFR)的區(qū)域。對(duì)于8051安排了21個(gè)特殊功能寄存器,每個(gè)寄存器為8位,所以實(shí)際上128個(gè)字節(jié)并沒(méi)有全部利用。內(nèi)部RAM的各個(gè)單元,都可以通過(guò)直接地址來(lái)尋找,對(duì)于工作寄存器,則一般都直接用R0R7,對(duì)特殊功能寄存器,也是直接使用其名字較為方便。8051內(nèi)部特殊功能寄存器都是可以位尋址的,并可用“寄存器名.位”來(lái)表示,如ACC.0,B.7等。3.3 單片機(jī)最小應(yīng)用系統(tǒng)電路設(shè)計(jì)圖3.4 單片機(jī)最小應(yīng)用系統(tǒng)原理圖 注: 該最小系統(tǒng)由按鍵復(fù)位RESET電路、晶體振蕩電路以及I/

20、O接口電路組成。復(fù)位的實(shí)現(xiàn)通常用2種方式: 開(kāi)機(jī)上電復(fù)位和外部手動(dòng)復(fù)位,本設(shè)計(jì)用的是外部手動(dòng)復(fù)位。電路圖3.5如下:圖3.5 單片機(jī)復(fù)位圖AT89C51工作電壓VCC=5V,其EA引腳需接高電平,5V電源電路如圖3.6所示。圖3.6 單片機(jī)電源原理圖注: 該電源電路主要模塊為IC7805,它能輸出穩(wěn)定的 5V電源,圖中整流橋是將市電轉(zhuǎn)變?yōu)橹绷麟?電容起到慮波作用由7805的OUT引腳輸出5V電壓。附錄四實(shí)物圖片3.4 LED點(diǎn)陣介紹8×8單色點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)二極管是放置在行線與列線的叉點(diǎn)上。本設(shè)計(jì)是一種實(shí)用的漢字顯示屏的制作,制作的是點(diǎn)陣??紤]到元器件的易購(gòu)性,

21、使用8×8的點(diǎn)陣發(fā)光二極管模塊,組成了16行16列的發(fā)光點(diǎn)陣。實(shí)際使用時(shí)可以根據(jù)這個(gè)原理自行擴(kuò)充顯示的字?jǐn)?shù)。下面的8×8單色點(diǎn)陣和8×8雙色點(diǎn)陣可以看出,其實(shí)8×8雙色點(diǎn)陣就是兩塊8×8單色點(diǎn)陣組合在一起的。要實(shí)現(xiàn)用兩種顏色顯示,只要在電路的設(shè)計(jì)中適當(dāng)?shù)倪B線就可以了。 8×8單色和雙色點(diǎn)陣LED結(jié)構(gòu)分別如下圖3.8和3.9所示。 圖3.7 8×8點(diǎn)陣外觀及引腳圖 圖3.8 8×8單色點(diǎn)陣內(nèi)部圖 圖3.9 8×8雙色點(diǎn)陣內(nèi)部圖3.5 LED顯示方式漢字顯示屏用于顯示漢字、字符及圖像信息,在公共汽車、銀行、醫(yī)

22、院及戶外廣告等地方都有廣泛的應(yīng)用。下面是簡(jiǎn)單的漢字顯示屏的制作,由單片機(jī)控制漢字的顯示內(nèi)容。為了降低成本,使用了四塊8×8的LED點(diǎn)陣發(fā)光管的模塊,組成了一個(gè)16×16的LED點(diǎn)陣顯示屏,如圖1.10所示。在這里僅做了四個(gè)漢字的顯示,在實(shí)際的使用中可以根據(jù)這個(gè)原理自行的擴(kuò)展顯示的漢字,下面是介紹漢字顯示的原理。 圖3.10 四塊8×8的LED點(diǎn)陣組成16×16的LED點(diǎn)陣LED驅(qū)動(dòng)顯示采用動(dòng)態(tài)掃描方法,動(dòng)態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行的同名列共用一套列驅(qū)動(dòng)器。以16×16點(diǎn)陣為例,把所有同一行的發(fā)光管的陽(yáng)極連在一起,把

23、所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;.第16行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺(jué)暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。顯示數(shù)據(jù)傳輸采用串行傳輸?shù)姆椒?,控制電路可以只用一根信?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無(wú)疑是十分經(jīng)濟(jì)的。但串行傳輸過(guò)程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都

24、已傳輸?shù)轿恢螅@一行的各列才能并行地進(jìn)行顯示。對(duì)于串行傳輸方式來(lái)說(shuō),列數(shù)據(jù)準(zhǔn)備時(shí)間可能相當(dāng)長(zhǎng),在行掃描周期確定的情況下,留給行顯示的時(shí)間就太少了,以致影響到LED的亮度。采用串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要有鎖存功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來(lái)說(shuō),它應(yīng)能實(shí)現(xiàn)串入并出的移位功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串行移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。LED點(diǎn)陣顯示模塊進(jìn)行的方法有兩種:(1)水平方向(X方向)掃描,即逐列掃描的方式(簡(jiǎn)稱列掃

25、描方式):此時(shí)用一個(gè)P口輸出列碼決定哪一列能亮(相當(dāng)于位碼),用另一個(gè)P口輸出行碼(列數(shù)據(jù)),決定該行上那哪個(gè)LED亮(相當(dāng)于段碼)。能亮的列從左到右掃描完16列(相當(dāng)于位碼循環(huán)移動(dòng)16次)即顯示出一個(gè)完整的圖像。(2)豎直方向(Y方向)掃描,即逐行掃描方式(簡(jiǎn)稱行掃描方式):此時(shí)用一個(gè)P口輸出決定哪一行能亮(相當(dāng)于位碼),另一個(gè)P口輸出列碼(行數(shù)據(jù),行數(shù)據(jù)為將列數(shù)據(jù)的點(diǎn)陣旋轉(zhuǎn)90度的數(shù)據(jù))決定該行上哪些LED燈亮(相當(dāng)于段碼)。能亮的行從上向下掃描完16行(相當(dāng)于位碼循環(huán)移位16次)即顯示一幀完整的圖像。本設(shè)計(jì)應(yīng)用的是第一種的掃描方法,即水平方向(X方向)掃描。每一個(gè)字由16行16列的點(diǎn)陣形

26、成顯示,即每個(gè)字均由256個(gè)點(diǎn)陣來(lái)表示,我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素。一般我們使用的16×16的點(diǎn)陣宋體字庫(kù),即所謂的16×16,是每一個(gè)漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫(kù)從該位置起的32字節(jié)信息記錄了該字的字模信息。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。我們以水平方向(x方向)掃描顯示漢字的“江”為例來(lái)說(shuō)明其掃描原理,每一個(gè)字由16行16列的點(diǎn)陣組成顯示,如圖下的,如果用8位的AT89S51的單片機(jī)來(lái)控制,由于單片機(jī)的總線為8位,一個(gè)字需要拆分成兩個(gè)部分。一般我們把它分解成上部分和下部分,上部分由8*16的點(diǎn)陣組成,下部分也由

27、8*16的點(diǎn)陣組成。在本例中單片機(jī)首先顯示的是左上角的第一列的部分,即第0列的P00P07口。方向?yàn)镻00到P07,顯示漢字“江”的時(shí)候,P00到P04都是滅的,P05亮,即二進(jìn)制00001000,轉(zhuǎn)換為16進(jìn)制為08H,如圖1.11所示。上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下的掃描方式,即從P27向P20方向掃描,從上圖可以看到,這一列所有的都不亮,所以代碼為00000000,16進(jìn)制為00H,然后單片機(jī)轉(zhuǎn)向上半部的第二列,除了P05亮,其他的都不亮,即為00000100,16進(jìn)制為04H,這一列掃描完成之后繼續(xù)進(jìn)行下半部分的掃描,除了P21亮

28、,其他的為不亮,為二進(jìn)制00100000,即16進(jìn)制20H。按照這個(gè)方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個(gè)8位,可以得出漢字“陜”的掃描代碼為 :B 7FH,FFH,40H,00H,44H,20H,5AH,12H,61H,E2H,14H,84H,13H,88H,10H,B0H;DB FFH,C0H,10H,A0H,11H,90H,12H,88H,14H,84H,10H,82H,00H,82H,00H,00H;"陜",0 圖3.11 點(diǎn)陣顯示原理圖由這個(gè)原理可以看到,無(wú)論顯示何種字體或圖像,都可以用這種方法來(lái)分析出它的掃描代碼從而顯示在屏幕上。了解漢字的顯示原理之后,那如何

29、得到漢字的字模信息呢?現(xiàn)在有一些現(xiàn)成的漢字字模生成軟件,可從網(wǎng)上下載漢字字庫(kù)提取程序直接提取字庫(kù),如圖1.12所示的為一種字模生成軟件,軟件打開(kāi)后輸入漢字,點(diǎn)擊“檢取”后,十六進(jìn)制數(shù)據(jù)漢字代碼即可以自動(dòng)生成,把我們需要的豎排數(shù)據(jù)復(fù)制到我們的程序即可圖3.12 漢字字模生成軟件3.6 點(diǎn)陣的移動(dòng)以下以16×16點(diǎn)陣為例介紹點(diǎn)陣的移動(dòng)。要顯示一個(gè)字符,該字符的點(diǎn)陣數(shù)據(jù)可以列向(縱向)16點(diǎn)組字,又可以行向(橫向)16點(diǎn)組字。無(wú)論哪一種組字方法,都既可以顯示字符的水平方向的移動(dòng),又可以顯示豎直方向的移動(dòng)。1顯示字符的左右移動(dòng)(1)列掃描方式左移動(dòng):列向組字顯示字符水平方向的移動(dòng)(左滾動(dòng))

30、在這里有兩個(gè)方法: 方法1:延長(zhǎng)數(shù)組法。將原來(lái)字符點(diǎn)陣數(shù)組的16個(gè)數(shù)據(jù)重復(fù)一遍延長(zhǎng),點(diǎn)陣數(shù)組的數(shù)據(jù)個(gè)數(shù)為32個(gè)。每掃描儀幀取8個(gè)數(shù)據(jù)顯示,下一幀取數(shù)要在數(shù)組中后移一個(gè)數(shù)取數(shù)。循環(huán)一遍掃16幀??梢约傧胗袃蓧K16×16的點(diǎn)陣模塊(共32幀)水平平行排列,用一個(gè)恰好能罩住8列點(diǎn)陣的中空方框去罩這個(gè)點(diǎn)陣,第1(第1幀)罩住最左邊數(shù)起第一列開(kāi)始的16列,就掃描顯示這16列;第2次(第2幀)使方框右移一列,罩住做左邊數(shù)起第2列開(kāi)始的16列,就掃描顯示這16列;······;這樣每掃描完一幀使方框右移一列,最后第16次(第16幀)時(shí),罩

31、住左邊數(shù)起的第16列開(kāi)始的16列,就掃描顯示這16列。如此完成16幀畫面的掃描顯示,也就完成了整個(gè)一次移動(dòng)循環(huán)掃描、之后反復(fù)循環(huán),即可呈現(xiàn)顯示字符沿水平向左移動(dòng)的圖像,如圖1.13所示。 圖3.13 方框圖法左右移動(dòng)示意圖因?yàn)槭橇邢蚪M字(列掃描方式,點(diǎn)陣數(shù)據(jù)為行碼,上邊為地位下面為高位),希望顯示移動(dòng)的一個(gè)字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第116個(gè)數(shù)據(jù),送行碼輸出口,對(duì)應(yīng)于這8個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,分別控制第116列。掃描完前16個(gè)數(shù)據(jù)之后,第2次掃描從點(diǎn)陣數(shù)組中取第214個(gè)數(shù)據(jù)(第17個(gè)數(shù)據(jù)與地1個(gè)數(shù)據(jù)同),送行碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,仍分別控

32、制掃地116列。第3次掃描從點(diǎn)陣數(shù)組中取第318個(gè)數(shù)據(jù)(第18個(gè)數(shù)據(jù)碼與地2個(gè)數(shù)據(jù)碼相同)掃描······;如此實(shí)現(xiàn)字符向左移動(dòng)。以上完成一個(gè)圖形移動(dòng)的方法,也可以看成是移動(dòng)16個(gè)不同的字形。如圖2.13所示,首先掃描第一個(gè)字型,同樣是16行,16次掃描,16次顯示;完成一個(gè)字型的掃描以后,再掃描第二個(gè)字型;完成第二個(gè)字型的掃描之后,再掃描第三個(gè)字型······依此類推,即可產(chǎn)生該文字的左移的感覺(jué)。 圖3.13字形法左右移動(dòng)示意圖假設(shè)如果原本某個(gè)漢字的字型(第一個(gè)字型),其編

33、碼為:00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H;第二個(gè)字型的編碼為:10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H,也就是把第一個(gè)字型的編碼中,第1行顯示數(shù)據(jù),變?yōu)榈?行顯示數(shù)據(jù);第2行顯示數(shù)據(jù),變成第3行顯示數(shù)據(jù);第3行顯示數(shù)據(jù),變成第4行顯示數(shù)據(jù);第4行顯示數(shù)據(jù),變成第5行顯示數(shù)據(jù)······以此類推。當(dāng)?shù)谝粋€(gè)字型掃描顯示完成之后,就進(jìn)行這樣的動(dòng)

34、作調(diào)整,以產(chǎn)生第二個(gè)字型的編碼。同樣的,當(dāng)?shù)诙€(gè)字型掃描完成之后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第三個(gè)字型的編碼。這個(gè)調(diào)整動(dòng)作時(shí)先將16個(gè)編碼根據(jù)序填入存儲(chǔ)器,例如第1行編碼存入20H,第二行編碼存入21H······要進(jìn)行左移調(diào)整時(shí),則先將20H地址的數(shù)據(jù)轉(zhuǎn)移到36H地址,再將21 H地址的數(shù)據(jù)轉(zhuǎn)移到20 H地址,將22 H地址的數(shù)據(jù)轉(zhuǎn)移到21 H地址,將23 H地址的數(shù)據(jù)轉(zhuǎn)移到22 H地址,將24 H地址的數(shù)據(jù)轉(zhuǎn)移到23 H地址,將25 H地址的數(shù)據(jù)轉(zhuǎn)移到24 H地址,將26 H地址的數(shù)據(jù)轉(zhuǎn)移到25 H地址,將27 H地址的數(shù)據(jù)轉(zhuǎn)移

35、到26 H地址,將28 H地址的數(shù)據(jù)轉(zhuǎn)移到27H地址······方法2:數(shù)組數(shù)據(jù)“循環(huán)左移法” (適合用C語(yǔ)言編寫,在此僅作了解)。注意,不是把二進(jìn)制數(shù)據(jù)按位循環(huán)左移,而是把數(shù)組中的數(shù)據(jù)按其在數(shù)組中的位置循環(huán)左移。具體的方法入下。原字符點(diǎn)陣數(shù)組中的16個(gè)數(shù)據(jù)不延長(zhǎng),但下一幀取的16個(gè)數(shù)據(jù),是把上一幀的16個(gè)數(shù)據(jù)的位置(先后順序)“循環(huán)左移”一次,即原來(lái)第2個(gè)移到第1個(gè),原來(lái)第3個(gè)移到第2個(gè)······原來(lái)第1個(gè)移到第16個(gè)。實(shí)現(xiàn)數(shù)組數(shù)據(jù)循環(huán)左移的方法有:第一,遍一個(gè)“數(shù)組數(shù)據(jù)

36、循環(huán)左移子程序”,該子程序每執(zhí)行一次可把數(shù)組中的額數(shù)據(jù)循環(huán)左移一次,主程序中先調(diào)用一次該子程序,時(shí)數(shù)組中的數(shù)據(jù)循環(huán)左移這一次,然后再?gòu)臄?shù)組中取數(shù)據(jù)顯示。當(dāng)數(shù)組中的額數(shù)據(jù)個(gè)數(shù)較多時(shí),片內(nèi)RAM將不夠大,必須將數(shù)組定義在片外RAM中。第二,不用子程序,而是用變量判斷控制實(shí)現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。(2) 行掃描方式左移:行向組字顯示字符水平方向的左移。如果是行向組字(行掃描方式,點(diǎn)陣數(shù)據(jù)為列碼,左邊為敵位右邊為高位),希望顯示向左移動(dòng)的一個(gè)字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第116個(gè)數(shù)據(jù),送到列碼輸出口,對(duì)應(yīng)的8個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,分別控制掃描第116行。掃描完成這16個(gè)數(shù)據(jù)之后,第2

37、次掃描的第16個(gè)數(shù)據(jù),應(yīng)將原來(lái)第1次掃描的16列碼每一個(gè)都循環(huán)右移一位(如果是顯示右移則應(yīng)循環(huán)左移),再進(jìn)行掃描。如此,每進(jìn)行下一次掃描,把上一次掃描的16個(gè)列碼都循環(huán)右移一位,再進(jìn)行掃描。數(shù)據(jù)的右移與數(shù)據(jù)的左移相似,只是取碼的順序相反而已,在此就不再贅述。2數(shù)據(jù)的上下移動(dòng)(1)列掃描方式向上移動(dòng)列向組字顯示字符豎直方向的移動(dòng)。若是列向組字,希望顯示向上移動(dòng)一個(gè)字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第116個(gè)數(shù)據(jù),送行碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,分別控制掃描第116列。由于是列向組字(上高下低),掃描完成這16個(gè)數(shù)據(jù)后,第2次掃描的16個(gè)數(shù)據(jù),應(yīng)將原來(lái)的第1次掃描的1

38、6個(gè)行碼每一個(gè)都循環(huán)右移一位,使顯示的點(diǎn)都上移一行(如果是顯示向下滾動(dòng)則應(yīng)循環(huán)左移),再進(jìn)行掃描。如此,每進(jìn)行下一次的掃描,把上一次的16個(gè)行碼都循環(huán)右移一位,再進(jìn)行掃描就實(shí)現(xiàn)了數(shù)據(jù)的向上移動(dòng)。也可以用字型的方法容易理解,以下的16×16的LED顯示一個(gè)字是8個(gè)字型,首先掃描的而是第一個(gè)字型,同樣是16行,16列掃描,16次顯示;完成一個(gè)字型后,再掃描第二個(gè)字型;完成第二個(gè)字型后,再掃描第三個(gè)字型······以此類推,即可產(chǎn)生該文字向上移動(dòng)的感覺(jué)當(dāng)把第一個(gè)字型編碼中,每行顯示的數(shù)據(jù)都右移一位,以產(chǎn)生第二個(gè)字型編碼,即可產(chǎn)生字

39、符向上滾動(dòng)的感覺(jué)。當(dāng)?shù)谝粋€(gè)字符掃描完成后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第二個(gè)字型的編碼。同樣的,當(dāng)?shù)诙€(gè)字型完成之后,就進(jìn)行這樣的調(diào)整動(dòng)作,以產(chǎn)生第三個(gè)字型的編碼。調(diào)整的動(dòng)作是先將8個(gè)編碼根據(jù)序填入儲(chǔ)存器,例如第1行編碼存入20地址,第2行編碼存入21地址······要進(jìn)行上移調(diào)整時(shí),則從20地址數(shù)據(jù)開(kāi)始,每筆數(shù)據(jù)都右移一位即可。 下圖2.15僅以字型移動(dòng)的方法畫圖。 圖3.15 字形法上下移動(dòng)示意圖(2)行掃描方式上下移動(dòng)行向組字顯示字符豎直方向的移動(dòng)方法1:延長(zhǎng)數(shù)組法。如果是行向組字,希望顯示向上移動(dòng)的一個(gè)字符,第1次掃描從列碼的

40、點(diǎn)陣數(shù)組中取第116個(gè)數(shù)據(jù),送列碼輸出口,對(duì)應(yīng)于這8個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,分別控制掃描第116行。第2次掃描從點(diǎn)陣數(shù)組中取第217個(gè)額數(shù)據(jù)(第17個(gè)數(shù)據(jù)與地1個(gè)數(shù)據(jù)同),分別送列碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,仍分別控制地116行。第3次掃描從點(diǎn)陣數(shù)組中取第318個(gè)數(shù)據(jù)(第18個(gè)數(shù)據(jù)與地2個(gè)數(shù)據(jù)同)掃描;······如此就實(shí)現(xiàn)了字符的向上移動(dòng)。方法2:數(shù)組數(shù)據(jù)“循環(huán)左移法”。實(shí)現(xiàn)數(shù)組數(shù)據(jù)循環(huán)左移的方法與上類似。也有:用數(shù)組數(shù)據(jù)循環(huán)左移子程序;不用子程序,而是用變量判斷控制實(shí)現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。3.

41、7 LED陣列驅(qū)動(dòng)電路正向點(diǎn)亮一顆LED,至少也得10到20毫安,若電流不夠大,則LED不夠亮!而不管是8051的輸入還是輸出端其高態(tài)輸出電流都不是很高,不過(guò)12毫安而已。因此,很難直接高態(tài)驅(qū)動(dòng)LED。這時(shí)候就需要額外的驅(qū)動(dòng)電路,分別針對(duì)共陽(yáng)極和共陰極LED陣列,有兩種不同的驅(qū)動(dòng)方式。針對(duì)輸出態(tài)的不同,分為:高態(tài)掃描-高態(tài)顯示,高態(tài)掃描-低態(tài)顯示,低態(tài)掃描-高態(tài)顯示和低態(tài)掃描-低態(tài)顯示四種方式。下面針對(duì)設(shè)計(jì)中實(shí)際用到的一種驅(qū)動(dòng)方式介紹一種:共陰型低態(tài)掃描-低態(tài)顯示信號(hào)驅(qū)動(dòng)電路。圖2.17所示是針對(duì)共陰性LED陣列而設(shè)計(jì)的驅(qū)動(dòng)電路,在這種驅(qū)動(dòng)電路采用低態(tài)掃描,也就是任何時(shí)間只有一個(gè)高態(tài)信號(hào),其他

42、則為低態(tài)。一行掃描完成之后,再把高態(tài)信號(hào)轉(zhuǎn)到臨近的其他行。掃描信號(hào)經(jīng)限流電阻接到PNP晶體管的基極,晶體管的集電極接地,射極則連至LED點(diǎn)陣的列引腳,若要同時(shí)點(diǎn)亮該列的16個(gè)LED,則晶體管的電流必須大于200毫安才行。常用的2N3904之類就可以達(dá)到當(dāng)?shù)蛻B(tài)的列掃描信號(hào)輸入晶體管的基極后,該晶體管即為正向,而產(chǎn)生電流,即可使該列的LED具有點(diǎn)亮的條件所要的顯示信號(hào)連接到一個(gè)PNP晶體管的基極,而該晶體管的射極連接到VCC,同樣的,當(dāng)?shù)蛻B(tài)的顯示信號(hào)輸入時(shí),晶體管的集電極電流將流入行LED的陽(yáng)極,即可點(diǎn)亮該行的LED。如圖1.17所示. 圖3.17共陰型低態(tài)掃描-低態(tài)顯示信號(hào)驅(qū)動(dòng)電路若要并接多個(gè)L

43、ED陣列,如連接使用4個(gè)8×8LED陣列,連接成16×16LED陣列,則一個(gè)掃描信號(hào)同時(shí)驅(qū)動(dòng)兩個(gè)LED陣列。如在本設(shè)計(jì)中要顯示的字比較大,用一個(gè)8×8的點(diǎn)陣無(wú)法顯示完整,這就需要用四塊8×8的點(diǎn)陣組成一塊16×16的點(diǎn)陣,這樣就可以顯示完整的漢字了,若要并聯(lián)多個(gè)8×8的LED組成16×16的點(diǎn)陣,則一個(gè)掃描信號(hào)同時(shí)要驅(qū)動(dòng)兩行的LED。如下圖1.18所示。 圖3.18 16×16的點(diǎn)陣驅(qū)動(dòng)圖這時(shí)候就需要靠鎖存器(74LS373)將這兩組顯示信號(hào)鎖住,此處的鎖存器是以低態(tài)輸出的,其輸出的電壓可達(dá)24毫安,足以驅(qū)動(dòng)一個(gè)L

44、ED;若嫌不足,可以選用74A373其輸出的電壓可達(dá)48毫安,當(dāng)74LS373得G腳為高態(tài)時(shí),數(shù)據(jù)可以從輸入端傳輸?shù)芥i存器中;G腳為低態(tài)時(shí),數(shù)據(jù)被鎖住,不會(huì)隨輸入端而變。另外OC腳為輸出控制引腳,當(dāng)OC腳為高態(tài)時(shí),輸出呈現(xiàn)高阻抗;OC為低態(tài)時(shí),數(shù)據(jù)會(huì)由鎖存器輸出。在這個(gè)電路之中驅(qū)動(dòng)的掃描信號(hào)總共有16條,如果直接由8051輸出,將占用2個(gè)PORT口,浪費(fèi)了寶貴的資源,不太理想,在此使用的是一個(gè)4對(duì)16的譯碼器 (74LS154),這個(gè)譯碼器是將輸入的16進(jìn)位碼解碼輸出低態(tài)的掃描信號(hào)。輸出的低態(tài)掃描信號(hào)可直接接到PNP晶體管的基極,如果太大的話也可以先經(jīng)過(guò)限流電阻再接到PNP晶體管的基極,信號(hào)最

45、后經(jīng)過(guò)晶體管的放大后即可推動(dòng)16個(gè)LED點(diǎn)陣了。4 軟件設(shè)計(jì)4.1 單片機(jī)延時(shí)子程序延時(shí)程序在單片機(jī)編程中使用非常廣泛,也很重要,在本畢業(yè)設(shè)計(jì)的程序中用到了延時(shí)子程序,所以在此詳細(xì)的敘述一下。在弄清延時(shí)程序指令的用法之前,要清楚的了解延時(shí)程序的基本概念,機(jī)器周期和指令周期的區(qū)別和聯(lián)系、相關(guān)指令的用法等。    我們知道程序設(shè)計(jì)是單片機(jī)開(kāi)發(fā)最重要的工作,而程序在執(zhí)行過(guò)程中常常需要完成延時(shí)的功能。例如在本設(shè)計(jì)中,行向的掃描要控制每行的掃描時(shí)間,還有所有的字移動(dòng)有一定的時(shí)間間隔,而在所有的字移動(dòng)一遍結(jié)束的一瞬間到下一遍移動(dòng)開(kāi)始的一瞬間要有延時(shí),這時(shí)的延時(shí)可以和移動(dòng)的時(shí)間相同以保持

46、移動(dòng)的連貫性,也可以不同作為每次從頭開(kāi)始的停頓,在上述就可以通過(guò)延時(shí)程序來(lái)完成。 1. 機(jī)器周期和指令周期 (1)機(jī)器周期是指單片機(jī)完成一個(gè)基本操作所花費(fèi)的時(shí)間,一般使用微秒來(lái)計(jì)量單片機(jī)的運(yùn)行速度,51單片機(jī)的一個(gè)機(jī)器周期包括12 個(gè)時(shí)鐘振蕩周期,也就是說(shuō)如果51 單片機(jī)采用12MHz 晶振,那么執(zhí)行一個(gè)機(jī)器周期就只需要1s;如果采用的是6MHz 的晶振,那么執(zhí)行一個(gè)機(jī)器周期就需要2 s。 (2)指令周期是指單片機(jī)執(zhí)行一條指令所需要的時(shí)間,一般利用單片機(jī)的機(jī)器周期來(lái)計(jì)量指令周期。 在51 單片機(jī)里有單周期指令(執(zhí)行這條指令只需一個(gè)機(jī)器周期),雙周期指令(執(zhí)行這條指令只需要兩個(gè) 機(jī)器周期),四周

47、期指令(執(zhí)行這條指令需要四個(gè)機(jī)器周期)。除了乘、除兩條指令是四周期指令,其余均 為單周期或雙周期指令。也就是說(shuō),如果51 單片機(jī)采用的是12MHz 晶振,那么它執(zhí)行一條指令一般只需 12 微秒的時(shí)間;如果采用的是6MHz 晶振,執(zhí)行一條指令一般就需24微秒的時(shí)間。以12MHZ晶振為例,指令周期、機(jī)器周期與時(shí)鐘周期的關(guān)系是: 指令周期:CPU執(zhí)行一條指令所需要的時(shí)間稱為指令周期,它是以機(jī)器周期為單位的,指令不同,所需的機(jī)器周期也不同。 時(shí)鐘周期:也稱為振蕩周期,一個(gè)時(shí)鐘周期晶振的倒數(shù)。 MCS-51單片機(jī)的一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。 MCS-51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三

48、字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期指令被執(zhí)行所占時(shí)間為12×(1/12000000)=1s。 了解以上概念后,那么可以依據(jù)單片機(jī)器件手冊(cè)中89C51的指令執(zhí)行周期和其所用晶振頻率來(lái)完成需要精確延時(shí)時(shí)間的延時(shí)程序。 2. 延時(shí)指令 在單片機(jī)編程里面并沒(méi)有真正的延時(shí)指令,從上面的概念中我們知道單片機(jī)每執(zhí)行一條指令都需要一 定的時(shí)間,所以要達(dá)到延時(shí)的效果,只須讓單片機(jī)不斷地執(zhí)行沒(méi)有具體實(shí)際意義的指令,從而達(dá)到了延時(shí) 的效果。 (1)數(shù)據(jù)傳送指令 MOV 數(shù)據(jù)傳送指令功能是將數(shù)據(jù)從一個(gè)地方復(fù)制、拷貝到另一個(gè)地方。 如:MOV R7

49、,#80H   ;將數(shù)據(jù)80H 送到寄存器R7,這時(shí)寄存器R7 里面存放著80H,就單這條 指令而言并沒(méi)有任何實(shí)際意義,而執(zhí)行該指令則需要一個(gè)機(jī)器周期。 (2)空操作指令 NOP 空操作指令功能只是讓單片機(jī)執(zhí)行沒(méi)有意義的操作,消耗一個(gè)機(jī)器周期。 (3)循環(huán)轉(zhuǎn)移指令 DJNZ 循環(huán)轉(zhuǎn)移指令功能是將第一個(gè)數(shù)進(jìn)行減1 并判斷是否為0,不為0 則轉(zhuǎn)移到指定地點(diǎn);為0 則往下執(zhí)行。 如:DJNZ R7,KK ;將寄存器R7 的內(nèi)容減1 并判斷寄存器R7 里的內(nèi)容減完1 后是否為0,如果 不為0 則轉(zhuǎn)移到地址標(biāo)號(hào)為KK 的地方;如果為0 則執(zhí)行下一條指令。這條指令需要2個(gè)機(jī)器周期。 循

50、環(huán)轉(zhuǎn)移指令(DJNZ )除了可以給定地址標(biāo)號(hào)讓其跳轉(zhuǎn)外,還可以將地址標(biāo)號(hào)改成$,這樣 程序就跳回本指令執(zhí)行。例如: DJNZ R7,$ ;R7 內(nèi)容減1 不為0,則再次執(zhí)行本指令;為0 則往下執(zhí)行,當(dāng)R7 的值改為10 時(shí),則執(zhí)行完該條程序所需的時(shí)間為2*10=20 s。利用以上三條指令的組合就可以比較精確地編寫出所需要的延時(shí)程序。下面是本設(shè)計(jì)的程序中延時(shí)程序的計(jì)算:MOV R3,#200; 1D1: MOV R5,#250; 1F1: DJNZ R5, F1; 2*R5DJNZ R3,D1; 2*R3+(1+2*R5)*R3RET 2上面這個(gè)子程序共有四條指令,現(xiàn)在分別就每一條指令 被執(zhí)行的

51、次數(shù)和所耗時(shí)間進(jìn)行分析。 第一句:MOV R3,#200 在整個(gè)子程序中只被執(zhí)行一次,且為單周期指令,所以耗時(shí)1s 第二句:MOV R5,#250 從看到只要R3-1不為0,就會(huì)返回到這句,共執(zhí)行了R3次,共耗時(shí)200s 第三句:DJNZ R5,F(xiàn)1 只要R5-1不為0,就反復(fù)執(zhí)行此句(內(nèi)循環(huán)R5次),又受外循環(huán)R3控制,所以共執(zhí)行R3*R5次,因是雙周期指令,所以耗時(shí)2*R3*R5s。所以精確延時(shí)時(shí)間為:1+(1×200)+(2×250×200)+(2×200)+2 =(2*250+3)*200+3 =100603s 100ms =0.1s4.2點(diǎn)陣左移顯示的流程圖及分析流程圖(圖2.1)和程序的簡(jiǎn)要說(shuō)明:在程序的開(kāi)始設(shè)定初始的地址是0H,并定義了”選擇符號(hào)F”的初值為0,為下面的點(diǎn)陣掃描的出口選擇準(zhǔn)備。在主程序的開(kāi)始的延時(shí)子程序,延時(shí)0.1秒,既是在程序通電啟動(dòng)開(kāi)始的停頓,也作為一次移動(dòng)的末尾時(shí)到開(kāi)始下一次重復(fù)移動(dòng)開(kāi)始之間的停頓,在上面的“延時(shí)子程序”中已經(jīng)介紹了計(jì)算的方法。程序接著向下運(yùn)行,定義了取碼指針的位置,設(shè)為00H的初始位置,再下面的74LS154掃描指針的初值設(shè)為00H,是因?yàn)閽呙枰獜拈_(kāi)始的零點(diǎn)開(kāi)始掃。 程序的循環(huán)運(yùn)行是從M3開(kāi)始的,M3的開(kāi)始10行程序是點(diǎn)陣顏色的選擇,即確定列掃描出口的選擇,因?yàn)镕的初值是0,所以先

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論