畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc

上傳人:good****022 文檔編號:116545966 上傳時間:2022-07-05 格式:DOC 頁數(shù):33 大?。?.15MB
收藏 版權(quán)申訴 舉報 下載
畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc_第1頁
第1頁 / 共33頁
畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc_第2頁
第2頁 / 共33頁
畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc_第3頁
第3頁 / 共33頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《畢業(yè)論文-基于AT89C51單片機(jī)的16*16點(diǎn)陣設(shè)計.doc(33頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、江海學(xué)院畢業(yè)設(shè)計基于AT89C51單片機(jī)的1616點(diǎn)陣設(shè)計第一章 緒 論1.1 設(shè)計課題背景知識單片微型計算機(jī)(single chip microcomputer)簡稱單片機(jī),它是為各類專用控制器而設(shè)計的通用或?qū)S梦⑿陀嬎銠C(jī)系統(tǒng),高密度集成了普通計算機(jī)微處理器,一定容量的RAM和ROM以及輸入/輸出接口,定時器等電路于一塊芯片上構(gòu)成的。單片機(jī)自20世紀(jì)70年代問世以來,以極其高的性價比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的優(yōu)點(diǎn)是體積小、重量輕、抗干擾能力強(qiáng),對環(huán)境要求不高,價格低廉,可靠性高,靈活性好,開發(fā)較為容易。在現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場所需要用點(diǎn)陣

2、圖形顯示器顯示漢字,漢字顯示屏也廣泛應(yīng)用到汽車報站器,廣告屏等。所以研究LED顯示有實用的意義。LED顯示屏分為圖文顯示屏和視頻顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計算機(jī)同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機(jī)進(jìn)行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、VCD節(jié)目以及現(xiàn)場實況。LED顯示屏顯示畫面色彩鮮艷,立體感強(qiáng),靜如油畫,動如電影,廣泛應(yīng)用于交通運(yùn)輸、車站、商場、醫(yī)院、賓館、證券市場、工業(yè)企業(yè)管理等公共場所。 LED顯示屏可以顯示變化的數(shù)字、文字、圖形圖像;不僅可以用于室內(nèi)環(huán)境還可以用于室外環(huán)境,具有投影

3、儀、電視墻、液晶顯示屏無法比擬的優(yōu)點(diǎn)。 LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開的。這些優(yōu)點(diǎn)概括起來是:亮度高、工作電壓低、功耗小、小型化、壽命長、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。現(xiàn)代LED的發(fā)展很快,很多研究領(lǐng)域非常已經(jīng)深刻,實際情況是:很多相關(guān)的知識已經(jīng)遠(yuǎn)遠(yuǎn)超出我們在校學(xué)生的能力范圍,所以在此只是簡單的研究一下用單片機(jī)驅(qū)動的LED顯示移動的漢字。目的有三:一是親手制作一個簡單實用的顯示文字的LED點(diǎn)陣;二是通過制作LED點(diǎn)陣增強(qiáng)對LED點(diǎn)陣的了解和應(yīng)用,以及復(fù)

4、習(xí)鞏固單片機(jī)知識;三是通過團(tuán)隊合作,增強(qiáng)團(tuán)隊合作的意識,為以后走向社會工作打下基礎(chǔ),并且增強(qiáng)了同學(xué)之間的友誼。漢字顯示方式是先根據(jù)所需要的漢字提取漢字點(diǎn)陣(如1616 點(diǎn)陣),將點(diǎn)陣文件存入ROM,形成新的漢字編碼;而在使用時則需要先根據(jù)新的漢字編碼組成語句,再由MCU根據(jù)新編碼提取相應(yīng)的點(diǎn)陣進(jìn)行漢字顯示。不論顯示圖形還是文字,都是控制與組成這些圖形或文字的各個點(diǎn)所在位置相對應(yīng)的LED器件發(fā)光。通常事先把需要顯示的圖形文字轉(zhuǎn)換成點(diǎn)陣圖形,在按照顯示控制的要求以一定的格式形成顯示數(shù)據(jù)。對于只控制通斷的圖文顯示屏來說,每個LED發(fā)光器件占據(jù)數(shù)據(jù)中的1位(1bit),在需要該LE D器件發(fā)光的數(shù)據(jù)中

5、相應(yīng)的位填1,否則填0。當(dāng)然,根據(jù)控制電路的安排,相反的定義同樣時可行的。這樣依照所需顯示的圖形文字,按顯示屏的各行各列逐點(diǎn)填寫顯示數(shù)據(jù),就可以構(gòu)成一個顯示數(shù)據(jù)文件。顯示圖形的數(shù)據(jù)文件,其格式相對自由,只要能夠滿足顯示控制的要求即可。文字的點(diǎn)陣格式比較規(guī)范,可以采用現(xiàn)行計算機(jī)通用的字庫字模。組成一個字的點(diǎn)陣,其大小也可以有1616、2424、3232、4848等不同規(guī)格。用點(diǎn)陣方式構(gòu)成圖形或文字,是非常靈活的,可以根據(jù)需要任意組合和變化,只要設(shè)計好合適的數(shù)據(jù)文件,就可以得到滿意的顯示效果。因而采用點(diǎn)陣式圖文顯示屏顯示經(jīng)常需要變化的信息,是非常有效的。圖文顯示屏的顏色,有單色、雙色、和多色幾種。

