16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序要點(diǎn)_第1頁(yè)
16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序要點(diǎn)_第2頁(yè)
16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序要點(diǎn)_第3頁(yè)
16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序要點(diǎn)_第4頁(yè)
16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、16×16點(diǎn)陣LED顯示屏整個(gè)過(guò)程及C語(yǔ)言程序7.1功能要求設(shè)計(jì)一個(gè)室內(nèi)用16×16點(diǎn)陣LED圖文顯示屏,要求在目測(cè)條件下LED顯示屏各點(diǎn)亮度均勻、充足,可顯示圖形和文字,顯示圖形或文字應(yīng)穩(wěn)定、清晰無(wú)串?dāng)_。圖形或文字顯示有靜止、移入移出等顯示方式。7.2方案論證從理論上說(shuō),不論顯示圖形還是文字,只要控制與組成這些圖形或文字的各個(gè)點(diǎn)所在位置相對(duì)應(yīng)的LED器件發(fā)光,就可以得到我們想要的顯示結(jié)果,這種同時(shí)控制各個(gè)發(fā)光點(diǎn)亮滅的方法稱為靜態(tài)驅(qū)動(dòng)顯示方式。16×16的點(diǎn)陣共有256個(gè)發(fā)光二極管,顯然單片機(jī)沒(méi)有這么多端口,如果我們采用鎖存器來(lái)擴(kuò)展端口,按8位的鎖存器來(lái)計(jì)算,16

2、×16的點(diǎn)陣需要256/8=32個(gè)鎖存器。這個(gè)數(shù)字很龐大,因?yàn)槲覀儍H僅是16×16的點(diǎn)陣,在實(shí)際應(yīng)用中的顯示屏往往要大的多,這樣在鎖存器上花的成本將是一個(gè)很龐大的數(shù)字。因此在實(shí)際應(yīng)用中的顯示屏幾乎都不采用這種設(shè)計(jì),而采用另一種稱為動(dòng)態(tài)掃描的顯示方法。動(dòng)態(tài)掃描的意思簡(jiǎn)單地說(shuō)就是逐行輪流點(diǎn)亮,這樣掃描驅(qū)動(dòng)電路就可以實(shí)現(xiàn)多行(比如16行)的同名列共用一套列驅(qū)動(dòng)器。具體就16×16的點(diǎn)陣來(lái)說(shuō),我們把所有同一行的發(fā)光管的陽(yáng)極連在一起,把所有同一列的發(fā)光管的陰極連在一起(共陽(yáng)的接法),先送出對(duì)應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第一行使其燃亮一定的時(shí)間,然后熄滅;再送出第

3、二行的數(shù)據(jù)并鎖存,然后選通第二行使其燃亮相同的時(shí)間,然后熄滅; 第十六行之后又重新燃亮第一行,這樣反復(fù)輪回。當(dāng)這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(xiàn)象,我們就能看到顯示屏上穩(wěn)定的圖形了。采用掃描方式進(jìn)行顯示時(shí),每行有一個(gè)行驅(qū)動(dòng)器,各行的同名列共用一個(gè)列驅(qū)動(dòng)器。顯示數(shù)據(jù)通常存儲(chǔ)在單片機(jī)的存儲(chǔ)器中,按8位一個(gè)字節(jié)的形式順序排放。顯示時(shí)要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動(dòng)器上去,這就存在一個(gè)顯示數(shù)據(jù)傳輸?shù)膯?wèn)題。從控制電路到列驅(qū)動(dòng)器的數(shù)據(jù)傳輸可以采用并行方式或串行方式。顯然,采用并行方式時(shí),從控制電路到列驅(qū)動(dòng)器的線路數(shù)量大,相應(yīng)的硬件數(shù)目多。當(dāng)列數(shù)很多時(shí),并行傳輸?shù)姆桨甘遣豢?/p>

