版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1.引 言3</b></p><p> 1.1.設(shè)計意義3</p><p> 1.2.系統(tǒng)功能要求3</p><p> 1.3.本組成員所做的工作3</p><p> 2.
2、總體設(shè)計方案3</p><p> 3.設(shè)計原理分析7</p><p> 4.系統(tǒng)調(diào)試10</p><p> 5.設(shè)計總結(jié)12</p><p><b> 參考文獻12</b></p><p> 6.附 錄A;源程序13</p><p> 7.
3、附 錄B;原理圖18</p><p> 8.附 錄C;作品實物圖片19</p><p><b> LED點陣的顯示</b></p><p><b> 班級姓名:</b></p><p> 摘要::LED顯示屏作為一種新型的顯示器件,是由多個發(fā)光二極管按矩陣形式排列封裝而成,通常用來顯示
4、時間、圖文等信息。本設(shè)計是基于ATS52單片機的16x16顯示屏,其中包含了硬件、軟件、調(diào)試等方案的設(shè)計。此外、該設(shè)計只需簡單的級聯(lián)就能實現(xiàn)顯示屏的拓展,但級聯(lián)時要注意不要超過驅(qū)動負載范圍。</p><p><b> 1 引言</b></p><p><b> 1.1設(shè)計意義</b></p><p> LED顯示屏是
5、一種通過控制半導(dǎo)體發(fā)光二極管的顯示方式,用來顯示文字、圖形、圖像、動畫、行情、視頻、錄像信號等各種信息的顯示屏幕。圖文顯示屏可與計算機同步顯示漢字、英文文本和圖形;視頻顯示屏采用微型計算機進行控制,圖文、圖像并茂,以實時、同步、清晰的信息傳播方式播放各種信息,還可顯示二維、三維動畫、錄像、電視、VCD節(jié)目以及現(xiàn)場實況。LED顯示屏顯示畫面色彩鮮艷,立體感強,靜如油畫,動如電影,廣泛應(yīng)用于車站、碼頭、機場、商場、醫(yī)院、賓館、銀行、證券市場
6、、建筑市場、拍賣行、工業(yè)企業(yè)管理和其它公共場所。</p><p> 它的優(yōu)點:亮度高、工作電壓低、功耗小、微型化、易與集成電路匹配、驅(qū)動簡單、壽命長、耐沖擊、性能穩(wěn)定。</p><p><b> 1.2系統(tǒng)功能要求</b></p><p> 1.2.1、利用單片機控制雙色8×8LED點陣的顯示。先測試8×8LED點陣模
7、塊每個LED是否顯示正常,測試完成后,顯示廣東石油化工學(xué)院八個漢字,要求漢字循環(huán)向右移動。</p><p> 1.2.2、所有的8×8LED全部顯示成紅色,接著熄滅所有LED;顯示廣東石油化工學(xué)院向右移動,直到全部溢出,然后熄滅所有LED;如此循環(huán)顯示。</p><p> 1.2.3、在8X8點陣式LED能顯示“★”、“●”和心形圖。</p><p>
8、<b> 1.3本組成員工作</b></p><p><b> 方案原理論證:</b></p><p><b> 焊接:</b></p><p><b> 調(diào)試:</b></p><p><b> 設(shè)計報告:</b><
9、/p><p><b> 2 總體設(shè)計方案</b></p><p><b> 2.1 設(shè)計思路</b></p><p> 圖文顯示一般有靜態(tài)和動態(tài)顯示兩種方案,靜態(tài)方案雖然設(shè)計簡單,但其使用的管腳太多,如本設(shè)計中16x16的點陣共有256個發(fā)光二極管,顯然單片機沒有這么多的端口,如果我采用鎖存器來擴展端口,按8位的鎖存器來
10、計算,16x16的點陣需要256/8=32個鎖存器。這個數(shù)字很龐大,因為我們僅僅是16x16的點陣,在實際應(yīng)用中的顯示屏往往要大得多,這樣在鎖存器上花的成本將是一個很龐大的數(shù)字。因此在實際應(yīng)用中的顯示屏幾乎都不采用這種設(shè)計,而采用另外一種稱為動態(tài)掃描的顯示方法。</p><p> 動態(tài)掃描的意思簡單地說就是逐行輪流點亮,這樣掃描驅(qū)動電路就可以實現(xiàn)多行(比如16行)的同名列共用一套驅(qū)動器。具體就16x16的點陣來
11、說,把所有同1行的發(fā)光管的陽極連在一起,把所有同1列的發(fā)光管的陰極連在一起(共陽極的接法),先送出對應(yīng)第一行發(fā)光管亮滅的數(shù)據(jù)并鎖存,然后選通第1行使其燃亮一定時間,然后熄滅;再送出第二行的數(shù)據(jù)并鎖存,然后選通第2行使其燃亮相同的時間,然后熄滅;以此類推,第16行之后,又重新燃亮第1行,反復(fù)輪回。當這樣輪回的速度足夠快(每秒24次以上),由于人眼的視覺暫留現(xiàn)象,就能夠看到顯示屏上穩(wěn)定的圖形了。</p><p>
12、采用掃描方式進行顯示時,每一行有一個行驅(qū)動器,各行的同名列共用一個驅(qū)動器。顯示數(shù)據(jù)通常存儲在單片機的存儲器中,按8位一個字節(jié)的形式順序排放。顯示時要把一行中各列的數(shù)據(jù)都傳送到相應(yīng)的列驅(qū)動器上去,這就存在一個顯示數(shù)據(jù)傳輸?shù)膯栴}。從控制電路到列驅(qū)動器的數(shù)據(jù)傳輸可以采用并列方式或串行方式。顯然,采用并行方式時,從控制電路到列驅(qū)動器的線路數(shù)量大,相應(yīng)的硬件數(shù)目多。當列數(shù)很多時,并列傳輸?shù)姆桨甘遣豢扇〉摹?lt;/p><p>
13、 采用串行傳輸?shù)姆椒?,控制電路可以只用一根信號線,將列數(shù)據(jù)一位一位傳往列驅(qū)動器,在硬件方面無疑是十分經(jīng)濟的。但是,串行傳輸過程較長,數(shù)據(jù)按順序一位一位地輸出給列驅(qū)動器,只有當一行的各列數(shù)據(jù)都以傳輸?shù)轿恢?,這一行的各列才能并行地進行顯示。這樣,對于一行的顯示過程就可以分解成列數(shù)據(jù)準備(傳輸)和列數(shù)據(jù)顯示兩部分。對于串行傳輸方式來說,列數(shù)據(jù)準備時間可能相當長,在行掃描周期確定的情況下留給行顯示的時間就太少了,以致影響到LED的亮度。&l
14、t;/p><p> 解決串行傳輸中列數(shù)據(jù)準備和列數(shù)據(jù)顯示的時間矛盾問題,可以采用重疊處理的方法。即在顯示本行各列數(shù)據(jù)的同時,傳送下一列數(shù)據(jù)。為了達到重疊處理的目的,列數(shù)據(jù)的顯示就需要具有所存功能。經(jīng)過上述分析,就可以歸納出列驅(qū)動器電路應(yīng)具有的功能。對于列數(shù)據(jù)準備來說,它應(yīng)能實現(xiàn)串入并處的移位功能;對于列數(shù)據(jù)顯示來說,應(yīng)具有并行鎖存的功能。這樣,本行已準備好的數(shù)據(jù)打入并行鎖存器進行顯示時,串并移位寄存器就可以準備下一
15、行的列數(shù)據(jù),而不會影響本行的顯示</p><p><b> 2.2 設(shè)計方框圖</b></p><p> 2.3 主控制器STC89C52RC單片機簡介</p><p> STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得
16、STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作
17、。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35Mhz,6T/12T可選。</p><p> 和atmel的對比 </p><p> STC89C52RC單片機: </p><p> 8K字節(jié)程序存儲空間; </p><p> 512字節(jié)數(shù)據(jù)存儲空間; </p&
18、gt;<p> 內(nèi)帶4K字節(jié)EEPROM存儲空間; </p><p> 可直接使用串口下載; </p><p> AT89S52單片機: </p><p> 8K字節(jié)程序存儲空間; </p><p> 256字節(jié)數(shù)據(jù)存儲空間; </p><p> 沒有內(nèi)帶EEPROM存儲空間;</p&g
19、t;<p> 2.4 74HC595芯片</p><p> 74HC595是硅結(jié)構(gòu)的CMOS器件, 兼容低電壓TTL電路,遵守JEDEC標準。 74HC595是具有8位移位寄存器和一個存儲器,三態(tài)輸出功能。 移位寄存器和存儲器是分別的時鐘。 數(shù)據(jù)在SHcp的上升沿輸入到移位寄存器中,在STcp的上升沿輸入到存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。 移位寄存
20、器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復(fù)位,存儲寄存器有一個并行8位的,具備三態(tài)的總線輸出,當使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。</p><p> 8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關(guān)斷狀態(tài)。三態(tài)。</p><p> 2.5 8X8點陣</p><p> 一共64個發(fā)光點構(gòu)成,上下兩排引腳
21、,每排8個,一共16個</p><p> 8X8點陣的顯示原理:</p><p> 8X8點陣共由64個發(fā)光二極管組成,且每個發(fā)光二極管是</p><p> 放置在行線和列線的交叉點上,當對應(yīng)的某一行置1電平,某一列置0電平,則相應(yīng)的</p><p> 二極管就亮;如要將第一個點點亮,則1腳接高電平a腳接低電平,則第一個點就亮了;&l
22、t;/p><p> 如果要將第一行點亮,則第1腳要接高電平,而(a、b、c、d、e、f、g、h )</p><p> 這些引腳接低電平,那么第一行就會點亮;如要將第一列點亮,</p><p> 則第a腳接低電平,而(1、2、3、4、5、6、7、8)接高電平,那么第一列就會點亮.</p><p><b> 3 設(shè)計原理分
23、析</b></p><p><b> 3.1 硬件設(shè)計</b></p><p><b> 3.1.1電源部分</b></p><p> 3.1.2單片機系統(tǒng)</p><p> 常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,一種是外部時鐘方式。本設(shè)計采用內(nèi)部時鐘方式,將XTAL
24、1(X1)與XTAL2(X2)之間跨接一個晶振和瓷片電容,從而構(gòu)成一個穩(wěn)定的自激震蕩器。電容值取22pF,其大小將影響震蕩頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。為減少線間的寄生電容,晶振和電容應(yīng)盡能安裝得與單片機靠近,保證晶振穩(wěn)定可靠的工作。</p><p> 另一部分是復(fù)位部分。上電自動復(fù)位電路是最簡單的復(fù)位電路,只需要一個1K左右電阻、一個22pF左右的電容及12MHZ的晶振。有時還需要按鍵手動復(fù)位,此
25、時只要在電容上并聯(lián)一個按鍵即可。電容一個為一般電容,一個為電解電容。</p><p><b> 3.1.3按鍵部分</b></p><p> 由于按鍵的封裝為四腳,為了布線,就把按鍵畫成左上角的樣子,再把兩邊相連,這是因為按鍵距離長的一邊都是相通的,根據(jù)這個特性而畫出按鍵。另外,兩按鍵接的是外部中斷INT0和INT1。</p><p>&l
26、t;b> 3.1.4連接口</b></p><p> 左圖為與8X8LED模塊的連接口,由于用到P1口,所以干脆全部口都引出來。</p><p> 3.1.5 8X8LED點陣模塊</p><p> 上圖就是8X8點陣驅(qū)動模塊。</p><p> 各行的同名列共用一個列驅(qū)動,數(shù)據(jù)通常存儲在單片機的存儲器中,按8位
27、一個字節(jié)的形式存放。由于列線過多,故多采用串行傳輸。由于每次要傳輸16位,而且數(shù)據(jù)要逐位輸給驅(qū)動器,只有當一行中各列數(shù)據(jù)都已傳輸?shù)轿缓螅@一行的各列才能進行并行顯示,耗時較長。為了滿足以上要求,驅(qū)動選擇74LS595移位寄存器。移位寄存器和存儲器是分別的時鐘。 數(shù)據(jù)在SCHcp的上升沿輸入,在STcp的上升沿進入的存儲寄存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。 移位寄存器有一個串行移位輸入(Ds),和一個
28、串行輸出(Q7’),和一個異步的低電平復(fù)位,存儲寄存器有一個并行8位的,具備三態(tài)的總線輸出,當使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。其特點:8位串行輸入 /8位串行或并行輸出 存儲狀態(tài)寄存器,三種狀態(tài); 輸出寄存器可以直接清除 100MHz的移位頻率。輸出能力: 并行輸出,總線驅(qū)動;串行輸出;標準中等規(guī)模集成電路 。</p><p> 74HC595是一個串入并出的芯片,通過一個for(i=0;i
29、<8;i++)來存儲數(shù)據(jù)。</p><p> 具體來說就是第一個時鐘信號來到時低位的數(shù)據(jù)向高位挪動一位,在這個程序中是SH_CK 信號,當SH_CLK 是一個上跳沿時,傳入的形參dat與0x80相與,得到的數(shù)為1,則通過SDATA置1,否通過置為0,并存儲在SDATA的相應(yīng)位置(最低位)上,DS內(nèi)部也自動左移一位數(shù)據(jù)然后dat向左移一位,使次高位變?yōu)樽罡呶慌c0x80相與,并存儲。通過8次后,就可以得到數(shù)據(jù)
30、,并存儲在SDTTA中了,</p><p> 這時ST_CK一個上跳沿,數(shù)據(jù)即送出去了。 </p><p><b> 4 軟件設(shè)計</b></p><p> 顯示屏軟件模塊:初始化程序、主程序、多字滾動、顯示程序、掃描程序。顯示程序的主要功能是向屏體提供顯示數(shù)據(jù),并產(chǎn)生各種控制信號,使屏幕按設(shè)計的要求顯示。軟件設(shè)計中,顯示屏的軟件系統(tǒng)分為
31、兩層;第一層是底層的顯示驅(qū)動程序,第二層是上層的系統(tǒng)應(yīng)用程序。顯示驅(qū)動程序負責(zé)向屏體送顯示數(shù)據(jù),并負責(zé)產(chǎn)生行掃描信號和其他控制信號,配合完成LED顯示屏的掃描顯示工作。顯示驅(qū)動器程序由定時器T0中斷程序?qū)崿F(xiàn)。系統(tǒng)應(yīng)用程序完成系統(tǒng)環(huán)境設(shè)置(初始化)、顯示效果處理等工作,由主程序來實現(xiàn)。</p><p> 4.1 74HC595驅(qū)動</p><p> /*----------------
32、----------------------------*/</p><p> #ifndef __74HC595_H__</p><p> #define __74HC595_H__</p><p> /*--------------------------------------------*/</p><p> sbit SD
33、 = P1^4;//串行數(shù)據(jù)輸入</p><p> sbit ST_CK = P1^5;//存儲寄存器時鐘輸入</p><p> sbit SH_CK = P1^6;//移位寄存器時鐘輸入</p><p> /*--------------------------------------------*/</p><p><
34、;b> //函數(shù)聲明</b></p><p> void Ser_IN(unsigned char Data);//串行數(shù)據(jù)輸入</p><p> void Par_OUT(void);//串行數(shù)據(jù)輸出</p><p> /*--------------------------------------------*/</p
35、><p><b> //串行數(shù)據(jù)輸入</b></p><p> void Ser_IN(unsigned char Data)</p><p><b> {</b></p><p> unsigned char i;</p><p> for(i = 0; i <
36、 8; i++)</p><p><b> {</b></p><p> SH_CK = 0;</p><p> SD = Data & 0x80;</p><p> Data <<= 1;</p><p> SH_CK = 1;</p><
37、p><b> }</b></p><p><b> }</b></p><p> /*--------------------------------------------*/</p><p><b> //并行數(shù)據(jù)輸出</b></p><p> void P
38、ar_OUT(void)</p><p><b> {</b></p><p> ST_CK = 0;</p><p> ST_CK = 1;</p><p><b> }</b></p><p><b> #endif</b></p&g
39、t;<p> 根據(jù)74HC595的功能表,就可以很容易寫出上面的頭文件。</p><p><b> 4.2 中斷</b></p><p> 4.2.1外部中斷0</p><p> 在該中斷中實現(xiàn)的功能為狀態(tài)跳轉(zhuǎn),用flag變量來實現(xiàn)。</p><p> void ex0() interrupt 0
40、</p><p><b> {</b></p><p> if(INT0==0)</p><p><b> {</b></p><p> delay_ms(20);</p><p> if(INT0==0)</p><p><b>
41、 {</b></p><p><b> flag++;</b></p><p> if(flag==4)</p><p><b> flag=0;</b></p><p><b> k=0;</b></p><p><b>
42、; n=0;</b></p><p><b> m=0;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p>&l
43、t;b> }</b></p><p><b> 4.2.2定時器0</b></p><p> 利用定時器0實現(xiàn)定時掃描。每1ms掃描一次。</p><p> TH0=(65536-1000)/256=0xfc</p><p> TL0=(65536-1000)%256=0x18</p&g
44、t;<p> 如上,為定時器初值計算方法。</p><p> void t0() interrupt 1</p><p><b> {</b></p><p> TH0 = 0xfc; </p><p
45、> TL0 = 0x18;</p><p> display();</p><p><b> }</b></p><p><b> 4.3顯示函數(shù)</b></p><p> 該函數(shù)用了Ser_IN(),Par_OUT(),函數(shù),在74HC595頭文件里有定義。</p>
46、<p> 該函數(shù)里還對速度進行了控制。</p><p><b> 4.4 掃描壞點</b></p><p> if(onlyone==0)</p><p><b> {</b></p><p> for(i=0; i<2; i++)</p><p>
47、<b> {</b></p><p> for(j=0; j<8; j++) //全亮</p><p><b> {</b></p><p> Ser_IN(0); //8X8點陣列掃描</p><p> Ser_IN(0xff);</p><p> Pa
48、r_OUT();</p><p><b> }</b></p><p> delay_ms(2000);</p><p> for(j=0; j<8; j++) //全滅</p><p><b> {</b></p><p> Ser_IN(0xff);
49、 //8X8點陣列掃描</p><p> Ser_IN(0);</p><p> Par_OUT();</p><p><b> }</b></p><p> delay_ms(2000);</p><p><b> }</b></p><p
50、><b> TR0=1;</b></p><p> onlyone++;</p><p><b> }</b></p><p><b> 5 設(shè)計總結(jié)</b></p><p> 本次設(shè)計的8X8的點陣LED顯示,能夠在目測條件下LED顯示屏各點亮度充足,可顯示“
51、廣東石油化工學(xué)院”,也可顯示五角星,心形,還有圓形。顯示的圖形和文件較穩(wěn)定、清晰?!皬V東石油化工學(xué)院”向右滾動顯示。本系統(tǒng)具有硬件少,結(jié)構(gòu)簡單,容易實現(xiàn),性能穩(wěn)定可靠,成本低等特點。</p><p> 在此次設(shè)計中,我們得到以下體會:</p><p> 在這次點陣設(shè)計的過程中,讓我進一步熟悉Keil及DXP的使用。</p><p> 本次設(shè)計結(jié)果有個別點比較亮
52、,這應(yīng)該是點陣驅(qū)動的問題,可待改進。</p><p> 通過這次點陣設(shè)計,從硬件上了解了STC89C52RC優(yōu)點。</p><p> 本次設(shè)計的“廣東石油化工學(xué)院”8字,除了“學(xué)院”兩字和圓形比較難顯示以外,其他的都很清晰,主要原因是8X8點陣分辨率不夠高,一共才64個點。本來打開用4個8X8集成一個16X16,但是由于個別原因,沒有改動。</p><p>
53、在后面的設(shè)計中,都沒有什么問題。在焊接方面,我們了解到焊接器件的步驟,而且要先消去電烙鐵的靜電,防止靜電對芯片特別是放大器件造成傷害,焊接二極管,三極管等元器件速度要快,防止持續(xù)高溫損壞元器件。</p><p><b> 參考文獻</b></p><p> [1] 劉欣銘,張廣斌.LED顯示屏技術(shù)綜述[J].黑龍江電力,2003, 25(4):294-296.&l
54、t;/p><p> [2] 陽進.基于單片機的LED顯示屏的漢字顯示[J].中國科技信息,2005,(12):112.</p><p> [3] Mark Nelson著.瀟湘工作室譯.串行通信開發(fā)指南[M].中國水利水電出版社,2002. </p><p> [4] 王宜懷.單片機原理及其嵌入式應(yīng)用教程[M].北京希望電子出版社,2002. </p>
55、<p> [5] 韓潤萍,陳小萍.點陣LED顯示屏控制系統(tǒng)[J].微計算機信息,2003,19(10):50-51. </p><p> 6.附 錄A;源程序</p><p> 6.1 //8X8.C\\</p><p> #include<reg52.h></p><p> #include "
56、;74HC595.H"</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> #define num sizeof(table)</p><p> unsigned char code lie[]={0xfe,0x
57、fd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; </p><p> unsigned char code table[]={</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x00,0x04,0x04,0x06,0x04,0x3c,0x40,0x00,/*"
58、廣"*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x70,0x12,0xfa,0x93,0x36,0xda,0x12,0x00,/*"東"*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</
59、p><p> 0xf2,0x92,0x92,0xf6,0x1a,0x62,0x82,0x00,/*"石"*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x7c,0x54,0x7f,0x54,0x7c,0x00,0x54,0x4a,/*"油"*/&l
60、t;/p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x62,0x44,0x68,0x3e,0x10,0x01,0x7e,0x04,/*"化"*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><
61、p> 0x00,0x40,0x44,0x44,0x7c,0x44,0x44,0x00,/*"工"*/</p><p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x26,0x2b,0x3a,0xeb,0xaa,0x2b,0x06,0x00,/*"學(xué)"*/</p>&
62、lt;p> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p> 0x80,0xf6,0x1a,0x3b,0x5a,0x84,0x1e,0xfe,/*"院"*/</p><p><b> };</b></p><p> unsigned char code tabl
63、e_xx[]={</p><p> 0xC4,0x6C,0x7E,0x3F,0x3F,0x7E,0x6C,0xC4,/*"星星"*/</p><p><b> };</b></p><p> unsigned char code table_yuan[]={</p><p> 0x00,0x1
64、8,0x3C,0x7E,0x7E,0x3C,0x18,0x00,/*"圓形"0*/</p><p><b> };</b></p><p> unsigned char code table_xin[]={</p><p> 0x1C,0x22,0x42,0x84,0x84,0x42,0x22,0x1C,/*"
65、;心形"0*/</p><p><b> };</b></p><p> uchar function=0;</p><p> uchar k,onlyone,flag;</p><p> uint m ,n;</p><p> void delay_ms(uint xms)&
66、lt;/p><p><b> {</b></p><p> uint i, j;</p><p> for(i=xms; i>0; i--)</p><p> for(j=122; j>0; j--);</p><p><b> }</b></p>
67、;<p> void init()</p><p><b> {</b></p><p> TMOD = 0x01;</p><p> TH0 = 0xfc;//1ms</p><p> TL0 = 0x18;</p><p> IE = 0x82;</
68、p><p><b> EX0 = 1;</b></p><p><b> IT0 = 1;</b></p><p><b> }</b></p><p> void display(void)</p><p><b> {</b&g
69、t;</p><p> Ser_IN((lie[7-k])); //列掃描數(shù)據(jù)</p><p> Ser_IN(table[k+n]);//查表取出行掃描數(shù)據(jù)</p><p> Par_OUT();//輸出顯示</p><p><b> k++; </b></p><p&g
70、t; if(k==8) k=0;//循環(huán)掃描</p><p><b> m++; </b></p><p> if(m==200) //滾動速度控制</p><p><b> {</b></p><p><b> m=0; </b></p>
71、;<p><b> n++;</b></p><p><b> }</b></p><p> if(n==num-7) n=0;//循環(huán)顯示</p><p><b> }</b></p><p> void main(void)</p&g
72、t;<p><b> {</b></p><p> uchar i,j;</p><p> init(); //初始化</p><p><b> while(1)</b></p><p><b> {</b></p><
73、;p> if(onlyone==0) //掃壞點,只掃一次</p><p><b> {</b></p><p> for(i=0; i<2; i++)</p><p><b> {</b></p><p> for(j=0; j<8; j++) //全亮</
74、p><p><b> {</b></p><p> Ser_IN(0); //8X8點陣列掃描</p><p> Ser_IN(0xff);</p><p> Par_OUT();</p><p><b> }</b></p><p> de
75、lay_ms(2000);</p><p> for(j=0; j<8; j++) //全滅</p><p><b> {</b></p><p> Ser_IN(0xff); //8X8點陣列掃描</p><p> Ser_IN(0);</p><p> Par_OUT();
76、</p><p><b> }</b></p><p> delay_ms(2000);</p><p><b> }</b></p><p><b> TR0=1;</b></p><p> onlyone++;</p>&
77、lt;p><b> }</b></p><p> while(flag==1)</p><p><b> {</b></p><p><b> TR0=0;</b></p><p> for(j=0; j<8; j++) //星形</p>
78、<p><b> {</b></p><p> Ser_IN(lie[j]); //8X8點陣列掃描</p><p> Ser_IN(table_xx[j]);</p><p> Par_OUT();</p><p> delay_ms(1);</p><p><b>
79、; }</b></p><p><b> }</b></p><p> while(flag==2)</p><p><b> {</b></p><p><b> TR0=0;</b></p><p> for(j=0; j&
80、lt;8; j++) //圓形</p><p><b> {</b></p><p> Ser_IN(lie[j]); //8X8點陣列掃描</p><p> Ser_IN(table_yuan[j]);</p><p> Par_OUT();</p><p> delay_ms(1)
81、;</p><p><b> }</b></p><p><b> }</b></p><p> while(flag==3)</p><p><b> {</b></p><p><b> TR0=0;</b><
82、/p><p> for(j=0; j<8; j++) //心形 </p><p><b> {</b></p><p> Ser_IN(lie[j]); //8X8點陣列掃描</p><p> Ser_IN(table_xin[j]);</p><p> Par_OUT();<
83、/p><p> delay_ms(1);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
84、;<p> void t0() interrupt 1</p><p><b> {</b></p><p> TH0 = 0xfc; </p><p> TL0 = 0x18;</p><p>
85、 display();</p><p><b> }</b></p><p> void ex0() interrupt 0</p><p><b> {</b></p><p> if(INT0==0)</p><p><b> {</b>
86、</p><p> delay_ms(20);</p><p> if(INT0==0)</p><p><b> {</b></p><p><b> flag++;</b></p><p> if(flag==4)</p><p><
87、;b> flag=0;</b></p><p><b> k=0;</b></p><p><b> n=0;</b></p><p><b> m=0;</b></p><p><b> TR0=1;</b></p>
88、;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 6.2 //74HC595.H\\</p><p> /*-----------------------------------
89、---------*/</p><p> #ifndef __74HC595_H__</p><p> #define __74HC595_H__</p><p> /*--------------------------------------------*/</p><p> sbit SD = P1^4;//串行數(shù)據(jù)輸入
90、</p><p> sbit ST_CK = P1^5;//存儲寄存器時鐘輸入</p><p> sbit SH_CK = P1^6;//移位寄存器時鐘輸入</p><p> /*--------------------------------------------*/</p><p><b> //函數(shù)聲明</
91、b></p><p> void Ser_IN(unsigned char Data);//串行數(shù)據(jù)輸入</p><p> void Par_OUT(void);//串行數(shù)據(jù)輸出</p><p> /*--------------------------------------------*/</p><p><
92、b> //串行數(shù)據(jù)輸入</b></p><p> void Ser_IN(unsigned char Data)</p><p><b> {</b></p><p> unsigned char i;</p><p> for(i = 0; i < 8; i++)</p>
93、<p><b> {</b></p><p> SH_CK = 0;//CLOCK_MAX=100MHz</p><p> SD = Data & 0x80;</p><p> Data <<= 1;</p><p> SH_CK = 1;</p><p
94、><b> }</b></p><p><b> }</b></p><p> /*--------------------------------------------*/</p><p><b> //并行數(shù)據(jù)輸出</b></p><p> void Pa
95、r_OUT(void)</p><p><b> {</b></p><p> ST_CK = 0;</p><p> ST_CK = 1;</p><p><b> }</b></p><p><b> #endif</b></p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于c語言的8x8點陣設(shè)計
- 8x8點陣廣告牌課程設(shè)計報告
- 8x_8點陣動態(tài)廣告牌課程設(shè)計報告
- 8×8點陣led數(shù)碼圖形顯示的課程設(shè)計
- 16x32點陣課程設(shè)計
- 16x16點陣微機課程設(shè)計
- 16*16點陣課程設(shè)計
- eda課程設(shè)計--1616點陣顯示
- eda課程設(shè)計-- 1616點陣顯示
- 16乘16點陣設(shè)計課程設(shè)計
- 單片機課程設(shè)計---4個8×8點陣led電子顯示屏的設(shè)計
- 單片機課程設(shè)計--4個8×8點陣led電子顯示屏的設(shè)計
- 16x16點陣課程設(shè)計--16×16點陣led電子顯示屏的設(shè)計
- eda課程設(shè)計報告--1616點陣顯示
- 課程設(shè)計--led1616點陣顯示設(shè)計
- led16x16點陣課程設(shè)計--16×16點陣led電子顯示屏的設(shè)計
- 單片機課程設(shè)計--1616點陣顯示實驗
- 單片機原理與應(yīng)用課程設(shè)計---16x16點陣顯示
- c語言課程設(shè)計銀行存取款業(yè)務(wù)8
- 16乘16點陣顯示單片機課程設(shè)計
評論
0/150
提交評論