6、最常用的是單色圖文屏。單色屏多使用紅色或橘紅色或橙色LED點(diǎn)陣單元。雙色圖文屏和多色圖文屏,在LED點(diǎn)陣的每一個“點(diǎn)”上布置有兩個或多個不同顏色的LED發(fā)光器件。換句話說,對應(yīng)于每種顏色都有自己的顯示矩陣。顯示的時候,各顏色的顯示點(diǎn)陣是分開控制的。事先設(shè)計好各種顏色的顯示數(shù)據(jù),顯示時分別送到各自的顯示點(diǎn)陣,即可實現(xiàn)預(yù)期效果。每一種顏色的控制方法和單色的完全相同,因此掌握了單色圖文顯示屏的原理,雙色屏和多色屏就不難理解了。為了吸引觀眾增強(qiáng)顯示效果,可以有多種顯示模式。最簡單的顯示模式是靜態(tài)顯示。與靜態(tài)顯示模式相對應(yīng),就有各種動態(tài)顯示模式,它們所顯示的圖文都是能夠動的。按照圖文運(yùn)動的特點(diǎn)又可以分為

7、閃爍、平移、旋轉(zhuǎn)、縮放等多種顯示模式。產(chǎn)生不同顯示模式的方法,并不意味著一定要重新編寫顯示數(shù)據(jù),可以通過一定的算法從原來的顯示數(shù)據(jù)直接生成。例如,按順序調(diào)整行號,可以使顯示圖文產(chǎn)生上下平移;而順序調(diào)整列顯示數(shù)據(jù)的位置,就可以達(dá)到左右平移的目的;刷新的時間控制,要考慮運(yùn)動圖形文字的顯示效果。刷新太慢,動感不顯著;刷新太快了,中間過程看不清。一般刷新周期可控制在幾十毫秒范圍之內(nèi)。本次畢業(yè)設(shè)計中,由本人和鐘桂,張維平組成一組,我負(fù)責(zé)硬件部分電路圖的設(shè)計和軟件部分程序的設(shè)計和調(diào)試,目的是應(yīng)用簡單方便的電路連接和程序完成漢字的換色與移動。鐘桂負(fù)責(zé)用設(shè)計好的點(diǎn)陣電路制作PCB電路板,包括完成PCB板的制作

8、,張維平負(fù)責(zé)制作另外一塊在面包板上連的點(diǎn)陣線連板子的焊接與調(diào)試,各人的分工不同只是工作側(cè)重點(diǎn)的不同,大家是在一起互相學(xué)習(xí)互相幫助,共同完成設(shè)計任務(wù)。第二章 硬件設(shè)計2.1設(shè)計框圖及介紹 LED點(diǎn)陣總體框圖如圖1.1所示,點(diǎn)陣電路大體上可以分成微機(jī)本身的硬件、顯示驅(qū)動電路、控制信號電路三部分。控制電路部分包括一個51CUP和一些外圍電路。在整個電路當(dāng)中此控制電路部分相當(dāng)于一個上位機(jī),它負(fù)責(zé)控制整個電路以及相應(yīng)的程序的運(yùn)行、與PC機(jī)的串行通訊、以及給屏體電路部分發(fā)送命令。點(diǎn)陣顯示屏體、以及它的行和列的各個驅(qū)動電路。由于兩部分的電路在制板時可以放到一起,所以可以將其字庫放到控制電路部分使用串行通訊方

9、式來與屏體電路部分進(jìn)行數(shù)據(jù)和命令的傳送。此顯示電路采用掃描方式進(jìn)行顯示時,每行有一個行驅(qū)動器,各行的同名列共用一個列驅(qū)動器。由行譯碼器給出的行選通信號,從第一行開始,按順序依次對各行進(jìn)行掃描(把該行與電源的一端接通)。另一方而,根據(jù)各列鎖存的數(shù)據(jù),確定相應(yīng)的列驅(qū)動器是否將該列與電源的另一端接通。接通的列,就在該行該列點(diǎn)燃相應(yīng)的LED;未接通的列所對應(yīng)的LED熄滅??赏ㄟ^掃描輸出口的控制實現(xiàn)顏色的轉(zhuǎn)換。圖2.1 點(diǎn)陣顯示的總體框圖2.2 51系列單片機(jī)簡介單片機(jī)(Microcontroller,又稱微處理器)是在一塊硅片上集成了各種部件的微型機(jī),這些部件包括中央處理器CPU、數(shù)據(jù)存儲器RAM、程

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

