畢業(yè)設計---基于單片機的led顯示搖搖棒的設計_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  1 引 言</b></p><p><b>  1.1系統(tǒng)設計要求</b></p><p>  設計并制作一個依靠搖動能顯示字符、圖形的LED顯示棒。</p><p>  系統(tǒng)設計的基本要求:</p><p>  設計一個基于LED的顯示棒,其中LED燈必須呈線狀排列,

2、并至少使用16只,系統(tǒng)采用電池供電,搖動顯示棒時形成的亮燈扇形區(qū)域能讓人分辨出字符“A”、文字“電” 以及國際奧委會五環(huán)圖形,并用按鍵實現(xiàn)顯示的切換。</p><p>  系統(tǒng)設計的發(fā)揮部分:</p><p>  搖動顯示棒時形成的亮燈扇形區(qū)域能夠讓人分辨出英文單詞“Welcome”、漢字詞組“美亞”和北京奧運會會徽圖形,并適當增加設計特色與創(chuàng)新。</p><p>

3、  1.2 系統(tǒng)設計思路及特點</p><p>  該LED顯示棒搖動時顯現(xiàn)的字符或圖形由LED燈顯示,LED燈成線狀排列,每個瞬間線陣只能顯示數(shù)字編碼后的文字或圖形的一列,利用人眼的視覺暫留原理,將需要顯示的字符或圖形分成N列(N≥16),一般人手左右擺動的頻率為幾赫茲到十幾赫茲,因此,通過單片機控制LED線陣以一較低頻率掃描顯示字符或圖形的每一列,擺動顯示棒時即可因視覺暫留看出顯示的字符或圖形;左右擺動一次通

4、過端口電平變化,調用相應的顯示子程序,字符切換通過外部中斷實現(xiàn),該系統(tǒng)設計對程序設計的要求較硬件電路要高。</p><p><b>  2 系統(tǒng)理論設計</b></p><p>  2.1 系統(tǒng)總體方案比較及說明</p><p>  方案一:選用單片機AT89C51作為掃描顯示控制核心,由其直接控制LED線陣的顯示,并外加掃描控制開關控制字符或

5、圖形的掃描顯示,原理框圖如圖-1所示。 </p><p>  圖-1 方案一原理框圖</p><p>  該方案線路簡單,掃描控制開關可選擇機械開關或編碼開關或水銀開關,在顯示棒搖擺時接通線路控制單片機掃描輸出字符或圖形的列編碼信號;單片機外另接有中斷控制按鈕用以切換不同字符或圖形的顯示,LED線陣采用普通三極管驅動,電路采用4節(jié)充電電池供電。</p><p>  

6、此方案的優(yōu)點是:單片機C51的端口較多,可實現(xiàn)顯示數(shù)據并行傳輸,速度較快,且外圍電路簡單,調試較方便。</p><p>  缺點是:為了增大顯示清晰度,除去可能由背景LED燈占用的端口外,單片機剩余端口無法使線陣中LED燈數(shù)量擴展至24只以上;單片機使用的晶振頻率較大,軟件不易實現(xiàn)對計數(shù)的控制。</p><p>  方案二:由單片機AT89C2051最小系統(tǒng)、寄存器組、驅動電路、LED線陣

7、和電源部分組成,原理方框圖如圖-2所示。</p><p>  圖2 方案二系統(tǒng)設計框圖</p><p>  該方案通過單片機將列編碼輸入寄存器,通過寄存器組移位功能實現(xiàn)字符圖像的掃描輸出。</p><p>  與方案一比較,方案二中單片機所需輸出端口很少,可選用小型單片機AT89C2051,不僅功能強,而且尺寸小,價位比較低,其數(shù)據輸出串口輸出方式,所需端口較少,

8、編程同C51兼容,總體線路較簡單,電路板占用面積??;利用寄存器移位功能可輕易實現(xiàn)顯示LED燈數(shù)量的擴展,不僅具備方案一的大部分優(yōu)點,而且外圍器件更少,能耗更低,電路調試簡單,故選擇方案二。 </p><p>  2.2 系統(tǒng)總體結構設計及說明 </p><p>  以小型單片機AT89C2051為控制核心,使用三只串行連接的八位移位寄存器74HC164組成具有24位移位功能的寄存器組,控制

9、由24只LED燈組成的線陣掃描顯示字符或圖形,并附加有自動斷電控制部分,降低能源消耗,電源采用四節(jié)1.5V的可充電電池供電,系統(tǒng)總框圖如圖-3所示。</p><p>  圖3 系統(tǒng)總體結構框圖</p><p>  2.3 系統(tǒng)硬件理論設計、電路原理圖</p><p>  2.3.1單片機AT89C2051最小系統(tǒng) </p><p>  單片機

