版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)</b></p><p><b> 16×16點(diǎn)陣</b></p><p><b> 姓名: </b></p><p><b> 班級(jí): </b></p><p><b> 學(xué)號(hào): &
2、lt;/b></p><p><b> 指導(dǎo)老師: </b></p><p> 日期:二○一二年一月二日星期一</p><p> 16*16點(diǎn)陣課程設(shè)計(jì)</p><p><b> 第一章 緒 論</b></p><p> 1.1 設(shè)計(jì)課題背景知識(shí)</p&
3、gt;<p> 單片微型計(jì)算機(jī)(single chip microcomputer)簡(jiǎn)稱單片機(jī),它是為各類專用控制器而設(shè)計(jì)的通用或?qū)S梦⑿陀?jì)算機(jī)系統(tǒng),高密度集成了普通計(jì)算機(jī)微處理器,一定容量的RAM和ROM以及輸入/輸出接口,定時(shí)器等電路于一塊芯片上構(gòu)成的。</p><p> 單片機(jī)自20世紀(jì)70年代問世以來,以極其高的性價(jià)比受到人們的重視和關(guān)注,所以應(yīng)用很廣,發(fā)展很快。單片機(jī)的優(yōu)點(diǎn)是體積小、重
4、量輕、抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好,開發(fā)較為容易。在現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場(chǎng)所需要用點(diǎn)陣圖形顯示器顯示漢字,漢字顯示屏也廣泛應(yīng)用到汽車報(bào)站器,廣告屏等。所以研究LED顯示有實(shí)用的意義。</p><p> 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)所。 </p><p> LED顯示屏可以顯示變化的數(shù)字、文字、圖形圖像;不僅可以用于室內(nèi)環(huán)境還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏無法比擬的優(yōu)點(diǎn)。 <
6、;/p><p> LED之所以受到廣泛重視而得到迅速發(fā)展,是與它本身所具有的優(yōu)點(diǎn)分不開的。這些優(yōu)點(diǎn)概括起來是:亮度高、工作電壓低、功耗小、小型化、壽命長(zhǎng)、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。</p><p> 現(xiàn)代LED的發(fā)展很快,很多研究領(lǐng)域非常已經(jīng)深刻,實(shí)際情況是:很多相關(guān)的知識(shí)已經(jīng)遠(yuǎn)遠(yuǎn)
7、超出我們?cè)谛W(xué)生的能力范圍,所以在此只是簡(jiǎn)單的研究一下用單片機(jī)驅(qū)動(dòng)的LED顯示移動(dòng)的漢字。目的有三:一是親手制作一個(gè)簡(jiǎn)單實(shí)用的顯示文字的LED點(diǎn)陣;二是通過制作LED點(diǎn)陣增強(qiáng)對(duì)LED點(diǎn)陣的了解和應(yīng)用,以及復(fù)習(xí)鞏固單片機(jī)知識(shí);三是通過團(tuán)隊(duì)合作,增強(qiáng)團(tuán)隊(duì)合作的意識(shí),為以后走向社會(huì)工作打下基礎(chǔ),并且增強(qiáng)了同學(xué)之間的友誼。</p><p> 漢字顯示方式是先根據(jù)所需要的漢字提取漢字點(diǎn)陣(如16×16 點(diǎn)陣),
8、將點(diǎn)陣文件存入ROM,形成新的漢字編碼;而在使用時(shí)則需要先根據(jù)新的漢字編碼組成語句,再由MCU根據(jù)新編碼提取相應(yīng)的點(diǎn)陣進(jìn)行漢字顯示。不論顯示圖形還是文字,都是控制與組成這些圖形或文字的各個(gè)點(diǎn)所在位置相對(duì)應(yīng)的LED器件發(fā)光。通常事先把需要顯示的圖形文字轉(zhuǎn)換成點(diǎn)陣圖形,在按照顯示控制的要求以一定的格式形成顯示數(shù)據(jù)。對(duì)于只控制通斷的圖文顯示屏來說,每個(gè)LED發(fā)光器件占據(jù)數(shù)據(jù)中的1位(1bit),在需要該LE D器件發(fā)光的數(shù)據(jù)中相應(yīng)的位填1,否
9、則填0。當(dāng)然,根據(jù)控制電路的安排,相反的定義同樣時(shí)可行的。這樣依照所需顯示的圖形文字,按顯示屏的各行各列逐點(diǎn)填寫顯示數(shù)據(jù),就可以構(gòu)成一個(gè)顯示數(shù)據(jù)文件。顯示圖形的數(shù)據(jù)文件,其格式相對(duì)自由,只要能夠滿足顯示控制的要求即可。文字的點(diǎn)陣格式比較規(guī)范,可以采用現(xiàn)行計(jì)算機(jī)通用的字庫字模。組成一個(gè)字的點(diǎn)陣,其大小也可以有16×16、24×24、32×32、48×48等不同規(guī)格。</p><p
10、> 用點(diǎn)陣方式構(gòu)成圖形或文字,是非常靈活的,可以根據(jù)需要任意組合和變化,只要設(shè)計(jì)好合適的數(shù)據(jù)文件,就可以得到滿意的顯示效果。因而采用點(diǎn)陣式圖文顯示屏顯示經(jīng)常需要變化的信息,是非常有效的。</p><p> 圖文顯示屏的顏色,有單色、雙色、和多色幾種。最常用的是單色圖文屏。單色屏多使用紅色或橘紅色或橙色LED點(diǎn)陣單元。雙色圖文屏和多色圖文屏,在LED點(diǎn)陣的每一個(gè)“點(diǎn)”上布置有兩個(gè)或多個(gè)不同顏色的LED發(fā)光
11、器件。換句話說,對(duì)應(yīng)于每種顏色都有自己的顯示矩陣。顯示的時(shí)候,各顏色的顯示點(diǎn)陣是分開控制的。事先設(shè)計(jì)好各種顏色的顯示數(shù)據(jù),顯示時(shí)分別送到各自的顯示點(diǎn)陣,即可實(shí)現(xiàn)預(yù)期效果。每一種顏色的控制方法和單色的完全相同,因此掌握了單色圖文顯示屏的原理,雙色屏和多色屏就不難理解了。</p><p> 為了吸引觀眾增強(qiáng)顯示效果,可以有多種顯示模式。最簡(jiǎn)單的顯示模式是靜態(tài)顯示。與靜態(tài)顯示模式相對(duì)應(yīng),就有各種動(dòng)態(tài)顯示模式,它們所顯
12、示的圖文都是能夠動(dòng)的。按照?qǐng)D文運(yùn)動(dòng)的特點(diǎn)又可以分為閃爍、平移、旋轉(zhuǎn)、縮放等多種顯示模式。產(chǎn)生不同顯示模式的方法,并不意味著一定要重新編寫顯示數(shù)據(jù),可以通過一定的算法從原來的顯示數(shù)據(jù)直接生成。例如,按順序調(diào)整行號(hào),可以使顯示圖文產(chǎn)生上下平移;而順序調(diào)整列顯示數(shù)據(jù)的位置,就可以達(dá)到左右平移的目的;刷新的時(shí)間控制,要考慮運(yùn)動(dòng)圖形文字的顯示效果。刷新太慢,動(dòng)感不顯著;刷新太快了,中間過程看不清。一般刷新周期可控制在幾十毫秒范圍之內(nèi)。</p
13、><p> 本次畢業(yè)設(shè)計(jì)中,由本人和鐘桂,張維平組成一組,我負(fù)責(zé)硬件部分電路圖的設(shè)計(jì)和軟件部分程序的設(shè)計(jì)和調(diào)試,目的是應(yīng)用簡(jiǎn)單方便的電路連接和程序完成漢字的換色與移動(dòng)。鐘桂負(fù)責(zé)用設(shè)計(jì)好的點(diǎn)陣電路制作PCB電路板,包括完成PCB板的制作,張維平負(fù)責(zé)制作另外一塊在面包板上連的點(diǎn)陣線連板子的焊接與調(diào)試,各人的分工不同只是工作側(cè)重點(diǎn)的不同,大家是在一起互相學(xué)習(xí)互相幫助,共同完成設(shè)計(jì)任務(wù)。</p><p&
14、gt;<b> 第二章 硬件設(shè)計(jì)</b></p><p> 2.1設(shè)計(jì)框圖及介紹</p><p> LED點(diǎn)陣總體框圖如圖1.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ī)的串行通訊、以及給
15、屏體電路部分發(fā)送命令。點(diǎn)陣顯示屏體、以及它的行和列的各個(gè)驅(qū)動(dòng)電路。由于兩部分的電路在制板時(shí)可以放到一起,所以可以將其字庫放到控制電路部分使用串行通訊方式來與屏體電路部分進(jìn)行數(shù)據(jù)和命令的傳送。</p><p> 此顯示電路采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。由行譯碼器給出的行選通信號(hào),從第一行開始,按順序依次對(duì)各行進(jìn)行掃描(把該行與電源的一端接通)。另一方而,根據(jù)各列鎖存的數(shù)
16、據(jù),確定相應(yīng)的列驅(qū)動(dòng)器是否將該列與電源的另一端接通。接通的列,就在該行該列點(diǎn)燃相應(yīng)的LED;未接通的列所對(duì)應(yīng)的LED熄滅??赏ㄟ^掃描輸出口的控制實(shí)現(xiàn)顏色的轉(zhuǎn)換。</p><p> 圖2.1 點(diǎn)陣顯示的總體框圖</p><p> 2.2 51系列單片機(jī)簡(jiǎn)介</p><p> 單片機(jī)(Microcontroller,又稱微處理器)是在一塊硅片上集成了各種部件的微
17、型機(jī),這些部件包括中央處理器CPU、數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)器/計(jì)數(shù)器和多種I/O接口電路。</p><p> 8051單片機(jī)的基本結(jié)構(gòu)見圖2.2。</p><p> 圖2.2 8051單片機(jī)的基本結(jié)構(gòu)</p><p> 8051是MCS-51系列單片機(jī)的一個(gè)產(chǎn)品。MCS-51系列單片機(jī)是Intel公司推出的通用型單片機(jī),8051單片機(jī)系列指的
18、是MCS-51系列和其他公司的8051衍生產(chǎn)品。這些衍生品是在基本型基礎(chǔ)上增強(qiáng)了各種功能的產(chǎn)品。這些產(chǎn)品給8位單片機(jī)注入了新的活力,給它的開發(fā)應(yīng)用開拓了更廣泛的前景。</p><p> 8051系列的內(nèi)部結(jié)構(gòu)可以劃分為CPU、存儲(chǔ)器、并行口、串行口、定時(shí)器/計(jì)數(shù)器、中斷邏輯幾部分。</p><p><b> (1)中央處理器</b></p><
19、p> 8051的中央處理器由運(yùn)算器和控制邏輯構(gòu)成,其中包括若干特殊功能寄存器(SFR)。</p><p> 算術(shù)邏輯單元ALU能對(duì)數(shù)據(jù)進(jìn)行加、減、乘、除等算術(shù)運(yùn)算;“與”、“或”、“異或”等邏輯運(yùn)算以及位操作運(yùn)算。</p><p> ALU只能進(jìn)行運(yùn)算,運(yùn)算的操作數(shù)可以事先存放到累加器ACC或寄存器TMP中,運(yùn)算結(jié)果可以送回ACC或通用寄存器或存儲(chǔ)單元中,累加器ACC也可以寫為
20、A。B寄存器在乘法指令中用來存放一個(gè)乘數(shù),在除法指令中用來存放除數(shù),運(yùn)算后B中為部分運(yùn)算結(jié)果。</p><p> 程序狀態(tài)字PSW是個(gè)8位寄存器,用來寄存本次運(yùn)算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含義是:</p><p> CY:進(jìn)位標(biāo)志。有進(jìn)位/錯(cuò)位時(shí)CY=1,否則CY=0。 </p><p> AC:半進(jìn)位標(biāo)志。當(dāng)D3位向D4位產(chǎn)生進(jìn)
21、位/錯(cuò)位時(shí),AC=1,否則AC=0,常用于十進(jìn)制調(diào)整運(yùn)算中。</p><p> F0:用戶可設(shè)定的標(biāo)志位,可置位/復(fù)位,也可供測(cè)試。</p><p> RS1、RS0:四個(gè)通用寄存器組選擇位,該兩位的四種組合狀態(tài)用來選擇0~3寄存器組。。</p><p> OV:溢出標(biāo)志。當(dāng)帶符號(hào)數(shù)運(yùn)算結(jié)果超出-128~+127范圍時(shí)OV=1,否則OV=0。當(dāng)無符號(hào)數(shù)乘法結(jié)果
22、超過255時(shí),或當(dāng)無符號(hào)數(shù)除法的除數(shù)為0時(shí)OV=1,否則OV=0。</p><p> P:奇偶校驗(yàn)標(biāo)志。每條指令執(zhí)行完,若A中1的個(gè)數(shù)為奇數(shù)時(shí)P=1,否則P=0,即偶校驗(yàn)方式。</p><p> 控制邏輯主要包括定時(shí)和控制邏輯、指令寄存器 、譯碼器以及地址指針DPTR和程序寄存器PC等。</p><p> 單片機(jī)是程序控制式計(jì)算機(jī),即它的運(yùn)行過程是在程序控制下
23、逐條執(zhí)行程序指令的過程:從程序存儲(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引腳是一起
24、敘述。</p><p><b> ?。?)存儲(chǔ)器組織</b></p><p> 8051單片機(jī)的存儲(chǔ)器結(jié)構(gòu)特點(diǎn)之一是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開,并有各自的尋址機(jī)構(gòu)和尋址方式,這種結(jié)構(gòu)稱為哈佛結(jié)構(gòu)單片機(jī)。這種結(jié)構(gòu)與通用微機(jī)的存儲(chǔ)器結(jié)構(gòu)不同,一般微機(jī)只有一個(gè)存儲(chǔ)器邏輯空間,可隨意安排ROM或RAM,訪存時(shí)用同一種指令,這種結(jié)構(gòu)稱為普林斯頓型。</p>&
25、lt;p> 8051單片機(jī)在物理上有四個(gè)存儲(chǔ)空間:片內(nèi)程序存儲(chǔ)器和片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外數(shù)據(jù)存儲(chǔ)器。</p><p> 8051片內(nèi)有256K數(shù)據(jù)存儲(chǔ)器RAM和4KB的程序存儲(chǔ)器ROM。除此之外,還可以在片外擴(kuò)展RAM和ROM,并且各有64KB的尋址范圍。也就是最多可以在外部擴(kuò)展2*64KB存儲(chǔ)器。</p><p> 8051的存儲(chǔ)器組織結(jié)構(gòu)如圖2.3所示。<
26、;/p><p> 圖 2-3 8051存儲(chǔ)器組織結(jié)構(gòu)</p><p> 64K字節(jié)的程序存儲(chǔ)器(ROM)空間中,有4K字節(jié)地址區(qū)對(duì)于片內(nèi)ROM和片外ROM是公用的,這4K字節(jié)地址是0000H~FFFH。而1000H~FFFFH地址區(qū)為外部ROM專用。CPU的控制器專門提供一個(gè)控制信號(hào)EA用來區(qū)分內(nèi)部ROM和外部ROM的公用地址區(qū):當(dāng)EA接高電平時(shí),單片機(jī)從片內(nèi)ROM的4K字節(jié)存儲(chǔ)器區(qū)取指
27、令,而當(dāng)指令地址超過0FFFH后,就自動(dòng)的轉(zhuǎn)向片外ROM取指令。當(dāng)EA接低電平時(shí),CPU只從片外ROM取指令。</p><p> 程序存儲(chǔ)器的某些單元是保留給系統(tǒng)使用的:0000H~0002H單元是所有執(zhí)行程序的入口地址,復(fù)位以后,CPU總是叢0000H單元開始執(zhí)行程序。0003H~002AH單元均勻地分為五段,用做五個(gè)中斷服務(wù)程序的入口。用戶程序不應(yīng)進(jìn)入上述區(qū)域。</p><p>
28、8051的RAM雖然字節(jié)數(shù)不很多,但卻起著十分重要的作用。256個(gè)字節(jié)被分為兩個(gè)區(qū)域:00H~7FH時(shí)真正的RAM區(qū),可以讀寫各種數(shù)據(jù)。而80H~FFH是專門用于特殊功能寄存器(SFR)的區(qū)域。對(duì)于8051安排了21個(gè)特殊功能寄存器,每個(gè)寄存器為8位,所以實(shí)際上128個(gè)字節(jié)并沒有全部利用。</p><p> 內(nèi)部RAM的各個(gè)單元,都可以通過直接地址來尋找,對(duì)于工作寄存器,則一般都直接用R0~R7,對(duì)特殊功能寄存
29、器,也是直接使用其名字較為方便。8051內(nèi)部特殊功能寄存器都是可以位尋址的,并可用“寄存器名.位”來表示,如ACC.0,B.7等。</p><p> 2.3 單片機(jī)最小應(yīng)用系統(tǒng)電路設(shè)計(jì)</p><p> 圖2.4 單片機(jī)最小應(yīng)用系統(tǒng)原理圖</p><p> 注: 該最小系統(tǒng)由按鍵復(fù)位RESET電路、晶體振蕩電路以及I/O接口電路組成。</p>
30、<p> 復(fù)位的實(shí)現(xiàn)通常用2種方式: 開機(jī)上電復(fù)位和外部手動(dòng)復(fù)位,本設(shè)計(jì)用的是外部手動(dòng)復(fù)位。電路圖2.5如下:</p><p> 圖2.5 單片機(jī)復(fù)位圖</p><p> AT89C51工作電壓VCC=5V,其EA引腳需接高電平,5V電源電路如圖2.6所示。</p><p> 圖2.6 單片機(jī)電源原理圖</p><p>
31、 注: 該電源電路主要模塊為IC7805,它能輸出穩(wěn)定的 5V電源,圖中整流橋是將市電轉(zhuǎn)變?yōu)橹绷麟?電容起到慮波作用由7805的OUT引腳輸出5V電壓。</p><p> 2.4 LED點(diǎn)陣介紹</p><p> 8×8單色點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)二極管是放置在行線與列線的叉點(diǎn)上。本設(shè)計(jì)是一種實(shí)用的漢字顯示屏的制作,制作的是單色點(diǎn)陣。直接使用了51單片機(jī)實(shí)
32、驗(yàn)箱256個(gè)高亮度發(fā)光管,組成了16行16列的發(fā)光點(diǎn)陣。實(shí)際使用時(shí)可以根據(jù)這個(gè)原理自行擴(kuò)充顯示的字?jǐn)?shù)。</p><p> 對(duì)比下面的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線就可以了。 </p><p> 8&
33、#215;8單色和雙色點(diǎn)陣LED結(jié)構(gòu)分別如下圖2.8和2.9所示。</p><p> 圖2.7 8×8點(diǎn)陣外觀及引腳圖 </p><p> 圖2.8 8×8單色點(diǎn)陣內(nèi)部圖 圖2.9 8×8雙色點(diǎn)陣內(nèi)部圖</p><p> 2.5 LED顯示方式</p><p> 漢
34、字顯示屏用于顯示漢字、字符及圖像信息,在公共汽車、銀行、醫(yī)院及戶外廣告等地方都有廣泛的應(yīng)用。下面是簡(jiǎn)單的漢字顯示屏的制作,由單片機(jī)控制漢字的顯示內(nèi)容。為了降低成本,使用了四塊8×8的LED點(diǎn)陣發(fā)光管的模塊,組成了一個(gè)16×16的LED點(diǎn)陣顯示屏,如圖2.10所示。在這里僅做了四個(gè)漢字的顯示,在實(shí)際的使用中可以根據(jù)這個(gè)原理自行的擴(kuò)展顯示的漢字,下面是介紹漢字顯示的原理。 </p><p> 圖
35、2.10 四塊8×8的LED點(diǎn)陣組成16×16的LED點(diǎn)陣</p><p> 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ā)光管的陽極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽的接法),先送出對(duì)應(yīng)第1行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定的時(shí)間,然后熄
36、滅;再送出第2行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時(shí)間,然后熄滅;….第16行之后,又重新燃亮第1行,反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(xiàn)象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅(qū)動(dòng)較多的LED,控制方式較靈活,而且節(jié)省單片機(jī)的資源。</p><p> 顯示數(shù)據(jù)傳輸采用串行傳輸?shù)姆椒ǎ刂齐娐房梢灾挥靡桓盘?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無疑是十分經(jīng)濟(jì)的
37、。但串行傳輸過程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢?,這一行的各列才能并行地進(jìn)行顯示。對(duì)于串行傳輸方式來說,列數(shù)據(jù)準(zhǔn)備時(shí)間可能相當(dāng)長(zhǎng),在行掃描周期確定的情況下,留給行顯示的時(shí)間就太少了,以致影響到LED的亮度。</p><p> 采用串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的
38、,列數(shù)據(jù)的顯示就需要有鎖存功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來說,它應(yīng)能實(shí)現(xiàn)串入并出的移位功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串行移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。</p><p> LED點(diǎn)陣顯示模塊進(jìn)行的方法有兩種:</p><p> ?。?)水平方向(X方向)掃描,即逐列掃描的方式(簡(jiǎn)稱列掃描方式):此時(shí)用一個(gè)P口輸出列碼決定哪一列能亮(相當(dāng)于位碼),
39、用另一個(gè)P口輸出行碼(列數(shù)據(jù)),決定該行上那哪個(gè)LED亮(相當(dāng)于段碼)。能亮的列從左到右掃描完16列(相當(dāng)于位碼循環(huán)移動(dòng)16次)即顯示出一個(gè)完整的圖像。</p><p> (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)于段碼)。能亮的行從上向下掃描完
40、16行(相當(dāng)于位碼循環(huán)移位16次)即顯示一幀完整的圖像。</p><p> 本設(shè)計(jì)應(yīng)用的是第一種的掃描方法,即水平方向(X方向)掃描。</p><p> 每一個(gè)字由16行16列的點(diǎn)陣形成顯示,即每個(gè)字均由256個(gè)點(diǎn)陣來表示,我們可以把每一個(gè)點(diǎn)理解為一個(gè)像素。一般我們使用的16×16的點(diǎn)陣宋體字庫,即所謂的16×16,是每一個(gè)漢字在縱橫各16點(diǎn)的區(qū)域內(nèi)顯示的。漢字庫從
41、該位置起的32字節(jié)信息記錄了該字的字模信息。事實(shí)上這個(gè)漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。</p><p> 我們以水平方向(x方向)掃描顯示漢字的“江”為例來說明其掃描原理,每一個(gè)字由16行16列的點(diǎn)陣組成顯示,如圖下的,如果用8位的AT89S51的單片機(jī)來控制,由于單片機(jī)的總線為8位,一個(gè)字需要拆分成兩個(gè)部分。一般我們把它分解成上部分和下部分,上部分由8*16的點(diǎn)陣組成,下部分也
42、由8*16的點(diǎn)陣組成。在本例中單片機(jī)首先顯示的是左上角的第一列的部分,即第0列的P00~P07口。方向?yàn)镻00到P07,顯示漢字“江”的時(shí)候,P00到P04都是滅的,P05亮,即二進(jìn)制00001000,轉(zhuǎn)換為16進(jìn)制為08H,如圖2.11所示。</p><p> 上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們?nèi)栽O(shè)計(jì)成由上往下的掃描方式,即從P27向P20方向掃描,從上圖可以看到,這一列所
43、有的都不亮,所以代碼為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。</p><p> 按照這個(gè)方法,繼續(xù)進(jìn)行下面的掃描,一共掃描32個(gè)8位,可以得出漢字“馬”的掃描代碼為 :08H,20H,06H,20H,80
44、H,7EH,63H,80H</p><p> 0CH,04H,00H,04H,20H,04H,20H,04H</p><p> 20H,04H,3FH,FCH,20H,04H,20H,04H</p><p> 20H,04H,20H,04H,00H,04H,00H,00H</p><p> 圖2.11 點(diǎn)陣顯示原理圖</p>
45、;<p> 由這個(gè)原理可以看到,無論顯示何種字體或圖像,都可以用這種方法來分析出它的掃描代碼從而顯示在屏幕上。了解漢字的顯示原理之后,那如何得到漢字的字模信息呢?現(xiàn)在有一些現(xiàn)成的漢字字模生成軟件,可從網(wǎng)上下載漢字字庫提取程序直接提取字庫,如圖2.12所示的為一種字模生成軟件,軟件打開后輸入漢字,點(diǎn)擊“檢取”后,十六進(jìn)制數(shù)據(jù)漢字代碼即可以自動(dòng)生成,把我們需要的豎排數(shù)據(jù)復(fù)制到我們的程序即可。</p><p
46、> 圖2.12 漢字字模生成軟件</p><p> 2.6 點(diǎn)陣的移動(dòng)</p><p><b> 1數(shù)據(jù)的上下移動(dòng)</b></p><p> (1)列掃描方式向上移動(dòng)</p><p> 列向組字顯示字符豎直方向的移動(dòng)。若是列向組字,希望顯示向上移動(dòng)一個(gè)字符,第1次掃描從行碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù)
47、,送行碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用列碼輸出口輸出列碼,分別控制掃描第1~16列。由于是列向組字(上高下低),掃描完成這16個(gè)數(shù)據(jù)后,第2次掃描的16個(gè)數(shù)據(jù),應(yīng)將原來的第1次掃描的16個(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)。</p><p> 也可以用字型
48、的方法容易理解,以下的16×16的LED顯示一個(gè)字是8個(gè)字型,首先掃描的而是第一個(gè)字型,同樣是16行,16列掃描,16次顯示;完成一個(gè)字型后,再掃描第二個(gè)字型;完成第二個(gè)字型后,再掃描第三個(gè)字型······以此類推,即可產(chǎn)生該文字向上移動(dòng)的感覺</p><p> 當(dāng)把第一個(gè)字型編碼中,每行顯示的數(shù)據(jù)都右移一位,以產(chǎn)生第二個(gè)字型編碼,即可產(chǎn)生字
49、符向上滾動(dòng)的感覺。</p><p> 當(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ù)開始,每筆數(shù)據(jù)都右移一位即可。
50、</p><p> 下圖2.15僅以字型移動(dòng)的方法畫圖。
51、
52、 </p><p> 圖2.15 字形法上下移動(dòng)示意圖</p><p> (2)行掃描方式上下移動(dòng)</p><p> 行向組字顯示字符豎直方向的移動(dòng)</p><p> 方法
53、1:延長(zhǎng)數(shù)組法。如果是行向組字,希望顯示向上移動(dòng)的一個(gè)字符,第1次掃描從列碼的點(diǎn)陣數(shù)組中取第1~16個(gè)數(shù)據(jù),送列碼輸出口,對(duì)應(yīng)于這8個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,分別控制掃描第1~16行。第2次掃描從點(diǎn)陣數(shù)組中取第2~17個(gè)額數(shù)據(jù)(第17個(gè)數(shù)據(jù)與地1個(gè)數(shù)據(jù)同),分別送列碼輸出口,對(duì)應(yīng)于這16個(gè)數(shù)據(jù),同時(shí)用行碼輸出口輸出行碼,仍分別控制地1~16行。第3次掃描從點(diǎn)陣數(shù)組中取第3~18個(gè)數(shù)據(jù)(第18個(gè)數(shù)據(jù)與地2個(gè)數(shù)據(jù)同)掃描;·
54、;·····如此就實(shí)現(xiàn)了字符的向上移動(dòng)。</p><p> 方法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)左移。</p><p> 2.7 點(diǎn)陣顏色的轉(zhuǎn)換</p><p> 圖2.16 雙色8×8點(diǎn)
55、陣掃描接口圖</p><p> 為了簡(jiǎn)便起見,以下以8×8雙色點(diǎn)陣為例介紹雙色的轉(zhuǎn)換原理。前面已經(jīng)介紹過了,8×8雙色點(diǎn)陣其實(shí)就相當(dāng)于2個(gè)8×8單色點(diǎn)陣組合在一起,上圖2.16的2個(gè)8×8單色點(diǎn)陣就相當(dāng)于一個(gè)8×8的單色點(diǎn)陣。在設(shè)計(jì)電路的時(shí)候可以使顯示信號(hào)從公用的引腳接入,接到89C51的一個(gè)PORT口,把顯示紅色的部分和顯示黃色的部分分別接到89C51的另外兩
56、個(gè)PORET口,在編寫程序的時(shí)候,使顯示紅色的掃描信號(hào)輸出就顯示了紅色,當(dāng)顯示黃色的掃描掃描信號(hào)輸出時(shí),就顯示了黃色。</p><p> 2.8 LED陣列驅(qū)動(dòng)電路</p><p> 正向點(diǎn)亮一顆LED,至少也得10到20毫安,若電流不夠大,則LED不夠亮!而不管是8051的輸入還是輸出端其高態(tài)輸出電流都不是很高,不過1~2毫安而已。因此,很難直接高態(tài)驅(qū)動(dòng)LED。這時(shí)候就需要額外的驅(qū)
57、動(dòng)電路,分別針對(duì)共陽極和共陰極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)電路。</p><p> 圖2.17所示是針對(duì)共陰性LED陣列而設(shè)計(jì)的驅(qū)動(dòng)電路,在這種驅(qū)動(dòng)電路采用低態(tài)掃描,也就是任何時(shí)間只有一個(gè)高態(tài)信號(hào),其他則為低態(tài)。一行掃
58、描完成之后,再把高態(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)亮的條件</p><p> 所要的顯示信號(hào)連接到一個(gè)PNP晶體管的基極,而該晶體管的射
59、極連接到VCC,同樣的,當(dāng)?shù)蛻B(tài)的顯示信號(hào)輸入時(shí),晶體管的集電極電流將流入行LED的陽極,即可點(diǎn)亮該行的LED。如圖2.17所示.</p><p> 圖2.17共陰型低態(tài)掃描-低態(tài)顯示信號(hào)驅(qū)動(dòng)電路</p><p> 若要并接多個(gè)LED陣列,如連接使用4個(gè)8×8LED陣列,連接成16×16LED陣列,則一個(gè)掃描信號(hào)同時(shí)驅(qū)動(dòng)兩個(gè)LED陣列。如在本設(shè)計(jì)中要顯示的字比較大,用
60、一個(gè)8×8的點(diǎn)陣無法顯示完整,這就需要用四塊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。如下圖2.18所示。</p><p> 圖2.18 16×16的點(diǎn)陣驅(qū)動(dòng)圖</p><p> 這時(shí)候就需要靠鎖存器(74LS37
61、3)將這兩組顯示信號(hào)鎖住,此處的鎖存器是以低態(tài)輸出的,其輸出的電壓可達(dá)24毫安,足以驅(qū)動(dòng)一個(gè)LED;若嫌不足,可以選用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ì)由鎖存器輸出。</p><p> 在這個(gè)電路之中驅(qū)動(dòng)的掃描信號(hào)總共有1
62、6條,如果直接由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)過限流電阻再接到PNP晶體管的基極,信號(hào)最后經(jīng)過晶體管的放大后即可推動(dòng)16個(gè)LED點(diǎn)陣了。</p><p><b> 第三章 軟件設(shè)計(jì)</b
63、></p><p> 3.1 單片機(jī)延時(shí)子程序</p><p> 延時(shí)程序在單片機(jī)編程中使用非常廣泛,也很重要,在本畢業(yè)設(shè)計(jì)的程序中用到了延時(shí)子程序,所以在此詳細(xì)的敘述一下。在弄清延時(shí)程序指令的用法之前,要清楚的了解延時(shí)程序的基本概念,機(jī)器周期和指令周期的區(qū)別和聯(lián)系、相關(guān)指令的用法等。 </p><p> 我們知道程序設(shè)計(jì)是單片機(jī)開發(fā)最重要的工作,而
64、程序在執(zhí)行過程中常常需要完成延時(shí)的功能。例如在本設(shè)計(jì)中,行向的掃描要控制每行的掃描時(shí)間,還有所有的字移動(dòng)有一定的時(shí)間間隔,而在所有的字移動(dòng)一遍結(jié)束的一瞬間到下一遍移動(dòng)開始的一瞬間要有延時(shí),這時(shí)的延時(shí)可以和移動(dòng)的時(shí)間相同以保持移動(dòng)的連貫性,也可以不同作為每次從頭開始的停頓,在上述就可以通過延時(shí)程序來完成。</p><p> 1. 機(jī)器周期和指令周期 </p><p> ?。?)機(jī)器周期是指
65、單片機(jī)完成一個(gè)基本操作所花費(fèi)的時(shí)間,一般使用微秒來計(jì)量單片機(jī)的運(yùn)行速度,51單片機(jī)的一個(gè)機(jī)器周期包括12 個(gè)時(shí)鐘振蕩周期,也就是說如果51 單片機(jī)采用12MHz 晶振,那么執(zhí)行一個(gè)機(jī)器周期就只需要1μs;如果采用的是6MHz 的晶振,那么執(zhí)行一個(gè)機(jī)器周期就需要2 μs。 </p><p> ?。?)指令周期是指單片機(jī)執(zhí)行一條指令所需要的時(shí)間,一般利用單片機(jī)的機(jī)器周期來計(jì)量指令周期。 </p><
66、;p> 在51 單片機(jī)里有單周期指令(執(zhí)行這條指令只需一個(gè)機(jī)器周期),雙周期指令(執(zhí)行這條指令只需要兩個(gè) 機(jī)器周期),四周期指令(執(zhí)行這條指令需要四個(gè)機(jī)器周期)。除了乘、除兩條指令是四周期指令,其余均 為單周期或雙周期指令。也就是說,如果51 單片機(jī)采用的是12MHz 晶振,那么它執(zhí)行一條指令一般只需 1~2 微秒的時(shí)間;如果采用的是6MHz 晶振,執(zhí)行一條指令一般就需2~4微秒的時(shí)間。</p><p>
67、 以12MHZ晶振為例,指令周期、機(jī)器周期與時(shí)鐘周期的關(guān)系是: </p><p> 指令周期:CPU執(zhí)行一條指令所需要的時(shí)間稱為指令周期,它是以機(jī)器周期為單位的,指令不同,所需的機(jī)器周期也不同。 </p><p> 時(shí)鐘周期:也稱為振蕩周期,一個(gè)時(shí)鐘周期=晶振的倒數(shù)。 </p><p> MCS-51單片機(jī)的一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。 &l
68、t;/p><p> MCS-51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期指令被執(zhí)行所占時(shí)間為12×(1/12000000)=1μs。 </p><p> 了解以上概念后,那么可以依據(jù)單片機(jī)器件手冊(cè)中89C51的指令執(zhí)行周期和其所用晶振頻率來完成需要精確延時(shí)時(shí)間的延時(shí)程序。 </p>
69、<p><b> 2. 延時(shí)指令 </b></p><p> 在單片機(jī)編程里面并沒有真正的延時(shí)指令,從上面的概念中我們知道單片機(jī)每執(zhí)行一條指令都需要一 定的時(shí)間,所以要達(dá)到延時(shí)的效果,只須讓單片機(jī)不斷地執(zhí)行沒有具體實(shí)際意義的指令,從而達(dá)到了延時(shí) 的效果。 </p><p> (1)數(shù)據(jù)傳送指令 MOV </p><p>
70、數(shù)據(jù)傳送指令功能是將數(shù)據(jù)從一個(gè)地方復(fù)制、拷貝到另一個(gè)地方。 </p><p> 如:MOV R7,#80H ;將數(shù)據(jù)80H 送到寄存器R7,這時(shí)寄存器R7 里面存放著80H,就單這條 指令而言并沒有任何實(shí)際意義,而執(zhí)行該指令則需要一個(gè)機(jī)器周期。 </p><p> ?。?)空操作指令 NOP </p><p> 空操作指令功能只是讓單片機(jī)
71、執(zhí)行沒有意義的操作,消耗一個(gè)機(jī)器周期。 </p><p> ?。?)循環(huán)轉(zhuǎn)移指令 DJNZ </p><p> 循環(huán)轉(zhuǎn)移指令功能是將第一個(gè)數(shù)進(jìn)行減1 并判斷是否為0,不為0 則轉(zhuǎn)移到指定地點(diǎn);為0 則往下執(zhí)行。 </p><p> 如:DJNZ R7,KK ;將寄存器R7 的內(nèi)容減1 并判斷寄存器R7 里的內(nèi)容減完1 后是否為0,如果 不為0 則轉(zhuǎn)移到地址標(biāo)號(hào)為
72、KK 的地方;如果為0 則執(zhí)行下一條指令。這條指令需要2個(gè)機(jī)器周期。 </p><p> 循環(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。</p><p> 利
73、用以上三條指令的組合就可以比較精確地編寫出所需要的延時(shí)程序。</p><p> 下面是本設(shè)計(jì)的程序中延時(shí)程序的計(jì)算:</p><p> MOV R3,#200; ① 1</p><p> D1: MOV R5,#250; ② 1</p><p> F1: DJNZ R5, F1; ③ 2*R
74、5</p><p> DJNZ R3,D1; ④ 2*R3+(1+2*R5)*R3</p><p><b> RET 2</b></p><p> 上面這個(gè)子程序共有四條指令,現(xiàn)在分別就每一條指令 被執(zhí)行的次數(shù)和所耗時(shí)間進(jìn)行分析。 </p><p> 第一句:MOV R3,#200 在整個(gè)子程序中只
75、被執(zhí)行一次,且為單周期指令,所以耗時(shí)1μs </p><p> 第二句:MOV R5,#250 從②看到④只要R3-1不為0,就會(huì)返回到這句,共執(zhí)行了R3次,共耗時(shí)200μs </p><p> 第三句: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*R5μs。</p>
76、<p> 所以精確延時(shí)時(shí)間為:1+(1×200)+(2×250×200)+(2×200)+2 </p><p> =(2*250+3)*200+3 </p><p> =100603μs </p><p><b> ≈100ms </b></p><p><
77、;b> =0.1s</b></p><p> 3.3 PROTEUS仿真</p><p> Proteus仿真時(shí),單片機(jī)需要加載程序,加載程序?yàn)?HEX文件。本設(shè)計(jì)利用Keil μVision2, 在新建Keil項(xiàng)目時(shí)選擇AT89C52單片機(jī)作為CPU,將源程序?qū)?,在“Options For Target”對(duì)話窗口中,選中“Output”選項(xiàng)中的“Create H
78、EX File”,編譯鏈接后就可以生成.HEX文件。在Proteus ISIS中,選中AT89C51并單擊鼠標(biāo)左鍵,對(duì)AT89C51進(jìn)行設(shè)置,設(shè)置單片機(jī)時(shí)鐘頻率為12MHz,按照正確的文件路徑加載.HEX文件。對(duì)單片機(jī)設(shè)置完畢后就可以開始仿真了。仿真過程中如有硬件問題可在Proteus ISIS中直接修改,如有軟件問題可在Keil μVision2中直接修改,通過Keil與Proteus的聯(lián)合調(diào)試就可以得到滿意的結(jié)果。利用Proteus
79、實(shí)現(xiàn)了對(duì)點(diǎn)陣式LED滾動(dòng)漢字顯示屏的仿真,說明程序和電路圖都沒有問題。</p><p><b> 3.4 調(diào)試 </b></p><p> 調(diào)試主要分為硬件調(diào)試和軟件調(diào)試: </p><p> 硬件調(diào)試:在焊接電路板的時(shí)候,應(yīng)該從最基本的最小系統(tǒng)開始,分模塊,逐個(gè)進(jìn)行焊接測(cè)試。在對(duì)各個(gè)硬件模塊進(jìn)行測(cè)試時(shí),要保證軟件正確的情況下去測(cè)試硬件,
80、要不然發(fā)生錯(cuò)誤時(shí),不知道到底是哪一方出錯(cuò)了。當(dāng)然,在設(shè)計(jì)的過程中也存在著失誤和不足,在調(diào)試中進(jìn)行修改了。 </p><p> 軟件調(diào)試:軟件部分是先參考書上的例子,然后自己根據(jù)硬件電路寫程序,由于以前所學(xué)是單片機(jī)匯編語言,所以這個(gè)系統(tǒng)在編寫程序過程中都采用匯編語言編寫。剛剛開始,編寫不會(huì)一次性通過,經(jīng)過仔細(xì)分析修改最后編譯成功。但是,在實(shí)際寫如S51中,LED顯示屏出現(xiàn)各種各樣的亂碼,通過再次認(rèn)真仔細(xì)分析多次修
81、改程序后,程序能夠正常運(yùn)行。 </p><p><b> 總 結(jié)</b></p><p> 本次畢業(yè)設(shè)計(jì)從十一月中旬到現(xiàn)在有一個(gè)多月,回顧著些天我感到學(xué)到了很多東西,在寫這個(gè)心得的時(shí)候,我想就這些天的收獲,說一說自己內(nèi)心的想法。</p><p> 本設(shè)計(jì)的是一個(gè)室內(nèi)用16x16的點(diǎn)陣LED圖文顯示屏,能夠在目測(cè)條件下LED顯示屏各點(diǎn)亮度均
82、勻、充足,可顯示圖形和文字,顯示圖形和文字應(yīng)穩(wěn)定、清晰無串?dāng)_。圖形或文字顯示有靜止、移入移出等顯示方式。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡(jiǎn)單,容易實(shí)現(xiàn),性能穩(wěn)定可靠,成本低等特點(diǎn)。</p><p> 總結(jié)本文的研究工作,主要做了下面幾點(diǎn)工作:</p><p> 一、通過查閱大量的相關(guān)資料,詳細(xì)了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現(xiàn)狀,清楚地了解了LED顯示屏與其它顯示屏相比
83、較有那些優(yōu)點(diǎn),明確了研究目標(biāo)。并且通過對(duì)單片機(jī)資料的查閱和應(yīng)用,更進(jìn)一步增加了對(duì)單片機(jī)知識(shí)的理解和運(yùn)用能力。并證實(shí)了自己的思路:“查資料→思考總結(jié)→運(yùn)用→找出差錯(cuò),再查資料和向別人詢問→再次運(yùn)用”的正確性。</p><p> 二,本文設(shè)計(jì)的LED顯示屏能夠?qū)崿F(xiàn)在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應(yīng)穩(wěn)定、清晰無串?dāng)_。圖形或文字顯示有靜止、移入移出等顯示方式。</p&g
84、t;<p> 三,本文列出了系統(tǒng)具體的硬件設(shè)計(jì)方案,硬件結(jié)構(gòu)電路圖,軟件流程圖和具體匯編語言程序設(shè)計(jì)與調(diào)試等方面。</p><p> 四,在這次畢業(yè)設(shè)計(jì)的過程中學(xué)會(huì)了 Protel 的基本使用,感到Protel對(duì)應(yīng)用電子專業(yè)的同學(xué)來說是一門很有用的課程。在運(yùn)用Protel時(shí)要格外小心,例如在畫PCB電路板的時(shí)候,要注意基本的布板原則。例如,在進(jìn)行PCB布板的時(shí)候,濾波電容不夠靠近芯片的電源腳和地
85、腳。</p><p> 五,通過這次畢業(yè)設(shè)計(jì),重新復(fù)習(xí)并進(jìn)一步增強(qiáng)了動(dòng)手的能力,學(xué)以致用,把只是運(yùn)用到實(shí)際生活中才是根本目的。</p><p> 六,存在問題:沒有考慮仿真軟件是一個(gè)理想的仿真環(huán)境,而實(shí)際連接的電路板會(huì)由于譬如連接不當(dāng),相鄰器件間的干擾等等的問題導(dǎo)致在仿真軟件中能良好運(yùn)行的程序,出現(xiàn)顯示問題,經(jīng)過排查和合理的器件擺放焊接,問題解決。</p><p&g
86、t; 總體來說這次的畢業(yè)設(shè)計(jì)很成功,達(dá)到了預(yù)想的目的:學(xué)到了知識(shí),提高了能力,完成了任務(wù)。有點(diǎn)缺憾是時(shí)間有限,不能進(jìn)一步深入和擴(kuò)散學(xué)習(xí)和研究。希望有時(shí)間可以對(duì)程序和電路圖作更進(jìn)一步的改進(jìn),譬如實(shí)現(xiàn)點(diǎn)陣的上下移動(dòng),對(duì)角線移動(dòng),三色顯示等。</p><p><b> 程序代碼</b></p><p> #include<reg52.h></p>
87、;<p> char code yd[]={</p><p> 0x00,0x00,0x00,0x00,0x0C,0x30,0xFC,0x3F,0x0C,0x30,0x1C,0x30,0x2C,0x3E,0x2C,0x32,</p><p> 0x4C,0x32,0x4C,0x32,0xFC,0x3F,0x40,0x02,0x40,0x02,0x40,0x02,0xFE
88、,0x7F,0x00,0x00,/*"西",0*/</p><p> 0x00,0x00,0x00,0x00,0x60,0x7E,0x66,0x42,0x7C,0x42,0x60,0x02,0x60,0x02,0x60,0x02,</p><p> 0x60,0x02,0x60,0x06,0x7E,0x1A,0x60,0x62,0x60,0x02,0x60,0x02
89、,0x60,0x02,0x60,0x02,/*"北",1*/</p><p> 0x00,0x00,0x00,0x00,0x0C,0x78,0x3C,0x4C,0x6C,0x06,0x0C,0x02,0x0C,0x01,0x0C,0x01,</p><p> 0xFC,0x3F,0x0C,0x01,0x8C,0x01,0xFC,0x1F,0x0C,0x10,0x0C
90、,0x10,0xFC,0x1F,0x00,0x00,/*"民",2*/</p><p> 0x00,0x00,0x80,0x00,0xD2,0x61,0x3E,0x33,0x24,0x1E,0x24,0x0C,0x2C,0x0C,0xAC,0x7F,</p><p> 0x28,0x0D,0x38,0x0D,0x08,0x3E,0x88,0x02,0xFE,0x01
91、,0x08,0x7F,0x18,0x03,0x08,0x02,/*"族",3*/</p><p> 0x00,0x00,0x00,0x00,0x06,0x60,0x1C,0x38,0x30,0x08,0x20,0x04,0x40,0x06,0xC0,0x03,</p><p> 0x80,0x01,0x80,0x01,0xFE,0x7F,0xFE,0x7F,0x80
92、,0x01,0x80,0x01,0x80,0x01,0x80,0x01,/*"大",4*/</p><p> 0x00,0x00,0xC0,0x00,0xE0,0x01,0x00,0x01,0x00,0x01,0xFE,0x7F,0x00,0x01,0x00,0x03,</p><p> 0x00,0x0C,0xF0,0x0F,0x06,0x60,0xFE,0x7F
93、,0xFE,0x7F,0x98,0x08,0x8C,0x19,0x80,0x10,/*"學(xué)",5*/</p><p> 0x00,0x00,0x00,0x00,0x80,0x7F,0x80,0x40,0x84,0x00,0xFC,0x1F,0xFC,0x1F,0x84,0x10,</p><p> 0x84,0x10,0xFC,0x1F,0x84,0x10,0x84
94、,0x10,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,/*"電",6*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x00,0x58,0x00,0x08,0x00,0x08,0x00,0x08,</p><p> 0xFC,0x0F,0x00,0x00,0x04,0x00
95、,0xF4,0x1F,0x0C,0x00,0xF8,0x3F,0x10,0x00,0x30,0x00,/*"氣",7*/</p><p> 0x00,0x00,0x00,0x00,0x42,0x7E,0xCE,0x10,0xB8,0x10,0x08,0x11,0x08,0x11,0x08,0x11,</p><p> 0x7E,0x7D,0x48,0x11,0x48
96、,0x11,0x48,0x11,0x08,0x11,0x3E,0x7D,0x00,0x03,0x00,0x01,/*"班",8*/</p><p><b> ",10*/</b></p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x78,0x1E,0x1C,0x38,0x0E,0x30
97、,0x0E,0x30,</p><p> 0x0E,0x30,0x0E,0x30,0x0E,0x30,0x1C,0x38,0x38,0x1C,0xF0,0x07,0x00,0x00,0x00,0x00,/*"0",0*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xC0,0x00,0x80,0x01,0x00
98、,0x07,0xF0,0x0F,</p><p> 0x3C,0x1F,0x0E,0x38,0x06,0x38,0x0E,0x38,0x1C,0x1C,0xF8,0x0F,0x00,0x00,0x00,0x00,/*"9",1*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x38,0x1E,0x0C,0x38
99、,0x00,0x30,0x00,0x38,</p><p> 0x80,0x0F,0x00,0x0F,0x00,0x18,0x0C,0x38,0x1C,0x38,0xF0,0x0F,0x00,0x00,0x00,0x00,/*"3",2*/</p><p> 0x00,0x00,0x80,0x00,0xC0,0x00,0xBE,0x7C,0x88,0x10,0x88
100、,0x12,0x88,0x12,0x88,0x12,</p><p> 0xBE,0x7E,0x88,0x10,0x88,0x10,0x88,0x10,0x08,0x1D,0x08,0x73,0x7E,0x42,0x00,0x00,/*"班",11*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x30,0x00,0x2
101、0,0xFE,0x2F,0x00,0x20,0x00,0x20,</p><p> 0xF0,0x3F,0x10,0x0C,0x10,0x0C,0x10,0x0C,0x30,0x08,0x00,0x08,0xFC,0x0F,0x00,0x00,/*"馬",9*/</p><p> 0x00,0x00,0x00,0x00,0x18,0x20,0xFC,0x3F,0x1
102、8,0x18,0x30,0x0C,0x20,0x04,0x40,0x00,</p><p> 0xC0,0x00,0xFE,0x7F,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,/*"云</p><p> 0x00,0x00,0x00,0x7C,0x46,0x42,0x42,0x42,0x7E,0x7
103、0,0x40,0x40,0x40,0x40,0x00,0x00,/*"P",16*/</p><p> 0x00,0x00,0x00,0x3C,0x64,0x42,0x42,0x42,0x42,0x42,0x42,0x46,0x2C,0x18,0x00,0x00,/*"0",17*/</p><p> 0x00,0x00,0x00,0x3C,0x
104、46,0xC2,0xC2,0xC6,0x6C,0x3C,0x08,0x18,0x10,0x30,0x00,0x00,/*"9",18*/</p><p> 0x00,0x00,0x00,0x08,0x18,0x78,0x58,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,/*"1",19*/</p><p&g
105、t; 0x00,0x00,0x00,0x3C,0x46,0x42,0x46,0x7C,0x7C,0x42,0xC2,0x42,0x66,0x3C,0x00,0x00,/*"8",20*/</p><p> 0x00,0x00,0x00,0x08,0x18,0x78,0x58,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,/*"1&quo
106、t;,21*/</p><p> 0x00,0x00,0x00,0x3C,0x66,0x42,0x06,0x04,0x0C,0x08,0x10,0x20,0x7E,0x7E,0x00,0x00,/*"2",22*/</p><p> 0x00,0x00,0x00,0x3C,0x46,0xC2,0xC2,0xC6,0x6C,0x3C,0x08,0x18,0x10,0x
107、30,0x00,0x00,/*"9",23*/</p><p> 0x00,0x00,0x00,0x3C,0x66,0x42,0x06,0x0C,0x0C,0x06,0x02,0x42,0x64,0x18,0x00,0x00,/*"3",24*/</p><p> 0x00,0x00,0x00,0x7E,0x02,0x06,0x04,0x0C,0
108、x08,0x18,0x10,0x10,0x30,0x30,0x00,0x00,/*"7",25*/</p><p> 0x00,0x00,0x00,0x20,0x00,0x30,0x00,0x18,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,</p><p> 0x00,0x04,0x00,0x04,0x00,0x04,0x00,
109、0x08,0x00,0x18,0x00,0x30,0x00,0x20,0x00,0x00,/*")",26*/</p><p><b> };</b></p><p> void delay(int x)</p><p><b> {</b></p><p><b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 16乘16點(diǎn)陣設(shè)計(jì)課程設(shè)計(jì)
- 16x16點(diǎn)陣微機(jī)課程設(shè)計(jì)
- 16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 16x32點(diǎn)陣課程設(shè)計(jì)
- 16乘16點(diǎn)陣顯示單片機(jī)課程設(shè)計(jì)
- 16×16點(diǎn)陣eda課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)---16乘16點(diǎn)陣顯示
- led16x16點(diǎn)陣課程設(shè)計(jì)--16×16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 單片機(jī)原理與應(yīng)用課程設(shè)計(jì)---16x16點(diǎn)陣顯示
- 16*16點(diǎn)陣畢業(yè)論文.doc
- 16*16點(diǎn)陣畢業(yè)論文.doc
- 16*16點(diǎn)陣畢業(yè)論文.doc
- 單片機(jī)課程設(shè)計(jì)--16x16點(diǎn)陣led電子顯示屏的設(shè)計(jì)
- 16×16點(diǎn)陣(滾動(dòng)顯示)
- 16x16led點(diǎn)陣課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)--1616點(diǎn)陣顯示
- eda課程設(shè)計(jì)-- 1616點(diǎn)陣顯示
- 單片機(jī)課程設(shè)計(jì)---16×16點(diǎn)陣式漢字顯示
- 合適硬件電路及對(duì)應(yīng)的軟件16×16點(diǎn)陣設(shè)計(jì)
- 基于stc89c52的16χ16點(diǎn)陣屏設(shè)計(jì)-畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論