11、R)。算術(shù)邏輯單元ALU能對數(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或通用寄存器或存儲單元中,累加器ACC也可以寫為A。B寄存器在乘法指令中用來存放一個乘數(shù),在除法指令中用來存放除數(shù),運(yùn)算后B中為部分運(yùn)算結(jié)果。程序狀態(tài)字PSW是個8位寄存器,用來寄存本次運(yùn)算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含義是:CY:進(jìn)位標(biāo)志。有進(jìn)位/錯位時CY=1,否則CY=0。 AC:半進(jìn)位標(biāo)志。當(dāng)D3位向D4位產(chǎn)生進(jìn)位/錯位時,AC=1,否則AC=0,常用

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

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

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

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

16、的RAM區(qū),可以讀寫各種數(shù)據(jù)。而80HFFH是專門用于特殊功能寄存器(SFR)的區(qū)域。對于8051安排了21個特殊功能寄存器,每個寄存器為8位,所以實際上128個字節(jié)并沒有全部利用。內(nèi)部RAM的各個單元,都可以通過直接地址來尋找,對于工作寄存器,則一般都直接用R0R7,對特殊功能寄存器,也是直接使用其名字較為方便。8051內(nèi)部特殊功能寄存器都是可以位尋址的,并可用“寄存器名.位”來表示,如ACC.0,B.7等。2.3 單片機(jī)最小應(yīng)用系統(tǒng)電路設(shè)計圖2.4 單片機(jī)最小應(yīng)用系統(tǒng)原理圖 注: 該最小系統(tǒng)由按鍵復(fù)位RESET電路、晶體振蕩電路以及I/O接口電路組成。復(fù)位的實現(xiàn)通常用2種方式: 開機(jī)上電復(fù)

17、位和外部手動復(fù)位,本設(shè)計用的是外部手動復(fù)位。電路圖2.5如下:圖2.5 單片機(jī)復(fù)位圖AT89C51工作電壓VCC=5V,其EA引腳需接高電平,5V電源電路如圖2.6所示。圖2.6 單片機(jī)電源原理圖注: 該電源電路主要模塊為IC7805,它能輸出穩(wěn)定的 5V電源,圖中整流橋是將市電轉(zhuǎn)變?yōu)橹绷麟?電容起到慮波作用由7805的OUT引腳輸出5V電壓。2.4 LED點(diǎn)陣介紹88單色點(diǎn)陣共需要64個發(fā)光二極管組成,且每個二極管是放置在行線與列線的叉點(diǎn)上。本設(shè)計是一種實用的漢字顯示屏的制作,制作的是雙色點(diǎn)陣??紤]到元器件的易購性,沒有使用88的點(diǎn)陣發(fā)光二極管模塊,而是直接使用了256個高亮度發(fā)光管,組成了

18、16行16列的發(fā)光點(diǎn)陣。實際使用時可以根據(jù)這個原理自行擴(kuò)充顯示的字?jǐn)?shù)。對比下面的88單色點(diǎn)陣和88雙色點(diǎn)陣可以看出,其實88雙色點(diǎn)陣就是兩塊88單色點(diǎn)陣組合在一起的。要實現(xiàn)用兩種顏色顯示,只要在電路的設(shè)計中適當(dāng)?shù)倪B線就可以了。 88單色和雙色點(diǎn)陣LED結(jié)構(gòu)分別如下圖2.8和2.9所示。 圖2.7 88點(diǎn)陣外觀及引腳圖 圖2.8 88單色點(diǎn)陣內(nèi)部圖 圖2.9 88雙色點(diǎn)陣內(nèi)部圖2.5 LED顯示方式漢字顯示屏用于顯示漢字、字符及圖像信息,在公共汽車、銀行、醫(yī)院及戶外廣告等地方都有廣泛的應(yīng)用。下面是簡單的漢字顯示屏的制作,由單片機(jī)控制漢字的顯示內(nèi)容。為了降低成本,使用了四塊88的LED點(diǎn)陣發(fā)光管的

19、模塊,組成了一個1616的LED點(diǎn)陣顯示屏,如圖2.10所示。在這里僅做了四個漢字的顯示,在實際的使用中可以根據(jù)這個原理自行的擴(kuò)展顯示的漢字,下面是介紹漢字顯示的原理。 圖2.10 四塊88的LED點(diǎn)陣組成1616的LED點(diǎn)陣LED驅(qū)動顯示采用動態(tài)掃描方法,動態(tài)掃描方式是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動電路就可以實現(xiàn)多行的同名列共用一套列驅(qū)動器。以1616點(diǎn)陣為例,把所有同一行的發(fā)光管的陽極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽的接法),先送出對應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時間,然后熄滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時間,然后熄滅

20、;.第16行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。顯示數(shù)據(jù)傳輸采用串行傳輸?shù)姆椒?,控制電路可以只用一根信號線,將列數(shù)據(jù)一位一位傳往列驅(qū)動器,在硬件方面無疑是十分經(jīng)濟(jì)的。但串行傳輸過程較長,數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢?,這一行的各列才能并行地進(jìn)行顯示。對于串行傳輸方式來說,列數(shù)據(jù)準(zhǔn)備時間可能相當(dāng)長,在行掃描周期確定的情況下,留給行顯示的時間就太少了,以致影響到LED的亮度。采用串行傳輸中列數(shù)據(jù)準(zhǔn)備和列

21、數(shù)據(jù)顯示的時間矛盾,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時,傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯示就需要有鎖存功能。對于列數(shù)據(jù)準(zhǔn)備來說,它應(yīng)能實現(xiàn)串入并出的移位功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時,串行移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會影響本行的顯示。LED點(diǎn)陣顯示模塊進(jìn)行的方法有兩種:(1)水平方向(X方向)掃描,即逐列掃描的方式(簡稱列掃描方式):此時用一個P口輸出列碼決定哪一列能亮(相當(dāng)于位碼),用另一個P口輸出行碼(列數(shù)據(jù)),決定該行上那哪個LED亮(相當(dāng)于段碼)。能亮的列從左到右掃描完16列(相當(dāng)于位碼循環(huán)移動16次)即顯示出一

