




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要本文以STC89C52RC為核心控制器,用四塊8×8共陽(yáng)型點(diǎn)陣模塊構(gòu)建一個(gè)16×16的LED電子顯示屏,實(shí)現(xiàn)滾動(dòng)漢字的的動(dòng)態(tài)顯示。驅(qū)動(dòng)局部使用兩個(gè)移位存儲(chǔ)器74HC595和兩個(gè)移位存放器74HC164組成,主要負(fù)責(zé)列掃描和行掃描。行控制電路采用8550三極管放大電流,加大掃描強(qiáng)度,提高點(diǎn)陣顯示屏亮度。軟件控制程序采用C語(yǔ)言編寫(xiě),通過(guò)設(shè)置LED發(fā)光二極管陽(yáng)極與陰極電平的上下來(lái)控制它的亮滅。點(diǎn)陣顯示的字符可以直接在字模軟件中提取,字體顯示方式采用動(dòng)態(tài)顯示,使文字可以實(shí)現(xiàn)左移、上移、下移的動(dòng)態(tài)顯示效果。實(shí)驗(yàn)說(shuō)明,該系統(tǒng)的總體設(shè)計(jì)完成了LED點(diǎn)陣顯示滾動(dòng)漢字和數(shù)字的功能,且顯示效果清晰,性能穩(wěn)定,無(wú)拖尾現(xiàn)象。關(guān)鍵詞:STC單片機(jī)16*16點(diǎn)陣顯示動(dòng)態(tài)顯示AbstractThisarticlewithSTC89C52RCasthecorecontroller,usingfour8x8totalYangtypelatticemodulestobuilda16x16LEDelectronicdisplayscreen,realizethedynamicdisplayofthescrollofChinesecharacters.Drivepartusedtwoshiftmemory74hc595areneededandshiftregister74hc164composition,ismainlyresponsibleforscanandlinescan.Linecontrolcircuitadopts8550triodeamplifier,currentscanintensity,improvethedotmatrixdisplayscreenbrightness.SoftwarecontrolprogramwrittenusingClanguage,bysettingtheanodeandcathodeLEDlight-emittingdiodes(leds)levelofhighandlowtocontrolthelightoutofit.Dotmatrixdisplayofcharacterscanbedirectlyextractedinthefontsoftware,fontdisplaymodeusingdynamicdisplay,makethetextcanrealizethedynamicdisplayoftheleft,moveupanddown.ExperimentsshowthatthesystemoveralldesigntocompletethefunctionofLEDdotmatrixdisplayscrollofChinesecharacters,anddisplayeffectisclear,stableperformance,notrailingphenomenon.Keywords:STCmicrocontroller16*16dotmatrixdisplaydynamicdisplay目錄TOC\o"1-3"\h\u7271緒論 1235701.1課題背景 1302061.2研究目的和意義 1322071.3論文主要內(nèi)容 1210742系統(tǒng)硬件電路設(shè)計(jì) 327742.1系統(tǒng)結(jié)構(gòu)的設(shè)計(jì) 344312.2行驅(qū)動(dòng)電路設(shè)計(jì) 3141532.3列驅(qū)動(dòng)電路設(shè)計(jì)4319622.4單片機(jī)最小系統(tǒng)電路 568062.5單片機(jī)芯片選擇 6305342.6LED點(diǎn)陣顯示器 9317372.7取字模軟件介紹 10103123系統(tǒng)軟件局部設(shè)計(jì) 1251403.1主程序設(shè)計(jì) 12242423.2顯示驅(qū)動(dòng)程序設(shè)計(jì) 13297673.3顯示屏刷新率的計(jì)算 13135544系統(tǒng)調(diào)試及性能分析 1424674.1系統(tǒng)調(diào)試 14139944.2hex文件的生成 1483754.3仿真調(diào)試 16306814.4調(diào)試中出現(xiàn)的問(wèn)題 16144725結(jié)論與展望18210965.1結(jié)論1898375.2展望1825891參考文獻(xiàn) 1922950附錄1201883附錄2211緒論1.1課題背景隨著時(shí)代的不斷開(kāi)展,廣告顯示牌在宣傳中發(fā)揮著越來(lái)越重要的角色,無(wú)論是在公交車(chē)站,地鐵站,股票市場(chǎng),或者學(xué)校都不能缺少它,但是,傳統(tǒng)的霓虹燈,無(wú)論是在顯示、功耗都不能滿足當(dāng)前社會(huì)的需要。因此,改良傳統(tǒng)霓虹燈是必要的。正是因?yàn)閱纹瑱C(jī)超越性的開(kāi)展和高亮度LED發(fā)光管的崛起,使得高亮度的點(diǎn)陣顯示屏壟斷了市場(chǎng)。LED顯示設(shè)備與傳統(tǒng)的顯示設(shè)備相比,它具有鮮明的色彩,多樣化的顯示方式,高強(qiáng)度的亮度顯示,并且LED顯示屏上的文字或圖像可以隨意改動(dòng),使用靈活方便。同時(shí),點(diǎn)陣屏幕視野開(kāi)闊、顯示方式又靈活多變,因此,被很多企業(yè)所應(yīng)用。如:銀行、股市、商業(yè)廣告和文化娛樂(lè)場(chǎng)所等。1.2研究目的和意義本設(shè)計(jì)的主要研究目是讓我們熟練掌握并清楚的知道單片機(jī)點(diǎn)陣的設(shè)計(jì)原理,并且讓我們把大學(xué)期間所學(xué)到的理論知識(shí)充分應(yīng)用于實(shí)踐,使我們更深刻的認(rèn)識(shí)了理論與實(shí)踐相結(jié)合的重要性。通過(guò)設(shè)計(jì),我們學(xué)會(huì)了如何利用計(jì)算機(jī)軟件和硬件的開(kāi)發(fā)工具,并積累了珍貴的經(jīng)驗(yàn),為今后在相關(guān)行業(yè)工作積累了豐富的實(shí)踐經(jīng)驗(yàn)。目前我國(guó)信息技術(shù)的開(kāi)展越來(lái)越快,LED顯示屏作為顯示平面功能也更廣泛。但是不管LED技術(shù)開(kāi)展再迅速,我國(guó)的生產(chǎn)水平和外國(guó)先進(jìn)水平相比起來(lái)還是存在一定的距離。因此,研究這一課題為我們未來(lái)的就業(yè)或?qū)ED顯示屏技術(shù)的開(kāi)展有很大的幫助。1.3論文主要內(nèi)容本課題設(shè)計(jì)主要是利用單片機(jī)來(lái)控制一個(gè)16×16點(diǎn)陣顯示屏,并且LED顯示屏各點(diǎn)能夠高亮度且均勻顯示,要求文字在顯示過(guò)程中平穩(wěn)、清晰不拖隱,文字的顯示樣式有循環(huán)的左移、上移。根據(jù)任務(wù)要求,具體的內(nèi)容如下:1.查閱點(diǎn)陣的相關(guān)文獻(xiàn)資料,學(xué)習(xí)最簡(jiǎn)單點(diǎn)陣的使用方法;2.將單一的8*8點(diǎn)陣擴(kuò)展成16×16點(diǎn)陣,利用Proteus軟件對(duì)硬件系統(tǒng)電路進(jìn)行仿真;3.利用keil軟件編寫(xiě)單片機(jī)程序,編譯鏈接生成.hex文件,然后下載到Proteus軟件中進(jìn)行硬件仿真;4.硬件電路仿真調(diào)試成功后制作實(shí)物,并且要使實(shí)物能夠完本錢(qián)設(shè)計(jì)所要實(shí)現(xiàn)的要求。2系統(tǒng)硬件電路設(shè)計(jì)2.1系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)系統(tǒng)的整體設(shè)計(jì)是將單片機(jī)最小系統(tǒng)、行驅(qū)動(dòng)電路、列驅(qū)動(dòng)電路、LED點(diǎn)陣顯示電路,運(yùn)用單片機(jī)的智能化,將每個(gè)驅(qū)動(dòng)模塊系統(tǒng)的組合在一起,總體設(shè)計(jì)框圖如圖2.1所示。圖2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)總圖2.2行驅(qū)動(dòng)電路設(shè)計(jì)行驅(qū)動(dòng)電路的設(shè)計(jì)采用芯片74HC164,并利用三極管8550放大驅(qū)動(dòng)電流,加大掃描強(qiáng)度,提高點(diǎn)陣屏的亮度。由于單片機(jī)的輸出端口有限,如果要控制16*16的LED點(diǎn)陣顯示那么需要32個(gè)端口,這樣就占用了單片機(jī)很多的I/O口,并且對(duì)單片機(jī)的擴(kuò)展也帶來(lái)很大的麻煩,影響I/O口的其他擴(kuò)展功能。而行驅(qū)動(dòng)電路僅用7~9端口可以實(shí)現(xiàn)控制顯示,因此,使用行驅(qū)動(dòng)電路大大減少占用I/O口擴(kuò)展其他功能,為單片機(jī)節(jié)約了大量的空間。74HC164是屬于8位邊沿觸發(fā)移位存放器的高速硅門(mén)CMOS器件,數(shù)據(jù)采用串入并出,并且數(shù)據(jù)經(jīng)過(guò)兩個(gè)輸入端〔A或B〕串行輸入;兩個(gè)端口都可作為數(shù)據(jù)輸入端,可以相互交替來(lái)控制另外一個(gè)端口。兩個(gè)輸入端都可接高電平并且可以連接在一起,但是一定不能懸空處理。主復(fù)位(CLR)如果是低電平,那么其它輸入端均無(wú)效,此時(shí)也去除了存放器,致使所有的輸出為低電平。其引腳排列圖如下列圖2.2所示。圖2.274HC164引腳排列2.3列驅(qū)動(dòng)電路設(shè)計(jì)列驅(qū)動(dòng)電路是采用集成芯片74HC595組成,具有一個(gè)8位串入并出的移位存放器還有一個(gè)8位輸出鎖存器的特殊結(jié)構(gòu),移位存放器和輸出鎖存器是相互獨(dú)立控制的,這樣的目的是先移好位,再存儲(chǔ)數(shù)據(jù),并且在移位時(shí),輸出的數(shù)據(jù)能夠保持。74HC595的輸入端擁有8個(gè)串行移位存放器,8個(gè)移位存放器的輸出都和一個(gè)鎖存器相連接。其引腳排列如圖2.2所示。圖2.274HC595引腳排列引腳SER是串行數(shù)據(jù)的輸入端,SRCLR為直接清零端,它的優(yōu)先級(jí)別最高。RCK是移位時(shí)鐘脈沖,當(dāng)脈沖到達(dá)上升沿時(shí)開(kāi)始移位,同時(shí)把SER的下一個(gè)數(shù)據(jù)輸入到最低位。移位存放器時(shí)鐘〔SRCLK〕和數(shù)據(jù)存儲(chǔ)存放器時(shí)鐘〔RCLK〕兩個(gè)都屬于上升沿觸發(fā)有效。假設(shè)兩個(gè)時(shí)鐘相連在一起工作,那么移位存放器會(huì)始終超前于存儲(chǔ)存放器一個(gè)時(shí)鐘脈沖。2.4單片機(jī)最小系統(tǒng)電路單片機(jī)最小系統(tǒng)是由晶振電路和復(fù)位電路兩局部組成,其總體電路圖如下列圖2.4所示。圖2.4單片機(jī)最小系統(tǒng)圖〔1〕時(shí)鐘電路系統(tǒng)的時(shí)鐘電路設(shè)計(jì)采用內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。STC單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反應(yīng)元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容C1和C2構(gòu)成并聯(lián)諧振電路,接在放大器的反應(yīng)回路中。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響震蕩器頻率的上下、震蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容值約為30pF?!?〕復(fù)位電路復(fù)位是對(duì)單片機(jī)進(jìn)行初始化操作,即把特殊功能存放器的數(shù)據(jù)刷新為默認(rèn)數(shù)據(jù),單片機(jī)在運(yùn)算過(guò)程中如果遇到外界干擾,存放器中的數(shù)據(jù)就會(huì)發(fā)生混亂,以至于程序不能正常運(yùn)行,這樣就需要單片機(jī)復(fù)位,以使程序重新開(kāi)始。復(fù)位方式一般分兩種:上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位,本設(shè)計(jì)中的復(fù)位電路既可實(shí)現(xiàn)上電自動(dòng)復(fù)位也可實(shí)現(xiàn)手動(dòng)復(fù)位,其電路的組成是在RST復(fù)位輸入引腳上接一個(gè)電容至VCC端,還有按鍵,下接一個(gè)電阻到地即可。2.5單片機(jī)芯片選擇單片機(jī)是把微型計(jì)算機(jī)主要局部集成在一塊芯片上的單芯片微型計(jì)算機(jī)。單片機(jī)STC89C52由CPU、存儲(chǔ)器〔包括RAM和ROM〕、I/O接口、定時(shí)器/計(jì)數(shù)器、中斷控制功能等均集成在一塊芯片上,片內(nèi)各功能通過(guò)內(nèi)部總線相互連接起來(lái)?!?〕主要特性:●8位CPU●內(nèi)置4K字節(jié)可重復(fù)編程Flash●壽命:1000寫(xiě)/擦循環(huán)●全靜態(tài)工作:0Hz-24Hz●三級(jí)程序存儲(chǔ)器鎖定●128*8位內(nèi)部RAM●32根可編程I/O線●兩個(gè)16位定時(shí)器/計(jì)數(shù)器●5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)●可編程串行通道●低功耗的閑置和掉電模式●片內(nèi)振蕩器和時(shí)鐘電路〔2〕單片機(jī)的管腳如圖2.5所示。圖2.5STC89C52的引腳圖VCC:供電電壓GND:接地P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8個(gè)TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)“1”時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,他可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLISH進(jìn)行校驗(yàn)時(shí),P0輸出源碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個(gè)TTL門(mén)電流。P1口管腳寫(xiě)入“1”后,被內(nèi)部上拉位高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLISH進(jìn)行校驗(yàn)時(shí),P1口作為第8地址接受。P2口:P2口位一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。串口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高8位。在給地址“1”時(shí),他利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部8位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出器特殊功能存放器的內(nèi)容。P2口在FLISH編程和校驗(yàn)時(shí)接受高8位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接受輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,他們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也作為STC89C51的一些特殊功能口,如下所示:P3.0RXD(串行輸入口);P3.1TXD〔串行輸出口〕;P3.2/INT0〔外部中斷0〕;P3.3/INT1〔外部中斷1〕;P3.4T0〔計(jì)時(shí)器0外部輸入〕;P3.5T1〔計(jì)時(shí)器1外部輸入〕;P3.6/WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通);P3.7/RD〔外部數(shù)據(jù)存儲(chǔ)器讀選通〕;P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào);RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址所存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLISH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定是目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器是,將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高,如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的的選通信號(hào)。在有外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)講不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),那么在此期間外部存儲(chǔ)器〔0000H-FFFFH〕,不管內(nèi)部是否有程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖存為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。XTAL1:反響放大振蕩器的輸入及內(nèi)部時(shí)鐘工作電路的輸入XTAL2:來(lái)自反響振蕩器的輸出。2.6LED點(diǎn)陣顯示器1LED點(diǎn)陣顯示器的介紹LED點(diǎn)陣顯示器是使用發(fā)光二極管點(diǎn)陣模塊組成的平面式顯示屏幕。它具有很多優(yōu)點(diǎn):效率高、使用壽命長(zhǎng)、顯示清晰亮眼、色彩豐富鮮明。自二十一世紀(jì)初,隨著LED技術(shù)的不斷提高與創(chuàng)新,在國(guó)外得到了廣泛的利用。LED點(diǎn)陣顯示器的種類(lèi)有多種:根據(jù)陣列分為5×7,5×8,6×8,8×8,根據(jù)發(fā)光顏色可分為單色,雙色,三色,根據(jù)極性的排列方式可分為共陽(yáng)極和陰極。LED〔8*8〕點(diǎn)陣顯示的根本原理:8*8的點(diǎn)陣是由64個(gè)發(fā)光二極管組成,每個(gè)二極管都是分布在行線與列線的交點(diǎn)上,當(dāng)某一列的電平為1,某一行為0時(shí),那么對(duì)的二極管就會(huì)點(diǎn)亮;如圖2.6所示。圖2.68*8點(diǎn)陣LED根據(jù)驅(qū)動(dòng)方式的不同,LED點(diǎn)陣屏分為計(jì)算機(jī)驅(qū)動(dòng)型和單片機(jī)驅(qū)動(dòng)型兩種工作方式:計(jì)算機(jī)驅(qū)動(dòng)型的特點(diǎn):LED點(diǎn)陣顯示屏由計(jì)算機(jī)驅(qū)動(dòng)的,不僅可以顯示字符,圖形,還可以顯示多媒體彩色視頻內(nèi)容,但其本錢(qián)高。單片機(jī)驅(qū)動(dòng)型的特點(diǎn):體積小,重量輕,本錢(qián)低,無(wú)線電愛(ài)好者有一定根底,經(jīng)過(guò)一個(gè)簡(jiǎn)單的學(xué)習(xí)后,只需要購(gòu)置一些元器件,就可以使用LED點(diǎn)陣屏了。2用8*8LED點(diǎn)陣構(gòu)成16*16LED點(diǎn)陣在現(xiàn)實(shí)應(yīng)用中,用一個(gè)16×16的點(diǎn)陣就可以完整的顯示一個(gè)漢字。下面就以4塊8*8點(diǎn)陣構(gòu)成的16×16點(diǎn)陣來(lái)實(shí)現(xiàn)本課題設(shè)計(jì)的顯示任務(wù)。構(gòu)建16*16點(diǎn)陣時(shí)首先在Proteus軟件的元件庫(kù)中找到一塊“Matrix-8x8-red”元器件,然后復(fù)制四塊該元件并移到編輯窗口中。在放置元件時(shí),要注意把元件左轉(zhuǎn)90°,使其水平放置,這樣它的行線和列線分別為左面8個(gè)引腳和右邊8個(gè)引腳。然后開(kāi)始對(duì)四個(gè)元器件對(duì)應(yīng)的行線和列線分別進(jìn)行標(biāo)號(hào),每一條行線和列線的引腳都接一行16個(gè)LED。但要注意將行線和列線的引腳都要設(shè)計(jì)長(zhǎng)一點(diǎn),為方便我們連線使用??梢钥吹皆瓉?lái)的連接線已被自動(dòng)隱藏,而交叉留下的點(diǎn)可以不去管它。然后我們選中下面的兩塊點(diǎn)陣,拖動(dòng)它們與上側(cè)的兩塊合攏。這樣做成的LED點(diǎn)陣的列線為左邊的16個(gè)位選數(shù)據(jù)線,右邊的16個(gè)引腳是用來(lái)輸入字體代碼。最終連接的效果如圖2.7所示。圖2.716*16LED點(diǎn)陣2.7取字模軟件介紹在設(shè)計(jì)中由于用到的是一個(gè)16*16的LED點(diǎn)陣,需要顯示27個(gè)漢字,如果單是手工對(duì)字體取模,將會(huì)花費(fèi)很多時(shí)間,為了方便操作,我們利用字模軟件PCtoLCD2002,該軟件簡(jiǎn)單方便易操作,省了很多工作量。軟件主界面如圖2.8所示。圖2.8取字模軟件界面1.文字輸入?yún)^(qū)輸入所需要顯示的文字,文字?jǐn)?shù)目不限。2.文字輸入完畢后,點(diǎn)擊生成字模按鍵,然后將字模保存。3.取模原那么:以字節(jié)為單位,每取8個(gè)點(diǎn)作為一個(gè)字節(jié),如果最后缺乏8個(gè)點(diǎn)就補(bǔ)滿8位。4.取模方式:可根據(jù)字體顯示移動(dòng)的方向自行選擇是橫向取模還是縱向取模。5.提供圖象保存,數(shù)據(jù)保存為文本文件的功能。6.如果想要輸入漢字和字母,那就要先輸入漢字,程序會(huì)將您第一個(gè)輸入的文字作為取模寬度。在軟件文字輸入?yún)^(qū)輸入某個(gè)字,按下Enter在點(diǎn)陣生成區(qū)就會(huì)有相對(duì)應(yīng)字的點(diǎn)陣生成,軟件中還可以自行設(shè)置字模的取模方式,修改圖像,參數(shù)設(shè)置等。3系統(tǒng)軟件局部設(shè)計(jì)在單片機(jī)系統(tǒng)中,硬件局部是系統(tǒng)的根底,軟件那么是在硬件的根底上對(duì)電路元件的調(diào)配和使用,最終實(shí)現(xiàn)系統(tǒng)所要到達(dá)的目標(biāo)。因此,系統(tǒng)在總體設(shè)計(jì)上首先要確定程序結(jié)構(gòu),合理分配內(nèi)置的RAM資源,劃分功能模塊,其次進(jìn)行主程序和各模塊程序的設(shè)計(jì),最后連接成一個(gè)完整的應(yīng)用程序。系統(tǒng)軟件選用C語(yǔ)言程序編寫(xiě),根據(jù)模塊化的設(shè)計(jì)思路進(jìn)行設(shè)計(jì)。軟件的主要作用就是向點(diǎn)陣顯示屏提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號(hào)來(lái)控制顯示屏上顯示的漢字的移動(dòng)。根據(jù)軟件分層次設(shè)計(jì)的原理,將軟件系統(tǒng)分成兩大塊:一塊是顯示驅(qū)動(dòng)程序,另一塊是系統(tǒng)的應(yīng)用程序。顯示驅(qū)動(dòng)程序主要負(fù)責(zé)向顯示屏傳輸顯示數(shù)據(jù),并負(fù)責(zé)產(chǎn)生行、列掃描信號(hào)和其它的控制信號(hào),共同實(shí)現(xiàn)點(diǎn)陣顯示屏的掃描顯示工作。系統(tǒng)應(yīng)用程序主要掌管系統(tǒng)整體環(huán)境的設(shè)置和顯示效果處理等工作,由主程序來(lái)完成。3.1主程序設(shè)計(jì)系統(tǒng)運(yùn)行主程序后,首先是初始化系統(tǒng)環(huán)境,然后點(diǎn)陣進(jìn)入開(kāi)機(jī)狀態(tài),進(jìn)入正常顯示,顯示屏每次顯示一個(gè)漢字且連續(xù)實(shí)現(xiàn)漢字向左滾動(dòng)和向上滾動(dòng)。由于單片機(jī)沒(méi)有停機(jī)指令,所以可以設(shè)置系統(tǒng)程序不斷地循環(huán)執(zhí)行上述顯示效果。系統(tǒng)主程序結(jié)構(gòu)如圖3.1所示。圖3.1主程序的總體結(jié)構(gòu)3.2顯示驅(qū)動(dòng)程序設(shè)計(jì)顯示驅(qū)動(dòng)程序首先進(jìn)入中斷模塊,給定時(shí)器賦初值,然后開(kāi)始查詢當(dāng)前點(diǎn)亮的行號(hào),并且把下一行的顯示數(shù)據(jù)從顯示緩存區(qū)內(nèi)讀取出來(lái),經(jīng)過(guò)串口輸出發(fā)送到移位存放器內(nèi)。為了防止在切換顯示數(shù)據(jù)時(shí)發(fā)生拖尾現(xiàn)象,因此,我們要提前關(guān)閉顯示屏,即消隱。等到顯示數(shù)據(jù)被輸出鎖存器鎖存后,再重新輸出新的行數(shù)據(jù),并同時(shí)翻開(kāi)顯示。顯示驅(qū)動(dòng)程序流程圖如圖3.2所示。圖3.2顯示驅(qū)動(dòng)程序流程圖3.3顯示屏刷新率的計(jì)算顯示驅(qū)動(dòng)程序在中端程序中首先應(yīng)該對(duì)定時(shí)器T0重新賦初值,以保證顯示屏刷新率的穩(wěn)定,16行掃描格式的顯示屏刷新率計(jì)算公式如下:刷新率〔幀頻〕=×〔溢出率〕=×〔3.1〕式〔3.1〕中:fosc—晶振頻率;t0—定時(shí)器T0初值〔工作在16位定時(shí)器模式〕。4系統(tǒng)調(diào)試及性能分析4.1系統(tǒng)調(diào)試系統(tǒng)調(diào)試主要分為硬件調(diào)試和軟件調(diào)試兩局部。硬件調(diào)試方面主要是在焊接時(shí)應(yīng)該先焊接小元器件,然后分模塊逐個(gè)進(jìn)行焊接測(cè)試,防止元器件的虛焊。對(duì)硬件進(jìn)行調(diào)試時(shí)要在軟件正確無(wú)誤的條件下進(jìn)行,這樣即使某個(gè)模塊出現(xiàn)焊接錯(cuò)誤,我們也可以逐個(gè)調(diào)試排查。當(dāng)然,在調(diào)試的時(shí)候也會(huì)出現(xiàn)一些防止不了的誤差。軟件調(diào)試方面主要是依據(jù)事先設(shè)計(jì)好的硬件電路原理圖來(lái)編寫(xiě)程序。在大二期間所學(xué)的是C語(yǔ)言,因此,本設(shè)計(jì)在編寫(xiě)軟件程序時(shí)都是采用C語(yǔ)言編寫(xiě)的。首先是編寫(xiě)不同模塊的功能程序,等全部編寫(xiě)完成后將他們組合在一起。起初在編寫(xiě)時(shí)總會(huì)出現(xiàn)一些意想不到的問(wèn)題,但是經(jīng)過(guò)仔細(xì)分析、屢次調(diào)試還是將問(wèn)題逐個(gè)擊破,將程序編譯成功。4.2hex文件的生成要生成.hex文件,首先要進(jìn)行系統(tǒng)軟件調(diào)試,軟件調(diào)試主要是將每個(gè)功能模塊的程序在Keil軟件中進(jìn)行編譯以驗(yàn)證其功能的可實(shí)現(xiàn)性。在軟件編譯成功后生成.hex文件方可進(jìn)行功能測(cè)試。1.翻開(kāi)Keil編程軟件,單擊菜單欄中的“工程”選項(xiàng),在下拉菜單中選擇“新建工程”,然后彈出“創(chuàng)立工程工程”對(duì)話框,輸入新建工程名稱,單擊“確定”按鈕后,在彈出的“選擇設(shè)備”的對(duì)話框中選擇適宜的單片機(jī)型號(hào)。2.單擊菜單欄中的“文件”,在下拉菜單欄中選擇“新建”,翻開(kāi)一個(gè)空的文本編輯窗口后保存,創(chuàng)立新的源程序文件“16_16MOVE.c”。3.在左側(cè)的“工程”窗口的“文件”頁(yè)中單擊文件組,單擊鼠標(biāo)右鍵,在彈出的窗口中選中添加文件到“源組1”選項(xiàng),將“16_16MOVE.c”程序?qū)氲健霸唇M1”中。如圖4.1所示。圖4.1Project界面4.在“工程”下拉菜單中,選擇“OptionsforTarget”設(shè)置對(duì)話框,將會(huì)彈出“OptionsforTarget”窗口,在此對(duì)話框中選中“Output”選項(xiàng)卡中的“CreateHEXFile”選項(xiàng)。如圖4.2所示。圖4.2OptionsforTarget界面5.在“Project”下拉菜單中,選擇“RebuildallTargetFiles”項(xiàng)。如圖4.3所示。圖4.3RebuildallTargetFiles界面假設(shè)程序編譯成功,將生成“16_16MOVE.hex”文件。如圖4.4所示。圖4.4生成的.hex文件4.3仿真調(diào)試在最新版本的Proteus軟件中,沒(méi)有現(xiàn)成的16*16點(diǎn)陣模塊,因此,在設(shè)計(jì)過(guò)程中采用現(xiàn)有的4塊8*8點(diǎn)陣模塊組合成一個(gè)16*16點(diǎn)陣模塊。仿真時(shí),先在Proteus中找到STC89C52芯片,單擊鼠標(biāo)左鍵然后對(duì)其進(jìn)行參數(shù)設(shè)置,將單片機(jī)的時(shí)鐘頻率設(shè)置為12MHz后開(kāi)始加載.hex文件。等加載完成后連接好電路點(diǎn)擊仿真按鍵即可對(duì)系統(tǒng)進(jìn)行仿真。在仿真過(guò)程當(dāng)中如果遇見(jiàn)硬件問(wèn)題可在Proteus中直接更換修改,如果遇到軟件參數(shù)問(wèn)題可在keil中直接調(diào)試更換,這樣,通過(guò)用keil軟件和Proteus軟件的共同作用就可以實(shí)現(xiàn)本設(shè)計(jì)的最終目標(biāo)。4.4調(diào)試中出現(xiàn)的問(wèn)題在調(diào)試過(guò)程中,系統(tǒng)在調(diào)用延時(shí)子程序時(shí),假設(shè)遇到延時(shí)時(shí)間過(guò)短問(wèn)題,即使能提高點(diǎn)陣顯示屏的亮度,也無(wú)法看到字體完整的顯示,每行的漢字尚未等顯示完整就進(jìn)入了下一行的掃描,甚至鎖存器的輸出還沒(méi)到達(dá)顯示屏,就進(jìn)入到下一個(gè)掃描周期;如果延時(shí)時(shí)間過(guò)長(zhǎng),就會(huì)造成顯示屏的亮度降低,并且掃描出來(lái)的字體斷斷續(xù)續(xù),人眼看到的并不是一個(gè)完整的漢字,因此,以上兩種情況都是不符合設(shè)計(jì)要求,假設(shè)想要到達(dá)最正確的顯示效果,就必須依靠鎖存器的鎖存時(shí)間來(lái)準(zhǔn)確算出掃描一行的最短時(shí)間,以獲得最正確的時(shí)間延時(shí),顯示屏才能顯示穩(wěn)定的漢字。5結(jié)論與展望5.1結(jié)論本設(shè)計(jì)采取由淺入深,循序漸進(jìn)的模式。首先簡(jiǎn)單的介紹了半導(dǎo)體的相關(guān)知識(shí),繼而講到在半導(dǎo)體根底上產(chǎn)生的發(fā)光二極管,接著自然聯(lián)想到由LED矩陣組成的顯示屏,這樣就談到了本次設(shè)計(jì)的核心。在設(shè)計(jì)上分為三大步。第一步是程序的設(shè)計(jì)。程序設(shè)計(jì)采用C語(yǔ)言編寫(xiě),在大二上學(xué)期,學(xué)習(xí)了單片機(jī)的知識(shí),在學(xué)習(xí)期間也得到了很多同學(xué)的熱心指導(dǎo),從而為編程以及素材上積累了廣泛的知識(shí)和經(jīng)驗(yàn),所以本次設(shè)計(jì)思路很清晰。主要由主顯示程序的設(shè)計(jì)和附加電路程序的設(shè)計(jì)。第二步是電路的仿真,通常使用Proteus仿真軟件,根據(jù)設(shè)計(jì)要求,選擇必要的器件,并將他們有機(jī)的連接起來(lái)。完成之后,將已經(jīng)生成的hex文件下載到仿真電路中的單片機(jī)上,就可以運(yùn)行仿真了。第三步是實(shí)物的設(shè)計(jì),也是本設(shè)計(jì)的又一重點(diǎn)。實(shí)體的設(shè)計(jì)會(huì)遇到很多實(shí)際問(wèn)題,比方器件的選購(gòu),元器件的排列,以及電路的焊接。不過(guò)還好經(jīng)過(guò)老師的指導(dǎo),同學(xué)的幫助,以及自己的一點(diǎn)努力,雖然幾經(jīng)曲折,最終還是完成了實(shí)物的設(shè)計(jì)。最后將程序通過(guò)下載器下載到單片機(jī)上,整個(gè)系統(tǒng)就可以正常工作了。5.2展望本設(shè)計(jì)為簡(jiǎn)單的單色顯示屏,在工業(yè)上,單色LED屏,雙基色LED屏,以及全彩LED屏技術(shù)方興未艾,在生活中已經(jīng)得到了廣泛應(yīng)用并將繼續(xù)發(fā)揮它們的作用。將來(lái)全彩LED顯示屏必將大放異彩。所以我不會(huì)滿足當(dāng)前所取得的微小成績(jī),還將繼續(xù)努力,不斷充實(shí)和提高自己,為社會(huì)主義現(xiàn)代化奉獻(xiàn)自己的力量。參考文獻(xiàn)[1]張?chǎng)危畣纹瑱C(jī)原理及應(yīng)用,電子工業(yè)出版社,2010,10.[2]涂時(shí)亮.單片微型機(jī)原理應(yīng)用,復(fù)旦大學(xué)出版社,2008,8.[3]陽(yáng)進(jìn).基于單片機(jī)的LED顯示屏的漢字顯示[J].中國(guó)科技信息,2006,12.[4]汪建.MCS-96系列單片機(jī)原理與應(yīng)用技術(shù).武漢華中科技大學(xué)出版社,2007,8.[5]唐德禮.STC89C52RC系列單片機(jī)原理及應(yīng)用實(shí)例,華中科技大學(xué)出版社,2009.[6]宋萬(wàn)杰.羅豐.CPLD技術(shù)及其應(yīng)用.西安電子科技大學(xué)出版社,2008.[7]楊衛(wèi)平.LED大屏幕信息顯示系統(tǒng)的設(shè)計(jì),河北工業(yè)大學(xué)學(xué)報(bào),2010.[8]鄭剛.LED大屏幕顯示系統(tǒng)的設(shè)計(jì),北方工業(yè)大學(xué)出版社,2007,3.[9]李元生.LED光柱專(zhuān)用驅(qū)動(dòng)器[J].家庭電子,2005,(04):1-7.[10]王亭.李瑞濤,宋召清.在Windows下PC機(jī)和單片機(jī)的串行通信[J].微型機(jī)與應(yīng)用,2000,(1):25-27.[11]陳新忠.基于RS232總線的單片機(jī)多機(jī)通信軟件設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2002,(03):56-78.[12]喬世杰.小波圖像編碼中的對(duì)稱邊界延拓法[J].中國(guó)圖像圖形學(xué)報(bào),2000,5(9):725-729.[13]李桂平.LED屏幕顯示器的設(shè)計(jì)[J].零陵師范學(xué)院學(xué)報(bào),2002,(9):367-380.[14]DavidFRogers.Computergraphicsalgorithm[M].Beijing:ChinaMachinePress,2002:97-99.附錄1硬件原理圖附錄2程序清單/*16*16點(diǎn)陣屏的移動(dòng)顯示*/#include<reg51.h>#include<intrins.h> #defineDATE_OUTP2 //指定P2口做為輸出sbitDATA=DATE_OUT^0; //列數(shù)據(jù)輸出位 sbitSCLH=DATE_OUT^1; //列掃描時(shí)鐘位sbitSCLT=DATE_OUT^2; //列數(shù)據(jù)鎖存位sbitAB=DATE_OUT^5; //行數(shù)據(jù)輸出位sbitSCK=DATE_OUT^4; //行掃描時(shí)鐘位unsignedchardate[32];//32字節(jié)RAM做為16*16點(diǎn)陣屏顯示緩存voiddisplay();//做為點(diǎn)陣掃描函數(shù),將顯示緩存的數(shù)據(jù)輸出到點(diǎn)陣屏voiddisplay_time(unsignedinttimer); //指定時(shí)間掃描顯示voiddisplaymove(unsignedchar*lp,unsignedcharc,unsignedchartimer);//顯示漢字內(nèi)容的移動(dòng)效果,LP指向要顯示第一個(gè)字的首地址,C表示顯示字的個(gè)數(shù), //timer是移動(dòng)的速度voiddisplaymovetb(unsignedchardin,unsignedchar*lp,unsignedchartimer);//上下移動(dòng)內(nèi)容,din:1為向下,0為向上,lp指向要移入的內(nèi)容,timer為移動(dòng)速度voiddelay(unsignedinta);//延時(shí)子函數(shù)codeunsignedcharxi[32]=//西{0x00,0x00,0xFF,0xFE,0x04,0x40,0x04,0x40,0x04,0x40,0x3F,0xF8,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x28,0x38,0x30,0x08,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08};codeunsignedcharjing[32]=//京{0x02,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x01,0x00,0x11,0x10,0x11,0x08,0x21,0x04,0x45,0x04,0x02,0x00};codeunsignedcharxue[32]=//學(xué){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};codeunsignedcharyuan[32]=//院{0x00,0x40,0x78,0x20,0x4B,0xFE,0x52,0x02,0x54,0x04,0x61,0xF8,0x50,0x00,0x48,0x00,0x4B,0xFE,0x48,0x90,0x68,0x90,0x50,0x90,0x41,0x12,0x41,0x12,0x42,0x0E,0x44,0x00};codeunsignedcharji[32]={//機(jī)0x10,0x00,0x10,0x10,0x11,0xF8,0x11,0x10,0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,0x55,0x10,0x51,0x10,0x91,0x10,0x11,0x10,0x11,0x12,0x12,0x12,0x14,0x0E,0x18,0x00};codeunsignedchardian[32]={//電0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE};codeunsignedchargong[32]={//工0x00,0x00,0x00,0x00,0x7F,0xFC,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};codeunsignedcharcheng[32]={//程0x08,0x00,0x1D,0xFC,0xF1,0x04,0x11,0x04,0x11,0x04,0xFD,0xFC,0x10,0x00,0x30,0x00,0x39,0xFE,0x54,0x20,0x54,0x20,0x91,0xFC,0x10,0x20,0x10,0x20,0x13,0xFE,0x10,0x00};codeunsignedcharxie[32]={//系0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00};codeunsignedcharzi[32]={//自0x01,0x00,0x02,0x00,0x04,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10};codeunsignedchardong[32]={//動(dòng)0x00,0x40,0x00,0x40,0x7C,0x40,0x00,0x40,0x01,0xFC,0x00,0x44,0xFE,0x44,0x20,0x44,0x20,0x44,0x20,0x84,0x48,0x84,0x44,0x84,0xFD,0x04,0x45,0x04,0x02,0x28,0x04,0x10};codeunsignedcharhua[32]={//化0x08,0x80,0x08,0x80,0x08,0x84,0x10,0x88,0x10,0x90,0x30,0xA0,0x30,0xC0,0x50,0x80,0x91,0x80,0x12,0x80,0x14,0x80,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x7E,0x10,0x00};codeunsignedcharyi[32]={//10x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x1F,0xF8,0x00,0x00,0x00,0x00};/*"1",0*/codeunsignedcharlin[32]={//0 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x0C,0x18,0x18,0x0C,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x18,0x0C,0x0C,0x18,0x03,0xE0,0x00,0x00,0x00,0x00};/*"0",0*/codeunsignedcharling[32]={//0 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x0C,0x18,0x18,0x0C,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x30,0x06,0x18,0x0C,0x0C,0x18,0x03,0xE0,0x00,0x00,0x00,0x00};/*"0",0*/codeunsignedcharer[32]={//20x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x18,0x18,0x38,0x1C,0x38,0x1C,0x00,0x38,0x00,0x70,0x01,0xC0,0x07,0x00,0x0C,0x04,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00};codeunsignedcharban[32]={//班0x00,0x80,0x00,0x80,0xF8,0xBE,0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,0xFA,0xBE,0x22,0x88,0x24,0x88,0x20,0x88,0x39,0x08,0xE1,0x08,0x42,0x3E,0x04,0x00,0x08,0x00};codeunsignedcharzhang[32]={//張0x01,0x00,0xF9,0x08,0x09,0x08,0x09,0x10,0x09,0x20,0x79,0x40,0x41,0x00,0x47,0xFE,0x41,0x40,0x79,0x20,0x09,0x20,0x09,0x10,0x09,0x08,0x09,0x44,0x51,0x82,0x21,0x00};codeunsignedcharpeng[32]={//鵬0x00,0x10,0x77,0x20,0x55,0x7C,0x55,0x44,0x55,0x64,0x77,0x54,0x55,0x44,0x55,0x4C,0x55,0x40,0x77,0x7E,0x55,0x02,0x55,0x02,0x55,0x7A,0xB5,0x02,0x89,0x0A,0x13,0x04};codeunsignedcharzhin[32]={//制0x04,0x04,0x24,0x04,0x24,0x04,0x3F,0xA4,0x44,0x24,0x04,0x24,0xFF,0xE4,0x04,0x24,0x04,0x24,0x3F,0xA4,0x24,0xA4,0x24,0xA4,0x26,0x84,0x25,0x04,0x04,0x14,0x04,0x08};codeunsignedcharzuo[32]={//作0x09,0x00,0x09,0x00,0x09,0x00,0x11,0xFE,0x12,0x80,0x32,0x80,0x34,0x80,0x50,0xF8,0x90,0x80,0x10,0x80,0x10,0x80,0x10,0xFC,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80};codeunsignedcharduan[32]={//段0x06,0x00,0x38,0xF8,0x20,0x88,0x20,0x88,0x20,0x88,0x3C,0x86,0x21,0x00,0x20,0x00,0x3D,0xFC,0x20,0x84,0x20,0x88,0x2C,0x50,0xF0,0x20,0x20,0x50,0x20,0x88,0x23,0x06};codeunsignedcharjin[32]={//金0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x2F,0xE8,0xC1,0x06,0x01,0x00,0x3F,0xF8,0x01,0x00,0x11,0x10,0x09,0x10,0x09,0x20,0xFF,0xFE,0x00,0x00};codeunsignedcharying[32]={//英0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x20,0x01,0x00,0x01,0x00,0x1F,0xF0,0x11,0x10,0x11,0x10,0x11,0x10,0xFF,0xFE,0x02,0x80,0x04,0x40,0x08,0x20,0x30,0x18,0xC0,0x06};codeunsignedcharlao[32]={//老0x02,0x00,0x02,0x08,0x3F,0xD0,0x02,0x20,0x02,0x40,0xFF,0xFE,0x01,0x00,0x02,0x00,0x0C,0x10,0x18,0xE0,0x2F,0x00,0x48,0x08,0x88,0x08,0x08,0x08,0x07,0xF8,0x00,0x00};codeunsignedcharshi[32]={//師0x08,0x00,0x0B,0xFE,0x48,0x20,0x48,0x20,0x48,0x20,0x49,0xFC,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x09,0x34,0x11,0x28,0x10,0x20,0x20,0x20,0x40,0x20};codeunsignedcharzhi[32]={//指0x11,0x00,0x11,0x04,0x11,0x38,0x11,0xC0,0xFD,0x02,0x11,0x02,0x10,0xFE,0x14,0x00,0x19,0xFC,0x31,0x04,0xD1,0x04,0x11,0xFC,0x11,0x04,0x11,0x04,0x51,0xFC,0x21,0x04};codeunsignedchardao[32]={//導(dǎo)0x00,0x00,0x3F,0xF0,0x20,0x10,0x20,0x10,0x3F,0xF0,0x20,0x04,0x20,0x04,0x1F,0xFC,0x00,0x20,0x00,0x20,0xFF,0xFE,0x08,0x20,0x04,0x20,0x04,0x20,0x00,0xA0,0x00,0x40};voidmain(void)//主入口函數(shù){ unsignedchari=0,j=0; for(i=0;i<32;i++) date[i]=xi[i];//將"西"復(fù)制到顯示緩存 while(1) { display_time(2); //顯示約2秒 displaymove(jing,27,10);//將從"京"開(kāi)始的四個(gè)漢字從右向左移動(dòng) display_time(1); //等持約1秒 displaymovetb(1,0,10); //將點(diǎn)陣上顯示的內(nèi)容向下以10的速度移出,補(bǔ)上0,即清空顯示屏 display_time(1); //等待1秒 displaymovetb(0,xi,10); //將"西"字以10的速度向上移動(dòng) displaymovetb(0,jing,10); //將"京"字以10的速度向上移動(dòng) displaymovetb(0,xue,10); //將"學(xué)"字以10的速度向上移動(dòng) displaymovetb(0,yuan,10); //將"院"字以10的速度向上移動(dòng) displaymovetb(0,ji,10); //將"機(jī)"字以10的速度向上移動(dòng) displaymovetb(0,dian,10); //將"電"字以10的速度向上移動(dòng) displaymovetb(0,gong,10); //將"工"字以10的速度向上移動(dòng) displaymovetb(0,cheng,10); //將"程"字以10的速度向上移動(dòng) displaymovetb(0,xie,10); //將"系"字以10的速度向上移動(dòng) displaymovetb(0,zi,10); //將"自"字以10的速度向上移動(dòng) displaymovetb(0,dong,10); //將"動(dòng)"字以10的速度向上移動(dòng) displaymovetb(0,hua,10); //將"化"字以10的速度向上移動(dòng) displaymovetb(0,yi,10); //將"1"字以10的速度向上移動(dòng) displaymovetb(0,ling,10); //將"0"字以10的速度向上移動(dòng) displaymovetb(0,lin,10); //將"0"字以10的速度向上移動(dòng) displaymovetb(0,er,10); //將"2"字以10的速度向上移動(dòng) displaymovetb(0,ban,10); //將"班"字以10的速度向上移動(dòng) displaymovetb(0,zhang,10); //將"張"字以10的速度向上移動(dòng) displaymovetb(0,peng,10); //將"鵬"字以10的速度向上移動(dòng) displaymovetb(0,zhin,10); //將"制"字以10的速度向上移動(dòng) displaymovetb(0,zuo,10); //將"作"字以10的速度向上移動(dòng) displaymovetb(0,duan,10); //將"段"字以10的速度向上移動(dòng) displaymovetb(0,jin,10); //將"金"字以10的速度向上移動(dòng) displaymovetb(0,ying,10); //將"英"字以10的速度向上移動(dòng) displaymovetb(0,lao,10); //將"老"字以10的速度向上移動(dòng) displaymovetb(0,shi,10); //將"師"字以10的速度向上移動(dòng) displaymovetb(0,zhi,10); //將"指"字以10的速度向上移動(dòng) displaymovetb(0,dao,10); //將"導(dǎo)"字以10的速度向上移動(dòng) displaymovetb(0,0,10); //以10的速度向上清空 display_time(1); //等待1秒 displaymovetb(1,xi,10); //將"西"字以10的速度向下移動(dòng) }}voiddisplay()//顯示{ unsignedchari,ia,j,tmp; //定義變量 DATE_OUT=0XFF; //置位高電平做準(zhǔn)備 AB=0; //將行數(shù)據(jù)位清0,準(zhǔn)備移位 for(i=0;i<16;i++){ //循環(huán)輸出16行數(shù)據(jù) SCK=0; //為行移位做準(zhǔn)備 SCLT=0; //為列鎖存做準(zhǔn)備 for(ia=2;ia>0;){ //每行16個(gè)點(diǎn),循環(huán)位移兩個(gè)字節(jié) ia--; //循環(huán)兩次 tmp=~date[i*2+ia]; //讀取點(diǎn)陣數(shù)據(jù)做輸出,這里用到ia目的是先讀取點(diǎn)陣數(shù)據(jù)的第二位字節(jié),因一行16個(gè)點(diǎn)由兩個(gè)字節(jié)組成, //電路中的移位存放器最后一位對(duì)應(yīng)最后一列,所以要先輸出一行中的第二個(gè)字節(jié)數(shù)據(jù) for(j=0;j<8;j++){ //循環(huán)兩次,每次移一個(gè)字節(jié), SCLH=0; //為列移位做準(zhǔn)備 DATA=tmp&0x01; //將數(shù)據(jù)低位做輸出,由電路圖可知,移位存放器的最后一位對(duì)應(yīng)最后一列,因此先移最后一位 tmp>>=1; //將數(shù)據(jù)緩沖右移一位,為下次輸出做準(zhǔn)備 SCLH=1; //將DATA上的數(shù)據(jù)移入存放器 } //移入單字節(jié)結(jié)束 } //移入兩個(gè)字節(jié)結(jié)束 DATE_OUT|=0X14; //此句可以用以下兩句來(lái)理解,如果不將兩句合為一句,將出現(xiàn)拖影現(xiàn)像 //SCK=1; //SCK拉高,行數(shù)據(jù)移位,相應(yīng)行拉低,三極管導(dǎo)通輸出電量到相應(yīng)行點(diǎn)陣管陽(yáng)極〔共陽(yáng)〕 //SCLT=1; //SCLT拉高,將數(shù)據(jù)鎖存輸出到相應(yīng)列的點(diǎn)陣發(fā)光管顯示,顯示一行后將保持到下一行顯示開(kāi)始 AB=1; //行數(shù)據(jù)位只在第一行時(shí)為0,其它時(shí)候都為1,當(dāng)將這個(gè)0移入存放器后,從第一位開(kāi)始一直移位最后一位, //移位的過(guò)程,AB就必需是1,這是因?yàn)椴荒芡瑫r(shí)有兩個(gè)及兩個(gè)以上0的出現(xiàn),否那么顯示出亂 } j=64; while(j--); //每一行的顯示,保持了兩字節(jié)的移位時(shí)間,因此,最后一行的顯示,也要參加保持時(shí)間,補(bǔ)嘗顯示的亮度 SCK=0; // SCK=1; //將最后一行數(shù)據(jù)移出}voiddisplay_time(unsignedinttimer) //指定時(shí)間掃描顯示{ unsignedcha
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)小程序游戲行業(yè)發(fā)展現(xiàn)狀、市場(chǎng)運(yùn)行態(tài)勢(shì)及發(fā)展前景預(yù)測(cè)報(bào)告
- 七年級(jí)下冊(cè)《平行線的性質(zhì)》課件與練習(xí)
- 企業(yè)知識(shí)共享結(jié)構(gòu)優(yōu)化與創(chuàng)新能力提升
- 2025年武器、彈藥及其零件合作協(xié)議書(shū)
- 智慧城市數(shù)據(jù)平臺(tái)建設(shè)合作協(xié)議
- 電梯安裝安全協(xié)議書(shū)
- 消防安全技術(shù)服務(wù)項(xiàng)目合同
- 林地合作經(jīng)營(yíng)合同書(shū)
- 用美術(shù)相關(guān)知識(shí)做
- 古代詩(shī)詞鑒賞征文
- 幼兒園招生工作技巧培訓(xùn)
- 疼痛的護(hù)理講課課件
- 科技公司績(jī)效薪酬管理制度
- 2024年廣東省公務(wù)員考試《行測(cè)》真題及答案解析
- 上海市2024年中考化學(xué)真題(含答案)
- 門(mén)窗安裝師傅簽免責(zé)協(xié)議書(shū)范文
- 短暫性腦缺血發(fā)作護(hù)理查房
- 油氣儲(chǔ)運(yùn)節(jié)能優(yōu)化方案
- 浙江省Z20聯(lián)盟(名校新高考研究聯(lián)盟)2024屆高三下學(xué)期第三次聯(lián)考英語(yǔ)試題 含答案
- 2024-2025學(xué)年初中體育與健康七年級(jí)全一冊(cè)(2024)人教版(2024)教學(xué)設(shè)計(jì)合集
- 第五單元《分?jǐn)?shù)的意義》復(fù)習(xí)試題(單元測(cè)試)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)北師大版
評(píng)論
0/150
提交評(píng)論