基于51單片機32×32點陣顯示屏
《基于51單片機32×32點陣顯示屏》由會員分享,可在線閱讀,更多相關(guān)《基于51單片機32×32點陣顯示屏(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 單片機原理與接口技術(shù) 課程設(shè)計 課程名稱: 單片機原理與接口技術(shù) 課設(shè)項目:基于51單片機3232點陣顯示屏 課設(shè)地點: 電機館跨越機房 專業(yè)班級: 自動化1004班 學 號: 2010001159 姓 名: 指導教師: 李麗宏 2013年 7月4日 摘 要 LED顯示屏是一種通過控制半導體發(fā)光二極管的
2、顯示方式,用來顯示文字、圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、VCD節(jié)目以及現(xiàn)場實況。LED顯示屏顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應用于車站、碼頭、機場、商場、醫(yī)院、賓館、銀行、證券市場、建筑市場、拍賣行、工業(yè)企業(yè)管理和其它公共場所。 LED點陣是由發(fā)光二極管排列組成的顯示器件,具有耗電少、使用壽命長、成本低、亮度高、故障少、視角大、可視距離遠、規(guī)格品、可靠耐用、應用靈活
3、、安全、響應時間短、綠色環(huán)保、控制靈活等特點。目前LED顯示屏作為新一代的信息傳播媒體,已經(jīng)成為城市信息現(xiàn)代化建設(shè)的標志。 本文詳細介紹了32X32 LED點陣電子顯示屏的設(shè)計。使用AT89S52單片機作為主控制器,采用串行EEPROM 24C02儲存點陣字型碼數(shù)據(jù)。字型碼依次通過串入并出移位寄存器74HC595輸出,采用4-16譯碼器74HC154產(chǎn)生行掃描選通信號,分16行進行動態(tài)掃描。行采用三極管驅(qū)動,其中行驅(qū)動電路采用三極管并聯(lián),以增大行驅(qū)動電流。通過改變行掃描的順序,可實現(xiàn)顯示內(nèi)容上下滾屏;通過依次將字型碼移位后再輸出的方式可實現(xiàn)顯示內(nèi)容左右滾屏。 關(guān)鍵詞:LED點陣 顯示屏
4、 動態(tài)掃描 滾屏 目 錄 1. 引 言 1 1.1 設(shè)計意義 1 1.2 系統(tǒng)功能要求 1 2. 方案設(shè)計 1 2.1 總體設(shè)計 2 2.2 顯示原理及控制方式分析 2 2.2.1 LED點陣模塊結(jié)構(gòu) 2 2.2.2 LED 動態(tài)顯示原理 2 2.2.2 LED常見的控制方式 3 3. 硬件設(shè)計 4 3.1 單片機系統(tǒng)及其管腳 4 3.2 點陣驅(qū)動部分 6 3.3 3232LED點陣顯示制作 7 3.3.1 1616LED點陣的內(nèi)部結(jié)構(gòu)及工作原理 7 3.3.2 用88LE
5、D點陣構(gòu)成1616LED點陣 8 3.3.3 用1616LED點陣構(gòu)成3232LED點陣 9 3.4 主控單片機的接口說明 10 4. 軟件設(shè)計 11 4.1 系統(tǒng)主程序及其流程圖 11 4.2 Proteus仿真 12 5. 系統(tǒng)調(diào)試 13 6. 設(shè)計總結(jié) 16 7. 參考文獻 16 8. 附 錄 16 總體電路圖 16 源程序 17 1引 言 1.1. 設(shè)計意義 LED電子顯示屏(Light Emitting Diode Panel)是由幾百--幾十萬個半導體發(fā)光二極管構(gòu)成的像素點,按矩陣均勻排列組成。利用不
6、同的半導體材料可以制造不同色彩的LED像素點。目前應用最廣的是紅色、綠色、黃色。而藍色和純綠色LED的開發(fā)已經(jīng)達到了實用階段。 LED顯示屏是一種通過控制半導體發(fā)光二極管的亮度的方式,來顯示文字、圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。 LED顯示屏分為圖文顯示屏和條幅顯示屏,均由LED矩陣塊組成。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;而條幅顯示屏則適用于小容量的字符信息顯示。LED顯示屏因為其像素單元是主動發(fā)光的,具有亮度高,視角廣、工作電壓低、功耗小、壽命長、耐沖擊和性能穩(wěn)定等優(yōu)點。因而被廣泛應用于車站、碼頭、機場、商場、醫(yī)院、賓館、銀行、證券市場、建筑
7、市場、拍賣行、工業(yè)企業(yè)管理和其它公共場所。 LED顯示屏的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高氣候耐受性、更高的發(fā)光密度、更高的發(fā)光均勻性,可靠性、全色化方向發(fā)展。 1.2. 系統(tǒng)功能要求 設(shè)計一個能顯示32X32點陣圖文LED顯示屏,要求能顯示文字,顯示文字應穩(wěn)定、清晰,以卷簾形式向上滾動顯示。 2方案設(shè)計 2.1 總體設(shè)計 列驅(qū)動器 單 片 機 電源 32X32LED顯示點陣 行驅(qū)動器 2.2 顯示原理及控制方式分析 2.2.1 LED點陣模塊結(jié)構(gòu) 八十年代以來出現(xiàn)了組合型
8、LED點陣顯示器模塊,以發(fā)光二極管為像素,它用高亮度發(fā)光二極管芯陣列組合后,環(huán)氧樹脂和塑模封裝而成。這種一體化封裝的點陣LED模塊,具有高亮度、引腳少、視角大、壽命長、耐濕、耐冷熱、耐腐蝕等特點。LED點陣規(guī)模常見的有44、48、57、58、88、1616等等。 根據(jù)像素顏色的數(shù)目可分為單色、雙基色、三基色等。像素顏色不同,所顯示的文字、圖象等內(nèi)容的顏色也不同。單色點陣只能顯示固定色彩如紅、綠、黃等單色,雙基色和三基色點陣顯示內(nèi)容的顏色由像素內(nèi)不同顏色發(fā)光二極管點亮組合方式?jīng)Q定,如紅綠都亮時可顯示黃色,如果按照脈沖方式控制二極管的點亮時間,則可實現(xiàn)256或更高級灰度顯示,即可實現(xiàn)真彩色顯示。
9、 圖1示出最常見的88單色LED點陣顯示器的內(nèi)部電路結(jié)構(gòu)和外型規(guī)格,其它型號點陣的結(jié)構(gòu)與引腳可試驗獲得。 圖1 88單色LED模塊內(nèi)部電路 LED點陣顯示器單塊使用時,既可代替數(shù)碼管顯示數(shù)字,也可顯示各種中西文字及符號.如5x7點陣顯示器用于顯示西文字母.58點陣顯示器用于顯示中西文,8x8點陣可以用于顯示簡單的中文文字,也可用于簡單圖形顯示。用多塊點陣顯示器組合則可構(gòu)成大屏幕顯示器,但這類實用裝置常通過PC機或單片機控制驅(qū)動。 2.2.2 LED 動態(tài)顯示原理 LED點陣顯示系統(tǒng)中各模塊的顯示方式: 有靜態(tài)和動態(tài)顯示兩種。靜態(tài)顯示原理簡單、控制方便,但硬件接線復雜,
10、在實際應用中一般采用動態(tài)顯示方式,動態(tài)顯示采用掃描的方式工作,由峰值較大的窄脈沖電壓驅(qū)動,從上到下逐次不斷地對顯示屏的各行進行選通,同時又向各列送出表示圖形或文字信息的列數(shù)據(jù)信號,反復循環(huán)以上操作,就可顯示各種圖形或文字信息。 點陣式LED漢字廣告屏絕大部分是采用動態(tài)掃描顯示方式,這種顯示方式巧妙地利用了人眼的視覺暫留特性。將連續(xù)的幾幀畫面高速的循環(huán)顯示,只要幀速率高于24幀/秒,人眼看起來就是一個完整的,相對靜止的畫面。最典型的例子就是電影放映機。在電子領(lǐng)域中,因為這種動態(tài)掃描顯示方式極大的縮減了發(fā)光單元的信號線數(shù)量,因此在LED顯示技術(shù)中被廣泛使用。 以88點陣模塊為例,說明一下其使用
11、方法及控制過程。圖2.1中,紅色水平線Y0、Y1……Y7叫做行線,接內(nèi)部發(fā)光二極管的陽極,每一行8個LED的陽極都接在本行的行線上。相鄰兩行線間絕緣。同樣,藍色豎直線X0、X1……X7叫做列線,接內(nèi)部每列8個LED的陰極,相鄰兩列線間絕緣。 在這種形式的LED點陣模塊中,若在某行線上施加高電平(用“1”表示),在某列線上施加低電平(用“0”表示)。則行線和列線的交叉點處的LED就會有電流流過而發(fā)光。比如,Y7為1,X0為0,則右下角的LED點亮。再如Y0為1,X0到X7均為0,則最上面一行8個LED全點亮。 現(xiàn)描述一下用動態(tài)掃描顯示的方式,顯示字符“B”的過程。其過程如圖2 圖2
12、用動態(tài)掃描顯示字符“B”的過程 2.2.3 LED常見的控制方式 目前常見的是并行傳輸方式,通過8位鎖存器將8位總線上的列數(shù)據(jù)進行鎖存顯示,各8位鎖存器的片選信號由譯碼器提供。此種方式的優(yōu)點是傳輸速度快,對微控制器(MCU)的通信速度要求較低。但是這種方案最大的缺點是不便于隨意擴展顯示單元的數(shù)目。每增加一個1616點陣的全角漢字顯示單元,就需要在之前的電路上多增加兩根地址線,這就要求在PCB布線的時候要留有充足的地址線冗余量。再一個缺點是,每個單元的PCB隨著安放位置的不同,布線結(jié)構(gòu)也不相同,不利于廠家批量生產(chǎn)。并行傳輸需要的芯片較多,因此市場上已經(jīng)出現(xiàn)用FPGA,CPLD等高密度可編程邏
13、輯器件(PLD)來取代傳統(tǒng)鎖存器IC的方案。成本有所下降,但可擴展性仍舊較差。因此,并行傳輸方式適用于顯示單元數(shù)目確定的條屏。 隨著廣告屏顯示內(nèi)容的多媒體化,對控制器傳輸速度,運算能力的要求越來越高。因此控制器的種類也在不斷發(fā)展以適應要求,從最初的8051單片機,到PIC單片機,又到FPGA,直到現(xiàn)在的ARM處理器。不同功能檔次的廣告屏對應著不同的處理器。 一.以傳統(tǒng)8051單片機為控制器的LED顯示屏。因受到單片機運算速度及通信速率的限制,LED動態(tài)顯示的刷新率不可能做得太高。對顯示效果和移動算法的處理也比較吃力,在實際顯示效果上有比較明顯的閃爍感。除此之外,傳統(tǒng)8051單片機的內(nèi)部資源
14、貧乏,僅128字節(jié)的數(shù)據(jù)存儲器,幾K字節(jié)的程序存儲器,無E2PROM,SPI。這就需要對單片機擴展外設(shè),無疑增加了硬件成本。因此,8051控制的條屏只能用于顯示內(nèi)容及其簡單,不需要經(jīng)常更改顯示內(nèi)容的場合。 二.以PIC單片機為控制器的LED顯示屏。因PIC單片機是RISC架構(gòu)的工業(yè)專用單片機,處理指令的速度有所增加,抗干擾能力優(yōu)秀,型號種類繁多。作為條屏的控制器,可以明顯的改善顯示效果,同時PIC單片機內(nèi)部的資源較豐富,可節(jié)省外部電路設(shè)計難度,同時降低了硬件成本。因此,以PIC單片機為控制器的條屏目前仍是單色條屏市場的主流。 三.以FPGA(復雜可編程邏輯門陣列)為控制器的LED顯示屏。F
15、PGA以高速、并行著稱。是近年來新興的可編程邏輯器件。用他作為LED顯示屏的控制器,能夠高速的處理色階PWM信號、高速的完成動態(tài)掃描邏輯、高速的完成字符移動算法。因此被運用于雙基色、三基色的顯示系統(tǒng)。但是其成本較高,開發(fā)難度較大。 四.以ARM(32位RISC架構(gòu)高性能微處理器)為控制器的LED顯示屏。ARM有著極高的指令效率,極高的時鐘頻率。因此其運算能力非常強大,內(nèi)部資源也十分豐富,極大的簡化了硬件設(shè)計的難度,縮短了開發(fā)周期。在條屏的運用中,能用ARM來實現(xiàn)花樣繁多的顯示方式,以及高色階,多像素的全彩屏驅(qū)動。ARM與FPGA的組合更是功能強大,除了海量存儲技術(shù),無線更新技術(shù)外,還能實時地
16、顯示視頻信號。因此,以ARM為控制器的顯示屏常為視頻全彩屏。 3硬件設(shè)計 3.1 單片機系統(tǒng)及其管腳 u 單片機AT89S52簡介 AT89S52是一種帶4KB可編程可擦除只讀存儲器的低電壓、高性能CMOS型8位微處理器,俗稱單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89S52是一種高效微控制器,AT89S52單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。因此,本設(shè)計將AT89S52作為單片機選擇對象。 AT89S52的特
17、點: 1、價格便宜,即性價比高; 2、集成度高,體積小,可靠性好; 3、低功耗、低電壓; 4、易擴展。 圖3 單片機結(jié)構(gòu)圖 u 單片機系統(tǒng)及其管腳 常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,一種是外部時鐘方式。本實驗采用內(nèi)部時鐘方式,將XTAL1與XTAL2之間跨接一個石英晶振和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激震蕩器。電容值取30pF左右,其大小將影響震蕩頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。為減少線間的寄生電容,晶振和電容應盡能安裝得與單片機靠近,保證晶振穩(wěn)定可靠的工作。 另一部分是復位部分。上電自動復位電路是最簡單的復位電路,只需要一個1K左右
18、電阻、一個22pF左右的電容及12MHZ的晶振。有時還需要按鍵手動復位,此時只要在電容上并聯(lián)一個按鍵即可。 還有一部分是按鈕切換字幕部分。與串行口P0.1相連,初始時P0.1為1,按鈕按下后P0.1為0。 其圖形如下圖 圖4 單片機接線圖 3.2點陣驅(qū)動部分 點陣顯示用是動的態(tài)掃描來實現(xiàn)的。在采用掃描方式顯示時,由于每行要帶動32個二極管,每行電流較大。若每個二極管安5mA計算,32個二極管就得80mA電流,超出單片機管腳的承受范圍,因此每行都加有一個驅(qū)動器,本設(shè)計的行驅(qū)動用的是32個pnp型三極管。三極管的發(fā)射極接5V電壓,集電極接點陣的行線,而其基級本應接
19、單片機,但該接線方式占用為了32個單片機管腳,為了節(jié)省單片機管腳,用了P0.0作為片選信號控制兩片74159譯碼器,輪流導通兩片74159譯碼器,這樣就只需要4個管腳了。 74159的管腳圖及其說明如圖5。點陣驅(qū)動仿真部分總體接線圖如圖6(未畫完整) 對4個輸入信號進行譯碼,得到16個輸出狀態(tài)。 G1,G2為數(shù)據(jù)允許輸出端,G1,G2低電平有效。G1高電平有效。A,B,C,D為譯碼信號輸出端,Y0~Y16為譯碼輸出端,低電平有效。 圖5 74159管腳圖 圖6 點陣驅(qū)動仿真圖 3.3 3232LED點陣顯示制作 3.3.1 1616LED
20、點陣的內(nèi)部結(jié)構(gòu)及工作原理 以UCDOS中文宋體字庫為例,每一個字由16行16列的點陣組成顯示。即國家標準漢字庫中的每一個字均由256點陣來表示。我們可以把每一個點理解為一個像素,而把每一個字的字形理解為一幅圖像。事實上這個漢字屏不僅可以顯示漢字,也可以顯示在256像素范圍內(nèi)的任何圖形。這里我們以“高”字說明,如圖7所示。 圖7 16*16LED漢字顯示 用8位的AT89C51單片機控制,由于單片機的總線為8位,一個字需要拆分為2個部分。一般把它拆分為上部和下部,上部由816點陣組成,下部也由816點陣組成。在本例中單片機首先顯示的是
21、左上角的第一列的上半部分,即第0列的p00—p07口。方向為p00到p07 ,顯示漢字“高”時,p02點亮,由上往下排列,為p0.0 滅,p0.1 滅, p0.2 滅, p0.3 滅, p0.4 滅, p0.5 亮,p0.6滅,p0.7 滅。即二進制00000100,轉(zhuǎn)換為16進制為 04h。上半部第一列完成后,繼續(xù)掃描下半部的第一列,為了接線的方 便,我們?nèi)栽O(shè)計成由上往下掃描,即從p27向p20方向掃 描,從上圖可以看到,這一列全部為不亮,即為00000000,16進制則為00h。 然后單片機轉(zhuǎn)向上半部第二列,仍為p01點亮,為00000100,即16進制04h.
22、這一列完成后繼續(xù)進行下半部分的掃描,p20點亮,為二進制00000010,即16進制02h.依照這個方法,繼續(xù)進行下面的掃描,一共掃描32個8位,可以得出漢字“高”的掃描代碼為:02h,00h,01h, 04h,0FFh,0FEh, 00h, 00h,1Fh,0F0h, 10h, 10h, 10h, 10h, 1Fh,0F0h,00h, 04h, 7Fh,0FEh, 40h, 04h, 4Fh,0E4h,48h, 24h, 48h, 24h, 4Fh,0E4h, 40h, 0Ch。 由這個原理可以看出,無論顯示何種字體或圖像,都可以用這個方法來分析出它的掃描代碼從而顯示在屏幕上。不過現(xiàn)在有很
23、多現(xiàn)成的漢字字模生成軟件,就不必自己去畫表格算代碼了。 3.3.2 用88LED點陣構(gòu)成1616LED點陣 Proteus中只有57和88等LED點陣,并沒有1616LED點陣,而在實際應用中,要良好地顯示一個漢字,則至少需要1616點陣。下面我們就首先介紹使用88點陣構(gòu)建1616點陣的方法,并構(gòu)建一塊1616LED點陣,用于本例的顯示任務。 首先,從Proteus7.1的元件庫中找到“MATRIX-8X8-RED”元器件,并將四塊該元器件放入Proteus文檔區(qū)編輯窗口中。此時需要注意,如果該元器件保持初始的位置(沒有轉(zhuǎn)動方向),我們要首先將其左轉(zhuǎn)90,使其水平放置,那么此時它的左面
24、8個引腳是其行線,右邊8個引腳是其列線(當然,如果你是將右轉(zhuǎn),則右邊8個引腳是行線)。然后我們將四個元器件對應的行線和列線分別進行連接,使每一條行線引腳接一行16個LED,列線也相同。并注意要將行線和列線引出一定長度的引腳,以便下面我們使用。連接好的1616點陣如圖8所示。 成如上圖的1616點陣只是第一步,這樣分開的數(shù)塊并不能達到好的顯示效果,下面我們要將其進一步組合。組合實際上很簡單,首先選中如上圖中右側(cè)的兩塊88點陣,然后拖動并使其與左側(cè)的兩塊相并攏,如圖9所示。 圖8 點陣模塊組合 圖9 可以看到原來的連線已經(jīng)自動隱藏了,至于線上的交點,我們不要去動。然后,我們再來最后一
25、步,選中下側(cè)的兩塊點陣,并拖動使其與上側(cè)的兩塊并攏,最后的效果如圖10所示??吹?原來雜亂的連線現(xiàn)在已經(jīng)幾乎全部隱藏了,一塊1616的LED點陣做成了。需要注意,做成的LED點陣的行線為左側(cè)的16個引腳,下側(cè)的16個引腳為其列線,而且其行線為高電平有效,列線為低電平有效。然后,我們將其保存,以便以后使用。 圖10 3.3.3 用1616LED點陣構(gòu)成3232LED點陣 最后,把原來1616的LED點陣塊復制可以做成3232的LED點陣。如圖11 圖11 3232的LED點陣 3.4主控
26、單片機的接口說明 P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復制用口,作為輸入口時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫入“1可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復用,在訪問期激活內(nèi)部上拉電阻。在Flash編程時,PO口接收指令節(jié),而在程序校檢時,輸出指令字節(jié),校檢時,要求外接上拉電阻。 P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口時
27、,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。Flash編程和程序校檢期間,P1接收低8位地址。 P2口:P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。在訪問外部數(shù)據(jù)存儲器或16位地址的外部數(shù)據(jù)存儲(例如執(zhí)行MOVX@DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI指令)時,P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)
28、中R2寄存器的內(nèi)容),在整個訪問期間不改變。Flash編程和校檢時,P2亦接收高位地址和其他控制信號。 P3口:P3口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作輸入端口,作輸入端時,被外部拉低的P3口將用上拉電阻,輸出電流I。P3口還接收一些用于Flash閃速存儲器編程和程序校檢的控制信號。 RST:復位輸入,當震蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。 ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于所存地址的低8
29、位字節(jié)。即使不訪問外部存儲器,ALE乃以時鐘振動頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。 4軟件設(shè)計 本軟件要求實現(xiàn)文字要以一定速度上升滾動顯示,當按下按鈕,LED顯示屏的文字切換到另一個字幕,再按一下,切換回原來的字幕。 顯示屏軟件模塊:初始化程序、主程序、多字滾動、顯示程序、掃描程序。顯示程序的主要功能是向屏體提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號,使屏幕按設(shè)計的要求顯示。軟件設(shè)計中,顯示屏的軟件系統(tǒng)分為兩層;第一層是底層的顯示驅(qū)動程序,第二層是上層的系統(tǒng)應用程序。顯示驅(qū)動程序負責向屏體
30、送顯示數(shù)據(jù),并負責產(chǎn)生行掃描信號和其他控制信號,配合完成LED顯示屏的掃描顯示工作。系統(tǒng)應用程序完成系統(tǒng)環(huán)境設(shè)置(初始化)、按鍵掃描、顯示效果處理等工作,由主程序來實現(xiàn)。 4.1系統(tǒng)主程序及其流程圖 本設(shè)計的系統(tǒng)軟件能使系統(tǒng)LED顯示屏各點亮度均勻、充足,可顯示文字,顯示文字應穩(wěn)定、清晰無串擾。文字顯示有靜止、移入移出等顯示方式。 系統(tǒng)主程序開始以后,首先是對系統(tǒng)環(huán)境初始化,包括設(shè)置串口、定時器、中斷和端口;然后以“卷簾出”效果顯示圖形,停留約幾秒;接著向上滾動顯示漢字。由于單片機沒有停機指令,所以可以設(shè)置系統(tǒng)程序不斷的循環(huán)執(zhí)行上述顯示效果。 單元顯示屏可以接收來自控制器(主控制電
31、路板)或上一級顯示單元模塊傳輸下來的數(shù)據(jù)信息和命令信息,并可將這些數(shù)據(jù)信息和命令信息不經(jīng)任何變化地再傳送到下一級顯示模塊單元中,因此顯示板可擴展至更多的顯示單元,用于顯示更多的顯示內(nèi)容。如果想改變些事內(nèi)容,先用字模產(chǎn)生字代碼,將用這段代碼覆蓋原來的代碼,即可顯示你想要的內(nèi)容。 圖12 是系統(tǒng)主程序流程圖 4.2 Proteus仿真 Proteus最重要的特點是它能夠把用戶編寫的應用軟件作用在微處理器上并和連接在該處理器的外圍模擬器件及數(shù)字器件協(xié)同仿真,就像在真正的單片機應用系統(tǒng)的硬件平臺上執(zhí)行目標代碼。支持的微控制器有51系列、 Microchip的PIC系列、Atm
32、el的AV系列、 和ARM7/LPC2000。Proteus軟件使用徹底改變了傳統(tǒng)單片機學習和開發(fā)方式,初學者可以在沒有實驗硬件條件下進行仿真實驗,開發(fā)者也不必經(jīng)歷“原理圖設(shè)計、PCB線路板制作、元件焊接、然后進行軟件編程、通過仿真器對系統(tǒng)硬件和軟件調(diào)試”過程,可以直接用Proteus進行電路設(shè)計和仿真運行程序,運行成功后再制作產(chǎn)品,縮短開發(fā)周期,節(jié)約開發(fā)成本。漢字點陣顯示電路設(shè)計制作時,顯示部分由88單色LED模塊拼接而成,元件引腳較多,硬件制作繁瑣,應用Proteus進行仿真設(shè)計,極大縮短開發(fā)周期。下圖用Proteus軟件設(shè)計3232點陣顯示屏。 圖13 3232點陣顯示屏結(jié)構(gòu)圖
33、 5系統(tǒng)調(diào)試 從有利于實現(xiàn)較復雜的算法(顯示效果處理)和有利于程序結(jié)構(gòu)化考慮,顯示屏程序適宜采用C語言編寫。剛剛開始,編寫不會一次性通過,經(jīng)過仔細分析修改最后編譯成功。但是,在實際寫如S51中,LED顯示屏出現(xiàn)各種各樣的亂碼,通過再次認真仔細分析多次修改程序后,程序能夠正常運行。其運行結(jié)果如圖: 圖14 初始化運行界面1 圖15 初始化運行界面2 圖16 點擊按鈕后運行畫面1 圖17 點擊按鈕后運行畫面2 6設(shè)計總結(jié) 本文設(shè)計的32x32的點陣LED文字顯示屏,能夠在目測條件下LED顯示屏各點亮度均勻、充足,可顯示文字,顯示的文字較穩(wěn)定、
34、清晰。文字向上滾動顯示。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡單,容易實現(xiàn),性能穩(wěn)定可靠,成本低等特點。 在此次設(shè)計中,我們得到以下體會: 一、在這次點陣設(shè)計的過程讓我進一步熟悉KEIL及Proteus的使用。 二、本次設(shè)計結(jié)果仍有缺陷,有一行總是全亮,干擾顯示。 三、通過這次點陣設(shè)計,重新復習并進一步學習了MCS-52優(yōu)點,明確了研究目標。 四、本文設(shè)計的LED顯示屏能夠?qū)崿F(xiàn)在目測條件下LED顯示屏各點亮度均勻、充足,可顯示圖形和文字,顯示圖形和文字應穩(wěn)定、清晰無串擾。圖形或文字以移入移出方式顯示。 五、在后的設(shè)計中,既要想到電路器件的聯(lián)合使用,又要靈活變通,舉一反三。在焊接方
35、面,我們了解到焊接某些器件時,要先消去電烙鐵上的靜電,防止靜電對芯片特別是放大器件造成傷害,焊接二極管、三極管等芯片時要快,防止持續(xù)高溫損壞芯片。 7參考文獻 [1] 牛昱光.單片機原理與接口技術(shù).電子工業(yè)出版社,2008.2 [2] 陽進.基于單片機的LED顯示屏的漢字顯示[J].中國科技信息,2005,(12):112. [3] Mark Nelson著.瀟湘工作室譯.串行通信開發(fā)指南[M].中國水利水電出版社,2002. [4] 劉欣銘,張廣斌.LED顯示屏技術(shù)綜述[J].黑龍江電力,2003, 25(4):294-296. [5] 韓潤萍,陳小萍.點陣LED顯示屏控制
36、系統(tǒng)[J].微計算機信息,2003,19(10):50-51.
8 附 錄
總體電路圖
源程序
#include
37、00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //太 0x01,0x00, 0x01,0x00, 0x01,0
38、x00, 0x01,0x00, 0x01,0x00, 0xFF,0xFE, 0x01,0x00, 0x01,0x00, 0x02,0x80, 0x02,0x80, 0x04,0x40, 0x04,0x40, 0x0A,0x20, 0x11,0x10, 0x21,0x08, 0xC0,0x06, //原 0x00,0x00, 0x3F,0xFE, 0x20,0x80, 0x21,0x00, 0x27,0xF0, 0x24,0x10, 0x24,0x10, 0x27,0xF0, 0x24,0x10, 0x24,0x10, 0x27,0xF0,
39、0x20,0x80, 0x24,0x90, 0x48,0x88, 0x52,0x84, 0x81,0x00, //理 0x00,0x00, 0x01,0xFC, 0xFD,0x24, 0x11,0x24, 0x11,0xFC, 0x11,0x24, 0x11,0x24, 0x7D,0xFC, 0x10,0x20, 0x10,0x20, 0x11,0xFC, 0x10,0x20, 0x1C,0x20, 0xE0,0x20, 0x43,0xFE, 0x00,0x00, //工 0x00,0x00, 0x00,0x00, 0x7F,0xFC,
40、0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0xFF,0xFE, 0x00,0x00, 0x00,0x00, //大 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0xFF,0xFE, 0x01,0x00, 0x01,0x00, 0x02,0x80, 0x02,0x80, 0x04,0x40, 0x04
41、,0x40, 0x08,0x20, 0x10,0x10, 0x20,0x08, 0xC0,0x06, // 學 0x22,0x08, 0x11,0x08, 0x11,0x10, 0x00,0x20, 0x7F,0xFE, 0x40,0x02, 0x80,0x04, 0x1F,0xE0, 0x00,0x40, 0x01,0x80, 0xFF,0xFE, 0x01,0x00, 0x01,0x00, 0x01,0x00, 0x05,0x00, 0x02,0x00, //歡 0x00,0x80, 0x00,0x80, 0xFC,0x80, 0x0
42、5,0xFE, 0x85,0x04, 0x4A,0x48, 0x28,0x40, 0x10,0x40, 0x18,0x40, 0x18,0x60, 0x24,0xA0, 0x24,0x90, 0x41,0x18, 0x86,0x0E, 0x38,0x04, 0x00,0x00, //迎 0x40,0x00, 0x21,0x80, 0x36,0x7C, 0x24,0x44, 0x04,0x44, 0x04,0x44, 0xE4,0x44, 0x24,0x44, 0x25,0x44, 0x26,0x54, 0x24,0x48, 0x20,0x40
43、, 0x20,0x40, 0x50,0x00, 0x8F,0xFE, 0x00,0x00, //您 0x08,0x00, 0x09,0x00, 0x11,0xFE, 0x12,0x04, 0x34,0x40, 0x32,0x50, 0x52,0x48, 0x94,0x44, 0x11,0x44, 0x10,0x80, 0x00,0x00, 0x29,0x04, 0x28,0x92, 0x68,0x12, 0x07,0xF0, 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
44、,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; char code table
45、1[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
46、,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //鄧 0x00,0x00, 0x7E,0x7C, 0x02,0x44, 0x02,0x48, 0x42,0x48, 0x24,0x50, 0x14,0x48, 0x08,0x48, 0x08,0x44, 0x14,0x44, 0x14,0x44, 0x22,0x68, 0x42,0x50, 0x80,0x40, 0x00,0x40, 0x00,0x40, //志 0x01,0x00, 0x01,0x00, 0x01,0x00, 0xFF,0xFE, 0x01,0x00
47、, 0x01,0x00, 0x01,0x00, 0x3F,0xF8, 0x00,0x00, 0x01,0x00, 0x08,0x88, 0x48,0x84, 0x48,0x12, 0x48,0x12, 0x87,0xF0, 0x00,0x00, //鴻 0x00,0x10, 0x80,0x20, 0x40,0x7C, 0x1F,0x44, 0x84,0x64, 0x44,0x54, 0x44,0x44, 0x04,0x4C, 0x24,0x40, 0x44,0x7E, 0xC4,0x02, 0x47,0x02, 0x5C,0x7A, 0x4
48、8,0x02, 0x40,0x0A, 0x00,0x04, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0
49、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; void main() { uchar i,j; //i:每個字的顯示循環(huán);j每個字的顯示碼除以2 uint b=0; //顯示偏移控制 uint num=0; uchar a; //控制移動間隔時間 key=1; while(1) { while(num==0)
50、 { j=0; if(key==0) { delay(110); if(key==0) { num=1; while(!key); } } if(num!=0) break; if(a>2) //移動間隔時間 { a=0; b+=2;
51、 if(b>=352) //顯示到最后一個字,回頭顯示,判斷值=字數(shù)(5)*32 { b=0; } } pp=1; //片選 for(i=0;i<16;i++) { P1=i; //行選 P3=table[j+b]; P2=table[j+b+1]; delay(5); // P2=0x00;
52、 // P3=0x00; j+=2; } pp=0; //片選 for(i=0;i<16;i++) { P1=i; P3=table[j+b]; P2=table[j+b+1]; delay(5); // P2=0x00; // P3=0x00; j+=2; }
53、 a++; } while(num==1) { j=0; if(key==0) { delay(110); if(key==0) { num=0; while(!key); } } if(num==0) break; if(a>2) //移動間隔時間 {
54、 a=0; b+=2; if(b>=160) //顯示到最后一個字,回頭顯示,判斷值=字數(shù)(11)*32 { b=0; } } pp=1; //片選 for(i=0;i<16;i++) { P1=i; //行選 P3=table1[j+b]; P2=table1[j+b+1];
55、 delay(5);
// P2=0x00;
// P3=0x00;
j+=2;
}
pp=0; //片選
for(i=0;i<16;i++)
{
P1=i;
P3=table1[j+b];
P2=table1[j+b+1];
delay(5);
// P2=0x00;
// P3=0x00;
j+=2;
}
a++;
}
}
}
void delay(int z)
{
int x,y;
for(x=0;x
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。