10、最小系統(tǒng)原理如圖-4所示。</p><p>  AT89C2051有20個引腳,采用DIP-20封裝.其內部含2KB的FLASH存儲器,128B的RAM.它為用戶提供了15條可編程雙向I/O口線.P1口是一個完整的8位雙向I/O口,另有2個外中斷口(INT0,INT1)。2個16位可編程定時計數(shù)器信號輸入端(T0,T1),全雙向串行通信口數(shù)據接收端RXD和數(shù)據發(fā)送端TXD,1個模擬比較放大器輸入端(P1.0,P1

11、.1為同向或反向輸入端。另外,AT89C2051的時鐘頻率可為零,具備可用軟件設置睡眠省電功能。</p><p>  最小系統(tǒng)包括了時鐘電路、復位電路等,另外還設置了按鍵,鎖存器,LED管等外圍電路。在89C2051引腳X1和X2跨接晶振和微調電容就構成了時鐘電路,系統(tǒng)的時鐘脈沖由它提供.復位電路不接按鍵,使其始終處于無效狀態(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 掃描控制開關</p><p>  該開關接線原理圖如圖-6(a)所示,掃描控制開關起著擺動傳感作用,每當顯示棒擺動至左端位置時,開關瞬時接通,中斷信號送入單片機,控制若干次掃描信號輸出。</p><p>  方案一:采用機械式開關,如圖-6(b)所示,紅色弧線代表擺子的導軌,限制其擺動軌道,P1和P2為左右觸點,P1接至中

14、斷口INTO,P0接地,該開關材料和制作簡單,但擺子轉軸和地線接觸可靠性較差。</p><p> ?。╝)開關接線原理圖 (b)機械開關</p><p><b>  圖6 掃描控制開關</b></p><p>  方案二:采用光限位開關,可靠性很強,但擺棒的粗細需匹配,開關體積過大,而且難以購買,價格昂貴。&l

15、t;/p><p>  方案三:采用水銀開關,其體積較小,價格適中,可靠性強,選擇此方案。</p><p>  2.3.4 自動掉電控制電路</p><p>  自動掉電控制電路原理如圖-7所示, 其中按鍵S作為電源開關和顯示切換開關,按下此鍵時,PNP型三極管進入飽和導通狀態(tài),接通單片機電源,此時由程序控制單片機持續(xù)送入低電平信號,使三極管保持導通狀態(tài);若一段時間內掃描

16、控制開關和顯示切換開關均未送入中斷信號,則單片機送出高電平,三極管截止,系統(tǒng)進入休眠省電狀態(tài);未進入省電狀態(tài)時再次按下開關S,單片機產生中斷,變換顯示的字符或圖形。</p><p>  圖7 自動掉電控制電路</p><p>  2.3.5 LED驅動及顯示電路</p><p>  LED驅動及顯示電路如圖8所示,LED燈點亮所需電流一般為三至五毫安,八只LED總電

17、流只有幾十毫安,因此驅動采用一只普通三極管即可,圖中二極管D1~D3起分壓作用,所有LED點亮的控制信號來自三個寄存器74HC164。</p><p>  圖8 LED驅動及顯示電路</p><p>  2.3.6 系統(tǒng)總圖: </p><p>  將以上設計的單片機最小系統(tǒng)、寄存器組、掃描控制、自動斷電控制、驅動與顯示等各部分電路進行接口連接,構成LED顯示棒的系

18、統(tǒng)總體電路圖。(見附件B)</p><p>  2.4系統(tǒng)軟件設計、各程序流程圖</p><p>  程序分為若干子程序,硬件的功能描述可完全在軟件上實現(xiàn)。</p><p>  1.主程序流程圖如圖9(a)所示,需實現(xiàn)的功能是初始化各端口和變量。判斷圖文切換按鍵和中斷開關是否被按下,若沒按下,則延時若干秒后進入休眠省電模式;若按下,則進行字符的切換顯示。</p

19、><p>  2.按鍵中斷實現(xiàn)數(shù)據掃描切換程序流程圖如圖-9(b)所示,單片機外部中斷源有2個,采用外部中斷0作為判斷是否搖擺的端口,該端口連接水銀開關,如果有搖擺,則觸發(fā)外部中斷,進行掃描數(shù)據處理。</p><p>  3.賦值子程序流程圖如圖10(a)所示,賦值前先檢測中斷是否有效,如有效,則將要顯示的字符數(shù)據依次送入寄存器,送完后返回。否則返回到中斷入口處等待下一次中斷的到來。</

20、p><p>  4.定時間隔子程序流程圖如圖10(b)所示,首先判斷掃描間隔是否太大,如果太大,則使用默認間隔,否則啟動定時器,在定時期間判斷中斷是否又被觸發(fā),如果有,則定時停止,強行返回。否則等到定時結束后再返回到掃描子程序中。</p><p>  圖10 程序流程圖2</p><p><b>  3 系統(tǒng)實現(xiàn)</b></p>&l

21、t;p>  3.1硬、軟件分別調試及聯(lián)合調試</p><p>  3.1.1 階段調試 </p><p>  各部分線路連接前對各元器件的功能進行檢測,確保元件功能正常后,再對各局部電路功能進行調試。</p><p>  寄存器組電路調試:利用函數(shù)發(fā)生器產生的方波作為時鐘信號,對進行移位功能測試。</p><p>  LED線陣驅動及顯

22、示電路調試:輸入穩(wěn)壓源產生的6V直流穩(wěn)定電壓,用萬用表分別測出一只至八只LED全亮時的電流,改變限流電阻大小,直至電流大小和顯示正常。</p><p>  單片機最小系統(tǒng)調試:寫入簡單程序,用萬用表測出相應端口的電壓,判斷出高低電平,改變外圍元件參數(shù),直至達到設計要求。</p><p>  軟件調試:采用了自頂向下的調試方法,先調試功能電路,在調試整個系統(tǒng),調試過程中軟件調試和硬件調試相結

23、合,提高了效率。</p><p>  3.1.2 聯(lián)合調試 </p><p>  軟、硬件聯(lián)合調試:當軟硬件基本功能發(fā)分別調試后,進行聯(lián)合調試,調試過程中出現(xiàn)的問題有:字符呈倒立顯示,文字只能顯示中間部分等;通過分析軟件程序和硬件電路,對程序進行了大量的調試,最終實現(xiàn)了設計目標。</p><p>  3.2 方案的修改、說明</p><p>

24、  設計方案通過論證和實際測試,系統(tǒng)原理正確且可行,未作大量修改,只通過改變外圍少量元件的參數(shù)對電路進行優(yōu)化,逐步達到設計目標要求。 </p><p><b>  4 系統(tǒng)測試</b></p><p>  4.1實驗、測試儀器與測試試驗方法</p><p>  基本儀器清單如表1所示。</p><p>  表1 基本儀

25、器清單</p><p>  4.2 測試數(shù)據及測試結果分析</p><p>  4.2.1 測試數(shù)據</p><p>  安裝好電池后,按下電源開關,LED線陣開始閃爍,在光線適當?shù)沫h(huán)境下?lián)u動棒時在亮燈扇形區(qū)域能夠讓人分辨出初始的“A”字符,按下切換按鈕開關,顯示變換為“電”字,依次按下切換開關可分別辨認出國際奧委會五環(huán)圖形,英文單詞“Welcome” ,漢字詞組“

