




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章緒論1.1 設計課題背景知識單片微型計算機(single chip microcomputer)簡稱單片機,它是為各類專用控制器而設計的通用或專用微型計算機系統(tǒng),高密度集成了普通計算機微處理器,一定容量的RAM和ROM以及輸入/輸出接口,定時器等電路于一塊芯片上構成的。單片機自20世紀70年代問世以來,以極其高的性價比受到人們的重視和關注,所以應用很廣,發(fā)展很快。單片機的優(yōu)點是體積小、重量輕、抗干擾能力強,對環(huán)境要求不高,價格低廉,可靠性高,靈活性好,開發(fā)較為容易。在現代工業(yè)控制和一些智能化儀器儀表中,越來越多的場所需要用點陣圖形顯示器顯示漢字,漢字顯示屏也廣泛應用到汽車報站器,廣告屏等
2、。所以研究LED顯示有實用的意義。LED顯示屏分為圖文顯示屏和視頻顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、VCD節(jié)目以及現場實況。LED顯示屏顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應用于交通運輸、車站、商場、醫(yī)院、賓館、證券市場、工業(yè)企業(yè)管理等公共場所。LED顯示屏可以顯示變化的數字、文字、圖形圖像;不僅可以用于室內環(huán)境還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏無法比擬的優(yōu)點。LED之所以受到廣泛重視而
3、得到迅速發(fā)展,是與它本身所具有的優(yōu)點分不開的。這些優(yōu)點概括起來是:亮度高、工作電壓低、功耗小、小型化、壽命長、耐沖擊和性能穩(wěn)定。LED的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展?,F代LED的發(fā)展很快,很多研究領域非常已經深刻,實際情況是:很多相關的知識已經遠遠超出我們在校學生的能力范圍,所以在此只是簡單的研究一下用單片機驅動的LED顯示移動的漢字。目的有三:一是親手制作一個簡單實用的顯示文字的LED點陣;二是通過制作LED點陣增強對LED點陣的了解和應用,以及復習鞏固單片機知識;三是通過團隊合作,增強團隊合作的意識,為以后走向
4、社會工作打下基礎,并且增強了同學之間的友誼。漢字顯示方式是先根據所需要的漢字提取漢字點陣(如16×16 點陣),將點陣文件存入ROM,形成新的漢字編碼;而在使用時則需要先根據新的漢字編碼組成語句,再由MCU根據新編碼提取相應的點陣進行漢字顯示。不論顯示圖形還是文字,都是控制與組成這些圖形或文字的各個點所在位置相對應的LED器件發(fā)光。通常事先把需要顯示的圖形文字轉換成點陣圖形,在按照顯示控制的要求以一定的格式形成顯示數據。對于只控制通斷的圖文顯示屏來說,每個LED發(fā)光器件占據數據中的1位(1bit),在需要該LED器件發(fā)光的數據中相應的位填1,否則填0。當然,根據控制電路的安排,相反的
5、定義同樣時可行的。這樣依照所需顯示的圖形文字,按顯示屏的各行各列逐點填寫顯示數據,就可以構成一個顯示數據文件。顯示圖形的數據文件,其格式相對自由,只要能夠滿足顯示控制的要求即可。文字的點陣格式比較規(guī)范,可以采用現行計算機通用的字庫字模。組成一個字的點陣,其大小也可以有16×16、24×24、32×32、48×48等不同規(guī)格。用點陣方式構成圖形或文字,是非常靈活的,可以根據需要任意組合和變化,只要設計好合適的數據文件,就可以得到滿意的顯示效果。因而采用點陣式圖文顯示屏顯示經常需要變化的信息,是非常有效的。圖文顯示屏的顏色,有單色、雙色、和多色幾種。最常用的
6、是單色圖文屏。單色屏多使用紅色或橘紅色或橙色LED點陣單元。雙色圖文屏和多色圖文屏,在LED點陣的每一個“點”上布置有兩個或多個不同顏色的LED發(fā)光器件。換句話說,對應于每種顏色都有自己的顯示矩陣。顯示的時候,各顏色的顯示點陣是分開控制的。事先設計好各種顏色的顯示數據,顯示時分別送到各自的顯示點陣,即可實現預期效果。每一種顏色的控制方法和單色的完全相同,因此掌握了單色圖文顯示屏的原理,雙色屏和多色屏就不難理解了。為了吸引觀眾增強顯示效果,可以有多種顯示模式。最簡單的顯示模式是靜態(tài)顯示。與靜態(tài)顯示模式相對應,就有各種動態(tài)顯示模式,它們所顯示的圖文都是能夠動的。按照圖文運動的特點又可以分為閃爍、平
7、移、旋轉、縮放等多種顯示模式。產生不同顯示模式的方法,并不意味著一定要重新編寫顯示數據,可以通過一定的算法從原來的顯示數據直接生成。例如,按順序調整行號,可以使顯示圖文產生上下平移;而順序調整列顯示數據的位置,就可以達到左右平移的目的;刷新的時間控制,要考慮運動圖形文字的顯示效果。刷新太慢,動感不顯著;刷新太快了,中間過程看不清。一般刷新周期可控制在幾十毫秒范圍之內。本次畢業(yè)設計中,由本人和鐘桂,張維平組成一組,我負責硬件部分電路圖的設計和軟件部分程序的設計和調試,目的是應用簡單方便的電路連接和程序完成漢字的換色與移動。鐘桂負責用設計好的點陣電路制作PCB電路板,包括完成PCB板的制作,張維平
8、負責制作另外一塊在面包板上連的點陣線連板子的焊接與調試,各人的分工不同只是工作側重點的不同,大家是在一起互相學習互相幫助,共同完成設計任務。第二章硬件設計設計框圖及介紹LED點陣總體框圖如圖所示,點陣電路大體上可以分成微機本身的硬件、顯示驅動電路、控制信號電路三部分??刂齐娐凡糠职ㄒ粋€51CUP和一些外圍電路。在整個電路當中此控制電路部分相當于一個上位機,它負責控制整個電路以及相應的程序的運行、與PC機的串行通訊、以及給屏體電路部分發(fā)送命令。點陣顯示屏體、以及它的行和列的各個驅動電路。由于兩部分的電路在制板時可以放到一起,所以可以將其字庫放到控制電路部分使用串行通訊方式來與屏體電路部分進行數
9、據和命令的傳送。此顯示電路采用掃描方式進行顯示時,每行有一個行驅動器,各行的同名列共用一個列驅動器。由行譯碼器給出的行選通信號,從第一行開始,按順序依次對各行進行掃描(把該行與電源的一端接通)。另一方而,根據各列鎖存的數據,確定相應的列驅動器是否將該列與電源的另一端接通。接通的列,就在該行該列點燃相應的LED;未接通的列所對應的LED熄滅??赏ㄟ^掃描輸出口的控制實現顏色的轉換。圖2.1點陣顯示的總體框圖2.251系列單片機簡介單片機(Microcontroller,又稱微處理器)是在一塊硅片上集成了各種部件的微型機,這些部件包括中央處理器CPU、數據存儲器RAM、程序存儲器ROM、定時器/計數
10、器和多種I/O接口電路。8051單片機的基本結構見圖2.2。圖2.2 8051單片機的基本結構8051MCS-51系列單片機的一個產品。MCS-51系列單片機是Intel公司推出的通用型單片機,8051單片機系列指的是MCS-51系列和其他公司的8051衍生產品。這些衍生品是在基本型基礎上增強了各種功能的產品。這些產品給8位單片機注入了新的活力,給它的開發(fā)應用開拓了更廣泛的前景。8051系列的內部結構可以劃分為CPU、存儲器、并行口、串行口、定時器/計數器、中斷邏輯幾部分。(1)中央處理器8051的中央處理器由運算器和控制邏輯構成,其中包括若干特殊功能寄存器(SFR)。算術邏輯單元ALU能對數
11、據進行加、減、乘、除等算術運算;“與”、“或”、“異或”等邏輯運算以及位操作運算。ALU只能進行運算,運算的操作數可以事先存放到累加器ACC或寄存器TMP中,運算結果可以送回ACC或通用寄存器或存儲單元中,累加器ACC也可以寫為A。B寄存器在乘法指令中用來存放一個乘數,在除法指令中用來存放除數,運算后B中為部分運算結果。程序狀態(tài)字PSW是個8位寄存器,用來寄存本次運算的特征信息,用到其中七位。PSW的格式如下所示,其各位的含義是:CY:進位標志。有進位/錯位時CY=1,否則CY=0。AC:半進位標志。當D3位向D4位產生進位/錯位時,AC=1,否則AC=0,常用于十進制調整運算中。F0:用戶可
12、設定的標志位,可置位/復位,也可供測試。RS1、RS0:四個通用寄存器組選擇位,該兩位的四種組合狀態(tài)用來選擇03寄存器組。OV:溢出標志。當帶符號數運算結果超出-128+127范圍時OV=1,否則OV=0。當無符號數乘法結果超過255時,或當無符號數除法的除數為0時OV=1,否則OV=0。P:奇偶校驗標志。每條指令執(zhí)行完,若A中1的個數為奇數時P=1,否則P=0,即偶校驗方式。控制邏輯主要包括定時和控制邏輯、指令寄存器、譯碼器以及地址指針DPTR和程序寄存器PC等。單片機是程序控制式計算機,即它的運行過程是在程序控制下逐條執(zhí)行程序指令的過程:從程序存儲器中取出指令送指令存儲器IR,然后指令譯碼
13、器ID進行譯碼,譯碼產生一系列符合定時要求的微操作信號,用以控制單片機的各部分動作。8051的控制器在單片機內部協(xié)調各功能部件之間的數據傳送、數據運算等操作,并對單片機發(fā)出若干控制信息。這些控制信息的使用專門的控制線,諸如PSEN、ALE、EA以及RST,也有一些是和P3口的某些端子合用,如WR和RD就是和,他們的具體功能在介紹8051引腳是一起敘述。(2)存儲器組織8051單片機的存儲器結構特點之一是將程序存儲器和數據存儲器分開,并有各自的尋址機構和尋址方式,這種結構稱為哈佛結構單片機。這種結構與通用微機的存儲器結構不同,一般微機只有一個存儲器邏輯空間,可隨意安排ROM或RAM,訪存時用同一
14、種指令,這種結構稱為普林斯頓型。8051單片機在物理上有四個存儲空間:片內程序存儲器和片外程序存儲器、片內數據存儲器和片外數據存儲器。8051片內有256K數據存儲器RAM和4KB的程序存儲器ROM。除此之外,還可以在片外擴展RAM和ROM,并且各有64KB的尋址范圍。也就是最多可以在外部擴展2*64KB存儲器。8051的存儲器組織結構如圖2.3所示。圖 2-3 8051存儲器組織結構64K字節(jié)的程序存儲器(ROM)空間中,有4K字節(jié)地址區(qū)對于片內ROM和片外ROM是公用的,這4K字節(jié)地址是0000HFFFH。而1000HFFFFH地址區(qū)為外部ROM專用。CPU的控制器專門提供一個控制信號EA
15、用來區(qū)分內部ROM和外部ROM的公用地址區(qū):當EA接高電平時,單片機從片內ROM的4K字節(jié)存儲器區(qū)取指令,而當指令地址超過0FFFH后,就自動的轉向片外ROM取指令。當EA接低電平時,CPU只從片外ROM取指令。程序存儲器的某些單元是保留給系統(tǒng)使用的:0000H0002H單元是所有執(zhí)行程序的入口地址,復位以后,CPU總是叢0000H單元開始執(zhí)行程序。0003H002AH單元均勻地分為五段,用做五個中斷服務程序的入口。用戶程序不應進入上述區(qū)域。8051的RAM雖然字節(jié)數不很多,但卻起著十分重要的作用。256個字節(jié)被分為兩個區(qū)域:00H7FH時真正的RAM區(qū),可以讀寫各種數據。而80HFFH是專門
16、用于特殊功能寄存器(SFR)的區(qū)域。對于8051安排了21個特殊功能寄存器,每個寄存器為8位,所以實際上128個字節(jié)并沒有全部利用。內部RAM的各個單元,都可以通過直接地址來尋找,對于工作寄存器,則一般都直接用R0R7,對特殊功能寄存器,也是直接使用其名字較為方便。8051內部特殊功能寄存器都是可以位尋址的,并可用“寄存器名.位”來表示,如,等。2.3單片機最小應用系統(tǒng)電路設計圖2.4單片機最小應用系統(tǒng)原理圖注: 該最小系統(tǒng)由按鍵復位RESET電路、晶體振蕩電路以及I/O接口電路組成。復位的實現通常用2種方式: 開機上電復位和外部手動復位,本設計用的是外部手動復位。:圖2.5單片機復位圖AT8
17、9C51工作電壓VCC=5V,其EA引腳需接高電平,5V電源電路如圖2.6所示。圖2.6單片機電源原理圖注: 該電源電路主要模塊為IC7805,它能輸出穩(wěn)定的 5V電源,圖中整流橋是將市電轉變?yōu)橹绷麟?電容起到慮波作用由7805的OUT引腳輸出5V電壓。2.4LED點陣介紹8×8單色點陣共需要64個發(fā)光二極管組成,且每個二極管是放置在行線與列線的叉點上。本設計是一種實用的漢字顯示屏的制作,制作的是雙色點陣。考慮到元器件的易購性,沒有使用8×8的點陣發(fā)光二極管模塊,而是直接使用了256個高亮度發(fā)光管,組成了16行16列的發(fā)光點陣。實際使用時可以根據這個原理自行擴充顯示的字數。
18、對比下面的8×8單色點陣和8×8雙色點陣可以看出,其實8×8雙色點陣就是兩塊8×8單色點陣組合在一起的。要實現用兩種顏色顯示,只要在電路的設計中適當的連線就可以了。8×8單色和雙色點陣LED結構分別如圖2.78×8點陣外觀及引腳圖圖2.8 8×8單色點陣內部圖圖2.9 8×8雙色點陣內部圖2.5LED顯示方式漢字顯示屏用于顯示漢字、字符及圖像信息,在公共汽車、銀行、醫(yī)院及戶外廣告等地方都有廣泛的應用。下面是簡單的漢字顯示屏的制作,由單片機控制漢字的顯示內容。為了降低成本,使用了四塊8×8的LED點陣發(fā)光管
19、的模塊,組成了一個16×16的LED點陣顯示屏,如圖2.10所示。在這里僅做了四個漢字的顯示,在實際的使用中可以根據這個原理自行的擴展顯示的漢字,下面是介紹漢字顯示的原理。四塊8×8的LED點陣組成16×16的LED點陣LED驅動顯示采用動態(tài)掃描方法,動態(tài)掃描方式是逐行輪流點亮,這樣掃描驅動電路就可以實現多行的同名列共用一套列驅動器。以16×16點陣為例,把所有同一行的發(fā)光管的陽極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽的接法),先送出對應第1行發(fā)光管亮滅的數據并鎖存,然后選通第1行使其燃亮一定的時間,然后熄滅;再送出第2行的數據并鎖存,然后選
20、通第2行使其燃亮相同的時間,然后熄滅;.第16行之后,又重新燃亮第1行,反復輪回。當這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現象,就能看到顯示屏上穩(wěn)定的圖形。該方法能驅動較多的LED,控制方式較靈活,而且節(jié)省單片機的資源。顯示數據傳輸采用串行傳輸的方法,控制電路可以只用一根信號線,將列數據一位一位傳往列驅動器,在硬件方面無疑是十分經濟的。但串行傳輸過程較長,數據按順序一位一位地輸出給列驅動器,只有當一行的各列數據都已傳輸到位之后,這一行的各列才能并行地進行顯示。對于串行傳輸方式來說,列數據準備時間可能相當長,在行掃描周期確定的情況下,留給行顯示的時間就太少了,以致影響到LED
21、的亮度。采用串行傳輸中列數據準備和列數據顯示的時間矛盾,可以采用重疊處理的方法。即在顯示本行各列數據的同時,傳送下一行的列數據。為了達到重疊處理的目的,列數據的顯示就需要有鎖存功能。對于列數據準備來說,它應能實現串入并出的移位功能。這樣,本行已準備好的數據打入并行鎖存器進行顯示時,串行移位寄存器就可以準備下一行的列數據,而不會影響本行的顯示。LED點陣顯示模塊進行的方法有兩種:(1)水平方向(X方向)掃描,即逐列掃描的方式(簡稱列掃描方式):此時用一個P口輸出列碼決定哪一列能亮(相當于位碼),用另一個P口輸出行碼(列數據),決定該行上那哪個LED亮(相當于段碼)。能亮的列從左到右掃描完16列(
22、相當于位碼循環(huán)移動16次)即顯示出一個完整的圖像。(2)豎直方向(Y方向)掃描,即逐行掃描方式(簡稱行掃描方式):此時用一個P口輸出決定哪一行能亮(相當于位碼),另一個P口輸出列碼(行數據,行數據為將列數據的點陣旋轉90度的數據)決定該行上哪些LED燈亮(相當于段碼)。能亮的行從上向下掃描完16行(相當于位碼循環(huán)移位16次)即顯示一幀完整的圖像。本設計應用的是第一種的掃描方法,即水平方向(X方向)掃描。每一個字由16行16列的點陣形成顯示,即每個字均由256個點陣來表示,我們可以把每一個點理解為一個像素。一般我們使用的16×16的點陣宋體字庫,即所謂的16×16,是每一個漢
23、字在縱橫各16點的區(qū)域內顯示的。漢字庫從該位置起的32字節(jié)信息記錄了該字的字模信息。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內的任何圖形。我們以水平方向(x方向)掃描顯示漢字的“江”為例來說明其掃描原理,每一個字由16行16列的點陣組成顯示,如圖下的,如果用8位的AT89S51的單片機來控制,由于單片機的總線為8位,一個字需要拆分成兩個部分。一般我們把它分解成上部分和下部分,上部分由8*16的點陣組成,下部分也由8*16的點陣組成。在本例中單片機首先顯示的是左上角的第一列的部分,即第0列的P00P07口。方向為P00到P07,顯示漢字“江”的時候,P00到P04都是滅的,P
24、05亮,即二進制00001000,轉換為16進制為08H,上半部分第一列完成之后,繼續(xù)掃描下半部分的第一列,為了接線的方便,我們仍設計成由上往下的掃描方式,即從P27向P20方向掃描,從上圖可以看到,這一列所有的都不亮,所以代碼為00000000,16進制為00H,然后單片機轉向上半部的第二列,除了P05亮,其他的都不亮,即為00000100,16進制為04H,這一列掃描完成之后繼續(xù)進行下半部分的掃描,除了P21亮,其他的為不亮,為二進制00100000,即16進制20H。按照這個方法,繼續(xù)進行下面的掃描,一共掃描32個8位,可以得出漢字“江”的掃描代碼為:08H,20H,06H,20H,80
25、H,7EH,63H,80H0CH,04H,00H,04H,20H,04H,20H,04H20H,04H,3FH,FCH,20H,04H,20H,04H20H,04H,20H,04H,00H,04H,00H,00H圖1點陣顯示原理圖由這個原理可以看到,無論顯示何種字體或圖像,都可以用這種方法來分析出它的掃描代碼從而顯示在屏幕上。了解漢字的顯示原理之后,那如何得到漢字的字模信息呢?現在有一些現成的漢字字模生成軟件,可從網上下載漢字字庫提取程序直接提取字庫,如的為一種字模生成軟件,軟件打開后輸入漢字,點擊“檢取”后,十六進制數據漢字代碼即可以自動生成,把我們需要的豎排數據復制到我們的程序即可。圖2漢
26、字字模生成軟件2.6點陣的移動以下以16×16點陣為例介紹點陣的移動。要顯示一個字符,該字符的點陣數據可以列向(縱向)16點組字,又可以行向(橫向)16點組字。無論哪一種組字方法,都既可以顯示字符的水平方向的移動,又可以顯示豎直方向的移動。掃描方式左移動:列向組字顯示字符水平方向的移動(左滾動)在這里有兩個方法:方法1:延長數組法。將原來字符點陣數組的16個數據重復一遍延長,點陣數組的數據個數為32個。每掃描儀幀取8個數據顯示,下一幀取數要在數組中后移一個數取數。循環(huán)一遍掃16幀??梢约傧胗袃蓧K16×16的點陣模塊(共32幀)水平平行排列,用一個恰好能罩住8列點陣的中空方框
27、去罩這個點陣,第1(第1幀)罩住最左邊數起第一列開始的16列,就掃描顯示這16列;第2次(第2幀)使方框右移一列,罩住做左邊數起第2列開始的16列,就掃描顯示這16列;······;這樣每掃描完一幀使方框右移一列,最后第16次(第16幀)時,罩住左邊數起的第16列開始的16列,就掃描顯示這16列。如此完成16幀畫面的掃描顯示,也就完成了整個一次移動循環(huán)掃描、之后反復循環(huán),即可呈現顯示字符沿水平向左移動的圖像,如3所示。圖3方框圖法左右移動示意圖因為是列向組字(列掃描方式,點陣數據為行碼,上邊為地位下面為高位),希望顯示移動的一個字符,
28、第1次掃描從行碼的點陣數組中取第116個數據,送行碼輸出口,對應于這8個數據,同時用列碼輸出口輸出列碼,分別控制第116列。掃描完前16個數據之后,第2次掃描從點陣數組中取第214個數據(第17個數據與地1個數據同),送行碼輸出口,對應于這16個數據,同時用列碼輸出口輸出列碼,仍分別控制掃地116列。第3次掃描從點陣數組中取第318個數據(第18個數據碼與地2個數據碼相同)掃描······;如此實現字符向左移動。以上完成一個圖形移動的方法,也可以看成是移動16個不同的字形。如圖所示,首先掃描第一個字型,同樣是16行,16次掃描,16次
29、顯示;完成一個字型的掃描以后,再掃描第二個字型;完成第二個字型的掃描之后,再掃描第三個字型······此類推,即可產生該文圖3字形法左右移動示意圖假設如果原本某個漢字的字型(第一個字型),其編碼為: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行顯示數據,變
30、為第2行顯示數據;第2行顯示數據,變成第3行顯示數據;第3行顯示數據,變成第4行顯示數據;第4行顯示數據,變成第5行顯示數據······以此類推。當第一個字型掃描顯示完成之后,就進行這樣的動作調整,以產生第二個字型的編碼。同樣的,當第二個字型掃描完成之后,就進行這樣的調整動作,以產生第三個字型的編碼。這個調整動作時先將16個編碼根據序填入存儲器,例如第1行編碼存入20H,第二行編碼存入21H······要進行左移調整時,則先將20H地址的數據轉移到36H地址,再將21 H地址
31、的數據轉移到20 H地址,將22 H地址的數據轉移到21 H地址,將23 H地址的數據轉移到22 H地址,將24 H地址的數據轉移到23 H地址,將25 H地址的數據轉移到24 H地址,將26 H地址的數據轉移到25 H地址,將27 H地址的數據轉移到26 H地址,將28 H地址的數據轉移到27H地址······方法2:數組數據“循環(huán)左移法”(適合用C語言編寫,在此僅作了解)。注意,不是把二進制數據按位循環(huán)左移,而是把數組中的數據按其在數組中的位置循環(huán)左移。具體的方法入下。原字符點陣數組中的16個數據不延長,但下一幀取的16個數據,是
32、把上一幀的16個數據的位置(先后順序)“循環(huán)左移”一次,即原來第2個移到第1個,原來第3個移到第2個······原來第1個移到第16個。實現數組數據循環(huán)左移的方法有:第一,遍一個“數組數據循環(huán)左移子程序”,該子程序每執(zhí)行一次可把數組中的額數據循環(huán)左移一次,主程序中先調用一次該子程序,時數組中的數據循環(huán)左移這一次,然后再從數組中取數據顯示。當數組中的額數據個數較多時,片內RAM將不夠大,必須將數組定義在片外RAM中。第二,不用子程序,而是用變量判斷控制實現數組數據的循環(huán)左移。(2) 行掃描方式左移:行向組字顯示字符水平方向的左移。如果是
33、行向組字(行掃描方式,點陣數據為列碼,左邊為敵位右邊為高位),希望顯示向左移動的一個字符,第1次掃描從列碼的點陣數組中取第116個數據,送到列碼輸出口,對應的8個數據,同時用行碼輸出口輸出行碼,分別控制掃描第116行。掃描完成這16個數據之后,第2次掃描的第16個數據,應將原來第1次掃描的16列碼每一個都循環(huán)右移一位(如果是顯示右移則應循環(huán)左移),再進行掃描。如此,每進行下一次掃描,把上一次掃描的16個列碼都循環(huán)右移一位,再進行掃描。數據的右移與數據的左移相似,只是取碼的順序相反而已,在此就不再贅述。2數據的上下移動(1)列掃描方式向上移動列向組字顯示字符豎直方向的移動。若是列向組字,希望顯示
34、向上移動一個字符,第1次掃描從行碼的點陣數組中取第116個數據,送行碼輸出口,對應于這16個數據,同時用列碼輸出口輸出列碼,分別控制掃描第116列。由于是列向組字(上高下低),掃描完成這16個數據后,第2次掃描的16個數據,應將原來的第1次掃描的16個行碼每一個都循環(huán)右移一位,使顯示的點都上移一行(如果是顯示向下滾動則應循環(huán)左移),再進行掃描。如此,每進行下一次的掃描,把上一次的16個行碼都循環(huán)右移一位,再進行掃描就實現了數據的向上移動。也可以用字型的方法容易理解,以下的16×16的LED顯示一個字是8個字型,首先掃描的而是第一個字型,同樣是16行,16列掃描,16次顯示;完成一個字
35、型后,再掃描第二個字型;完成第二個字型后,再掃描第三個字型······以此類推,即可產生該文字向上移動的感覺當把第一個字型編碼中,每行顯示的數據都右移一位,以產生第二個字型編碼,即可產生字符向上滾動的感覺。當第一個字符掃描完成后,就進行這樣的調整動作,以產生第二個字型的編碼。同樣的,當第二個字型完成之后,就進行這樣的調整動作,以產生第三個字型的編碼。調整的動作是先將8個編碼根據序填入儲存器,例如第1行編碼存入20地址,第2行編碼存入21地址······要進行上移調整時,則從2
36、0地址數據開始,每筆數據都右移一位即可。下圖5僅以字型移動的方法畫圖。圖5字形法上下移動示意圖(2)行掃描方式上下移動行向組字顯示字符豎直方向的移動方法1:延長數組法。如果是行向組字,希望顯示向上移動的一個字符,第1次掃描從列碼的點陣數組中取第116個數據,送列碼輸出口,對應于這8個數據,同時用行碼輸出口輸出行碼,分別控制掃描第116行。第2次掃描從點陣數組中取第217個額數據(第17個數據與地1個數據同),分別送列碼輸出口,對應于這16個數據,同時用行碼輸出口輸出行碼,仍分別控制地116行。第3次掃描從點陣數組中取第318個數據(第18個數據與地2個數據同)掃描;··
37、183;···如此就實現了字符的向上移動。方法2:數組數據“循環(huán)左移法”。實現數組數據循環(huán)左移的方法與上類似。也有:用數組數據循環(huán)左移子程序;不用子程序,而是用變量判斷控制實現數組數據的循環(huán)左移。2.7點陣顏色的轉換圖2.16雙色8×8點陣掃描接口圖為了簡便起見,以下以8×8雙色點陣為例介紹雙色的轉換原理。前面已經介紹過了,8×8雙色點陣其實就相當于2個8×8單色點陣組合在一起,上圖6的2個8×8單色點陣就相當于一個8×8的單色點陣。在設計電路的時候可以使顯示信號從公用的引腳接入,接到89C51的一個PO
38、RT口,把顯示紅色的部分和顯示黃色的部分分別接到89C51的另外兩個PORET口,在編寫程序的時候,使顯示紅色的掃描信號輸出就顯示了紅色,當顯示黃色的掃描掃描信號輸出時,就顯示了黃色。2.8LED陣列驅動電路正向點亮一顆LED,至少也得10到20毫安,若電流不夠大,則LED不夠亮!而不管是8051的輸入還是輸出端其高態(tài)輸出電流都不是很高,不過12毫安而已。因此,很難直接高態(tài)驅動LED。這時候就需要額外的驅動電路,分別針對共陽極和共陰極LED陣列,有兩種不同的驅動方式。針對輸出態(tài)的不同,分為:高態(tài)掃描-高態(tài)顯示,高態(tài)掃描-低態(tài)顯示,低態(tài)掃描-高態(tài)顯示和低態(tài)掃描-低態(tài)顯示四種方式。下面針對設計中實
39、際用到的一種驅動方式介紹一種:共陰型低態(tài)掃描-低態(tài)顯示信號驅動電路。所示是針對共陰性LED陣列而設計的驅動電路,在這種驅動電路采用低態(tài)掃描,也就是任何時間只有一個高態(tài)信號,其他則為低態(tài)。一行掃描完成之后,再把高態(tài)信號轉到臨近的其他行。掃描信號經限流電阻接到PNP晶體管的基極,晶體管的集電極接地,射極則連至LED點陣的列引腳,若要同時點亮該列的16個LED,則晶體管的電流必須大于200毫安才行。常用的2N3904之類就可以達到當低態(tài)的列掃描信號輸入晶體管的基極后,該晶體管即為正向,而產生電流,即可使該列的LED具有點亮的條件所要的顯示信號連接到一個PNP晶體管的基極,而該晶體管的射極連接到VCC
40、,同樣的,當低態(tài)的顯示信號輸入時,晶體管的集電極電流將流入行LED的陽極,即可點亮該行的LED。7所示.16×16的點陣,這樣就可以顯示完整的漢字了,若要并聯(lián)多個16×16的點陣,則一個掃描信號同時要驅動兩行的LED。如示。16×16的點陣驅動圖第三章軟件設計3.1 單片機延時子程序延時程序在單片機編程中使用非常廣泛,也很重要,在本畢業(yè)設計的程序中用到了延時子程序,所以在此詳細的敘述一下。在弄清延時程序指令的用法之前,要清楚的了解延時程序的基本概念,機器周期和指令周期的區(qū)別和聯(lián)系、相關指令的用法等。 我們知道程序設計是單片機開發(fā)最重要的工作
41、,而程序在執(zhí)行過程中常常需要完成延時的功能。例如在本設計中,行向的掃描要控制每行的掃描時間,還有所有的字移動有一定的時間間隔,而在所有的字移動一遍結束的一瞬間到下一遍移動開始的一瞬間要有延時,這時的延時可以和移動的時間相同以保持移動的連貫性,也可以不同作為每次從頭開始的停頓,在上述就可以通過延時程序來完成。1.機器周期和指令周期(1)機器周期是指單片機完成一個基本操作所花費的時間,一般使用微秒來計量單片機的運行速度,51單片機的一個機器周期包括12 個時鐘振蕩周期,也就是說如果51 單片機采用12MHz 晶振,那么執(zhí)行一個機器周期就只需要1s;如果采用的是6MHz 的晶振,那么執(zhí)行一個機器周期
42、就需要2 s。(2)指令周期是指單片機執(zhí)行一條指令所需要的時間,一般利用單片機的機器周期來計量指令周期。在51 單片機里有單周期指令(執(zhí)行這條指令只需一個機器周期),雙周期指令(執(zhí)行這條指令只需要兩個機器周期),四周期指令(執(zhí)行這條指令需要四個機器周期)。除了乘、除兩條指令是四周期指令,其余均為單周期或雙周期指令。也就是說,如果51 單片機采用的是12MHz 晶振,那么它執(zhí)行一條指令一般只需 12 微秒的時間;如果采用的是6MHz晶振,執(zhí)行一條指令一般就需24微秒的時間。以12MHZ晶振為例,指令周期、機器周期與時鐘周期的關系是:指令周期:CPU執(zhí)行一條指令所需要的時間稱為指令周期,它是以機器
43、周期為單位的,指令不同,所需的機器周期也不同。時鐘周期:也稱為振蕩周期,一個時鐘周期晶振的倒數。MCS-51單片機的一個機器周期=6個狀態(tài)周期=12個時鐘周期。MCS-51單片機的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個單周期指令包含一個機器周期,即12個時鐘周期,所以一條單周期指令被執(zhí)行所占時間為12×(1/12000000)=1s。2.延時指令在單片機編程里面并沒有真正的延時指令,從上面的概念中我們知道單片機每執(zhí)行一條指令都需要一定的時間,所以要達到延時的效果,只須讓單片機不斷地執(zhí)行沒有具體實際意義的指令,從而達到了延時的效果。(1)數據傳送指令 MOV 數據
44、傳送指令功能是將數據從一個地方復制、拷貝到另一個地方。如:MOV R7,#80H ;將數據80H 送到寄存器R7,這時寄存器R7 里面存放著80H,就單這條指令而言并沒有任何實際意義,而執(zhí)行該指令則需要一個機器周期。(2)空操作指令 NOP 空操作指令功能只是讓單片機執(zhí)行沒有意義的操作,消耗一個機器周期。(3)循環(huán)轉移指令 DJNZ 循環(huán)轉移指令功能是將第一個數進行減1 并判斷是否為0,不為0 則轉移到指定地點;為0 則往下執(zhí)行。如:DJNZ R7,KK ;將寄存器R7 的內容減1 并判斷寄存器R7 里的內容減完1 后是否為0,如果不為0 則轉移到地址標號為KK 的地方
45、;如果為0 則執(zhí)行下一條指令。這條指令需要2個機器周期。循環(huán)轉移指令(DJNZ )除了可以給定地址標號讓其跳轉外,還可以將地址標號改成$,這樣程序就跳回本指令執(zhí)行。例如: DJNZ R7,$ ;R7 內容減1 不為0,則再次執(zhí)行本指令;為0 則往下執(zhí)行,當R7 的值改為10 時,則執(zhí)行完該條程序所需的時間為2*10=20 s。利用以上三條指令的組合就可以比較精確地編寫出所需要的延時程序。下面是本設計的程序中延時程序的計算:MOV R3,#200; 1D1: MOV R5,#250; 1F1: DJNZ R5,F1; 2*R5DJNZR3,D1; 2*R3+(1+2*R5)*R3RET 2上面這
46、個子程序共有四條指令,現在分別就每一條指令被執(zhí)行的次數和所耗時間進行分析。第一句:MOV R3,#200 在整個子程序中只被執(zhí)行一次,且為單周期指令,所以耗時1s 第二句:MOV R5,#250從看到只要R3-1不為0,就會返回到這句,共執(zhí)行了R3次,共耗時200s 第三句:DJNZ R5,F1只要R5-1不為0,就反復執(zhí)行此句(內循環(huán)R5次),又受外循環(huán)R3控制,所以共執(zhí)行R3*R5次,因是雙周期指令,所以耗時2*R3*R5s。所以精確延時時間為:1+(1×200)+(2×250×200)+(2×200)+2 =(2*250+3)*200+3 =100
47、603s 100ms 3.2點陣左移顯示的流程圖及分析流程圖(圖3.1)和程序的簡要說明:在程序的開始設定初始的地址是0H,并定義了”開始的,M3的開始10行程序是點陣顏色的選擇,即確定列掃描出口的選擇,因為F的初值是0,所以先從掃描信號先從P1口輸出,即首先顯示的是紅色的點陣。掃描信號輸出后,取碼指針先去的第一個碼送到點陣的上半部分,打開上部分點陣的74LS373鎖存器關閉下面部分74LS373鎖存器,把信號送到點陣的上部分。再指針加1,關閉上部分點陣的74LS373鎖存器,打開下面部分74LS373鎖存器,取相鄰的碼送到點陣的下半部分,緊挨著的延時程序是設定每列掃描的時間:MOV R3,#
48、50; DJNZ R3,$;延時時間為:1+(2*50)=101us下面的“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。當字型向左移動一位的時候,取碼指針應在先加2再進行下一個字型的取碼,因為本設計每1列的碼為2個。最后的部分代碼:XRL A,#128; JNZ M1; CPL F0; JMP START;的意思是:在控制字型移動完以后,返回到頭重新開始移動,因為在本設計是顯示4個字型,4個
49、字型的碼為128個,取碼指針的初始為0,每次加2,到128時循環(huán)結束,改變F的狀態(tài),跳到程序的最上面開始部分,開始黃色字型的移動顯示。說明一下:本設計是以顯示4個字的循環(huán)為例的,正如前面所說,字型可以任意加進去,顯示任意多的字左移的顯示,還可以顯示一些符號和圖形。只要有字型的代碼,再稍微改一下程序就可以顯示了。RETN取下一個碼P清0,置1輸出至P2口顯示輸出至P2口顯示到TABLE取上半部數據取碼指針載入AM4清零置1輸出至掃描P0. 1清零P0. 2置1輸出至掃描F=0?YN掃描指針AM3每屏4字,取碼指針存R0N設置每屏停留時間F0取反YM2M1START:YNYF=0指針加2并回存每屏
50、停留的時間到?取碼指針載入A清除154掃描指針為00顯示1屏?掃描下一行清除屏幕取碼值加1并延時置1,清0輸出至P2口顯示到TABLE取下半部數據取碼指針載入A154掃描指針初值為00取碼指針20H初值為00延時清除屏幕開始8個字都左移完?3.3PROTEUS仿真Proteus仿真時,單片機需要加載程序,加載程序為.HEX文件。本設計利用Keil Vision2,在新建Keil項目時選擇AT89C52單片機作為CPU,將源程序導入,在“Options For Target”對話窗口中,選中“Output”選項中的“Create HEX File”,編譯鏈接后就可以生成.HEX文件。在Prote
51、us ISIS中,選中AT89C51并單擊鼠標左鍵,對AT89C51進行設置,設置單片機時鐘頻率為12MHz,按照正確的文件路徑加載.HEX文件。對單片機設置完畢后就可以開始仿真了。仿真過程中如有硬件問題可在Proteus ISIS中直接修改,如有軟件問題可在Keil Vision2中直接修改,通過Keil與Proteus的聯(lián)合調試就可以得到滿意的結果。利用Proteus實現了對點陣式LED滾動漢字顯示屏的仿真,說明程序和電路圖都沒有問題。調試調試主要分為硬件調試和軟件調試:硬件調試:在焊接電路板的時候,應該從最基本的最小系統(tǒng)開始,分模塊,逐個進行焊接測試。在對各個硬件模塊進行測試時,要保證軟
52、件正確的情況下去測試硬件,要不然發(fā)生錯誤時,不知道到底是哪一方出錯了。當然,在設計的過程中也存在著失誤和不足,在調試中進行修改了。軟件調試:軟件部分是先參考書上的例子,然后自己根據硬件電路寫程序,由于以前所學是單片機匯編語言,所以這個系統(tǒng)在編寫程序過程中都采用匯編語言編寫。剛剛開始,編寫不會一次性通過,經過仔細分析修改最后編譯成功。但是,在實際寫如S51中,LED顯示屏出現各種各樣的亂碼,通過再次認真仔細分析多次修改程序后,程序能夠正常運行??偨Y本次畢業(yè)設計從十一月中旬到現在有一個多月,回顧著些天我感到學到了很多東西,在寫這個心得的時候,我想就這些天的收獲,說一說自己內心的想法。本設計的是一個
53、室內用16x16的點陣LED圖文顯示屏,能夠在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩(wěn)定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。本系統(tǒng)具有硬件少,結構簡單,容易實現,性能穩(wěn)定可靠,成本低等特點??偨Y本文的研究工作,主要做了下面幾點工作:一、通過查閱大量的相關資料,詳細了解了LED的發(fā)光原理和LED顯示屏的原理,了解了LED的現狀,清楚地了解了LED顯示屏與其它顯示屏相比較有那些優(yōu)點,明確了研究目標。并且通過對單片機資料的查閱和應用,更進一步增加了對單片機知識的理解和運用能力。并證實了自己的思路:“查資料思考總結運用找出差錯,再查資料和向別人
54、詢問再次運用”的正確性。二,本文設計的LED顯示屏能夠實現在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩(wěn)定、清晰無串擾。圖形或文字顯示有靜止、移入移出等顯示方式。三,本文列出了系統(tǒng)具體的硬件設計方案,硬件結構電路圖,軟件流程圖和具體匯編語言程序設計與調試等方面。四,在這次畢業(yè)設計的過程中學會了 Protel 的基本使用,感到Protel對應用電子專業(yè)的同學來說是一門很有用的課程。在運用Protel時要格外小心,例如在畫PCB電路板的時候,要注意基本的布板原則。例如,在進行PCB布板的時候,濾波電容不夠靠近芯片的電源腳和地腳。五,通過這次畢業(yè)設計,重新復習并進一
55、步增強了動手的能力,學以致用,把只是運用到實際生活中才是根本目的。六,存在問題:沒有考慮仿真軟件是一個理想的仿真環(huán)境,而實際連接的電路板會由于譬如連接不當,相鄰器件間的干擾等等的問題導致在仿真軟件中能良好運行的程序,出現顯示問題,經過排查和合理的器件擺放焊接,問題解決??傮w來說這次的畢業(yè)設計很成功,達到了預想的目的:學到了知識,提高了能力,完成了任務。有點缺憾是時間有限,不能進一步深入和擴散學習和研究。希望有時間可以對程序和電路圖作更進一步的改進,譬如實現點陣的上下移動,對角線移動,三色顯示等。致謝在此感謝鄭棣老師一直以來細心耐心的指導,感謝同學給予的幫助!附錄1. 8051系列的單片機AT8
56、9C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖片見下圖附錄1。附錄1 89S51管腳圖(1)管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為
57、低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動設備租賃市場用戶行為研究考核試卷
- 煙草生產線自動化控制技術考核試卷
- 管道工程行業(yè)政策導向與發(fā)展趨勢考核試卷
- 船舶貨運與物流供應鏈整合考核試卷
- 球類產品智能制造與工業(yè)考核試卷
- 航空公司航班運行數據分析考核試卷
- 清掃工具銷售與渠道拓展策略考核試卷
- 腈綸纖維制造考核試卷
- 機器人服務行業(yè)智能語音交互技術考核試卷
- 版權評估運營補充協(xié)議
- 華大新高考聯(lián)盟2025屆高三4月教學質量測評化學+答案
- 2025年中國防曬護理洗發(fā)露市場調查研究報告
- 建筑材料租賃標準合同范本7篇
- 2025-2030中國太陽能照明系統(tǒng)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 國家電網招聘考試(金融類)專業(yè)考試歷年真題及答案
- 2025年高考政治三輪沖刺復習:統(tǒng)編版選擇性必修3《邏輯與思維》開放類主觀題 提分刷題練習題(含答案)
- 鐵路雨季三防培訓課件
- 大學英語四級考試2024年12月真題(第一套)Part I Writing
- (部編版)語文四年級上冊課外閱讀“天天練”100篇,附參考答案
- 靜療護理典型案例
- 人美版小學二年級美術下冊《第20課 車一族》課件
評論
0/150
提交評論