22、個完整的圖像。(2)豎直方向(Y方向)掃描,即逐行掃描方式(簡稱行掃描方式):此時用一個P口輸出決定哪一行能亮(相當(dāng)于位碼),另一個P口輸出列碼(行數(shù)據(jù),行數(shù)據(jù)為將列數(shù)據(jù)的點(diǎn)陣旋轉(zhuǎn)90度的數(shù)據(jù))決定該行上哪些LED燈亮(相當(dāng)于段碼)。能亮的行從上向下掃描完16行(相當(dāng)于位碼循環(huán)移位16次)即顯示一幀完整的圖像。本設(shè)計應(yīng)用的是第一種的掃描方法,即水平方向(X方向)掃描。每一個字由16行16列的點(diǎn)陣形成顯示,即每個字均由256個點(diǎn)陣來表示,我們可以把每一個點(diǎn)理解為一個像素。一般我們使用的1616的點(diǎn)陣宋體字庫,即所謂的1616,是每一個漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫從該位置起的32字節(jié)信

23、息記錄了該字的字模信息。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。我們以水平方向(x方向)掃描顯示漢字的“江”為例來說明其掃描原理,每一個字由16行16列的點(diǎn)陣組成顯示,如圖下的,如果用8位的AT89S51的單片機(jī)來控制,由于單片機(jī)的總線為8位,一個字需要拆分成兩個部分。一般我們把它分解成上部分和下部分,上部分由8*16的點(diǎn)陣組成,下部分也由8*16的點(diǎn)陣組成。在本例中單片機(jī)首先顯示的是左上角的第一列的部分,即第0列的P00P07口。方向為P00到P07,顯示漢字“江”的時候,P00到P04都是滅的,P05亮,即二進(jìn)制00001000,轉(zhuǎn)換為16進(jìn)制為08H,如

24、圖2.11所示。上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們?nèi)栽O(shè)計成由上往下的掃描方式,即從P27向P20方向掃描,從上圖可以看到,這一列所有的都不亮,所以代碼為00000000,16進(jìn)制為00H,然后單片機(jī)轉(zhuǎn)向上半部的第二列,除了P05亮,其他的都不亮,即為00000100,16進(jìn)制為04H,這一列掃描完成之后繼續(xù)進(jìn)行下半部分的掃描,除了P21亮,其他的為不亮,為二進(jìn)制00100000,即16進(jìn)制20H。按照這個方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個8位,可以得出漢字“江”的掃描代碼為 :08H,20H,06H,20H,80H,7EH,63H,80H0CH,04H

25、,00H,04H,20H,04H,20H,04H20H,04H,3FH,FCH,20H,04H,20H,04H20H,04H,20H,04H,00H,04H,00H,00H 圖2.11 點(diǎn)陣顯示原理圖由這個原理可以看到,無論顯示何種字體或圖像,都可以用這種方法來分析出它的掃描代碼從而顯示在屏幕上。了解漢字的顯示原理之后,那如何得到漢字的字模信息呢?現(xiàn)在有一些現(xiàn)成的漢字字模生成軟件,可從網(wǎng)上下載漢字字庫提取程序直接提取字庫,如圖2.12所示的為一種字模生成軟件,軟件打開后輸入漢字,點(diǎn)擊“檢取”后,十六進(jìn)制數(shù)據(jù)漢字代碼即可以自動生成,把我們需要的豎排數(shù)據(jù)復(fù)制到我們的程序即可。圖2.12 漢字字模生

26、成軟件2.6 點(diǎn)陣的移動以下以1616點(diǎn)陣為例介紹點(diǎn)陣的移動。要顯示一個字符,該字符的點(diǎn)陣數(shù)據(jù)可以列向(縱向)16點(diǎn)組字,又可以行向(橫向)16點(diǎn)組字。無論哪一種組字方法,都既可以顯示字符的水平方向的移動,又可以顯示豎直方向的移動。1顯示字符的左右移動(1)列掃描方式左移動:列向組字顯示字符水平方向的移動(左滾動) 在這里有兩個方法: 方法1:延長數(shù)組法。將原來字符點(diǎn)陣數(shù)組的16個數(shù)據(jù)重復(fù)一遍延長,點(diǎn)陣數(shù)組的數(shù)據(jù)個數(shù)為32個。每掃描儀幀取8個數(shù)據(jù)顯示,下一幀取數(shù)要在數(shù)組中后移一個數(shù)取數(shù)。循環(huán)一遍掃16幀。可以假想有兩塊1616的點(diǎn)陣模塊(共32幀)水平平行排列,用一個恰好能罩住8列點(diǎn)陣的中空方

27、框去罩這個點(diǎn)陣,第1(第1幀)罩住最左邊數(shù)起第一列開始的16列,就掃描顯示這16列;第2次(第2幀)使方框右移一列,罩住做左邊數(shù)起第2列開始的16列,就掃描顯示這16列;這樣每掃描完一幀使方框右移一列,最后第16次(第16幀)時,罩住左邊數(shù)起的第16列開始的16列,就掃描顯示這16列。如此完成16幀畫面的掃描顯示,也就完成了整個一次移動循環(huán)掃描、之后反復(fù)循環(huán),即可呈現(xiàn)顯示字符沿水平向左移動的圖像,如圖2.13所示。 圖2.13 方框圖法左右移動示意圖因為是列向組字(列掃描方式,點(diǎn)陣數(shù)據(jù)為行碼,上邊為地位下面為高位),希望顯示移動的一個字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第116個數(shù)據(jù),送行碼輸

