版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 1 引 言</b></p><p><b> 1.1系統(tǒng)設(shè)計要求</b></p><p> 設(shè)計并制作一個依靠搖動能顯示字符、圖形的LED顯示棒。</p><p> 系統(tǒng)設(shè)計的基本要求:</p><p> 設(shè)計一個基于LED的顯示棒,其中LED燈必須呈線狀排列,
2、并至少使用16只,系統(tǒng)采用電池供電,搖動顯示棒時形成的亮燈扇形區(qū)域能讓人分辨出字符“A”、文字“電” 以及國際奧委會五環(huán)圖形,并用按鍵實現(xiàn)顯示的切換。</p><p> 系統(tǒng)設(shè)計的發(fā)揮部分:</p><p> 搖動顯示棒時形成的亮燈扇形區(qū)域能夠讓人分辨出英文單詞“Welcome”、漢字詞組“美亞”和北京奧運會會徽圖形,并適當(dāng)增加設(shè)計特色與創(chuàng)新。</p><p>
3、 1.2 系統(tǒng)設(shè)計思路及特點</p><p> 該LED顯示棒搖動時顯現(xiàn)的字符或圖形由LED燈顯示,LED燈成線狀排列,每個瞬間線陣只能顯示數(shù)字編碼后的文字或圖形的一列,利用人眼的視覺暫留原理,將需要顯示的字符或圖形分成N列(N≥16),一般人手左右擺動的頻率為幾赫茲到十幾赫茲,因此,通過單片機控制LED線陣以一較低頻率掃描顯示字符或圖形的每一列,擺動顯示棒時即可因視覺暫留看出顯示的字符或圖形;左右擺動一次通
4、過端口電平變化,調(diào)用相應(yīng)的顯示子程序,字符切換通過外部中斷實現(xiàn),該系統(tǒng)設(shè)計對程序設(shè)計的要求較硬件電路要高。</p><p><b> 2 系統(tǒng)理論設(shè)計</b></p><p> 2.1 系統(tǒng)總體方案比較及說明</p><p> 方案一:選用單片機AT89C51作為掃描顯示控制核心,由其直接控制LED線陣的顯示,并外加掃描控制開關(guān)控制字符或
5、圖形的掃描顯示,原理框圖如圖-1所示。 </p><p> 圖-1 方案一原理框圖</p><p> 該方案線路簡單,掃描控制開關(guān)可選擇機械開關(guān)或編碼開關(guān)或水銀開關(guān),在顯示棒搖擺時接通線路控制單片機掃描輸出字符或圖形的列編碼信號;單片機外另接有中斷控制按鈕用以切換不同字符或圖形的顯示,LED線陣采用普通三極管驅(qū)動,電路采用4節(jié)充電電池供電。</p><p>
6、此方案的優(yōu)點是:單片機C51的端口較多,可實現(xiàn)顯示數(shù)據(jù)并行傳輸,速度較快,且外圍電路簡單,調(diào)試較方便。</p><p> 缺點是:為了增大顯示清晰度,除去可能由背景LED燈占用的端口外,單片機剩余端口無法使線陣中LED燈數(shù)量擴展至24只以上;單片機使用的晶振頻率較大,軟件不易實現(xiàn)對計數(shù)的控制。</p><p> 方案二:由單片機AT89C2051最小系統(tǒng)、寄存器組、驅(qū)動電路、LED線陣
7、和電源部分組成,原理方框圖如圖-2所示。</p><p> 圖2 方案二系統(tǒng)設(shè)計框圖</p><p> 該方案通過單片機將列編碼輸入寄存器,通過寄存器組移位功能實現(xiàn)字符圖像的掃描輸出。</p><p> 與方案一比較,方案二中單片機所需輸出端口很少,可選用小型單片機AT89C2051,不僅功能強,而且尺寸小,價位比較低,其數(shù)據(jù)輸出串口輸出方式,所需端口較少,
8、編程同C51兼容,總體線路較簡單,電路板占用面積??;利用寄存器移位功能可輕易實現(xiàn)顯示LED燈數(shù)量的擴展,不僅具備方案一的大部分優(yōu)點,而且外圍器件更少,能耗更低,電路調(diào)試簡單,故選擇方案二。 </p><p> 2.2 系統(tǒng)總體結(jié)構(gòu)設(shè)計及說明 </p><p> 以小型單片機AT89C2051為控制核心,使用三只串行連接的八位移位寄存器74HC164組成具有24位移位功能的寄存器組,控制
9、由24只LED燈組成的線陣掃描顯示字符或圖形,并附加有自動斷電控制部分,降低能源消耗,電源采用四節(jié)1.5V的可充電電池供電,系統(tǒng)總框圖如圖-3所示。</p><p> 圖3 系統(tǒng)總體結(jié)構(gòu)框圖</p><p> 2.3 系統(tǒng)硬件理論設(shè)計、電路原理圖</p><p> 2.3.1單片機AT89C2051最小系統(tǒng) </p><p> 單片機
10、最小系統(tǒng)原理如圖-4所示。</p><p> AT89C2051有20個引腳,采用DIP-20封裝.其內(nèi)部含2KB的FLASH存儲器,128B的RAM.它為用戶提供了15條可編程雙向I/O口線.P1口是一個完整的8位雙向I/O口,另有2個外中斷口(INT0,INT1)。2個16位可編程定時計數(shù)器信號輸入端(T0,T1),全雙向串行通信口數(shù)據(jù)接收端RXD和數(shù)據(jù)發(fā)送端TXD,1個模擬比較放大器輸入端(P1.0,P1
11、.1為同向或反向輸入端。另外,AT89C2051的時鐘頻率可為零,具備可用軟件設(shè)置睡眠省電功能。</p><p> 最小系統(tǒng)包括了時鐘電路、復(fù)位電路等,另外還設(shè)置了按鍵,鎖存器,LED管等外圍電路。在89C2051引腳X1和X2跨接晶振和微調(diào)電容就構(gòu)成了時鐘電路,系統(tǒng)的時鐘脈沖由它提供.復(fù)位電路不接按鍵,使其始終處于無效狀態(tài).。</p><p> 圖4 單片機最小系統(tǒng)</p>
12、;<p> 2.3.2 寄存器組電路</p><p> 寄存器組電路如圖-5所示,寄存器組由三個八位移位寄存器74HC164組成,時鐘觸發(fā)信號同時來自單片機P3.1口,寄存器U3輸入端接入來自P3.0口的串行輸出信號,其余兩寄存器輸入端接在左邊寄存器的輸出端上,組成的寄存器組具有24位移位功能,可以滿足按列至少16只LED燈掃描顯示的要求。</p><p> 圖5 寄
13、存器組電路</p><p> 2.2.3 掃描控制開關(guān)</p><p> 該開關(guān)接線原理圖如圖-6(a)所示,掃描控制開關(guān)起著擺動傳感作用,每當(dāng)顯示棒擺動至左端位置時,開關(guān)瞬時接通,中斷信號送入單片機,控制若干次掃描信號輸出。</p><p> 方案一:采用機械式開關(guān),如圖-6(b)所示,紅色弧線代表擺子的導(dǎo)軌,限制其擺動軌道,P1和P2為左右觸點,P1接至中
14、斷口INTO,P0接地,該開關(guān)材料和制作簡單,但擺子轉(zhuǎn)軸和地線接觸可靠性較差。</p><p> ?。╝)開關(guān)接線原理圖 (b)機械開關(guān)</p><p><b> 圖6 掃描控制開關(guān)</b></p><p> 方案二:采用光限位開關(guān),可靠性很強,但擺棒的粗細(xì)需匹配,開關(guān)體積過大,而且難以購買,價格昂貴。&l
15、t;/p><p> 方案三:采用水銀開關(guān),其體積較小,價格適中,可靠性強,選擇此方案。</p><p> 2.3.4 自動掉電控制電路</p><p> 自動掉電控制電路原理如圖-7所示, 其中按鍵S作為電源開關(guān)和顯示切換開關(guān),按下此鍵時,PNP型三極管進入飽和導(dǎo)通狀態(tài),接通單片機電源,此時由程序控制單片機持續(xù)送入低電平信號,使三極管保持導(dǎo)通狀態(tài);若一段時間內(nèi)掃描
16、控制開關(guān)和顯示切換開關(guān)均未送入中斷信號,則單片機送出高電平,三極管截止,系統(tǒng)進入休眠省電狀態(tài);未進入省電狀態(tài)時再次按下開關(guān)S,單片機產(chǎn)生中斷,變換顯示的字符或圖形。</p><p> 圖7 自動掉電控制電路</p><p> 2.3.5 LED驅(qū)動及顯示電路</p><p> LED驅(qū)動及顯示電路如圖8所示,LED燈點亮所需電流一般為三至五毫安,八只LED總電
17、流只有幾十毫安,因此驅(qū)動采用一只普通三極管即可,圖中二極管D1~D3起分壓作用,所有LED點亮的控制信號來自三個寄存器74HC164。</p><p> 圖8 LED驅(qū)動及顯示電路</p><p> 2.3.6 系統(tǒng)總圖: </p><p> 將以上設(shè)計的單片機最小系統(tǒng)、寄存器組、掃描控制、自動斷電控制、驅(qū)動與顯示等各部分電路進行接口連接,構(gòu)成LED顯示棒的系
18、統(tǒng)總體電路圖。(見附件B)</p><p> 2.4系統(tǒng)軟件設(shè)計、各程序流程圖</p><p> 程序分為若干子程序,硬件的功能描述可完全在軟件上實現(xiàn)。</p><p> 1.主程序流程圖如圖9(a)所示,需實現(xiàn)的功能是初始化各端口和變量。判斷圖文切換按鍵和中斷開關(guān)是否被按下,若沒按下,則延時若干秒后進入休眠省電模式;若按下,則進行字符的切換顯示。</p
19、><p> 2.按鍵中斷實現(xiàn)數(shù)據(jù)掃描切換程序流程圖如圖-9(b)所示,單片機外部中斷源有2個,采用外部中斷0作為判斷是否搖擺的端口,該端口連接水銀開關(guān),如果有搖擺,則觸發(fā)外部中斷,進行掃描數(shù)據(jù)處理。</p><p> 3.賦值子程序流程圖如圖10(a)所示,賦值前先檢測中斷是否有效,如有效,則將要顯示的字符數(shù)據(jù)依次送入寄存器,送完后返回。否則返回到中斷入口處等待下一次中斷的到來。</
20、p><p> 4.定時間隔子程序流程圖如圖10(b)所示,首先判斷掃描間隔是否太大,如果太大,則使用默認(rèn)間隔,否則啟動定時器,在定時期間判斷中斷是否又被觸發(fā),如果有,則定時停止,強行返回。否則等到定時結(jié)束后再返回到掃描子程序中。</p><p> 圖10 程序流程圖2</p><p><b> 3 系統(tǒng)實現(xiàn)</b></p>&l
21、t;p> 3.1硬、軟件分別調(diào)試及聯(lián)合調(diào)試</p><p> 3.1.1 階段調(diào)試 </p><p> 各部分線路連接前對各元器件的功能進行檢測,確保元件功能正常后,再對各局部電路功能進行調(diào)試。</p><p> 寄存器組電路調(diào)試:利用函數(shù)發(fā)生器產(chǎn)生的方波作為時鐘信號,對進行移位功能測試。</p><p> LED線陣驅(qū)動及顯
22、示電路調(diào)試:輸入穩(wěn)壓源產(chǎn)生的6V直流穩(wěn)定電壓,用萬用表分別測出一只至八只LED全亮?xí)r的電流,改變限流電阻大小,直至電流大小和顯示正常。</p><p> 單片機最小系統(tǒng)調(diào)試:寫入簡單程序,用萬用表測出相應(yīng)端口的電壓,判斷出高低電平,改變外圍元件參數(shù),直至達到設(shè)計要求。</p><p> 軟件調(diào)試:采用了自頂向下的調(diào)試方法,先調(diào)試功能電路,在調(diào)試整個系統(tǒng),調(diào)試過程中軟件調(diào)試和硬件調(diào)試相結(jié)
23、合,提高了效率。</p><p> 3.1.2 聯(lián)合調(diào)試 </p><p> 軟、硬件聯(lián)合調(diào)試:當(dāng)軟硬件基本功能發(fā)分別調(diào)試后,進行聯(lián)合調(diào)試,調(diào)試過程中出現(xiàn)的問題有:字符呈倒立顯示,文字只能顯示中間部分等;通過分析軟件程序和硬件電路,對程序進行了大量的調(diào)試,最終實現(xiàn)了設(shè)計目標(biāo)。</p><p> 3.2 方案的修改、說明</p><p>
24、 設(shè)計方案通過論證和實際測試,系統(tǒng)原理正確且可行,未作大量修改,只通過改變外圍少量元件的參數(shù)對電路進行優(yōu)化,逐步達到設(shè)計目標(biāo)要求。 </p><p><b> 4 系統(tǒng)測試</b></p><p> 4.1實驗、測試儀器與測試試驗方法</p><p> 基本儀器清單如表1所示。</p><p> 表1 基本儀
25、器清單</p><p> 4.2 測試數(shù)據(jù)及測試結(jié)果分析</p><p> 4.2.1 測試數(shù)據(jù)</p><p> 安裝好電池后,按下電源開關(guān),LED線陣開始閃爍,在光線適當(dāng)?shù)沫h(huán)境下?lián)u動棒時在亮燈扇形區(qū)域能夠讓人分辨出初始的“A”字符,按下切換按鈕開關(guān),顯示變換為“電”字,依次按下切換開關(guān)可分別辨認(rèn)出國際奧委會五環(huán)圖形,英文單詞“Welcome” ,漢字詞組“
26、 美亞”和北京奧運會會徽圖形;當(dāng)30秒內(nèi)未擺動和按下中斷開關(guān),系統(tǒng)自動進入休眠省電模式。</p><p> 4.2.2 測試結(jié)果分析</p><p><b> 5 設(shè)計總結(jié) </b></p><p> 本LED顯示棒可以實現(xiàn)以下要求或功能:</p><p> 1.該顯示棒依靠LED顯示字符或圖形,且24只LED燈
27、呈線狀排列,LED數(shù)量超過至少使用16只的要求 。</p><p> 2.顯示棒搖動時形成的亮燈區(qū)域能讓人分辨出字符“A” 漢字“ 電”和國際奧委會五環(huán)圖形。 </p><p> 3. 顯示棒搖動時形成的亮燈區(qū)域能讓人分辨出漢字詞組“ 美亞”和北京奧運會會徽圖形;英文單詞“Welcome”稍有些模糊。</p><p> 4.顯示棒具有自動斷電功能,三十秒內(nèi)不使
28、用則將進入休眠省電狀態(tài),以降低能耗。</p><p> 本設(shè)計制作完成了題目要求的基本部分的全部要求和發(fā)揮部分的大部分要求,而且具有一定的特色功能。 </p><p> 隨著科技進步和生活水平的提高,越來越多的高科技的電子產(chǎn)品逐漸融入日常生活中,該種顯示棒操作簡易、效果新奇,深具吸引力,市場潛力巨大。</p><p> 當(dāng)然,我們的設(shè)計還存在著一些缺陷,由于設(shè)
29、計時間緊迫,字符或圖形編碼設(shè)計時,水平分格較少,導(dǎo)致顯示的水平幅度較低;由于掃描時間間隔設(shè)定的偏差,顯示時出現(xiàn)少量的疊影,同時顯示的穩(wěn)定還有待進一步的提高,在此懇請各位老師批評指正。 </p><p><b> 參考文獻</b></p><p> [1] 趙建領(lǐng). 51系列單片機開發(fā)寶典[M]. 北京: 電子工業(yè)出版社, 2007.</p><
30、p> [2] 邊春元等. C51單片機典型模塊設(shè)計及應(yīng)用[M]. 北京: 機械工業(yè)出版社,2008.</p><p> [3] 彭 為等. 單片機典型系統(tǒng)設(shè)計實例精講[M]. 北京: 電子工業(yè)出版社, 2006.</p><p> [4] 徐愛鈞等. Keil C51 V7.0單片機高級語言編程與μVision2應(yīng)用實踐[M].北京:電子工業(yè)出版社,2008.</p>
31、;<p> [5] 李朝青. 單片機&DSP外圍數(shù)字IC技術(shù)手冊(第2版)[M]. 北京:北京航空航天大學(xué)出版社,2005.</p><p> [9] 周志敏等. 集成穩(wěn)壓電源電路圖集[M]. 北京: 中國電力出版社, 2008.</p><p> 附錄A:系統(tǒng)操作說明 </p><p> 該系統(tǒng)實現(xiàn)了一個基于LED的顯示棒,24只LE
32、D燈呈線狀排列,搖動時形成的亮扇形區(qū)域能夠讓人分辨出字符,漢字,英文單詞,漢字詞組以及多種圖形。 </p><p> ?。?) 搖動時或搖動前將握柄處按鈕開關(guān)按下,此時電源被接通,電路被觸發(fā)而啟動;</p><p> ?。?)供電部分是 4 節(jié) 1.5V 5號電池,供電電壓為6V;</p><p> (3)按下顯示切換按鈕開關(guān),可切換顯示的內(nèi)容;</p>
33、;<p> ?。?)長期不使用時,請取出電池,另行保管。 </p><p> 附錄B:系統(tǒng)總電路原理圖</p><p> 附錄C:系統(tǒng)程序清單</p><p> #ifndef __PS2__</p><p> #define __PS2__</p><p> //#define d
34、ebugprint1</p><p> #include <reg51.h></p><p> #include <stdio.h></p><p> #include <absacc.h></p><p> #include <string.h></p>&
35、lt;p> #include <intrins.h></p><p> typedef unsigned char byte;</p><p> typedef unsigned int word;</p><p> ////////////////////////////////////////////////////////
36、////////////////////////////////////////////////</p><p> #define setbit(B,b)((B)|=(0x01<<(b)))</p><p> #define clrbit(B,b)((B)&=~(0x01<<(b)))</p><p> #def
37、ine tstbit(B,b)((B)&(0x01<<(b)))</p><p> #define ASWORD(x,ofs) (*((word *)&x+ofs))</p><p> #define ASBYTE(x,ofs) (*((byte *)&x+ofs))</p><p> #
38、define XTALL11059200L</p><p> #define BAUD9600</p><p> #define BAUDRATE(x)(256-(byte)((XTALL)/(32L*12L*(x))))</p><p> #define DELAY_US(x)(256-(word)(x*((XTALL)/
39、(12*1000*1000L))))</p><p> #define DELAY_MS(x)(256-(word)(x*((XTALL)/(12L*1000L))))</p><p> #define DLY_15MS (word)33333L</p><p> #define TIMEOUT 0x
40、8000</p><p> //#define PS2MAX14</p><p> //#define KEYMAX 10</p><p> sbit KEY=P1^4;</p><p> sbit LED_POWER=P1^7;</p><
41、p> sbit LS164_DATA=P3^0;</p><p> sbit LS164_CLK=P3^1;</p><p> sbit POWER =P1^5;</p><p> sbit GND =P3^7;</p><p> sbit TEST
42、=P3^5;</p><p> #include "qs3kb.h"</p><p> byte code A0[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
43、xff,0xf8,0xc0,0x80,0x87,0x8f,0x81,0xc0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code A1[60]=
44、 {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xe0,0x00,0x00,0x38,0x78,0xf8,0xf8,0xf8,0x38,0x00,0x00,0xc0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf
45、f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code A2[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
46、0xfd,0xe1,0x01,0x03,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x07,0x01,0xc1,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p>&l
47、t;p> //byte code A0[24]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xc0,0x80,0x87,0x8f,0x81,0xc0,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> //byte code A1[24]= {0xff,0xff,0xff,0xff,0xff,
48、0xf8,0xe0,0x00,0x00,0x38,0x78,0xf8,0xf8,0xf8,0x38,0x00,0x00,0xc0,0xf8,0xff,0xff,0xff,0xff,0xff};</p><p> //byte code A2[24]= {0xff,0xff,0xfd,0xe1,0x01,0x03,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
49、0xff,0x3f,0x07,0x01,0xc1,0xf1,0xff,0xff};</p><p> byte code dian0[60]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xf8,0xf9,0xf9,0xf9,0xf9,0xf9,
50、0x30,0x30,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code dian1[60]= {0xff,0xff
51、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x3f,0x3f,0x3f,0x3f,0x3f,0x00,0x10,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
52、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code dian2[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0
53、f,0x0f,0xcf,0xcf,0xcf,0xcf,0xcf,0x03,0x00,0xc8,0xcc,0xcc,0xcc,0xcc,0xcc,0x0c,0x8c,0xf8,0x71,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p>
54、 byte code wuhuan0[60]= {0xff,0xff,0xff,0xff,0xff,0xfc,0xf0,0x73,0x3f,0x9f,0x9f,0xcf,0xcf,0xcf,0xcf,0x8f,0x9f,0x1f,0x37,0x73,0xf0,0xfc,0xf8,0x70,0x37,0x1f,0x9f,0x8f,0xcf,0xcf,0xcf,0xcf,0xcf,0x9f,0x1f,0x37,0x70,0xf0,0x0e,
55、0xf8,0x70,0x37,0x1f,0x9f,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0x9f,0x3f,0x37,0x70,0xf8,0xff,0xff,0xff,0xff,0xff};</p><p> byte code wuhuan1[60]= {0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0x71,0xf9,0xfc,0xfc,0xfe,0xfe,0x
56、fc,0x70,0x32,0x1c,0xc8,0xc1,0x41,0x07,0x8f,0x0f,0x01,0xc0,0xc8,0x9c,0x34,0x70,0xf0,0x70,0x36,0x9e,0x9c,0xcc,0xc1,0x03,0x0f,0xcf,0x0f,0x03,0x91,0x19,0xf0,0xfc,0xfe,0xfe,0xfe,0xfe,0xfc,0xfc,0xf9,0xf3,0x07,0x0f,0xff,0xff,0x
57、ff,0xff,0xff};</p><p> byte code wuhuan2[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xef,0xcf,0x0f,0x07,0x73,0xf1,0xf9,0xf9,0xfc,0xfc,0xfc,0xfc,0xf9,0xf9,0xf3,0x37,0x0f,0x8f,0x07,0x63
58、,0xf1,0xf9,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xf9,0xf9,0x73,0x17,0x0f,0xcf,0xef,0xef,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff} ;</p><p> byte code welcome0[60]={0xff, 0xff,0x10,0x10,0xff,0xff
59、,0x10,0x10,0xff,0xff,0x10,0x10,0xff,0x10,0x10,0x1f,0x1f,0x11,0x11,0xff,0x1f,0x10,0x10,0x1f,0xff,0xff,0xff,0xff,0xf0,0x30,0x1f,0x1f,0x10,0x10,0xff,0xf1,0x30,0x1f,0x1f,0x30,0xf8,0xff,0x10,0x10,0x10,0xf8,0xff,0xf8,0x10,0x10
60、,0x10,0xff,0xff,0x10,0x10,0x1f,0x11,0x11,0xff,0xff };</p><p> byte code welcome1[60]={0xff, 0xff,0xef,0x00,0xf0,0x70,0x03,0x01,0x70,0xf0,0x00,0xef,0xff,0x00,0x00,0x37,0x37,0x37,0xff,0xff,0xff,0x00,0x00,0xff
61、,0xff,0xf8,0xf8,0xff,0x00,0x00,0xff,0xff,0xee,0xee,0xff,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0x00,0x00,0xef,0x01,0x10,0x01,0xef,0x00,0x00,0xff,0xff,0x00,0x00,0x37,0x37,0xff,0xff,0xff};</p><p> byte code welco
62、me2[60]={0xff, 0xff,0xff,0xcf,0x01,0x01,0xff,0xff,0x01,0x01,0xcf,0xff,0xff,0x01,0x01,0xf1,0xf1,0x01,0x01,0xff,0xf1,0x01,0x01,0xf1,0xf1,0x01,0x01,0xff,0x8f,0x03,0xf1,0xf1,0x01,0x07,0xff,0x8f,0x0c3,0xf1,0xf1,0x03,0x8f,0xff
63、,0x01,0x01,0xf1,0xff,0x0f,0xff,0xf1,0x01,0x01,0xf1,0xff,0x01,0x01,0xf1,0x01,0x01,0xff,0xff};</p><p> byte code meiya0[60]={0xff,0xff,0xff,0xff,0xff,0xf3,0xf3,0xf3,0xf3,0xd3,0x93,0x33,0x73,0xf0,0xf0,0xf0,0x7
64、3,0x13,0x93,0xf3,0xf3,0xf3,0xf3,0xf3,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x30,0x30,0x3f,0x3f,0x3f,0x30,0x30,0x3f,0x3f,0x3f,0x3e,0x3f,0x3f,0xff,0xff,0xff,0xf3,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0xff};&l
65、t;/p><p> byte code meiya1[60]={0xff,0xff,0xff,0xff,0xfe,0x76,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x00,0x00,0x00,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x76,0xfe,0xff,0xff,0xff,0xef,0x0f,0x10,0xf0,0xf0,0xff,0xff,0x
66、00,0x00,0xff,0xff,0xff,0x00,0x00,0xfe,0xf8,0x31,0x07,0xcf,0xff,0xff,0xff,0xfe,0x76,0x46,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code meiya2[60]={0xff,0xff,0xff,0xff,0xeb,0xe9,0xe9,0xe9,0xe3,0xe3,0
67、x67,0x2f,0x8f,0xcf,0xef,0x8f,0x2f,0x67,0x67,0xe3,0xe3,0xe9,0xe9,0xe9,0xeb,0xff,0xff,0xff,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0x01,0x01,0xf9,0xf9,0xf9,0x01,0x01,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xeb,0xe9,0xe9,0xff,0
68、xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code huihui0[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x0c,0x04,0x06,0x06,0x07,0x7
69、7,0x76,0x77,0x07,0x06,0x0c,0x0c,0x88,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> byte code huihui1[60]= {0xff,0xff,0xff,
70、0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x80,0xc0,0xce,0xcf,0x03,0x33,0xff,0xce,0xf8,0x3c,0x0e,0x07,0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
71、0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff} ;</p><p> byte code huihui2[60]= {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
72、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0f,0x8f,0xc8,0xf0,0x70,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};</p><p> by
73、te timecount=0;</p><p> byte dispstate=0;</p><p> byte savehtime=0;</p><p> byte saveltime=0;</p><p> byte pretime=0;</p><p> bit intflag=0;</p>
74、;<p> bit backflag=0;</p><p> //byte Display_data[4]={3,5,6,0};</p><p> //byte dotflag=0;</p><p> //byte pushflag=1;</p><p> void Timer_Init(void);</p&
75、gt;<p> void Int_Init(void);</p><p> void keyproc(void);</p><p> void setvalue(void);</p><p> void Timer1_Delay(void);</p><p> void uart_init(void);</p&g
76、t;<p> void uart_putc(byte c);</p><p> void delay(word w);</p><p> void PS2_Receive () interrupt 0 using 0 {</p><p> //pushflag=0;</p><p> //byte usetime=0
77、;</p><p> byte temp;</p><p> EX0 = 0; //disable int0</p><p> //diaable timer0</p><p> //temp = TH0;</p><p> //if(temp>=0x10){</
78、p><p> TR0 = 0;</p><p> savehtime = timecount;</p><p> saveltime = TH0;</p><p> timecount = 0;</p><p> TH0 = 0x00;</p>
79、<p> TL0 = 0x00;</p><p> intflag = 1;</p><p> TR0 = 1;</p><p><b> //}</b></p><p> //pretime = timecount;</p>
80、<p> EX0 = 1; //enable int0</p><p> return ; </p><p><b> }</b></p><p> void Timer0_Proc () interrupt 1 using 1 {</p>&
81、lt;p> timecount++; </p><p> TH0 = 0x00;</p><p> TL0 = 0x00;</p><p> TR0 = 1;</p><p> return ; </p><p><b> }&
82、lt;/b></p><p> void main(void) {</p><p><b> byte i;</b></p><p> POWER = 0;</p><p> GND = 0;</p><p> TEST = 0;</p>&l
83、t;p> uart_init();</p><p> /*while(1){</p><p> for(i=0;i<60;i++){</p><p> LED_POWER=1; //led power off</p><p> LS_164(meiya0[i]);</p><p> LS
84、_164(meiya1[i]);</p><p> LS_164(meiya2[i]);</p><p> //uart_putc(meiya0[i]);</p><p> //uart_putc(meiya1[i]);</p><p> //uart_putc(meiya2[i]);</p><p>
85、 LED_POWER=0; // led power on</p><p> delay(20000);</p><p> delay(20000);</p><p><b> }</b></p><p><b> }*/</b></p><p><b
86、> while(1){</b></p><p> Timer_Init();</p><p> Int_Init(); </p><p> while(KEY) {</p><p> if(timecount>0xf0){</p><p> POWER = 1; //po
87、wer off</p><p><b> }</b></p><p> else setvalue();</p><p><b> //TEST=1;</b></p><p><b> }</b></p><p> keyproc();<
88、/p><p><b> } </b></p><p><b> }/*</b></p><p> void Display(void){</p><p><b> byte i;</b></p><p><b> byte j;</
89、b></p><p> for(i=0;i<4;i++){</p><p> j=Display_data[i];</p><p> LS_164(TAB_LED[j]);</p><p><b> }</b></p><p><b> } */</b>
90、;</p><p> void Timer_Init(void){</p><p> TMOD = 0x11;</p><p> TH0 = 0x00;</p><p> TL0 = 0x00;</p><p> TR0 = 1;</p><p><
91、b> }</b></p><p> void Timer1_Init(void){</p><p><b> }</b></p><p> void Int_Init(void){</p><p> IT0 = 1;</p><p> PT0 = 1;
92、 //timer0 prioty is higher </p><p> IE = 0x83;</p><p><b> }</b></p><p> void keyproc(void){</p><p> if(KEY==0){</p><p> while(KEY==
93、0) ;</p><p> dispstate++;</p><p> if(dispstate>=6) dispstate=0;</p><p><b> }</b></p><p> uart_putc((0xff>>(dispstate+1)));</p><p>
94、<b> }</b></p><p> void setvalue(void){</p><p> byte i,j,loop_num,delay_num;</p><p> byte *p0,*p1,*p2;</p><p> if(intflag){</p><p> intfla
95、g = 0;</p><p> switch(dispstate){</p><p><b> case 0:{</b></p><p><b> p0=A0;</b></p><p><b> p1=A1;</b></p><p>&l
96、t;b> p2=A2;</b></p><p> loop_num=60;</p><p> delay_num=2;</p><p><b> break;</b></p><p><b> }</b></p><p><b> ca
97、se 1:{</b></p><p><b> p0=dian0;</b></p><p><b> p1=dian1;</b></p><p><b> p2=dian2;</b></p><p> loop_num=60;</p><
98、p> delay_num=2;</p><p><b> break;</b></p><p><b> }</b></p><p><b> case 2:{</b></p><p> p0=wuhuan0;</p><p> p1=
99、wuhuan1;</p><p> p2=wuhuan2;</p><p> loop_num=60;</p><p> delay_num=2;</p><p><b> break;</b></p><p><b> }</b></p><p
100、><b> case 3:{</b></p><p> p0=welcome0;</p><p> p1=welcome1;</p><p> p2=welcome2;</p><p> loop_num=60;</p><p> delay_num=2;</p>
101、<p><b> break;</b></p><p><b> }</b></p><p> case 4:{p0=meiya0;p1=meiya1;p2=meiya2;</p><p> loop_num=60;delay_num=2;break;}</p><p>
102、 case 5:{p0=huihui0;p1=huihui1;p2=huihui2;</p><p> loop_num=60;delay_num=2;break;}</p><p> default:{p0=A0;p1=A1;p2=A2;</p><p> loop_num=24;delay_num=5;break;}</p>
103、;<p><b> }</b></p><p> for(i=0;i<loop_num;i++){</p><p> LED_POWER=1; //led power off</p><p> //LS_164(meiya0[i]);</p><p> //LS_164(meiya
104、1[i]);</p><p> //LS_164(meiya2[i]);</p><p> uart_putc(*(p0+i));</p><p> uart_putc(*(p1+i));</p><p> uart_putc(*(p2+i));</p><p> LED_POWER=0; // le
105、d power on</p><p> for(j=0;j<delay_num;j++) Timer1_Delay();</p><p> //if(backflag) {//backflag=0;//break;</p><p><b> //}</b></p><p><b> }&l
106、t;/b></p><p><b> }</b></p><p><b> }</b></p><p> void Timer1_Delay(void){</p><p> if(savehtime>0xc0){</p><p> savehtime =
107、 0x08;</p><p><b> }</b></p><p> TH1 = 0xff-savehtime;</p><p> TL1 = 0xff-saveltime;</p><p><b> TR1 = 1;</b></p><p> while(T
108、F1==0){</p><p> if(intflag){//backflag =1;TR1= 0;return ;}</p><p> } TF1= 0; TR1= 0;</p><p><b> }</b></p><p> void uart_init(void){ SCON=0x00; }&
109、lt;/p><p> void uart_putc(byte c ) {TI=0;SBUF=c;while (!TI) ;}</p><p> void delay(word w) {word i; for (i=0;i<w;i++);</p><p> 附錄D:系統(tǒng)主要元器件清單 </p><p> 表2 系統(tǒng)元器件清單<
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計論文---基于單片機的搖搖棒設(shè)計
- 基于單片機的led點陣顯示畢業(yè)設(shè)計
- 畢業(yè)論文-基于at89s51單片機的led搖搖棒設(shè)計
- 單片機畢業(yè)設(shè)計--單片機控制的led點陣顯示
- led搖搖棒畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的led顯示屏設(shè)計
- 畢業(yè)設(shè)計---基于單片機led滾動顯示系統(tǒng)設(shè)計
- 基于單片機的led顯示原理與畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的led顯示屏設(shè)計 (2)
- 畢業(yè)論文---單片機實現(xiàn)搖搖棒設(shè)計
- 畢業(yè)論文---單片機實現(xiàn)搖搖棒設(shè)計
- 畢業(yè)設(shè)計---基于單片機的led電子顯示屏
- 基于51單片機搖搖棒的設(shè)計說明
- 基于51單片機搖搖棒的設(shè)計說明
- 基于單片機的神奇搖搖棒畢業(yè)論文
- 單片機畢業(yè)論文--基于單片機的led顯示屏設(shè)計
- 畢業(yè)設(shè)計---基于單片機的led點陣字符顯示器的設(shè)計
- 基于單片機的led點陣顯示電子鐘畢業(yè)設(shè)計
- 單片機畢業(yè)設(shè)計---基于單片機控制的模擬電梯顯示
- 畢業(yè)設(shè)計--基于單片機控制的led點陣顯示屏設(shè)計論文
評論
0/150
提交評論