基于51單片機的LED點陣顯示屏系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
基于51單片機的LED點陣顯示屏系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
基于51單片機的LED點陣顯示屏系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
基于51單片機的LED點陣顯示屏系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
基于51單片機的LED點陣顯示屏系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE本科生畢業(yè)論文PAGEPAGE1摘要:本文介紹了一款以單片機AT89S51為控制器的LED點陣顯示屏系統(tǒng)的設(shè)計。該系統(tǒng)可實現(xiàn)中英文字符的顯示和動態(tài)特效顯示。并且可以通過級連的方式來擴大顯示屏幕的尺寸以達到增加顯示內(nèi)容的目的。系統(tǒng)采用PC機作為上位機,上位機向單片機發(fā)送控制命令和上位機所存儲的顯示代碼,AT89S51單片機接收并處理PC機的控制命令以及顯示代碼,由顯示驅(qū)動模塊驅(qū)動一個16×16分辨率的LED點陣顯示屏的掃描顯示。PC機與單片機之間的通信采用RS—232C通信標準來實現(xiàn)。所選用的AT89S51單片機具有價格低廉程序?qū)懭敕奖愕奶攸c使得整個系統(tǒng)方便維護和檢修。除此之外,該系統(tǒng)只占用了單片機少量的I/O口和內(nèi)存,為系統(tǒng)留下了功能擴展的空間。關(guān)鍵字:AT89S51;LED點陣顯示;串行通對設(shè)計題目的特點,作者對論文的內(nèi)容和結(jié)構(gòu)將做如下安排:(1)初步方案的論證和選擇搜集題目的有關(guān)資料,并參照目前通用的設(shè)計思想和設(shè)計方法擬定幾套設(shè)計方案進行分析比較。最終選定了以PC機為上位機,單片機為核心控制器件,外加譯碼電路和驅(qū)動電路的設(shè)計方案。(2)方案實現(xiàn)以設(shè)計方案為指導(dǎo)思想選擇合適的器件來實現(xiàn)這一思想,選擇器件時要從功能和電氣特性兩方面來選擇和論證。經(jīng)過對比選擇選定AT89S51單片機為核心控制器件,由串并轉(zhuǎn)換器74LS164和鎖存器74LS373為譯碼電路器件,三極管8550和ULN2803為驅(qū)動電路器件。論文列出了詳細的器件參數(shù)和在系統(tǒng)中的連接使用方法。(3)軟件編寫根據(jù)硬件特點和設(shè)計要求,軟件選用C語言編寫。程序按功能分為靜態(tài)顯示、動態(tài)顯示、通信等幾個功能上相對獨立的模塊。然后按照所劃分的模塊逐個編寫和調(diào)試,最后將獨立的模塊整合起來。(4)驗證與測試調(diào)試分為硬件調(diào)試、軟件調(diào)試和系統(tǒng)聯(lián)合調(diào)試幾步來進行。在硬件調(diào)試中發(fā)現(xiàn)有單片機端口驅(qū)動能力不足、驅(qū)動電路工作不穩(wěn)定等問題。在軟件調(diào)試中出現(xiàn)程序整合工作不協(xié)調(diào)等問題。通過分析,查找找出了問題原因并設(shè)法將其解決。(5)結(jié)論設(shè)計完成后對設(shè)計中所遇到的問題、經(jīng)驗教訓(xùn)、以及自己的想法進行總結(jié)。第2章方案論證與選擇2.1系統(tǒng)硬件方案大多數(shù)的LED顯示屏都在戶外,所以對硬件的質(zhì)量要求非常的高。為方便檢修和維護硬件電路設(shè)計時常常采用模塊化的設(shè)計方法。硬件的設(shè)計采用模塊化設(shè)計,既要滿足模塊本身功能又要能夠和整個系統(tǒng)兼容。如圖2-1所示,根據(jù)顯示系統(tǒng)的功能特點確定系統(tǒng)硬件由顯示屏部分,控制部分,通信系統(tǒng)及上位機四部分組成。上位機通過通信部分向控制部分發(fā)送控制指令和顯示內(nèi)容代碼,控制部分執(zhí)行顯示指令并將顯示代碼處理后控制顯示部分的顯示內(nèi)容和顯示方式[3]。圖2-1系統(tǒng)硬件組成框圖2.1.1顯示屏主控制器控制部分是整個系統(tǒng)的核心部分,其功能為與上位機通信接收上位機發(fā)送的數(shù)據(jù)和控制指令處理過后控制顯示部分顯示內(nèi)容。其常用的電子設(shè)計方法有單片機、DSP、及EDA技術(shù)。幾種設(shè)計方法比較各有其特點:(1)單片機單片機是集成了CPU,ROM,RAM和I/O口的微型計算機。它有很強的接口性能,非常適合于工業(yè)控制,因此又叫微控制器(MCU)。單片機品種齊全,型號多樣CPU從8,16,32到64位,多采用RISC技術(shù),片上I/O非常豐富,有的單片機集成有A/D,“看門狗”,PWM,顯示驅(qū)動,函數(shù)發(fā)生器,鍵盤控制等。它們的價格也高低不等,這樣極大地滿足了開發(fā)者的選擇自由。除此之外單片機還具有低電壓和低功耗的特點。隨著超大規(guī)模集成電路的發(fā)展,NMOS工藝單片機被CMOS代替,并開始向HMOS過渡。供電電壓由5V降到3V,2V甚至到1V,工作電流由mA降至μA,這在便攜式產(chǎn)品中大有用武之地[4]。個的發(fā)光二極管出現(xiàn)問題時只需更換一個二極管即可,檢修的成本較低,缺點在于連接線路復(fù)雜;而點陣模塊構(gòu)成的方法卻正好與之相反,模塊構(gòu)成省約了大量的連線,不過當一個LED出現(xiàn)問題時同在一個模塊的所有LED都必須被更換。這就加大了維修的成本。兩種方法相比較,決定采取模塊構(gòu)成的方法來制作一個LED點陣顯示屏。為了避免模塊的缺點,選擇點陣數(shù)較小的模塊來減小出現(xiàn)這一問題的風(fēng)險。所以構(gòu)建一個16×16的LED點陣屏選用四塊8×8點陣模塊。圖2-2LED點陣圖一個16×16的LED顯示屏行和列各有16支引腳,不能單靠51單片機的端口驅(qū)動所以必須要對單片機的端口個數(shù)進行擴展。經(jīng)常采用的端口擴展方法是用串并轉(zhuǎn)換芯片進行譯碼。常用的串并轉(zhuǎn)換芯片有74LS154(4線-16線譯碼器)、74LS164(8位串并轉(zhuǎn)換器)、74HC595等。51系列單片機端口低電平時,吸入電流可達20mA,具有一定的驅(qū)動能力;而為高電平時,輸出電流僅數(shù)十μA甚至更小(電流實際上是由腳的上拉電流形成的),基本上沒有驅(qū)動能力,所以單片機不能直接驅(qū)動LED顯示屏顯示。在單片機和顯示屏之間還需要增加以功能放大位目的的驅(qū)動電路[7]。2.1.4硬件設(shè)計方案最終方案如圖2-3所示,以PC機作為上位機存儲和處理顯示內(nèi)容用串行通信的方式將顯示內(nèi)容和控制指令傳輸?shù)絾纹瑱C系統(tǒng),單片機根據(jù)上位機傳輸來的內(nèi)容和指令通過端口譯碼擴展后驅(qū)動4塊8×8LED點陣模塊構(gòu)成的16×16的LED點陣顯示屏。題目將以此方案為指導(dǎo)思想展開具體的硬件電路設(shè)計。圖2-3硬件設(shè)計方案2.2系統(tǒng)軟件方案軟件的設(shè)計除了滿足設(shè)計功能外還必須要滿足易讀寫,方便下載和編譯。設(shè)計目標和硬件總體結(jié)構(gòu)確定的情況下,軟件可以分為主程序,顯示子程序,各種特效顯示子程序,通信程序三個主要部分組成。具體結(jié)構(gòu)如圖2-4所示。圖2-4軟件功能結(jié)構(gòu)框圖軟件的編寫需要借助軟件編輯器和編譯軟件,編譯完成后還需要下載到單片機中執(zhí)行。編寫軟件之前得首先選擇一種合適的語言以及配套的編輯器和編譯軟件。最后還要選擇一款與所選單片機的下載器或下載軟件來把編寫的程序下載到單片機中執(zhí)行。第3章系統(tǒng)硬件設(shè)計3.1硬件整體設(shè)計概述及功能分析顯示系統(tǒng)具體設(shè)計主要由上位機,通信系統(tǒng),單片機系統(tǒng),譯碼電路,顯示驅(qū)動電路和16×16的點陣屏六部分組成。具體工作流程為:上位PC機通過通信系統(tǒng)向單片機發(fā)送控制指令和顯示代碼內(nèi)容,單片機接收后執(zhí)行控制指令處理顯示代碼將顯示內(nèi)容通過I/O口串行輸出并且控制譯碼電路完成串并轉(zhuǎn)換并行輸出,最后由顯示驅(qū)動電路進行電壓和電流的處理以達到LED顯示屏的顯示電流,電壓要求進而使顯示屏顯示內(nèi)容[11]。根據(jù)硬件的功能結(jié)構(gòu)圖選取合適器件,器件不但要求能實現(xiàn)所要求的功能還要能兼容至整個系統(tǒng)之中。通過查閱資料和對比最終的硬件原理圖如圖3-1所示。圖3-1硬件原理圖3.2.2控制系統(tǒng)設(shè)計控制電路設(shè)計中采用的是單片機系統(tǒng),該系統(tǒng)必須要是工作在一個最小系統(tǒng)(指單片機的可以的最小配置系統(tǒng))。AT89S51的最小系統(tǒng)包括了外界時鐘電路和復(fù)位電路,選定一定數(shù)量的IO口作為控制口控制外部的各種器件和數(shù)據(jù)的輸出。根據(jù)功能選擇一定的單片機端口添加外圍的器件,具體電路如圖3-2所示。在該系統(tǒng)中,P1各口主要用作LED顯示數(shù)據(jù)的控制輸出。由于端口的驅(qū)動能力有限所以該端口外接了5K的上拉電阻來提高驅(qū)動能力。其中P1.5P1.6P1.7還復(fù)用為ISP下載功能口。具體接法為:P1.0,P1.1,P1.4,P1.5分別接四塊74LS164的A端,向74LS164送入串行數(shù)據(jù)經(jīng)過其轉(zhuǎn)換后并行輸出;P1.2和P1.6分別接列和行的74LS164的CLOCK端,產(chǎn)生移位脈沖是串行數(shù)據(jù)并行輸出;P1.3和P1.7接列和行的CLEAR端,在一組數(shù)據(jù)完成串并轉(zhuǎn)換后清除164芯片中的內(nèi)容轉(zhuǎn)換新的數(shù)據(jù);其中P1.5P1.6P1.7還復(fù)用為ISP下載功能口。P2.0接164芯片的使能控制端,當為高電平使允許輸出;P2.2和P2.3接鎖存器74LS373的OE和LE端控制鎖存器的工作狀態(tài)。端口30,EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。因為沒有擴展外部程序存儲器所以將EA置為高電平。圖3-2控制部分電路圖由于P3口是特殊功能口,在該系統(tǒng)中基本是采用其第二功能。其第二功能和實際運用如表3-1所示:表3-1AT89S51P3口第二功能的應(yīng)用端口第二功能實際作用P3.0RXD(串行輸入口)與上位機通信的數(shù)據(jù)輸入口P3.1TXD(串行輸出口)與上位機通信的數(shù)據(jù)輸出口P3.2外部中斷0做按鍵中斷,控制顯示狀態(tài)P3.3外部中斷1做按鍵中斷,控制運行模式AT89S51單片機的P1在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,P2口在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時,P2口送出高8位地址數(shù)據(jù)。所以P1和P2口留為外部數(shù)據(jù)存儲器和程序存儲器的擴展用,以備內(nèi)部存儲器和程序存儲器不夠用的情況時使用[12]。3.3譯碼電路設(shè)計譯碼電路的功能是為了解決單片機I/O端口不足。行譯碼所用器件為串并轉(zhuǎn)換器74LS164和鎖存器74LS373。具體電路如圖3-3所示圖3-3行譯碼電路圖3.3.1串并轉(zhuǎn)換器74LS164列譯碼采用的是芯片74LS164。如果不采用譯碼電路完全依靠單片機的端口輸出來控制16×16的LED點陣屏顯示,需要32個端口。而采用了譯碼電路后僅僅需要7~9個端口便可實現(xiàn)控制顯示。大大減少了I/O口的占用數(shù)目,為單片機擴展其他功能預(yù)留下來了空間。74LS164為一個8位數(shù)據(jù)的串并轉(zhuǎn)換器。當清除端(CLEAR)為低電平時,輸出端(QA-QH)均為低電平。串行數(shù)據(jù)輸入端(A,B)可控制數(shù)據(jù)。當A、B任意一個為低電平,則禁止新數(shù)據(jù)輸入,在時鐘端(CLOCK)脈沖上升沿作用下Q0為低電平。當A、B有一個為高電平,則另一個就允許輸入數(shù)據(jù),并在CLOCK上升沿作用下決定Q0的狀態(tài)。表3-174LS164工作參數(shù)參數(shù)最小值標準值最大值單位高電平輸入電壓2——V低電平輸入電壓——0.8V高電平輸出電壓2.43.2--V低電平輸出電壓—0.20.4V時鐘頻率0—25MHZ這就要求單片機的引腳輸出的高低電平要在芯片的識別范圍內(nèi),由于采用了列選通行傳送顯示代碼的方法所以行譯碼電路上也加上了74L373鎖存芯片。這就要求74LS164芯片的輸出要滿足鎖存芯片的高低電平區(qū)分范圍和頻率要求。3.3.2鎖存器74L373由于74LS164芯片不具有鎖存功能,所以在74LS164進行八位數(shù)據(jù)的串并轉(zhuǎn)換時,串行數(shù)據(jù)的第一位會從QA依次移位到QH,第二位數(shù)據(jù)會從QA依次移位到QG,依次類推在八位數(shù)據(jù)轉(zhuǎn)換完成之前74LS164芯片的輸出會出現(xiàn)一段時間的亂序輸出,這一結(jié)果會通過驅(qū)動電路表現(xiàn)在顯示屏上。結(jié)果就是顯示屏無序?qū)ㄩW爍,不能顯示所需內(nèi)容。因此在串并轉(zhuǎn)換完成前就需要74LS164的輸出口不與驅(qū)動電路導(dǎo)通。所以選擇鎖存器74LS373來完成這一功能。74LS373為八D鎖存器(3S,鎖存允許輸入有回環(huán)特性)。373為三態(tài)輸出的八D透明鎖存器,共有54/74S373和54/74LS373兩種線路結(jié)構(gòu)形式當三態(tài)允許控制端OE為低電平時,O0~O7為正常邏輯狀態(tài),可用來驅(qū)動負載或總線。當OE為高電平時,O0~O7呈高阻態(tài),即不驅(qū)動總線,也不為總線的負載,但鎖存器內(nèi)部的邏輯操作不受影響。當鎖存允許端LE為高電平時,O隨數(shù)據(jù)D而變。當LE為低電平時,O被鎖存在已建立的數(shù)據(jù)電平。表3-274LS373工作參數(shù)表參數(shù)最小值額定值最大值單位電源電壓4.7555.25V輸入高電平電壓2——V輸入低電平電壓——0.8V輸出高電平電壓——-2.6mA輸出低電平電壓——24mA由表與表比較可以看出,74LS164的輸出條件與74LS373的輸入條件相匹配,理論上可以實現(xiàn)鎖存器對譯碼器的數(shù)據(jù)鎖存。3.4驅(qū)動電路設(shè)計3.4.1行驅(qū)動電路設(shè)計發(fā)光二極管,LED(LightEmittingDiodes),即是在在某些半導(dǎo)體材料的PN結(jié)中,注入的少數(shù)載流子與多數(shù)載流子復(fù)合時會把多余的能量以光的形式釋放出來,從而把電能直接轉(zhuǎn)換為光能。PN結(jié)加反向電壓,少數(shù)載流子難以注入,故不發(fā)光。這種利用注入式電致發(fā)光原理制作的二極管叫發(fā)光二極管,通稱LED。行驅(qū)動采用PNP三極管8550接法如圖3-4示:圖3-4行驅(qū)動器件8550的接法8550為PNP型三極管,內(nèi)部結(jié)構(gòu)如圖3-5示。發(fā)射極e接5V電源,基極接譯碼信號輸出端,集電極接輸出驅(qū)動LED點陣屏。當譯碼器端口輸出為低電平時,發(fā)射極與基極電勢差為5V-基極中帶負電的電子越過PN結(jié)擴散到發(fā)射區(qū)。發(fā)射極產(chǎn)生和電子擴散方向相反的電流,由于基極電子大量擴散到發(fā)射極集電極電子擴散到基極中形成了電流。當譯碼器端口輸出高電平時發(fā)射極與基極之間的電勢差為5V--,由于發(fā)射極與基極之間電勢差的減少基極電子向發(fā)射極擴散的電子數(shù)量減少故集電極電流也隨之減少。故8550在驅(qū)動電路中起到提供驅(qū)動電流和選通開關(guān)的作用。圖3-58550內(nèi)部結(jié)構(gòu)圖3.4.2列驅(qū)動電路設(shè)計列驅(qū)動采用ULN2803。ULN2803是一種高電壓大電流達林頓管陣列內(nèi)部結(jié)構(gòu)如圖,該陣列中的八個NPN達林頓連接晶體管是低邏輯電平數(shù)字電路(如TTL,CMOS或PMOS)和大電流高電壓的燈,繼電器,打印機錘和其他類似負載間的接口的理想器件。廣泛用于計算機,工業(yè)和消費類產(chǎn)品中。所有器件有集電極開路輸出和用于瞬變抑制的續(xù)流箝位二極管。集電極輸出功率可達50V×600mA[13]。ULN2803作為列驅(qū)動執(zhí)行的是列選的工作,當選通的列輸入高電平時其對應(yīng)的輸輸出低電平。相對應(yīng)的輸出取反,并能提供較大的灌電流來吸收行驅(qū)動流出進過顯示屏后的電流。具體電路如圖3-7所示。圖3-7列驅(qū)動原理圖3.5通信系統(tǒng)硬件設(shè)計AT89S51單片機具有全雙工串行UART通道,支持單片機進行數(shù)據(jù)的串行傳輸。除了單片機要與PC機制定通信協(xié)議,確定發(fā)送速率外還需要解決的問題就是信號電平問題。RS-232C標準規(guī)定了PC機發(fā)送數(shù)據(jù)總線TXD和接收數(shù)據(jù)總線RXD采用EIA電平,即傳送數(shù)字“1”時傳輸線上的電平在-3~-15V之間;傳送數(shù)字“0”時,傳輸線上的電平在+3~+15之間。但單片機串行口采用正邏輯TTL電平,即數(shù)字“1”時為+5V數(shù)字“0”時為-5V,所以單片機與計算機不能直接相連進行通信必須將RS-232C與TTL電平進行轉(zhuǎn)換[14]。在通用的電平轉(zhuǎn)換芯片中MAX232系列的芯片以集成度高,單+5V電源工作,只需外接5個小電容即可完成RS-232C與TTL電平之間的轉(zhuǎn)換而成為單片機系統(tǒng)中的常用芯片。在該顯示系統(tǒng)中,MAX232為通信系統(tǒng)中最重要的硬件組成部分[15]。電路如圖3-8所示:圖3-8串口通信系統(tǒng)電路圖3.6電源設(shè)計在系統(tǒng)中MAX232、74LS164、74LS373、AT89S51都需要5V的供電電壓,在系統(tǒng)開發(fā)過程中可以使用電腦USB供電。在實際的大屏幕LED顯示屏設(shè)計中,用電腦USB供電明顯不切實際。此時需要對民用的220V進行降壓整流為5V直流電壓為顯示系統(tǒng)供電。電路圖如圖3-9所示。圖3-9電源原理圖如圖所示,用220V轉(zhuǎn)12V的變壓器進行降壓后再通過一個橋式整流電路將交流電整流為直流電。最后通過5V三端穩(wěn)壓模塊LM7805得出穩(wěn)定的5V輸出。3.7級連大屏幕LED顯示屏要實現(xiàn)LED的大屏幕顯示主要采用內(nèi)部譯碼器級連和多個單片機系統(tǒng)級連的方法。譯碼器級連如圖3-10所示將第1個74LS164的Q7端接第2個74LS164的A端,將第2個74LS164的Q7端接第3個74LS164的A端,如此炮制當N塊74LS164相級連時就變?yōu)橐粋€串行輸入7×N口輸出的串并轉(zhuǎn)換器。這種級連的優(yōu)點在于一塊單片機可以同時控制更多的LED點陣顯示屏,且74LS164的價格低廉整體成本得到了降低。但是這種級連方法也存在一定的缺點,51系列的單片機的晶振頻率不高74LS164級連過多會增加一次掃描的時間從而導(dǎo)致顯示出現(xiàn)閃爍。從端口輸出的顯示數(shù)據(jù)的顯示也要作出相應(yīng)的改變。圖3-1074LSL64級連構(gòu)建大屏幕LED顯示屏的另一種方法是將以較小的LED顯示系統(tǒng)做為模塊進行級連。如圖3-11所示,由獨立的LED顯示系統(tǒng)組成一個大的LED顯示系統(tǒng)。其中各子顯示系統(tǒng)之間在功能和控制上都是相互獨立的,將一幅大屏幕畫面拆分為幾塊小畫面再分別送入到各子系統(tǒng)中,各子系統(tǒng)同步顯示便可以得到一幅大的畫面。使用這種級連的辦法可以避免51單片機晶振頻率低的弱點,更容易實現(xiàn)大屏幕的顯示。但這種方法仍然存在難點,一是各獨立的子系統(tǒng)的通信和協(xié)調(diào)性要求更高了,如果要實現(xiàn)顯示內(nèi)容的實時性必須需要上位機不斷更新顯示內(nèi)容則增加了上位機的通信數(shù)據(jù)量,逐個的單片機傳送數(shù)據(jù)也會影響整個畫面的更新速度;二是成本提高了。圖3-11由子系統(tǒng)構(gòu)建大屏幕LED顯示屏在實際應(yīng)用中通常采用內(nèi)部擴展和外部級連聯(lián)合使用的方法來構(gòu)建大屏幕LED顯示屏幕。即增加單個顯示系統(tǒng)顯示屏幕大小的同時又將單個的顯示系統(tǒng)級連。詳細硬件原理圖見附錄1。