28、出口,對應(yīng)于這8個數(shù)據(jù),同時用列碼輸出口輸出列碼,分別控制第116列。掃描完前16個數(shù)據(jù)之后,第2次掃描從點(diǎn)陣數(shù)組中取第214個數(shù)據(jù)(第17個數(shù)據(jù)與地1個數(shù)據(jù)同),送行碼輸出口,對應(yīng)于這16個數(shù)據(jù),同時用列碼輸出口輸出列碼,仍分別控制掃地116列。第3次掃描從點(diǎn)陣數(shù)組中取第318個數(shù)據(jù)(第18個數(shù)據(jù)碼與地2個數(shù)據(jù)碼相同)掃描;如此實現(xiàn)字符向左移動。以上完成一個圖形移動的方法,也可以看成是移動16個不同的字形。如圖2.13所示,首先掃描第一個字型,同樣是16行,16次掃描,16次顯示;完成一個字型的掃描以后,再掃描第二個字型;完成第二個字型的掃描之后,再掃描第三個字型依此類推,即可產(chǎn)生該文字的左

29、移的感覺。 圖2.13字形法左右移動示意圖假設(shè)如果原本某個漢字的字型(第一個字型),其編碼為:00H,10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H;第二個字型的編碼為:10H,20H,30H,40H,50H,60H,70H,80H,90H,0A0H,0B0H,0C0H,0D0H0E0H,0F0H, 00H,也就是把第一個字型的編碼中,第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ù)谝粋€字型掃描顯示完成之后

30、,就進(jìn)行這樣的動作調(diào)整,以產(chǎn)生第二個字型的編碼。同樣的,當(dāng)?shù)诙€字型掃描完成之后,就進(jìn)行這樣的調(diào)整動作,以產(chǎn)生第三個字型的編碼。這個調(diào)整動作時先將16個編碼根據(jù)序填入存儲器,例如第1行編碼存入20H,第二行編碼存入21H要進(jìn)行左移調(diào)整時,則先將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)移到26 H地址,將28 H地址的數(shù)據(jù)轉(zhuǎn)移到27H地址方法

31、2:數(shù)組數(shù)據(jù)“循環(huán)左移法” (適合用C語言編寫,在此僅作了解)。注意,不是把二進(jìn)制數(shù)據(jù)按位循環(huán)左移,而是把數(shù)組中的數(shù)據(jù)按其在數(shù)組中的位置循環(huán)左移。具體的方法入下。原字符點(diǎn)陣數(shù)組中的16個數(shù)據(jù)不延長,但下一幀取的16個數(shù)據(jù),是把上一幀的16個數(shù)據(jù)的位置(先后順序)“循環(huán)左移”一次,即原來第2個移到第1個,原來第3個移到第2個原來第1個移到第16個。實現(xiàn)數(shù)組數(shù)據(jù)循環(huán)左移的方法有:第一,遍一個“數(shù)組數(shù)據(jù)循環(huán)左移子程序”,該子程序每執(zhí)行一次可把數(shù)組中的額數(shù)據(jù)循環(huán)左移一次,主程序中先調(diào)用一次該子程序,時數(shù)組中的數(shù)據(jù)循環(huán)左移這一次,然后再從數(shù)組中取數(shù)據(jù)顯示。當(dāng)數(shù)組中的額數(shù)據(jù)個數(shù)較多時,片內(nèi)RAM將不夠大,

32、必須將數(shù)組定義在片外RAM中。第二,不用子程序,而是用變量判斷控制實現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。(2) 行掃描方式左移:行向組字顯示字符水平方向的左移。如果是行向組字(行掃描方式,點(diǎn)陣數(shù)據(jù)為列碼,左邊為敵位右邊為高位),希望顯示向左移動的一個字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第116個數(shù)據(jù),送到列碼輸出口,對應(yīng)的8個數(shù)據(jù),同時用行碼輸出口輸出行碼,分別控制掃描第116行。掃描完成這16個數(shù)據(jù)之后,第2次掃描的第16個數(shù)據(jù),應(yīng)將原來第1次掃描的16列碼每一個都循環(huán)右移一位(如果是顯示右移則應(yīng)循環(huán)左移),再進(jìn)行掃描。如此,每進(jìn)行下一次掃描,把上一次掃描的16個列碼都循環(huán)右移一位,再進(jìn)行掃描。數(shù)據(jù)的右移

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