4、取的。采用串行傳輸?shù)姆椒ǎ刂齐娐房梢灾挥靡桓盘?hào)線,將列數(shù)據(jù)一位一位傳往列驅(qū)動(dòng)器,在硬件方面無(wú)疑是十分經(jīng)濟(jì)的。但是,串行傳輸過(guò)程較長(zhǎng),數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動(dòng)器,只有當(dāng)一行的各列數(shù)據(jù)都已傳輸?shù)轿恢?,這一行的各列才能并行地進(jìn)行顯示。這樣,對(duì)于一行的顯示過(guò)程就可以分解成列數(shù)據(jù)準(zhǔn)備(傳輸)和列數(shù)據(jù)顯示兩個(gè)部分。對(duì)于串行傳輸方式來(lái)說(shuō),列數(shù)據(jù)準(zhǔn)備時(shí)間可能相當(dāng)長(zhǎng),在行掃描周期確定的情況下,留給行顯示的時(shí)間就太少了,以至影響到LED的亮度。解決串行傳輸中列數(shù)據(jù)準(zhǔn)備和列數(shù)據(jù)顯示的時(shí)間矛盾問(wèn)題,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù)。為了達(dá)到重疊處理的目的,列數(shù)據(jù)的顯

5、示就需要具有鎖存功能。經(jīng)過(guò)上述分析,可以歸納出列驅(qū)動(dòng)器電路應(yīng)具備的主要功能。對(duì)于列數(shù)據(jù)準(zhǔn)備來(lái)說(shuō),它應(yīng)能實(shí)現(xiàn)串入并出的移位功能;對(duì)于列數(shù)據(jù)顯示來(lái)說(shuō),應(yīng)具有并行鎖存的功能。這樣,本行已準(zhǔn)備好的數(shù)據(jù)打入并行鎖存器進(jìn)行顯示時(shí),串并移位寄存器就可以準(zhǔn)備下一行的列數(shù)據(jù),而不會(huì)影響本行的顯示。圖7.1為顯示屏電路實(shí)現(xiàn)的結(jié)構(gòu)框圖。圖7.1 顯示屏電路框圖7.3系統(tǒng)硬件電路的設(shè)計(jì)硬件電路大致上可以分成單片機(jī)系統(tǒng)及外圍電路、列驅(qū)動(dòng)電路和行驅(qū)動(dòng)電路三部分。7.3.1單片機(jī)系統(tǒng)及外圍電路單片機(jī)采用89C51或其兼容系列的芯片,采用24M或更高頻率的晶振,以獲得較高的刷新頻率,使顯示更穩(wěn)定。單片機(jī)的串口與列驅(qū)動(dòng)器相連,

6、用來(lái)送顯示數(shù)據(jù)。P1口低4位與行驅(qū)動(dòng)器相連,送出行選信號(hào);P1.5P1.7口則用來(lái)發(fā)送控制信號(hào)。P0和P2口空著,在有必要時(shí)可以擴(kuò)展系統(tǒng)的ROM和RAM。16×16點(diǎn)陣顯示屏的硬件原理圖如圖7.2。圖7.2 16×16點(diǎn)陣顯示屏硬件原理圖7.3.2列驅(qū)動(dòng)電路列驅(qū)動(dòng)電路由集成電路74HC595構(gòu)成,它具有一個(gè)8位串入并出的移位寄存器和一個(gè)8位輸出鎖存器的結(jié)構(gòu),而且移位寄存器和輸出鎖存器的控制是各自獨(dú)立的,可以實(shí)現(xiàn)在顯示本行各列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù),即達(dá)到重疊處理的目的。74HC595的外形及內(nèi)部結(jié)構(gòu)如圖7.3所示。它的輸入側(cè)有8個(gè)串行移位寄存器,每個(gè)移位寄存器的輸出