第4章系統(tǒng)軟件設(shè)計4.1程序設(shè)計系統(tǒng)軟件采用C語言編寫,按照模塊化的設(shè)計思路設(shè)計。首先分析程序所要實現(xiàn)的功能,程序要實現(xiàn)串口通信,靜態(tài)顯示,動態(tài)顯示三大功能。其功能結(jié)構(gòu)如圖2-4所示。通信程序接收上位機數(shù)據(jù),交給主程序處理再通過控制程序選擇不同的顯示程序進行顯示。主程序的工作流程如圖4-1所示:系統(tǒng)初始化系統(tǒng)初始化從顯示數(shù)組讀取數(shù)據(jù)到顯示寄存器讀取顯示控制命令選擇顯示方式調(diào)用相應(yīng)顯示程序RI=1?起始位?接收顯示數(shù)據(jù)及控制命令將顯示數(shù)據(jù)移入顯示數(shù)組將控制命令賦值給控制字符NNYY開始中斷開始中斷返回圖4-1主程序流程圖程序開始時首先必須對單片機進行初始化,其中初始化的內(nèi)容包括:中斷優(yōu)先級的設(shè)定,中斷初始化,串行通信時通信方式的選擇和波特率的設(shè)定,各IO口功能的設(shè)定等。初始化完成后程序進入待機狀態(tài)等待中斷的發(fā)生,該程序中主要用到了兩個外部中斷源和串行中斷。外部中斷源由按鍵的電平變化觸發(fā),外部中斷主要功能是選擇LED點陣顯示屏的控制方式是由按鍵控制還是上位機控制和顯示狀態(tài)是靜態(tài)顯示還是動態(tài)顯示。串行中斷包括發(fā)送中斷和接收中斷都是由軟件觸發(fā)。中斷產(chǎn)生后由預(yù)先初始化時設(shè)定跳轉(zhuǎn)執(zhí)行中斷子程序。中斷程序設(shè)定了LED點陣顯示屏所要顯示的內(nèi)容和顯示的方式,最后執(zhí)行的是各種顯示程序。按照設(shè)定的方式和內(nèi)容顯示出所需要的內(nèi)容。4.2顯示程序的設(shè)計4.2.1LED顯示屏的顯示方式LED點陣屏顯示方式主要由靜態(tài)顯示和動態(tài)掃描顯示兩種。對靜態(tài)顯示來說,每一個發(fā)光二極管都需要一套驅(qū)動電路,一幀畫面輸入以后便可一勞永逸地顯示,除非我們改變了顯示內(nèi)容,需要重新輸出新的點陣數(shù)據(jù).這種方式系統(tǒng)原理相對簡單一些,但所需的譯碼驅(qū)動裝量很多,引線多而繁雜,不便于大屏幕的制造,成本高,其可靠性也較低.另一種動態(tài)掃描顯示是把整個LED屏幕分成若干部分,每一幅畫面的顯示是顯示完一部分后,又顯示第二部分……直到顯示完最后一部分又重新開始顯示第一部分,重復(fù)循環(huán)進行.在重復(fù)掃描速度足夠快的情況下,我們看到的就是一幅穩(wěn)定的畫面.也就是說采用動態(tài)掃描顯示需要不斷進行畫面的刷新.在這種方式下其顯示驅(qū)動電路可重復(fù)利用,引線也大大減少,從而使硬件成本降低,且屏幕上的發(fā)光二極管輪流發(fā)光,使用時的耗電量大大降低.大屏幕的制造、維護要容易許多,可靠性也增加了.兩種顯示方式的比較再結(jié)合51單片機IO口數(shù)量有限的原因決定采用動態(tài)掃描的方式進行顯示。動態(tài)掃描分為行掃描和列掃描兩種方式區(qū)別在于選通端和數(shù)據(jù)輸入端分別是行還是列。在該顯示系統(tǒng)中掃描顯示的工作原理如圖4-2所示,先選通列然后再從行送入對應(yīng)列的數(shù)據(jù),這樣從第1列到第16列循環(huán)往復(fù),只要切換的速度足夠的快利用人眼的延時特性就可以看見一幅穩(wěn)定的畫面。圖4-2掃描顯示程序原理圖4.2.2點陣數(shù)據(jù)表達方式該顯示系統(tǒng)的顯示數(shù)據(jù)采取縱向取模方向正向的數(shù)據(jù)存儲方式如圖4-3,圖4-3點陣數(shù)據(jù)原理圖即數(shù)據(jù)是縱向的,一個像素對應(yīng)一個位。8個像素對應(yīng)一個字節(jié),字節(jié)的位順序是上高下低,比如從上到下8個點的狀態(tài)是“**-”(*為黑點,-為白點),則轉(zhuǎn)換的字模數(shù)據(jù)是0x82(B1000_0010)。如圖(4-3)所示,一幅16×16的點陣畫面點陣數(shù)據(jù)按照B1B2B3……B31B32存儲。所以一幅畫面的數(shù)據(jù)量為32字節(jié)。畫面顯示時選通的第i列對應(yīng)的數(shù)組元素為第i和i+16個元素[16]。4.2.3顯示程序的設(shè)計開始顯示程序分為靜態(tài)顯示程序、左移顯示、右移顯示、上移顯示、下移顯示五種種顯示方式。其中上下左右移動程序都調(diào)用了靜態(tài)顯示程序為子程序。靜態(tài)顯示程序流程圖如圖4-4所示:開始初始化初始化讀取顯示數(shù)據(jù)讀取顯示數(shù)據(jù)依次選通列,行74LS164的CLOCK端置低,鎖存器禁止輸出依次選通列,行74LS164的CLOCK端置低,鎖存器禁止輸出對應(yīng)行數(shù)組元素與0X01相與,相與結(jié)果寫入單片機端口輸出對應(yīng)行數(shù)組元素與0X01相與,相與結(jié)果寫入單片機端口輸出數(shù)組元素右移一位,對應(yīng)74LS164CLOCK端置高數(shù)組元素右移一位,對應(yīng)74LS164CLOCK端置高N右移次數(shù)是否為8?N右移次數(shù)是否為8?YY鎖存器允許輸出鎖存器允許輸出圖4-4靜態(tài)顯示程序流程圖顯示采用的是列掃描的顯示方式,選通一列后按照列與數(shù)據(jù)元素的對應(yīng)關(guān)系第i列對應(yīng)的行數(shù)據(jù)為數(shù)組中的第i和第i+16個元素。將對應(yīng)元素的由低至高位依次從端口輸出具體做法為將元素向右邏輯移位后再與0X01相與,所得結(jié)果通過單片機端口輸出到串并轉(zhuǎn)換器的A端,鎖存在鎖存器里完成一列數(shù)據(jù)移位后再將其輸出。如此依次循環(huán)選通各列來顯示所需畫面[17]。圖4-5左右移/上下移程序流程圖動態(tài)顯示程序流程如圖4-5所示,根據(jù)顯示數(shù)據(jù)的存儲原理通過改變實際LED列與數(shù)據(jù)邏輯列的方法來實現(xiàn)程序的左右移動。顯示數(shù)據(jù)與列的對應(yīng)關(guān)系為:第i列對應(yīng)的數(shù)據(jù)為數(shù)組中i和第2×i個數(shù)據(jù)。所以當ULN2803選通時,而送入后一列的數(shù)據(jù)則相當于畫面左移移位,同理送入前一列數(shù)據(jù)相當于右移一位。如此循環(huán)則產(chǎn)生一幅穩(wěn)定運動的畫面。顯示數(shù)組中,第1至16個元素的第8至第1位LED顯示屏中的第1至第8行。同理第17至32個元素的第8至第1位LED顯示屏中的第9至第16行。所以將元素數(shù)據(jù)進行邏輯位移便能產(chǎn)生上下移動的效果[18]。4.3通信程序的設(shè)計系統(tǒng)采用串行中斷的方式進行通信。MCS-51單片機的五個中斷源兩種類型:一類是外部中斷源;另一類是內(nèi)部中斷源,包括兩個定時器/計數(shù)器(T0和T1)的溢出中斷和串行口的接收和發(fā)送中斷。MCS-51單片機設(shè)置了4個專用寄存器用于中斷控制,分別為定時器控制寄存器(TCON),串行口中斷控制器(SCON),中斷允許控制寄存器(IE),中斷優(yōu)先級控制寄存器(IP)。編程時通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)。在編輯中斷程序時首先是將中斷控制寄存器(IE)初始化。其控制位分布如表。EA為中斷允許總控制位,EA=1時CPU開發(fā)中斷;EA=1時。CPU屏蔽所有中斷。ES、ET、EX1、ET0、EX0為對應(yīng)的串行口中斷、定時器/計數(shù)器1中斷、外部中斷1中斷、定時器/計數(shù)器0中斷、外部中斷0中斷的中斷允許位。對應(yīng)位為1時允許其中斷,對應(yīng)位為0時,禁止其中斷。表4-1中斷允許寄存器格式D7D6D5D4D3D2D1D0EA——ESET1EX1ET0EX0所以初始化時設(shè)定中斷允許寄存器初值為0XFF,指令為IE=0XFF。程序設(shè)計時還要考慮到中斷優(yōu)先級的問題。因為不同的中斷同時產(chǎn)生而CPU響應(yīng)的順序取決于內(nèi)部查詢順序。設(shè)置串口工作方式1,波特率9600,計算可得計數(shù)器初值的十六進制表示為0XFD。通信協(xié)議如表4-2所示:表4-2串口通信數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)第1個字節(jié)第2至第33個字節(jié)第34個字節(jié)內(nèi)容起始標志位‘S’顯示數(shù)據(jù)控制指令作用判斷是否開始接收數(shù)據(jù)LED的顯示內(nèi)容控制LED顯示方式具體串口中斷程序流程圖如圖4-6所示,在主程序中先進行了串行中斷的初始化,初始化內(nèi)容包括了串行工作方式選擇,波特率的設(shè)定,計數(shù)初值的設(shè)定。程序開始進入中斷等待,當PC機向單片機發(fā)送數(shù)據(jù)時產(chǎn)生中斷接收允許位RI置1,將SBUF(緩沖寄存器)中的值輸入到暫存器中進行數(shù)據(jù)處理。首先判斷數(shù)據(jù)是否設(shè)定的起始標志位‘S’如果是則開始接收起始位后的33個字節(jié),不是則中斷返回繼續(xù)等待。接收到第34個字節(jié)后便將收到的數(shù)據(jù)發(fā)送回PC機進行驗證比較。RI=1?接收串口數(shù)據(jù)RI=1?接收串口數(shù)據(jù)起始位‘S’接收起始位后33位數(shù)據(jù)接收到第34位?將第2位起的32位數(shù)據(jù)發(fā)回PC機NNNYYY中斷開始中斷返回圖4-6通信程序流程圖所有軟件編寫完成后都必須經(jīng)過編譯才能被單片機識別使用。為了減小軟件的修改和優(yōu)化難度,先把各子程序?qū)憺橐粋€可單獨執(zhí)行的完整程序。各子程序編譯沒有錯誤后再輸入單片機進行驗證,這兩項都通過后再將所有的程序整合到一起形成一個完整的程序再進行編譯和驗證。詳細程序見附錄2。