26、 美亞”和北京奧運會會徽圖形;當30秒內未擺動和按下中斷開關,系統(tǒng)自動進入休眠省電模式。</p><p>  4.2.2 測試結果分析</p><p><b>  5 設計總結 </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.顯示棒具有自動斷電功能,三十秒內不使

28、用則將進入休眠省電狀態(tài),以降低能耗。</p><p>  本設計制作完成了題目要求的基本部分的全部要求和發(fā)揮部分的大部分要求,而且具有一定的特色功能。 </p><p>  隨著科技進步和生活水平的提高,越來越多的高科技的電子產品逐漸融入日常生活中,該種顯示棒操作簡易、效果新奇,深具吸引力,市場潛力巨大。</p><p>  當然,我們的設計還存在著一些缺陷,由于設

29、計時間緊迫,字符或圖形編碼設計時,水平分格較少,導致顯示的水平幅度較低;由于掃描時間間隔設定的偏差,顯示時出現(xiàn)少量的疊影,同時顯示的穩(wěn)定還有待進一步的提高,在此懇請各位老師批評指正。 </p><p><b>  參考文獻</b></p><p>  [1] 趙建領. 51系列單片機開發(fā)寶典[M]. 北京: 電子工業(yè)出版社, 2007.</p><

30、p>  [2] 邊春元等. C51單片機典型模塊設計及應用[M]. 北京: 機械工業(yè)出版社,2008.</p><p>  [3] 彭 為等. 單片機典型系統(tǒng)設計實例精講[M]. 北京: 電子工業(yè)出版社, 2006.</p><p>  [4] 徐愛鈞等. Keil C51 V7.0單片機高級語言編程與μVision2應用實踐[M].北京:電子工業(yè)出版社,2008.</p>

31、;<p>  [5] 李朝青. 單片機&DSP外圍數(shù)字IC技術手冊(第2版)[M]. 北京:北京航空航天大學出版社,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> ?。?) 搖動時或搖動前將握柄處按鈕開關按下,此時電源被接通,電路被觸發(fā)而啟動;</p><p>  (2)供電部分是 4 節(jié) 1.5V 5號電池,供電電壓為6V;</p><p> ?。?)按下顯示切換按鈕開關,可切換顯示的內容;</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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論