7、都連接一個(gè)輸出鎖存器。引腳SI是串行數(shù)據(jù)的輸入端。引腳SCK是移位寄存器的移位時(shí)鐘脈沖,在其上升沿發(fā)生移位,并將SI的下一個(gè)數(shù)據(jù)打入最低位。移位后的各位信號(hào)出現(xiàn)在各移位寄存器的輸出端,也就是輸出鎖存器的輸入端。RCK是輸出鎖存器的打入信號(hào),其上升沿將移位寄存器的輸出打入到輸出鎖存器。引腳G是輸出三態(tài)門的開放信號(hào),只有當(dāng)其為低時(shí)鎖存器的輸出才開放,否則為高阻態(tài)。SCLR信號(hào)是移位寄存器的清零輸入端,當(dāng)其為低時(shí)移位寄存器的輸出全部為零。由于SCK和RCK兩個(gè)信號(hào)是互相獨(dú)立的,所以能夠做到輸入串行移位與輸出鎖存互不干擾。芯片的輸出端為QAQH,最高位QH可作為多片74HC595級(jí)聯(lián)應(yīng)用時(shí),向上一級(jí)的

8、級(jí)聯(lián)輸出。但因QH受輸出鎖存器打入控制,所以還從輸出鎖存器前引出了QH,作為與移位寄存器完全同步的級(jí)聯(lián)輸出。引腳說(shuō)明符號(hào)引腳描述Q0Q715, 1, 7并行數(shù)據(jù)輸出GND8地Q79串行數(shù)據(jù)輸出MR10主復(fù)位(低電平)SHCP11移位寄存器時(shí)鐘輸入STCP12存儲(chǔ)寄存器時(shí)鐘輸入OE13輸出有效(低電平)DS14串行數(shù)據(jù)輸入VCC16電源圖7.3 74HC595外形及內(nèi)部邏輯結(jié)構(gòu)圖7.3.3行驅(qū)動(dòng)電路單片機(jī)P1口低4位輸出的行號(hào)經(jīng)4/16線譯碼器74LS154譯碼后生成16條行選通信號(hào)線,再經(jīng)過(guò)驅(qū)動(dòng)器驅(qū)動(dòng)對(duì)應(yīng)的行線。一條行線上要帶動(dòng)16列的LED進(jìn)行顯示,按每一LED器件20mA電流計(jì)算,16個(gè)L

9、ED同時(shí)發(fā)光時(shí),需要320mA電流,選用三極管8550作為驅(qū)動(dòng)管可滿足要求。 74LS154引腳功能圖及邏輯圖如圖7.3.3所示,原理:這種單片4線16線譯碼器非常適合用于高性能存儲(chǔ)器的譯碼器。當(dāng)選通端(G1、G2)均為低電平時(shí),可將地址端(ABCD)的二進(jìn)制編碼在一個(gè)對(duì)應(yīng)的輸出端,以低電平譯出。如果將G1和G2中的一個(gè)作為數(shù)據(jù)輸入端,由ABCD對(duì)輸出尋址,74LS154還可作1線-16線數(shù)據(jù)分配器。引腳功能介紹:A、B、C、D譯碼地址輸入端(低電平有效)G1、G2選通端(低電平有效)015輸出端(低電平有效)功能表:,圖1 74LS154引腳功能圖及邏輯圖7.4系統(tǒng)程序的設(shè)計(jì)顯示屏軟件的主要

10、功能是向屏體提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號(hào),使屏幕按設(shè)計(jì)的要求顯示。根據(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),配合完成LED顯示屏的掃描顯示工作。顯示驅(qū)動(dòng)程序由定時(shí)器T0中斷程序?qū)崿F(xiàn)。系統(tǒng)應(yīng)用程序完成系統(tǒng)環(huán)境設(shè)置(初始化)、顯示效果處理等工作,由主程序來(lái)實(shí)現(xiàn)。從有利于實(shí)現(xiàn)較復(fù)雜的算法(顯示效果處理)和有利于程序結(jié)構(gòu)化考慮,顯示屏程序適宜采用C語(yǔ)言編寫。7.4.1顯示驅(qū)動(dòng)程序顯示驅(qū)動(dòng)程序在進(jìn)入中斷后首先要對(duì)定時(shí)器T0重新賦初值以保證顯示屏刷新率的穩(wěn)定