第5章系統(tǒng)調(diào)試硬件制作和軟件編寫過后,得出實物如圖5-1所示。實物完成后必須對其進行調(diào)試,檢查設(shè)計功能是否實現(xiàn)了。軟件硬件完成后開始進行調(diào)試。調(diào)試可分為硬件調(diào)試,軟件調(diào)試和系統(tǒng)聯(lián)合調(diào)試。圖5-1實物圖5.1系統(tǒng)硬件部分調(diào)試方法硬件調(diào)試主要是調(diào)試各部分的焊接是否合格和各芯片的輸出輸入電壓是否符合設(shè)計要求,最后測試各硬件部分能否完成設(shè)計功能。因此把硬件調(diào)試按照以下四部分分步來進行:(1)測試所有焊點是否有短路和虛焊的現(xiàn)象存在;(2)通電測試所有硬件芯片的輸入輸出電壓是否在設(shè)計要求的范圍內(nèi);(3)測試ISP下栽線的功能是否能夠?qū)崿F(xiàn);(4)測試串口系統(tǒng)的通信功能是否能夠?qū)崿F(xiàn)。由于最重要的顯示系統(tǒng)功能的測試需要軟件配合所以在硬件調(diào)試部分只測試單片機復(fù)位電平,功能部分測試放在系統(tǒng)聯(lián)合調(diào)試部分來完成。5.1.1短路與虛焊檢測檢測工具為萬用表,使用萬用表的短路報警功能,逐個測試相臨的兩個焊點檢測是否短路。按照電路圖檢測需要連接的兩點是否短路來檢測是否已經(jīng)連接上,以此來檢測虛焊的情況。檢測和修改完成后為下一步通電檢測排除了短路的危險和由于虛焊引起檢測結(jié)果不真實的麻煩。5.1.2上電測試由于系統(tǒng)測試時是采用USB電源為系統(tǒng)電源,所以電源輸入都為5V。顯示系統(tǒng)中單片機、譯碼器,鎖存器,驅(qū)動電路的電源電壓均要求為5V所以可同時直接接入。上電后首先觀察電路是否有過熱,異味,冒煙的現(xiàn)象出現(xiàn)。經(jīng)過觀察,沒有這些現(xiàn)象出現(xiàn)。然后測試各器件的電源,接地及一些電平應(yīng)該固定的端口的電壓。測試的結(jié)果為:各器件電源端在4.3V~4.8V之間滿足器件的電源電壓要求,單片機端口在未接負載時端口電壓為4.5V。5.1.3串口調(diào)試串口部分的作用為單片機與PC機之間通信,要檢查硬件是否正常工作可以采用將MAX232芯片的單片機端輸出口與輸入口直接相連的辦法來測試。具體電路圖如圖5-2所示,將MAX232的第10端和第9端直接短接。功能上表示將單片機的輸出口與輸入口直接相連,單片機收到數(shù)據(jù)的同時就將數(shù)據(jù)發(fā)送回PC機。如果發(fā)送的數(shù)據(jù)能夠被接收則證明串口通信部分的硬件是正常的?!?9】將串口與電腦COM1相接,通過串口調(diào)試助手發(fā)送不同位數(shù)的數(shù)據(jù)再在把發(fā)送的數(shù)據(jù)與接收數(shù)據(jù)相比較。圖5-2串口硬件調(diào)試5.2系統(tǒng)軟件調(diào)試方法由于已經(jīng)進行了硬件調(diào)試,所以軟件調(diào)試主要是軟件編譯和將各功能塊程序分別寫入以驗證其功能的可實現(xiàn)性。在進行功能調(diào)試前必須用KEILC對所有程序進行編譯,編譯成功生產(chǎn)可執(zhí)行的.hex后方可進行功能測試。其中測試串口程序的功能是否完善不但要連接單片機系統(tǒng)還要借助串口調(diào)試工具。串口調(diào)試工具選用的是串口調(diào)試助手,其功能是按照設(shè)定的串口、波特率向單片機發(fā)送數(shù)據(jù)和接收單片機向PC機發(fā)送的數(shù)據(jù)。并且能把發(fā)送和接收的數(shù)據(jù)內(nèi)容顯示在狀態(tài)欄內(nèi)。因此只要設(shè)定PC機向單片機發(fā)送的內(nèi)容和單片機向PC機發(fā)送的內(nèi)容就可以通過串口調(diào)試助手驗證串口通信是否準確,是否滿足功能要求。串口程序的設(shè)計為:設(shè)定波特率位9600,以0XAA為起始標志位,單片機接收自起始標志位后的32位十六進制數(shù)再發(fā)送會PC機。測試程序時設(shè)定波特率為9600,選擇串口1,無校驗,8位數(shù)據(jù)。PC機向單片機發(fā)送的內(nèi)容為aa11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff。PC機收到的數(shù)據(jù)為11223344556677889900AABBCCDDEEFF11223344556677889900AABBCCDDEEFF。測試表明串口程序和串口電路實現(xiàn)了設(shè)計目的。再進行數(shù)次不同數(shù)據(jù)的發(fā)送,接收到的數(shù)據(jù)也驗證了設(shè)計要求的實現(xiàn)。圖5-3串口調(diào)試圖串口程序測試成功后為顯示程序提供了準確的顯示內(nèi)容。余下得各種顯示程序和中斷程序都編譯成功后只有聯(lián)合硬件才能驗證其功能的可行性。5.3系統(tǒng)聯(lián)合調(diào)試及結(jié)果經(jīng)過硬件調(diào)試和軟件調(diào)試,排除了硬件的連接問題和驗證了串口功能的可實現(xiàn)性。其余功能的軟件便可以在此基礎(chǔ)上調(diào)試驗證其功能的正確性。聯(lián)合調(diào)試的具體方法如下:(1)編寫一個逐點掃描的顯示程序,再結(jié)合硬件電路運行。這樣做的目的在于檢測各器件是否能夠正常運行和顯示屏的各個LED燈是否有損壞。結(jié)果顯示顯示屏中只有邊角出有一個LED燈被燒壞,其他器件邏輯功能運行正常。(2)將靜態(tài)顯示子程序與各種動態(tài)顯示程序結(jié)合硬件電路進行調(diào)試。系統(tǒng)運行時顯示如圖5-1所示,顯示圖像比較清晰,各動態(tài)顯示效果也能夠?qū)崿F(xiàn)。但顯示存在兩個問題。一是發(fā)光點的下方會出現(xiàn)一個很微弱的亮點,影響了整體的顯示效果。二是同一列的LED燈被點亮的數(shù)量與其亮度出反比,即如果同一列的燈都被點亮則亮度比只點亮幾個時要暗一點。(3)將串口通信,顯示,硬件聯(lián)合調(diào)試。按照設(shè)定的通信協(xié)議,先由PC機向單片機發(fā)送起始控制字s,接著再發(fā)送32比特的顯示數(shù)據(jù),最后發(fā)送控制顯示方式的顯示控制字。再發(fā)送不同的顯示數(shù)據(jù)和顯示控制字,觀察各種顯示方式的運行情況和各種顯示方式之間的切換情況。結(jié)果是顯示屏執(zhí)行顯示控制指令,顯示所發(fā)送的內(nèi)容。5.4調(diào)試結(jié)果分析對調(diào)試中出現(xiàn)的問題進行了分析,得出以下原因和修改辦法。(1)硬件的工作表現(xiàn)出不穩(wěn)定,主要是表現(xiàn)在LED顯示屏的驅(qū)動電路部分和單片機系統(tǒng)部分。具體表現(xiàn)為單片機接負載后電壓被拉低值1.7V左右,無法滿足譯碼電路的輸入要求。顯示時會有一些行驅(qū)動的輸出不夠設(shè)計指標,導(dǎo)致所驅(qū)動的那一行在顯示屏上表現(xiàn)為選定的點不能夠很好區(qū)分,圖像出現(xiàn)模糊。分析造成這一現(xiàn)象的原因為,焊接時三極管8550遭到了高溫損壞以致工作不穩(wěn)定和焊接的電路不夠牢靠,還有就是8550的e端所接電壓過高。修改辦法為將單片機輸出端口外接5K的上拉電阻,替換損壞三極管。(2)虛點的產(chǎn)生與軟件和三極管電壓有關(guān)。修改辦法是將軟件中的延時時間調(diào)至恰當值,將8550的e端電壓降至3V左右。經(jīng)過調(diào)試和修改,系統(tǒng)實現(xiàn)了題目所要求的中英文顯示,動態(tài)顯示及上位機通信與控制的要求。