34、用字型的方法容易理解,以下的1616的LED顯示一個字是8個字型,首先掃描的而是第一個字型,同樣是16行,16列掃描,16次顯示;完成一個字型后,再掃描第二個字型;完成第二個字型后,再掃描第三個字型以此類推,即可產(chǎn)生該文字向上移動的感覺當(dāng)把第一個字型編碼中,每行顯示的數(shù)據(jù)都右移一位,以產(chǎn)生第二個字型編碼,即可產(chǎn)生字符向上滾動的感覺。當(dāng)?shù)谝粋€字符掃描完成后,就進(jìn)行這樣的調(diào)整動作,以產(chǎn)生第二個字型的編碼。同樣的,當(dāng)?shù)诙€字型完成之后,就進(jìn)行這樣的調(diào)整動作,以產(chǎn)生第三個字型的編碼。調(diào)整的動作是先將8個編碼根據(jù)序填入儲存器,例如第1行編碼存入20地址,第2行編碼存入21地址要進(jìn)行上移調(diào)整時,則從20地

35、址數(shù)據(jù)開始,每筆數(shù)據(jù)都右移一位即可。 下圖2.15僅以字型移動的方法畫圖。 圖2.15 字形法上下移動示意圖(2)行掃描方式上下移動行向組字顯示字符豎直方向的移動方法1:延長數(shù)組法。如果是行向組字,希望顯示向上移動的一個字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第116個數(shù)據(jù),送列碼輸出口,對應(yīng)于這8個數(shù)據(jù),同時用行碼輸出口輸出行碼,分別控制掃描第116行。第2次掃描從點(diǎn)陣數(shù)組中取第217個額數(shù)據(jù)(第17個數(shù)據(jù)與地1個數(shù)據(jù)同),分別送列碼輸出口,對應(yīng)于這16個數(shù)據(jù),同時用行碼輸出口輸出行碼,仍分別控制地116行。第3次掃描從點(diǎn)陣數(shù)組中取第318個數(shù)據(jù)(第18個數(shù)據(jù)與地2個數(shù)據(jù)同)掃描;如此就實現(xiàn)了字

36、符的向上移動。方法2:數(shù)組數(shù)據(jù)“循環(huán)左移法”。實現(xiàn)數(shù)組數(shù)據(jù)循環(huán)左移的方法與上類似。也有:用數(shù)組數(shù)據(jù)循環(huán)左移子程序;不用子程序,而是用變量判斷控制實現(xiàn)數(shù)組數(shù)據(jù)的循環(huán)左移。2.7 點(diǎn)陣顏色的轉(zhuǎn)換圖2.16 雙色88點(diǎn)陣掃描接口圖 為了簡便起見,以下以88雙色點(diǎn)陣為例介紹雙色的轉(zhuǎn)換原理。前面已經(jīng)介紹過了,88雙色點(diǎn)陣其實就相當(dāng)于2個88單色點(diǎn)陣組合在一起,上圖2.16的2個88單色點(diǎn)陣就相當(dāng)于一個88的單色點(diǎn)陣。在設(shè)計電路的時候可以使顯示信號從公用的引腳接入,接到89C51的一個PORT口,把顯示紅色的部分和顯示黃色的部分分別接到89C51的另外兩個PORET口,在編寫程序的時候,使顯示紅色的掃描信

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

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

39、7所示. 圖2.17共陰型低態(tài)掃描-低態(tài)顯示信號驅(qū)動電路若要并接多個LED陣列,如連接使用4個88LED陣列,連接成1616LED陣列,則一個掃描信號同時驅(qū)動兩個LED陣列。如在本設(shè)計中要顯示的字比較大,用一個88的點(diǎn)陣無法顯示完整,這就需要用四塊88的點(diǎn)陣組成一塊1616的點(diǎn)陣,這樣就可以顯示完整的漢字了,若要并聯(lián)多個88的LED組成1616的點(diǎn)陣,則一個掃描信號同時要驅(qū)動兩行的LED。如下圖2.18所示。 圖2.18 1616的點(diǎn)陣驅(qū)動圖這時候就需要靠鎖存器(74LS373)將這兩組顯示信號鎖住,此處的鎖存器是以低態(tài)輸出的,其輸出的電壓可達(dá)24毫安,足以驅(qū)動一個LED;若嫌不足,可以選用7

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

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

42、在上述就可以通過延時程序來完成。 1. 機(jī)器周期和指令周期 (1)機(jī)器周期是指單片機(jī)完成一個基本操作所花費(fèi)的時間,一般使用微秒來計量單片機(jī)的運(yùn)行速度,51單片機(jī)的一個機(jī)器周期包括12 個時鐘振蕩周期,也就是說如果51 單片機(jī)采用12MHz 晶振,那么執(zhí)行一個機(jī)器周期就只需要1s;如果采用的是6MHz 的晶振,那么執(zhí)行一個機(jī)器周期就需要2 s。 (2)指令周期是指單片機(jī)執(zhí)行一條指令所需要的時間,一般利用單片機(jī)的機(jī)器周期來計量指令周期。 在51 單片機(jī)里有單周期指令(執(zhí)行這條指令只需一個機(jī)器周期),雙周期指令(執(zhí)行這條指令只需要兩個 機(jī)器周期),四周期指令(執(zhí)行這條指令需要四個機(jī)器周期)。除了乘、

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

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

45、里面存放著80H,就單這條 指令而言并沒有任何實際意義,而執(zhí)行該指令則需要一個機(jī)器周期。 (2)空操作指令 NOP 空操作指令功能只是讓單片機(jī)執(zhí)行沒有意義的操作,消耗一個機(jī)器周期。 (3)循環(huán)轉(zhuǎn)移指令 DJNZ 循環(huán)轉(zhuǎn)移指令功能是將第一個數(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)號為KK 的地方;如果為0 則執(zhí)行下一條指令。這條指令需要2個機(jī)器周期。 循環(huán)轉(zhuǎn)移指令(DJNZ )除了可以給定地址標(biāo)號讓其跳轉(zhuǎn)外,還可以將地址標(biāo)號改成$,這樣