11、,1/16掃描的顯示屏的刷新率(幀頻)的計(jì)算公式如下: 式7-1其中fosc為晶振頻率,t0為定時(shí)器T0初值(工作在16位定時(shí)器模式)。然后顯示驅(qū)動(dòng)程序查詢當(dāng)前燃亮的行號(hào),從顯示緩存區(qū)內(nèi)讀取下一行的顯示數(shù)據(jù),并通過(guò)串口發(fā)送給移位寄存器。為消除在切換行顯示數(shù)據(jù)的時(shí)候產(chǎn)生拖尾現(xiàn)象,驅(qū)動(dòng)程序先要關(guān)閉顯示屏,即消隱,等顯示數(shù)據(jù)打入輸出鎖存器并鎖存,然后再輸出新的行號(hào),重新打開顯示。圖7.4為顯示驅(qū)動(dòng)程序(顯示屏掃描函數(shù))流程圖。系統(tǒng)初始化“卷簾出”顯示效果“上滾屏”顯示效果“左跑馬”顯示效果“卷簾入”顯示效果開始圖7.5系統(tǒng)主程序流程圖定時(shí)器賦初值讀取行號(hào)并增1送新行顯示數(shù)據(jù)消隱切換顯示數(shù)據(jù)送新行號(hào)、

12、打開顯示進(jìn)入中斷退出中斷圖7.4顯示驅(qū)動(dòng)程序流程圖7.4.2系統(tǒng)主程序系統(tǒng)主程序開始以后首先是對(duì)系統(tǒng)環(huán)境初始化,包括設(shè)置串口、定時(shí)器、中斷和端口。然后以“卷簾出”效果顯示一個(gè)圖形(J),停留約3秒,接著向上滾動(dòng)顯示“我愛單片機(jī)J”五個(gè)漢字及一個(gè)圖形,停留約3秒,再向左跑馬顯示“我愛單片機(jī)J”這五個(gè)漢字及一個(gè)圖形,然后以“卷簾入”效果隱去圖形(J)。由于單片機(jī)沒(méi)有停機(jī)指令,所以我們可以設(shè)置系統(tǒng)程序不斷地循環(huán)執(zhí)行上述顯示效果。圖7.5是系統(tǒng)主程序的流程圖。7.5調(diào)試及性能分析LED顯示屏硬件電路只要器件質(zhì)量可靠,管腳焊接正確,一般無(wú)需調(diào)試即可正常工作。軟件部分需要調(diào)試的主要有顯示屏刷新頻率及顯示效

13、果兩部分。顯示屏刷新率由定時(shí)器T0的溢出率和單片機(jī)的晶振頻率決定,表7.1給出了實(shí)驗(yàn)調(diào)試時(shí)采用的頻率及其對(duì)應(yīng)的定時(shí)器T0初值。表7.1 顯示屏刷新率(幀頻)與T0初值關(guān)系表(24M晶振)刷新率(Hz)255062.57585100120T0初值0xec780xf63c0xf8300xf97e0xfa420xfb1e0xfbee從理論上來(lái)說(shuō),24Hz以上的刷新率就能看到連續(xù)穩(wěn)定的顯示,刷新率越高,顯示越穩(wěn)定,同時(shí)刷新率越高,顯示驅(qū)動(dòng)程序占用的CPU時(shí)間也越多。實(shí)驗(yàn)證明,在目測(cè)條件下刷新率40Hz以下的畫面看起來(lái)閃爍較嚴(yán)重,刷新率50Hz以上的已基本覺察不出畫面閃爍,刷新率達(dá)到85Hz以上時(shí)再增加