結(jié)論經(jīng)過一段時間的工作,終于完成了基于51單片機的LED顯示系統(tǒng)的設(shè)計,項目所要求的功能全部達到。通過這次設(shè)計收獲頗多,不僅是所作題目涉及到的軟硬件知識還有更為重要的實際經(jīng)驗和過程中所發(fā)現(xiàn)的問題。接手題目之后從互聯(lián)網(wǎng)上對LED進行了詳細的資料收集,從技術(shù)和產(chǎn)業(yè)的兩方面對LED進行了了解。通過了解我認識到LED是一門當今應(yīng)用非常廣泛的技術(shù),整個產(chǎn)業(yè)每年都會有巨大的產(chǎn)值而且技術(shù)還在不斷發(fā)展和創(chuàng)新[20]。從設(shè)計之初就確定了參照大屏幕顯示屏的實現(xiàn)方法和實際情況設(shè)計一款小屏幕的LED點陣顯示屏。在查閱了大量的大屏幕顯示屏資料后確定了題目的設(shè)計方案。整個設(shè)計采用AT89S51做核心控制器,74LS164和74LS373組成譯碼電路,三極管8550和ULN2803做行和列驅(qū)動。在實現(xiàn)這一設(shè)計的過程中所遇到的問題和困難給我留下了寶貴的經(jīng)驗和深刻教訓(xùn)。這些經(jīng)驗和教訓(xùn)是:(1)設(shè)計之前應(yīng)該進行大量的資料收集和分析,確定一個清晰的設(shè)計思路;(2)器件選擇時要詳細閱讀器件使用手冊,不但要考慮器件的功能實現(xiàn)還要考慮器件在整個系統(tǒng)中的兼容性;(3)硬件的系統(tǒng)的建立必須合理和穩(wěn)定,實物建立之前最好進行仿真這樣才能為軟件提供一個可靠的試驗平臺;(4)軟件的編寫不但要實現(xiàn)功能還要不斷的優(yōu)化、簡練、易讀。隨著課題的進行,對LED的了解也越來越深入。認為LED技術(shù)也會進一步發(fā)展,LED應(yīng)用將會更加廣泛??梢栽O(shè)想利用LED的高穩(wěn)定性和低能耗,再與無線通信技術(shù)相結(jié)合在沙漠深處或者人跡罕至的雪山之顛樹立一塊依靠太陽能充電,通過無線傳輸方式更改顯示內(nèi)容的信息板為登山者提供指示和天氣信息,為沙漠迷路的人指引方向。設(shè)計結(jié)束了,但學(xué)習(xí)還在繼續(xù)。我相信通過此次設(shè)計所得到的知識、心得、經(jīng)驗?zāi)酥粮惺芏紩屛以谝院蟮娜兆永锸芤娣藴\。