46、 程序就跳回本指令執(zhí)行。例如: DJNZ R7,$ ;R7 內(nèi)容減1 不為0,則再次執(zhí)行本指令;為0 則往下執(zhí)行,當(dāng)R7 的值改為10 時,則執(zhí)行完該條程序所需的時間為2*10=20 s。利用以上三條指令的組合就可以比較精確地編寫出所需要的延時程序。下面是本設(shè)計的程序中延時程序的計算:MOV R3,#200; 1D1: MOV R5,#250; 1F1: DJNZ R5, F1; 2*R5DJNZ R3,D1; 2*R3+(1+2*R5)*R3RET 2上面這個子程序共有四條指令,現(xiàn)在分別就每一條指令 被執(zhí)行的次數(shù)和所耗時間進(jìn)行分析。 第一句:MOV R3,#200 在整個子程序中只被執(zhí)行一次

47、,且為單周期指令,所以耗時1s 第二句:MOV R5,#250 從看到只要R3-1不為0,就會返回到這句,共執(zhí)行了R3次,共耗時200s 第三句:DJNZ R5,F(xiàn)1 只要R5-1不為0,就反復(fù)執(zhí)行此句(內(nèi)循環(huán)R5次),又受外循環(huán)R3控制,所以共執(zhí)行R3*R5次,因是雙周期指令,所以耗時2*R3*R5s。所以精確延時時間為:1+(1200)+(2250200)+(2200)+2 =(2*250+3)*200+3 =100603s 100ms =0.1s3.2點(diǎn)陣左移顯示的流程圖及分析流程圖(圖3.1)和程序的簡要說明:在程序的開始設(shè)定初始的地址是0H,并定義了”選擇符號F”的初值為0,為下面的

48、點(diǎn)陣掃描的出口選擇準(zhǔn)備。在主程序的開始的延時子程序,延時0.1秒,既是在程序通電啟動開始的停頓,也作為一次移動的末尾時到開始下一次重復(fù)移動開始之間的停頓,在上面的“延時子程序”中已經(jīng)介紹了計算的方法。程序接著向下運(yùn)行,定義了取碼指針的位置,設(shè)為00H的初始位置,再下面的74LS154掃描指針的初值設(shè)為00H,是因為掃描要從開始的零點(diǎn)開始掃。 程序的循環(huán)運(yùn)行是從M3開始的,M3的開始10行程序是點(diǎn)陣顏色的選擇,即確定列掃描出口的選擇,因為F的初值是0,所以先從掃描信號先從P1口輸出,即首先顯示的是紅色的點(diǎn)陣。掃描信號輸出后,取碼指針先去的第一個碼送到點(diǎn)陣的上半部分,打開上部分點(diǎn)陣的74LS373

49、鎖存器關(guān)閉下面部分74LS373鎖存器,把信號送到點(diǎn)陣的上部分。再指針加1,關(guān)閉上部分點(diǎn)陣的74LS373鎖存器,打開下面部分74LS373鎖存器,取相鄰的碼送到點(diǎn)陣的下半部分,緊挨著的延時程序是設(shè)定每列掃描的時間: MOV R3,#50; DJNZ R3,$;延時時間為:1+(2*50)=101us0.1ms 下面的“DJNZ R6,M3;”到M3的循環(huán)可以計算顯示一次一個整屏的時間為0.1ms*16=1.1 ms,再下面的“DJNZ R1,M2;”到M2的循環(huán)可以計算出每個屏的停留時間,也是向左每移動一下的時間間隔為0.1ms*16*65=104ms=0.1s。當(dāng)字型向左移動一位的時候,取

50、碼指針應(yīng)在先加2再進(jìn)行下一個字型的取碼,因為本設(shè)計每1列的碼為2個。最后的部分代碼:XRL A,#128; JNZ M1; CPL F0; JMP START;的意思是:在控制字型移動完以后,返回到頭重新開始移動,因為在本設(shè)計是顯示4個字型,4個字型的碼為128個,取碼指針的初始為0,每次加2,到128時循環(huán)結(jié)束,改變F的狀態(tài),跳到程序的最上面開始部分,開始黃色字型的移動顯示。 說明一下:本設(shè)計是以顯示4個字的循環(huán)為例的,正如前面所說,字型可以任意加進(jìn)去,顯示任意多的字左移的顯示,還可以顯示一些符號和圖形。只要有字型的代碼,再稍微改一下程序就可以顯示了。顯示效果:開始停0.1秒,顯示向左移動的

51、紅色字“XXXX”,移動的速度為每0.1秒移動一下,到左后一個字,停0.1秒馬上就接著顯示黃色的字型“XXXX”。 在主程序的開始的延時作為一次移動的末尾時到開始下一次重復(fù)移動開始之間的停頓,和字符移動的時間間隔相同,保持了移動的平穩(wěn)連貫性。黃色的字型“XXXX”移動的速度為每0.1秒移動一下,到左后一個字,停0.1秒馬上就接著再顯示紅色的字型“XXXX”。依此循環(huán)。RETN圖3.1點(diǎn)陣左移顯示的流程圖取下一個碼P0.0清0,P0.1置1輸出至P2口顯示輸出至P2口顯示到TABLE取上半部數(shù)據(jù)取碼指針載入AM4P0.2清零P0.1置1輸出至P0.1掃描P0. 1清零P0. 2置1輸出至P0.3