14、畫面閃爍將沒(méi)有明顯改善。顯示效果處理程序的內(nèi)容及方法非常廣泛,其調(diào)試過(guò)程在此不作具體討論,讀者可對(duì)照源程序自行分析。這個(gè)方案設(shè)計(jì)的16×16點(diǎn)陣LED圖文顯示屏,電路簡(jiǎn)單,成本較低,且較容易擴(kuò)展成更大的顯示屏;顯示屏各點(diǎn)亮度均勻、充足;顯示圖形或文字穩(wěn)定、清晰無(wú)串?dāng)_;可用靜止、移入移出等多種顯示方式顯示圖形或文字。7.6控制源程序清單以下是16×16點(diǎn)陣LED電子顯示屏的源程序,分別采用C及匯編編寫,C程序在Keil uVision2 V2.30(C51.exe V7.0)環(huán)境下調(diào)試通過(guò)。/*-16×16點(diǎn)陣LED顯示屏程序MCU AT89C51 XAL 24MH

15、zBuilde by Gavin Hu, 2003.8.15-*/#include <reg51.h>#define BLKN 2 /列鎖存器數(shù)sbit G = 0x97; /P1.7為顯示允許控制信號(hào)端口sbit RCLK = 0x96; /P1.6為輸出鎖存器時(shí)鐘信號(hào)端sbit SCLR = 0x95; /P1.5為移位寄存器清端void delay(unsigned int); /延時(shí)函數(shù)unsigned char data dispram32; /顯示緩存/*- 主函數(shù) void main(void)-*/void main(void) unsigned char code

16、 Bmp32=/字模表 0xF9,0xBF,0xC7,0xAF,0xF7,0xB7,0xF7,0xB7,0xF7,0xBF,0x00,0x01,0xF7,0xBF,0xF7,0xB7, 0xF1,0xD7,0xC7,0xCF,0x37,0xDF,0xF7,0xAF,0xF6,0x6D,0xF7,0xF5,0xD7,0xF9,0xEF,0xFD /*我*/, 0xFF,0x07,0xC0,0x6F,0xED,0xEF,0xF6,0xDF,0xC0,0x01,0xDD,0xFD,0xBD,0xFF,0xC0,0x03, 0xFB,0xFF,0xF8,0x0F,0xF3,0xDF,0xF4,0xBF

17、,0xEF,0x3F,0x9C,0xCF,0x73,0xF1,0xCF,0xFB /*愛*/, 0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7, 0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF /*單*/, 0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF, 0xE

18、0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF /*片*/, 0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77, 0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF /*機(jī)*/, 0xF8,0x3F,0xE7,0xCF,0xDF,0xF7,0xBF,0xFB,0xB3,0x9

19、B,0x73,0x9D,0x7F,0xFD,0x7F,0xFD, 0x6F,0xED,0x67,0xCD,0xB3,0x9B,0xB8,0x3B,0xDF,0xF7,0xE7,0xCF,0xF8,0x3F,0xFF,0xFF /*J*/;register unsigned char i,j,k,l;SCON = 0x00; /串口工作模式0:移位寄存器方式TMOD = 0x01; /定時(shí)器T0工作方式1:16位方式TR0 = 1; /啟動(dòng)定時(shí)器T0P1 = 0x3f; /P1端口初值:允許接收、鎖存、顯示IE = 0x82; /允許定時(shí)器T0中斷while (1) delay(2000); /