致謝這次能夠圓滿完成畢業(yè)設(shè)計我首先要感謝我的指導(dǎo)老師***老師、***老師、***老師,感謝他們在畢業(yè)設(shè)計期間對我的指導(dǎo)、勉勵、和督導(dǎo)。同時我要感謝大學(xué)四年里教過我課程的老師們,感謝他們對我知識增長所付出的辛勤勞動。我還要感謝全班同學(xué),感謝他們大學(xué)四年所做的所有令人感動的、幽默的、滑稽的、荒誕的事情。我所在的實驗室的同學(xué),我也要感謝你們。雖然大家來自不同專業(yè)相處時間也不長,但大家共同的愛好相同的目標使得大家互相扶持共同努力。最后我要感謝我所住宿舍的管理員阿姨們,感謝她們不論多晚回去都給我們開門讓我們不至于露宿街頭。還有學(xué)校的保安和廚師,你們是我安全完成畢業(yè)設(shè)計的保障。

參考文獻[1]關(guān)積珍.\o"LED顯示屏發(fā)展狀況及趨勢"LED.顯示屏發(fā)展狀況及趨勢[J].世界電子元器件,2000,(02):277-301.[2]關(guān)積珍,陸家和.我國LED顯示屏技術(shù)和產(chǎn)業(yè)發(fā)展及展望.現(xiàn)代顯示,2004,(02):34-37.[3]JeyamkondanS,JayasDS,HollyRA.16x16dotmatrixLEDhas4mmprofile.ElectronicsWeekly,11/26/2003Issue2125,36-36,1/9p,1c;(AN11842012).[4]繆思恩.LED大屏幕顯示電路設(shè)計[J].電子技術(shù)應(yīng)用,1996,(08):56-77.[5]DaveJackson.關(guān)于DSP芯片的問與答.今日電子,1998,(12):1-7.[6]盧彌堅.主從分布式LED大屏幕顯示系統(tǒng)[J].電腦與信息技術(shù),1997,(04):6-13.[7]高勝東,梁采,張宏富.一種LED大屏幕顯示系統(tǒng)[J].成都氣象學(xué)院學(xué)報,1998,(03):108-120.[8]張全福.匯編語言程序設(shè)計實驗教學(xué)改革與探索.教學(xué)研究,2005,(06):3-5.[9]文哲雄.用單片機控制LED顯示屏[D].佛山:佛山科學(xué)技術(shù)學(xué)院,1995.[10]彭寧,只佩華.單片機對LED大屏幕顯示的控制系統(tǒng)[J].河北大學(xué)學(xué)報(自然科學(xué)版),1993,13(3):86-89.[11]陳玉華,王銘霞.LED大屏幕顯示電路的設(shè)計[J].大連海事大學(xué)學(xué)報,1997,(03):55-56.[12]鄭剛,李宇成.LED大屏幕顯示系統(tǒng)的設(shè)計[J].北方工業(yè)大學(xué)學(xué)報,2001,(03):43-47.[13]李元生.LED光柱專用驅(qū)動器[J].家庭電子,2005,(04):1-7.[14]王亭,李瑞濤,宋召清.在Windows下PC機和單片機的串行通信[J].微型機與應(yīng)用,2000(1):25-27.[15]陳新忠.基于RS232總線的單片機多機通信軟件設(shè)計[J].現(xiàn)代電子技術(shù),2002,(03):56-78.[16]喬世杰.小波圖像編碼中的對稱邊界延拓法[J].中國圖像圖形學(xué)報,2000,5(9):725-729.[17]李桂平.LED屏幕顯示器的設(shè)計[J].零陵師范學(xué)院學(xué)報,2002,(9):367-380.[18]DavidFRogers.Computergraphicsalgorithm[M].Beijing:ChinaMachinePress,2002:97-99.[19]Marston,R..Radio-Electronics,WorkingwithLEDdisplaydrivers[J].Mar1992,Vol.63Issue3,65,8p,3charts,23diagrams;(AN9206290756).[20]Regenold,Stephen.LEDsAreStillPopular(andImproving)afterAllTheseYears[Z].Sep2004,Vol.18Issue9,44-44,1/7p,1c;(AN14525210).