52、掃描F=0?YN掃描指針AM3每屏4字,取碼指針存R0N設(shè)置每屏停留時間F0取反YM2M1START:YNYF=0指針加2并回存每屏停留的時間到?取碼指針載入A清除154掃描指針為00顯示1屏?掃描下一行清除屏幕取碼值加1并延時P0.0置1,P0.1清0輸出至P2口顯示到TABLE取下半部數(shù)據(jù)取碼指針載入A154掃描指針初值為00取碼指針20H初值為00延時清除屏幕開始8個字都左移完?3.3 PROTEUS仿真Proteus仿真時,單片機(jī)需要加載程序,加載程序為.HEX文件。本設(shè)計利用Keil Vision2, 在新建Keil項目時選擇AT89C52單片機(jī)作為CPU,將源程序?qū)?,在“Opti

53、ons For Target”對話窗口中,選中“Output”選項中的“Create HEX File”,編譯鏈接后就可以生成.HEX文件。在Proteus ISIS中,選中AT89C51并單擊鼠標(biāo)左鍵,對AT89C51進(jìn)行設(shè)置,設(shè)置單片機(jī)時鐘頻率為12MHz,按照正確的文件路徑加載.HEX文件。對單片機(jī)設(shè)置完畢后就可以開始仿真了。仿真過程中如有硬件問題可在Proteus ISIS中直接修改,如有軟件問題可在Keil Vision2中直接修改,通過Keil與Proteus的聯(lián)合調(diào)試就可以得到滿意的結(jié)果。利用Proteus實現(xiàn)了對點(diǎn)陣式LED滾動漢字顯示屏的仿真,說明程序和電路圖都沒有問題。3.

54、4 調(diào)試 調(diào)試主要分為硬件調(diào)試和軟件調(diào)試: 硬件調(diào)試:在焊接電路板的時候,應(yīng)該從最基本的最小系統(tǒng)開始,分模塊,逐個進(jìn)行焊接測試。在對各個硬件模塊進(jìn)行測試時,要保證軟件正確的情況下去測試硬件,要不然發(fā)生錯誤時,不知道到底是哪一方出錯了。當(dāng)然,在設(shè)計的過程中也存在著失誤和不足,在調(diào)試中進(jìn)行修改了。 軟件調(diào)試:軟件部分是先參考書上的例子,然后自己根據(jù)硬件電路寫程序,由于以前所學(xué)是單片機(jī)匯編語言,所以這個系統(tǒng)在編寫程序過程中都采用匯編語言編寫。剛剛開始,編寫不會一次性通過,經(jīng)過仔細(xì)分析修改最后編譯成功。但是,在實際寫如S51中,LED顯示屏出現(xiàn)各種各樣的亂碼,通過再次認(rèn)真仔細(xì)分析多次修改程序后,程序能

55、夠正常運(yùn)行。 總 結(jié)本次畢業(yè)設(shè)計從十一月中旬到現(xiàn)在有一個多月,回顧著些天我感到學(xué)到了很多東西,在寫這個心得的時候,我想就這些天的收獲,說一說自己內(nèi)心的想法。本設(shè)計的是一個室內(nèi)用16x16的點(diǎn)陣LED圖文顯示屏,能夠在目測條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應(yīng)穩(wěn)定、清晰無串?dāng)_。圖形或文字顯示有靜止、移入移出等顯示方式。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡單,容易實現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。 總結(jié)本文的研究工作,主要做了下面幾點(diǎn)工作: 一、通過查閱大量的相關(guān)資料,詳細(xì)了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現(xiàn)狀,清楚地了解了LED顯示屏與其它顯示屏相比

56、較有那些優(yōu)點(diǎn),明確了研究目標(biāo)。并且通過對單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對單片機(jī)知識的理解和運(yùn)用能力。并證實了自己的思路:“查資料思考總結(jié)運(yùn)用找出差錯,再查資料和向別人詢問再次運(yùn)用”的正確性。二,本文設(shè)計的LED顯示屏能夠?qū)崿F(xiàn)在目測條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應(yīng)穩(wěn)定、清晰無串?dāng)_。圖形或文字顯示有靜止、移入移出等顯示方式。三,本文列出了系統(tǒng)具體的硬件設(shè)計方案,硬件結(jié)構(gòu)電路圖,軟件流程圖和具體匯編語言程序設(shè)計與調(diào)試等方面。四,在這次畢業(yè)設(shè)計的過程中學(xué)會了 Protel 的基本使用,感到Protel對應(yīng)用電子專業(yè)的同學(xué)來說是一門很有用的課程。在運(yùn)用Protel時要格外小心,例如在畫PCB電路板的時候,要注意基本的布板原則。例如,在進(jìn)行PCB布板的時候,濾波電容不夠靠近芯片的電源腳和地腳。五,通過這次畢業(yè)設(shè)

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!