20、延時(shí)2秒 for (i=0;i<32;i+) /顯示效果:卷簾出 disprami = Bmp5i; if (i%2) delay(100); / delay(3000); for (i=0; i<6; i+) /顯示效果:上滾屏 for (j=0; j<16; j+) for (k=0; k<15; k+) dispramk*BLKN = dispram(k+1)*BLKN; dispramk*BLKN+1 = dispram(k+1)*BLKN+1; dispram30 = Bmpij*BLKN; dispram31 = Bmpij*BLKN+1; delay(10

21、0); / delay(3000); for (i=0; i<6; i+) /顯示效果:左跑馬 for (j=0; j<2; j+) for (k=1; k<9; k+) for (l=0; l<16; l+) dispraml*BLKN = dispraml*BLKN<<1 | dispraml*BLKN+1>>7; dispraml*BLKN+1 = dispraml*BLKN+1<<1 | Bmpil*BLKN+j>>(8-k); delay(100); /end (k=0; k<16; k+) /end fo

22、r (i=0; i< i+)/ delay(3000); for (i=0;i<32;i+) /顯示效果:卷簾入 disprami = 0x00; if (i%2) delay(100); / /end while (1)/*延時(shí)函數(shù)*/void delay(unsigned int dt)register unsigned char bt;for (; dt; dt-) for (bt=0; bt<255; bt+);/*顯示屏掃描(定時(shí)器T0中斷)函數(shù)*/void leddisplay(void) interrupt 1 using 1register unsigned

23、char i, j=BLKN;TH0 = 0xF8; /設(shè)定顯示屏刷新率每秒62.5幀TL0 = 0x30;i = P1; /讀取當(dāng)前顯示的行號(hào)i = +i & 0x0f; /行號(hào)加1,屏蔽高4位do j-; SBUF = disprami*BLKN + j; /送顯示數(shù)據(jù) while (!TI); TI = 0; while (j); /完成一行數(shù)據(jù)的發(fā)送G = 1; /消隱(關(guān)閉顯示)P1 &= 0xf0; /行號(hào)端口清RCLK = 1; /顯示數(shù)據(jù)打入輸出鎖存器P1 |= i; /寫入行號(hào)RCLK = 0; /鎖存顯示數(shù)據(jù)G = 0; /打開顯示以下為用匯編編寫的字符顯示

24、控制程序:; *; * *; * 單個(gè)16*16點(diǎn)陣電子屏字符顯示器 *; * AT89C52 12MHZ晶振 *; * 2004.2.11 LRM *; *;顯示字用查表法,不占內(nèi)存,字符用16*16共陽(yáng)LED點(diǎn)陣,;效果:向上滾動(dòng)顯示19個(gè)字,再重復(fù)循環(huán)。;R1:查表偏址寄存器,B:查表首址,R2:掃描地址(從00-0FH)。;R3:滾動(dòng)顯示時(shí)控制移動(dòng)速度,單字顯示可控制靜止顯示的時(shí)間。;*;中斷入口程序;*;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHRETIORG 0023HRETIO

25、RG 002BHRETI;*; 初始化程序 ;*;*; 主程序 ;*;START: MOV 20H,#00H ;清標(biāo)志,00H為第16行開始掃描標(biāo)志,01為1幀掃描結(jié)束標(biāo)志 MOV A,#0FFH ;端口初始化 MOV P1,A MOV P2,A MOV P3,A MOV P0,A CLR P1.6 ;串行寄存器輸入打入輸出控制位 MOV TMOD,#01H ;使用T0作16位定時(shí)器,行掃描用。 MOV TH0,#0FCH ;1ms初值(12MHZ) MOV TL0,#18H MOV SCON,#00H ;串口0方式傳送顯示字節(jié) MOV IE,#82H ;T0中斷允許,總中斷允許 MOV SP

26、,#70HMAIN: LCALL DIS1 ;顯示準(zhǔn)備,黑屏,1.5秒 MOV DPTR,#TAB LCALL MOVDISP ;向上滾動(dòng)顯示一頁(yè)(8個(gè)字) INC DPH LCALL MOVDISP ;向上滾動(dòng)顯示一頁(yè)(8個(gè)字) INC DPH LCALL MOVDISP ;向上滾動(dòng)顯示一頁(yè)(8個(gè)字) AJMP MAIN;*; 多字滾動(dòng)顯示子程序 ;*;每次8個(gè)字,入口時(shí)定義好DPTR值;MOVDISP: MOV B,#00H ;向上移動(dòng)顯示,查表偏址暫存(從00開始)DISLOOP: MOV R3,#07H ;移動(dòng)速度DISMOV: MOV R2,#00H ;第0行開始 MOV R1,B