附錄1:硬件原理圖

附錄2:設(shè)計程序//主程序主要為各功能子程序提供運行平臺,子程序分為顯示程序,特效顯示程序,//按鍵輸入中斷子程序//#include<reg51.h>//#include<absacc.h>//#include<intrins.h>#include<AT89x52.h>//#include<regx52.h>#defineCOUNT34#defineW0X01unsignedcharbuffer[COUNT];unsignedcharpoint;sbitA1=P1^0;//定義第一列對應(yīng)端口sbitA2=P1^1;//第二列sbitA3=P1^4;//第一行sbitA4=P1^5;//第二行sbitCLK_L=P1^2;//列移位時鐘上升沿觸發(fā)sbitCLEAR_L=P1^3;//列清除控制位低電平有效sbitCLK_H=P1^6;//行移位時鐘sbitCLEAR_H=P1^7;//行清除控制位低電平有效sbitEN=P2^0;sbitP21=P2^1;sbitOE=P2^2;//三態(tài)允許控制端低電平有效sbitLE=P2^3;//鎖存允許端unsignedcharcodeH1[16]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},H2[16]={0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0};//分別暫存行(H)列(L)所要顯示的數(shù)據(jù)unsignedcharL1,L2,i,command,k,j;charz,l,m,n,x;unsignedchardataziku[32];unsignedcharidatasort[32];unsignedintdatatemp;unsignedcharcodeBmp019[]=//靜態(tài)顯示內(nèi)容{/*源文件/文字:壽寬×高(像素):16×16字模格式/大小:單色點陣液晶字模,縱向取模,字節(jié)正序/32字節(jié)數(shù)據(jù)轉(zhuǎn)換日期:2007-5-3116:26:59*/0x00,0x22,0x22,0x2A,0x2A,0x2A,0x2F,0xFA,0x2A,0x2A,0x2A,0x2B,0x2A,0x2A,0x22,0x00,0x04,0x04,0x08,0x10,0x20,0xC0,0x20,0x5C,0x48,0x42,0x41,0xFE,0x40,0x40,0x40,0x00};//*************************************************************//串口中斷程序//功能:從PC機接收數(shù)據(jù),當接收滿34位后將接收到的數(shù)據(jù)發(fā)送回PC機//*************************************************************com_interrupt(void)interrupt4using3{unsignedcharRECEIVR_buffer;if(RI==1){RECEIVR_buffer=SBUF;RI=0;TI=0;if(point==0){if(RECEIVR_buffer=='s')point++;elsepoint=0;}if(point>0&&point<35)buffer[point++]=RECEIVR_buffer;elsepoint=0;}//TI=0;if(point==35&&RI==0){ command=buffer[34];point=0; x=0;for(k=2;k<34;k++){SBUF=buffer[k]; sort[k-2]=buffer[k]; while(TI==0);TI=0;} }}voiddelay(intk)//延時程序{while(k--);}//**********************************************************************//靜態(tài)顯示程序//功能:將顯示數(shù)據(jù)處理后,控制串并轉(zhuǎn)換器并行輸出控制LED顯示//**********************************************************************voiddisplay()//顯示子程序{EN=1;P21=1;CLEAR_L=0; delay(5); CLEAR_L=1;for(i=0;i<16;i++){CLK_L=0;A1=H1[i];A2=H2[i];CLK_L=1; L1=ziku[i+z]; L2=ziku[i+16+z];if(i+z<0||i+z>15)continue; OE=1; LE=1; if(L1==0x00&&L2==0x00) continue; for(j=0;j<8;j++){CLK_H=0; if(L1&W==1)A3=0;elseA3=1;if(L2&W==1) A4=0;elseA4=1; CLK_H=1; L1>>=1; L2>>=1;}OE=0; LE=0; delay(110); CLEAR_H=0; delay(1); CLEAR_H=1;}}//右移顯示//功能:使得LED產(chǎn)生畫面右移得效果voidsdisplay_left(){if(m==0){ z++; m=30; } if(z==15) { l=0; z=0; }display(); m--;}//**********************************************************************//右移顯示//功

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論