27、; SETB TR0 ;開掃描(每次一幀)WAITMOV: JBC 01H,DISMOV1 ;標(biāo)志為1掃描一幀結(jié)束(16毫秒為1幀,每行1毫秒) AJMP WAITMOVDISMOV1: DJNZ R3,DISMOV ;1幀重復(fù)顯示(控制移動(dòng)速度) INC B ;顯示字的下一行(每行2字節(jié)) INC B ; MOV A,R1 ;R1為0,8個(gè)字顯示完 JZ MOVOUT ; AJMP DISLOOP ;MOVOUT: RET ;移動(dòng)顯示結(jié)束;*; 單字顯示子程序 ;*;顯示表中某個(gè)字DIS1: MOV R3,#5AH ;靜止顯示時(shí)間控制(16MS*#=1.6秒)DIS11: MOV R2,#0

28、0H ;一幀掃描初始值(行地址從00-0FH) MOV DPTR,#TAB ;取表首址 MOV R1,#00H ;查表偏址(顯示第一個(gè)字) SETB TR0 ;開掃描(每次一幀)WAIT11: JBC 01H,DIS111 ;為1,掃描一幀結(jié)束 AJMP WAIT11DIS111: DJNZ R3,DIS11 RET;*; 掃描程序 ;*;1MS刷新一次,每行顯示1秒INTT0: PUSH ACC MOV TH0,#0FCH ;1ms初值重裝 MOV TL0,#18H JBC 00H,GOEND ;16行掃描標(biāo)志為1,結(jié)束 INC R1 ;取行右邊字節(jié)偏址 MOV A,R1 MOVC A,A+

29、DPTR ;查表 MOV SBUF,A ;串口0方式發(fā)送WAIT: JBC TI,GO ;等待發(fā)送完畢 AJMP WAIT ;GO: DEC R1 ;取行左邊字節(jié)偏址 MOV A,R1 MOVC A,A+DPTR MOV SBUF,AWAIT1: JBC TI,GO1 AJMP WAIT1GO1: SETB P1.7 ;關(guān)行顯示,準(zhǔn)備刷新 NOP ;串口寄存器數(shù)據(jù)穩(wěn)定 SETB P1.6 ;產(chǎn)生上升沿,行數(shù)據(jù)打入輸出端 NOP ; NOP ; CLR P1.6 ;恢復(fù)低電平 MOV A,R2 ;修改顯示行地址 ORL A,#0F0H ;修改顯示行地址 MOV R2,A ;修改顯示行地址 MOV

30、 A,P1 ;修改顯示行地址 ORL A,#0FH ;修改顯示行地址 ANL A,R2 ;修改顯示行地址 MOV P1,A ;修改完成 CLR P1.7 ;開行顯示 INC R2 ;下一行掃描地址值 INC R1 ; INC R1 ;下一行數(shù)據(jù)地址 MOV A,R2 ANL A,#0FH JNZ GO2 SETB 00H ;R2為10H,現(xiàn)為末行掃描,置標(biāo)志GO2: POP ACC RETIGOEND: CLR TR0 ;一幀掃描完,關(guān)掃描 SETB 01H ;一幀掃描完,置結(jié)束標(biāo)志 POP ACC RETI ;退出;*; 掃描文字表 ;*; TAB: DB 0FFH,0FFH,0FFH,0F

31、FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH ;黑屏 DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H,0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H ;單 DB 0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H,0FEH,0FFH,0FEH,0FFH,0

32、FEH,0FFH,0FEH,0FFH DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH ; 片 DB 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH DB 0EFH,0FFH,0EFH,007H,0EFH,077H,001H,077H,0EFH,077H,0EFH,077H,0C7H,077H,0CBH,077H ; 機(jī) DB 0ABH,077H,0AFH,077H,0

33、6EH,0F7H,0EEH,0F5H,0EDH,0F5H,0EDH,0F5H,0EBH,0F9H,0EFH,0FFH DB 0FFH,0FFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,0F7H,0EFH,0F0H,00FH,0FFH,0FFH,000H,001H ;是 DB 0FEH,0FFH,0F6H,0FFH,0F6H,007H,0F6H,0FFH,0EAH,0FFH,0DCH,0FFH,0BFH,001H,0FFH,0FFH DB 0FFH,0FFH,0C0H,003H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH

34、,0FEH,0FFH ;工 DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,0FFH,0FFH,0FFH,0FFH DB 0FBH,0BFH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,0BBH,0B9H,0DBH,0B3H,0DBH,0B7H,0EBH,0AFH ;業(yè) DB 0E3H,0AFH,0EBH,09FH,0FBH,0BFH,0FBH,0BFH,0FBH,0BBH,000H,001H,0FFH,0FFH,0FFH,0FFH DB 0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0

35、C0H,003H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H ;中 DB 0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH ; DB 0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H ; 中 DB 0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FE

36、H,0FFH DB 0E0H,00FH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,0E0H,00FH,0FFH,0FFH,000H,001H,0DDH,0FFH ; 最 DB 0C1H,003H,0DDH,077H,0C1H,0AFH,0DCH,0DFH,0C1H,0AFH,01DH,071H,0FCH,0FBH,0FDH,0FFH DB 0F7H,0DFH,0F7H,0DFH,080H,003H,0F7H,0DFH,0F0H,01FH,0F7H,0DFH,0F0H,01FH,0F7H,0DFH ; 基 DB 000H,001H,0F7H,0DFH,0EEH,0E7H,0C0

37、H,011H,03EH,0FBH,0FEH,0FFH,080H,003H,0FFH,0FFH DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,000H,001H,0FCH,07FH,0FCH,0BFH,0FAH,0BFH,0FAH,0DFH ; 本 DB 0F6H,0EFH,0EEH,0E7H,0D0H,011H,03EH,0FBH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FFH DB 0EFH,07FH,0EFH,07FH,0DFH,07FH,083H,003H,0BAH,0FBH,0BAH,0FBH,0B9H,0FBH,083H,07BH

38、; 的 DB 0BBH,0BBH,0BBH,09BH,0BBH,0DBH,0BBH,0FBH,083H,0FBH,0BBH,0D7H,0BFH,0EFH,0FFH,0FFH DB 0FEH,0FFH,0FFH,07FH,0C0H,003H,0DFH,0FFH,0DDH,0FFH,0DEH,0F7H,0CFH,073H,0D7H,037H ;應(yīng) DB 0DBH,06FH,0DBH,06FH,0D9H,0DFH,0BBH,0DFH,0BFH,0BFH,0A0H,001H,07FH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0E0H,003H,0EFH,07BH,0EFH,07BH,0

39、EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH ;用 DB 0EFH,07BH,0E0H,003H,0EFH,07BH,0EFH,07BH,0DFH,07BH,0DFH,07BH,0BFH,06BH,07FH,077H DB 0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,0FDH,0FFH,0FDH,0FFH,0FCH,00FH,0FDH,0EFH ; 方 DB 0FBH,0EFH,0FBH,0EFH,0F7H,0EFH,0F7H,0EFH,0EFH,0EFH,0DFH,06FH,03FH,09FH,0FFH,0FFH ; DB 0FDH,0FFH,0FEH,0FFH,0FFH,07FH,000H,001H,0FDH,0FFH,0FDH

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論