基于lcd12864的交通信號燈單片機課程設(shè)計報告_第1頁
已閱讀1頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  湖南大學(xué)電氣與信息工程學(xué)院</p><p>  本科生單片機課程設(shè)計</p><p>  題   目:基于LCD12864的交通信號燈 </p><p>  學(xué) 院:電氣與信息工程學(xué)院</p><p>  ?!  I(yè):電氣工程及其自動化</p><p><b>  班   級:

2、</b></p><p><b>  學(xué)   號:</b></p><p><b>  姓   名:</b></p><p><b>  指導(dǎo) 老師:</b></p><p>  設(shè)計 時間: 2012年6月 29日 </p><p><

3、;b>  交通燈的歷史</b></p><p>  1868年12月10日,信號燈家族的第一個成員就在倫敦議會大廈的廣場上誕生了,由當時英國機械師德·哈特設(shè)計、制造的燈柱高7米,身上掛著一盞紅、綠兩色的提燈--煤氣交通信號燈,這是城市街道的第一盞信號燈。</p><p>  1914年,在美國的克利夫蘭市才率先恢復(fù)了紅綠燈,不過,這時已是“電氣信號燈”。稍后又在

4、紐約和芝加哥等城市,相繼重新出現(xiàn)了交通信號燈。</p><p>  隨著各種交通工具的發(fā)展和交通指揮的需要,第一盞名副其實的三色燈(紅、黃、綠三種標志)于1918年誕生。它是三色圓形四面投影器,被安裝在紐約市五號街的一座高塔上,由于它的誕生,使城市交通大為改善。</p><p>  中國最早的馬路紅綠燈,則是于1928年出現(xiàn)在上海的英租界。</p><p><

5、b>  目 錄</b></p><p>  第一部分 開發(fā)板部分硬件介紹3</p><p>  一、板上資源分布3</p><p>  二、ADuC848簡要介紹5</p><p>  三、LCD顯示模塊6</p><p>  第二部分 交通信號燈的設(shè)計8</p><

6、p>  一、題目任務(wù)設(shè)計要求8</p><p>  二、系統(tǒng)原理分析及流程框圖8</p><p>  三、具體程序?qū)崿F(xiàn)10</p><p>  四、具體操作步驟18</p><p>  五、設(shè)計心得體會19</p><p><b>  六、參考文獻21</b></p>

7、<p>  附錄一:開發(fā)板硬件圖22</p><p>  附錄二:單片機歷史23</p><p>  第一部分 開發(fā)板硬件部分介紹</p><p><b>  一、板上資源分布</b></p><p>  圖1.1 板上資源分布</p><p>  1、2、3:單片機P0、P2、

8、P3口引出接口(有限流保護電阻); </p><p>  4:上排圖形點陣LCD12864的接口、下排LCD1602的接口; </p><p>  5、6:兩路16位ADC輸入、可作差分輸入; </p><p>  7、8:12位DAC輸出、對DAC輸出進行比例放大或者跟隨的運放; </p><p>  9:單片機AduC848; </

9、p><p>  10:無源蜂鳴器、由單片機PWM模塊輸出信號控制; </p><p>  11:8位數(shù)碼管; </p><p>  12:SPI接口; </p><p>  13:RS232串口(通過串口在線下載、單步、斷點、運行到某一行等方式調(diào)試程序); </p><p>  14:步進電機(5V、70歐姆、6線4相)接

10、口; </p><p>  15:8路LED,從左至右為LED7~0,分別被P0.7~P0.0控制; </p><p>  16:復(fù)位按鍵和下載按鍵; </p><p>  17、18:IIC總線上的EEPROM AT24C08和RTC DS1307; </p><p>  19:IIC接口; </p><p>  2

11、0:PS/2接口; </p><p>  21:紅外接收頭; </p><p>  22:功能選擇和配置插針; </p><p>  23:4X4矩陣式鍵盤或4個獨立按鍵; </p><p>  24:直流電源輸入; </p><p>  此外還有紅外二極管(由單片機PWM模塊輸出信號控制)、USB電源輸入接口。<

12、;/p><p>  二、ADuC848的簡要介紹</p><p>  1、8051-based core、5V供電電壓; </p><p>  2、可以通過串口在線下載程序和單步、斷點、運行到某一行等方式調(diào)試程序; </p><p>  3、16位8通道Σ-ΔADC,片內(nèi)有1.25V參考電壓、buffer和PGA; </p><

13、;p>  4、12位電壓輸出DAC、Dual 16-BIT Σ-Δ DAC; </p><p>  5、32kbyte程序存儲器、4kbyte用戶信息Flash存儲器、256RAM+2048XRAM(byte); </p><p>  6、PLL(12.58 MHz max)(片外只需接32.768kHz晶振); </p><p>  7、3×16位

14、定時/計數(shù)器、看門狗定時器; </p><p>  8、11中斷源(2優(yōu)先級)、11位堆棧指針; </p><p>  9、24I/O+8模擬或數(shù)字輸入; </p><p>  10、UART、 SPI和I2C、高速115200波特率發(fā)生; </p><p>  11、Power supply monitor、上電復(fù)位、Dual 200μA激

15、勵電流源。</p><p>  12、單片機引腳分布 </p><p>  三、 LCD顯示模塊 </p><p>  LCD顯示信號連接圖如下圖所示。</p><p>  圖1.7 LCD信號連接</p><p>  關(guān)鍵網(wǎng)絡(luò)名和引腳名解釋: </p><p> ?。?)DISCTRL0~4:

16、顯示控制信號。</p><p>  (2)D0~D7、DB0~DB7:數(shù)據(jù)總線。</p><p> ?。?)E:LCD使能信號。</p><p>  (4)RS:數(shù)據(jù)、指令選擇信號。</p><p> ?。?)RW:讀、寫選擇信號。</p><p> ?。?)CS1、CS2:LCD12864由兩部分組成,CS1和CS2

17、為選擇信號。</p><p>  板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排針和排母左對齊插入。</p><p>  第二部分 交通信號燈的設(shè)計</p><p><b>  題目任務(wù)設(shè)計要求</b></p><p><b>  題目設(shè)計及目的</b></p>

18、<p> ?。?)設(shè)計一智能交通信號燈。</p><p> ?。?)了解交通燈管理的基本工作原理(2)熟悉ADuC848的工作原理和應(yīng)用編程(3)熟悉ADuC848并行接口的各種工作方式和應(yīng)用(4)熟悉AT89C51計數(shù)器/定時器的工作方式和應(yīng)用編程外部中斷的方法(5)掌握LCD顯示問題的解決 </p><p><b>  2、題目設(shè)計要求</b>

19、;</p><p>  (1)了解實際交通燈的變化規(guī)律(以十字路口為例)</p><p> ?。?)要求用LCD顯示字符“紅、黃、綠”(或字母r、y、g)代替相應(yīng)的信號燈</p><p> ?。?)要求有東西、南北四組信號燈顯示,并顯示對應(yīng)的時間</p><p> ?。?)時間要求倒計時顯示,計時時間到,對應(yīng)的信號準確切換</p>

20、<p> ?。?)信號燈按一定的規(guī)律閃爍,實現(xiàn)簡單的交通管理</p><p> ?。?)能實現(xiàn)緊急事件處理(例如救護車的通行等),可用蜂鳴器報警和特殊數(shù)字顯示</p><p>  (7)可根據(jù)交通流量智能調(diào)整各路段的通行時間</p><p> ?。?)顯示北京時間,可調(diào)整</p><p>  二、系統(tǒng)原理分析及程序流程框圖<

21、;/p><p>  1、交通燈通常指由紅、黃、綠三種顏色燈組成用來指揮交通的信號燈。綠燈亮?xí)r,準許車輛通行,黃燈亮?xí)r,已越過停止線的車輛可以繼續(xù)通行;紅燈亮?xí)r,禁止車輛通行。</p><p>  下圖為一種紅綠燈的顯示狀態(tài)圖</p><p>  狀態(tài)一:設(shè)東西向為主干道,東西向綠燈定為20s. </p><p>  狀態(tài)二 設(shè)定黃燈時間

22、為5s。</p><p>  狀態(tài)三 南北向為副干道,南北向綠燈設(shè)為10s </p><p>  狀態(tài)四 南北向黃燈也設(shè)為5s.</p><p>  緊急狀態(tài):此時為緊急狀態(tài),所有燈為紅燈,所有車輛禁止通行,觸發(fā)緊急狀態(tài)由緊急按鈕觸發(fā),再次觸發(fā),則解除緊急狀態(tài),回到原來狀態(tài)。</p><p><b>  車流量處理。<

23、;/b></p><p>  首先根據(jù)兩條道路的車流量劃分為主干道和副干道,主干道和副干道的綠燈時間設(shè)置不一樣,主干道的綠燈時間設(shè)置的較長,紅燈時間等于另一條道路的綠燈時間與黃燈時間之和。其次,考慮有車流高峰時期,在本次設(shè)計中,設(shè)置北京時間18:00:00——20:00:00為車流量高峰時期,在此時期,亮燈時間會變成另一個設(shè)定值,具體設(shè)置可依據(jù)實踐情況設(shè)置,本次設(shè)計中將主干道,副干道綠燈實踐均延長10s.當

24、在此時期之外時,亮燈時間為正常設(shè)定時間。</p><p><b>  3、倒計時顯示。</b></p><p>  東西南北四個方向各有一個倒計時顯示,倒計時數(shù)字表示當前亮燈的剩余時間。因為相對的方向顯示相同,因而本次設(shè)計中只兩個倒計時顯示,一個表示南北方向,一個表示東西方向。計時的快慢通過改變對頻率的計數(shù)實現(xiàn)。</p><p><b&g

25、t;  4、北京時間顯示。</b></p><p>  本次設(shè)計中,12864LCD顯示屏第一行顯示北京時間的時、分、秒,時間可調(diào)。北京時間功能采用T0計時器中斷來實現(xiàn)。ADuC848的core clock頻率默認為1.572864MHz,定時器0的時鐘為core clock,1572864=65536*24。故將定時器0設(shè)置為16位計數(shù)模式,且初值為0,無需在定時器溢出中斷中給定時器賦初值(中斷溢出

26、就開始執(zhí)行中斷程序,計數(shù)器為加法計數(shù)器,從0加到65536)。每65536個core clock周期將產(chǎn)生一次中斷,在中斷處理程序中累計中斷次數(shù),當有24次中斷產(chǎn)生時即為1秒,進行計時。</p><p><b>  5、主程序流程圖</b></p><p><b>  交通燈顯示流程圖</b></p><p><b&

27、gt;  三、具體程序?qū)崿F(xiàn)</b></p><p>  #include<aduc848.h></p><p>  #include"ds1307.h"</p><p>  #include"juzhenkeyboard.h"</p><p>  #include"sm

28、g12864.h"</p><p>  #define unchar unsigned char</p><p>  #define unint unsigned int</p><p>  sbit buzzer=P2^6;</p><p>  unchar green[2]={50,30};</p><p&g

29、t;  unchar yellow[2]={5,5};</p><p>  unchar red[2]={55,35};</p><p>  unchar time[7]={1,2,1,1,1,1,1};</p><p>  unint timeflag=0;</p><p>  unchar state=0;</p><

30、;p>  unchar state_buffer;</p><p>  unchar zhugandao=20;</p><p>  unchar fudao=10;</p><p>  unchar key=0;</p><p>  unchar weizhi=0;</p><p>  bit jinjifla

31、g=0;</p><p>  bit set_flag=0;</p><p><b>  unint i;</b></p><p><b>  unchar j;</b></p><p>  void jiaotong_con(void)</p><p><b> 

32、 {</b></p><p>  switch(state)</p><p><b>  {</b></p><p><b>  case 0: </b></p><p>  displayascall(1,2,shuzi[16]);</p><p>  dis

33、playascall(2,2,shuzi[16]);</p><p>  displayascall(3,2,shuzi[16]);</p><p>  displayascall(4,2,shuzi[16]);</p><p>  displayascall(5,2,shuzi[16]);</p><p>  displayascall(6

34、,2,shuzi[16]);</p><p>  displayascall(9,2,shuzi[16]);</p><p>  displayascall(10,2,shuzi[16]);</p><p>  displayascall(11,2,shuzi[16]);</p><p>  displayascall(14,2,shuzi[

35、16]);</p><p>  displayascall(15,2,shuzi[16]);</p><p>  displayascall(16,2,shuzi[16]);</p><p>  displayascall(1,4,shuzi[16]);</p><p>  displayascall(2,4,shuzi[16]);</

36、p><p>  displayascall(3,4,shuzi[16]);</p><p>  displayascall(4,4,shuzi[16]);</p><p>  displayascall(5,4,shuzi[16]);</p><p>  displayascall(6,4,shuzi[16]);</p><p

37、>  displayascall(9,4,shuzi[16]);</p><p>  displayascall(10,4,shuzi[16]);</p><p>  displayascall(11,4,shuzi[16]);</p><p>  displayascall(12,4,shuzi[16]);</p><p>  dis

38、playascall(13,4,shuzi[16]);</p><p>  displayascall(14,4,shuzi[16]);</p><p>  displayascall(15,4,shuzi[16]);</p><p>  displayascall(16,4,shuzi[16]);</p><p>  displayasca

39、ll(1,3,shuzi[16]);</p><p>  displayascall(2,3,shuzi[16]);</p><p>  displayascall(3,3,shuzi[16]);</p><p>  displayascall(4,3,shuzi[16]);</p><p>  displayascall(7,3,shuzi

40、[16]);</p><p>  displayascall(8,3,shuzi[16]);</p><p>  displayascall(11,3,shuzi[16]);</p><p>  displayascall(14,3,shuzi[16]);</p><p>  displayascall(15,3,shuzi[16]);<

41、;/p><p>  displayascall(16,3,shuzi[16]);</p><p>  displayhanzi(3,3,table[1]);</p><p>  displayhanzi(5,3,table[1]);</p><p>  displayhanzi(4,2,table[0]);</p><p>

42、;  displayhanzi(4,4,table[0]);</p><p>  displayshuzi(12,3, green[0]);</p><p>  displayshuzi(12,2, red[1]);</p><p>  green[0]--;</p><p><b>  red[1]--;</b><

43、;/p><p>  if(green[0]==0)</p><p><b>  {</b></p><p>  green[0]=zhugandao;</p><p>  green[1]=fudao;</p><p>  red[0]=fudao+5;</p><p>  y

44、ellow[0]=5;</p><p>  yellow[1]=5;</p><p>  state=1; //轉(zhuǎn)黃紅</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 1: &l

45、t;/b></p><p>  displayascall(1,2,shuzi[16]);</p><p>  displayascall(2,2,shuzi[16]);</p><p>  displayascall(3,2,shuzi[16]);</p><p>  displayascall(4,2,shuzi[16]);<

46、/p><p>  displayascall(5,2,shuzi[16]);</p><p>  displayascall(6,2,shuzi[16]);</p><p>  displayascall(9,2,shuzi[16]);</p><p>  displayascall(10,2,shuzi[16]);</p><

47、;p>  displayascall(11,2,shuzi[16]);</p><p>  displayascall(14,2,shuzi[16]);</p><p>  displayascall(15,2,shuzi[16]);</p><p>  displayascall(16,2,shuzi[16]);</p><p>  

48、displayascall(1,4,shuzi[16]);</p><p>  displayascall(2,4,shuzi[16]);</p><p>  displayascall(3,4,shuzi[16]);</p><p>  displayascall(4,4,shuzi[16]);</p><p>  displayascal

49、l(5,4,shuzi[16]);</p><p>  displayascall(6,4,shuzi[16]);</p><p>  displayascall(9,4,shuzi[16]);</p><p>  displayascall(10,4,shuzi[16]);</p><p>  displayascall(11,4,shuz

50、i[16]);</p><p>  displayascall(12,4,shuzi[16]);</p><p>  displayascall(13,4,shuzi[16]);</p><p>  displayascall(14,4,shuzi[16]);</p><p>  displayascall(15,4,shuzi[16]);&

51、lt;/p><p>  displayascall(16,4,shuzi[16]);</p><p>  displayascall(1,3,shuzi[16]);</p><p>  displayascall(2,3,shuzi[16]);</p><p>  displayascall(3,3,shuzi[16]);</p>

52、<p>  displayascall(4,3,shuzi[16]);</p><p>  displayascall(7,3,shuzi[16]);</p><p>  displayascall(8,3,shuzi[16]);</p><p>  displayascall(11,3,shuzi[16]);</p><p>  

53、displayascall(14,3,shuzi[16]);</p><p>  displayascall(15,3,shuzi[16]);</p><p>  displayascall(16,3,shuzi[16]);</p><p>  displayhanzi(3,3,table[2]);</p><p>  displayhanz

54、i(5,3,table[2]);</p><p>  displayhanzi(4,2,table[0]);</p><p>  displayhanzi(4,4,table[0]);</p><p>  displayshuzi(12,3, yellow[0]--);</p><p>  displayshuzi(12,2, red[1])

55、;</p><p>  //green[0]--;</p><p><b>  red[1]--;</b></p><p>  if(red[1]==0)</p><p><b>  {</b></p><p>  red[1]=zhugandao+5;</p>

56、<p>  green[0]=zhugandao;</p><p>  green[1]=fudao;</p><p>  red[0]=fudao+5;</p><p>  yellow[0]=5;</p><p>  yellow[1]=5;</p><p><b>  state=2;<

57、;/b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2: </b></p><p>  displayascall(1,2,shuzi[16]);</p><p&g

58、t;  displayascall(2,2,shuzi[16]);</p><p>  displayascall(3,2,shuzi[16]);</p><p>  displayascall(4,2,shuzi[16]);</p><p>  displayascall(5,2,shuzi[16]);</p><p>  displaya

59、scall(6,2,shuzi[16]);</p><p>  displayascall(9,2,shuzi[16]);</p><p>  displayascall(10,2,shuzi[16]);</p><p>  displayascall(11,2,shuzi[16]);</p><p>  displayascall(14,2

60、,shuzi[16]);</p><p>  displayascall(15,2,shuzi[16]);</p><p>  displayascall(16,2,shuzi[16]);</p><p>  displayascall(1,4,shuzi[16]);</p><p>  displayascall(2,4,shuzi[16]

61、);</p><p>  displayascall(3,4,shuzi[16]);</p><p>  displayascall(4,4,shuzi[16]);</p><p>  displayascall(5,4,shuzi[16]);</p><p>  displayascall(6,4,shuzi[16]);</p>

62、<p>  displayascall(9,4,shuzi[16]);</p><p>  displayascall(10,4,shuzi[16]);</p><p>  displayascall(11,4,shuzi[16]);</p><p>  displayascall(12,4,shuzi[16]);</p><p&g

63、t;  displayascall(13,4,shuzi[16]);</p><p>  displayascall(14,4,shuzi[16]);</p><p>  displayascall(15,4,shuzi[16]);</p><p>  displayascall(16,4,shuzi[16]);</p><p>  disp

64、layascall(1,3,shuzi[16]);</p><p>  displayascall(2,3,shuzi[16]);</p><p>  displayascall(3,3,shuzi[16]);</p><p>  displayascall(4,3,shuzi[16]);</p><p>  displayascall(7,

65、3,shuzi[16]);</p><p>  displayascall(8,3,shuzi[16]);</p><p>  displayascall(11,3,shuzi[16]);</p><p>  displayascall(14,3,shuzi[16]);</p><p>  displayascall(15,3,shuzi[1

66、6]);</p><p>  displayascall(16,3,shuzi[16]);</p><p>  displayhanzi(3,3,table[0]);</p><p>  displayhanzi(5,3,table[0]);</p><p>  displayhanzi(4,2,table[1]);</p>&

67、lt;p>  displayhanzi(4,4,table[1]);</p><p>  displayshuzi(12,3, red[0]);</p><p>  displayshuzi(12,2, green[1]);</p><p>  green[1]--;</p><p><b>  red[0]--;</b

68、></p><p>  if(green[1]==0)</p><p><b>  {</b></p><p>  red[1]=fudao+5;</p><p>  green[0]=zhugandao;</p><p>  green[1]=fudao;</p><p

69、>  yellow[0]=5;</p><p>  yellow[1]=5;</p><p><b>  state=3;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b

70、>  case 3: </b></p><p>  displayascall(1,2,shuzi[16]);</p><p>  displayascall(2,2,shuzi[16]);</p><p>  displayascall(3,2,shuzi[16]);</p><p>  displayascall(4,

71、2,shuzi[16]);</p><p>  displayascall(5,2,shuzi[16]);</p><p>  displayascall(6,2,shuzi[16]);</p><p>  displayascall(9,2,shuzi[16]);</p><p>  displayascall(10,2,shuzi[16]

72、);</p><p>  displayascall(11,2,shuzi[16]);</p><p>  displayascall(14,2,shuzi[16]);</p><p>  displayascall(15,2,shuzi[16]);</p><p>  displayascall(16,2,shuzi[16]);</p

73、><p>  displayascall(1,4,shuzi[16]);</p><p>  displayascall(2,4,shuzi[16]);</p><p>  displayascall(3,4,shuzi[16]);</p><p>  displayascall(4,4,shuzi[16]);</p><p&

74、gt;  displayascall(5,4,shuzi[16]);</p><p>  displayascall(6,4,shuzi[16]);</p><p>  displayascall(9,4,shuzi[16]);</p><p>  displayascall(10,4,shuzi[16]);</p><p>  displa

75、yascall(11,4,shuzi[16]);</p><p>  displayascall(12,4,shuzi[16]);</p><p>  displayascall(13,4,shuzi[16]);</p><p>  displayascall(14,4,shuzi[16]);</p><p>  displayascall(

76、15,4,shuzi[16]);</p><p>  displayascall(16,4,shuzi[16]);</p><p>  displayascall(1,3,shuzi[16]);</p><p>  displayascall(2,3,shuzi[16]);</p><p>  displayascall(3,3,shuzi[

77、16]);</p><p>  displayascall(4,3,shuzi[16]);</p><p>  displayascall(7,3,shuzi[16]);</p><p>  displayascall(8,3,shuzi[16]);</p><p>  displayascall(11,3,shuzi[16]);</p

78、><p>  displayascall(14,3,shuzi[16]);</p><p>  displayascall(15,3,shuzi[16]);</p><p>  displayascall(16,3,shuzi[16]);</p><p>  displayhanzi(3,3,table[0]);</p><p

79、>  displayhanzi(5,3,table[0]);</p><p>  displayhanzi(4,2,table[2]);</p><p>  displayhanzi(4,4,table[2]);</p><p>  displayshuzi(12,3, red[0]);</p><p>  displayshuzi(1

80、2,2, yellow[1]--);</p><p><b>  red[0]--;</b></p><p>  if(red[0]==0)</p><p><b>  {</b></p><p>  green[0]=zhugandao;</p><p>  green[1

81、]=fudao;</p><p>  red[0]=fudao+5;</p><p>  red[1]=zhugandao+5;</p><p>  yellow[0]=5;</p><p>  yellow[1]=5;</p><p><b>  state=0;</b></p>

82、<p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  displayascall(1,2,shuzi[16]);</p><p>  displayascall(2,2

83、,shuzi[16]);</p><p>  displayascall(3,2,shuzi[16]);</p><p>  displayascall(4,2,shuzi[16]);</p><p>  displayascall(5,2,shuzi[16]);</p><p>  displayascall(6,2,shuzi[16]);

84、</p><p>  displayascall(9,2,shuzi[16]);</p><p>  displayascall(10,2,shuzi[16]);</p><p>  displayascall(11,2,shuzi[16]);</p><p>  displayascall(14,2,shuzi[16]);</p>

85、;<p>  displayascall(15,2,shuzi[16]);</p><p>  displayascall(16,2,shuzi[16]);</p><p>  displayascall(1,4,shuzi[16]);</p><p>  displayascall(2,4,shuzi[16]);</p><p&g

86、t;  displayascall(3,4,shuzi[16]);</p><p>  displayascall(4,4,shuzi[16]);</p><p>  displayascall(5,4,shuzi[16]);</p><p>  displayascall(6,4,shuzi[16]);</p><p>  displaya

87、scall(9,4,shuzi[16]);</p><p>  displayascall(10,4,shuzi[16]);</p><p>  displayascall(11,4,shuzi[16]);</p><p>  displayascall(12,4,shuzi[16]);</p><p>  displayascall(13,

88、4,shuzi[16]);</p><p>  displayascall(14,4,shuzi[16]);</p><p>  displayascall(15,4,shuzi[16]);</p><p>  displayascall(16,4,shuzi[16]);</p><p>  displayascall(1,3,shuzi[1

89、6]);</p><p>  displayascall(2,3,shuzi[16]);</p><p>  displayascall(3,3,shuzi[16]);</p><p>  displayascall(4,3,shuzi[16]);</p><p>  displayascall(7,3,shuzi[16]);</p&g

90、t;<p>  displayascall(8,3,shuzi[16]);</p><p>  displayascall(11,3,shuzi[16]);</p><p>  displayascall(14,3,shuzi[16]);</p><p>  displayascall(15,3,shuzi[16]);</p><p

91、>  displayascall(16,3,shuzi[16]);</p><p>  displayhanzi(3,3,table[0]);</p><p>  displayhanzi(5,3,table[0]);</p><p>  displayhanzi(4,2,table[0]);</p><p>  displayhanz

92、i(4,4,table[0]);</p><p>  displayascall(12,3,shuzi[16]);</p><p>  displayascall(13,3,shuzi[16]);</p><p>  displayascall(12,2,shuzi[16]);</p><p>  displayascall(13,2,shu

93、zi[16]);</p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main(void)<

94、;/p><p><b>  {</b></p><p>  PLLCON&=0xf8;//設(shè)置頻率為12.58MHz</p><p>  I2CCON=0xE8;//配置IIC為軟件主發(fā)送模式</p><p>  TMOD = 0x01;</p><p>  TH0 = 0x0EC;</

95、p><p>  TL0 = 0x78;</p><p><b>  EA = 1;</b></p><p><b>  ET0 = 1;</b></p><p><b>  TR0 = 1;</b></p><p><b>  inital();&

96、lt;/b></p><p><b>  clear();</b></p><p>  //SwitchRTC(0);</p><p>  //SetTime(time);</p><p>  SwitchRTC(1);</p><p>  green[0]=zhugandao;</

97、p><p>  green[1]=fudao;</p><p>  red[0]=fudao+5;</p><p>  red[1]=zhugandao+5;</p><p>  yellow[0]=5;</p><p>  yellow[1]=5;</p><p><b>  state

98、=0;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(time[2]>=18&&time[2]<=20)</p><p><b>  {</b></p

99、><p>  zhugandao=30;</p><p><b>  fudao=20;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p&

100、gt;<p>  zhugandao=20;</p><p><b>  fudao=10;</b></p><p><b>  }</b></p><p>  key=get_keyvalue();</p><p>  if(key==16)</p><p>

101、<b>  {</b></p><p>  jinjiflag=!jinjiflag;</p><p>  if(jinjiflag==1)</p><p>  state_buffer=state;</p><p><b>  else</b></p><p>  stat

102、e=state_buffer;</p><p><b>  }</b></p><p>  if(jinjiflag==1)</p><p><b>  {</b></p><p>  for(i=0;i<10000;i++)</p><p><b>  {&

103、lt;/b></p><p>  buzzer=!buzzer;</p><p>  for(j=0;j<120;j++);</p><p><b>  }</b></p><p><b>  state=4; </b></p><p><b>  }&

104、lt;/b></p><p>  if(key==13)</p><p>  {set_flag=!set_flag;</p><p>  if(set_flag)</p><p>  weizhi=0x01;</p><p><b>  else</b></p><p&

105、gt;  weizhi=0x00;</p><p><b>  }</b></p><p>  if(set_flag && key!=0)</p><p><b>  {</b></p><p>  if(key==4)</p><p><b> 

106、 {</b></p><p>  weizhi<<=1;</p><p>  if(weizhi==0x40)</p><p>  weizhi=0x01;</p><p><b>  }</b></p><p><b>  else</b></

107、p><p>  if(key==12)</p><p><b>  {</b></p><p>  weizhi>>=1;</p><p>  if(weizhi==0x00)</p><p>  weizhi=0x20;</p><p><b>  }&

108、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  switch(weizhi)</p><p><b>  {</b></p><p>  case 0x01:</p>

109、;<p>  switch(key)</p><p><b>  {</b></p><p>  case 1:time[0]=time[0]/10*10+1;break;</p><p>  case 5:time[0]=time[0]/10*10+2;break;</p><p>  case 9:ti

110、me[0]=time[0]/10*10+3;break;</p><p>  case 2:time[0]=time[0]/10*10+4;break;</p><p>  case 6:time[0]=time[0]/10*10+5;break;</p><p>  case 10:time[0]=time[0]/10*10+6;break;</p>

111、<p>  case 3:time[0]=time[0]/10*10+7;break;</p><p>  case 7:time[0]=time[0]/10*10+8;break;</p><p>  case 11:time[0]=time[0]/10*10+9;break;</p><p>  case 8:time[0]=time[0]/10*1

112、0;break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 0x02:</p><p>  switch(key)</p><p

113、><b>  {</b></p><p>  case 1:time[0]=time[0]%10+10;break;</p><p>  case 5:time[0]=time[0]%10+20;break;</p><p>  case 9:time[0]=time[0]%10+30;break;</p><p>

114、;  case 2:time[0]=time[0]%10+40;break;</p><p>  case 6:time[0]=time[0]%10+50;break;</p><p>  case 8:time[0]=time[0]%10;break;</p><p>  default:break;</p><p><b>  

115、}</b></p><p><b>  break;</b></p><p>  case 0x04:</p><p>  switch(key)</p><p><b>  {</b></p><p>  case 1:time[1]=time[1]/10*10

116、+1;break;</p><p>  case 5:time[1]=time[1]/10*10+2;break;</p><p>  case 9:time[1]=time[1]/10*10+3;break;</p><p>  case 2:time[1]=time[1]/10*10+4;break;</p><p>  case 6:t

117、ime[1]=time[1]/10*10+5;break;</p><p>  case 10:time[1]=time[1]/10*10+6;break;</p><p>  case 3:time[1]=time[1]/10*10+7;break;</p><p>  case 7:time[1]=time[1]/10*10+8;break;</p>

118、<p>  case 11:time[1]=time[1]/10*10+9;break;</p><p>  case 8:time[1]=time[1]/10*10;break;</p><p>  default:break;</p><p><b>  }</b></p><p><b> 

119、 break;</b></p><p>  case 0x08:</p><p>  switch(key)</p><p><b>  {</b></p><p>  case 1:time[1]=time[1]%10+10;break;</p><p>  case 5:time[

120、1]=time[1]%10+20;break;</p><p>  case 9:time[1]=time[1]%10+30;break;</p><p>  case 2:time[1]=time[1]%10+40;break;</p><p>  case 6:time[1]=time[1]%10+50;break;</p><p>  

121、case 8:time[1]=time[1]%10;break;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 0x10:</p><p>  swit

122、ch(key)</p><p><b>  {</b></p><p>  case 1:time[2]=time[2]/10*10+1;break;</p><p>  case 5:time[2]=time[2]/10*10+2;break;</p><p>  case 9:time[2]=time[2]/10*1

123、0+3;break;</p><p>  case 2:time[2]=time[2]/10*10+4;break;</p><p>  case 6:time[2]=time[2]/10*10+5;break;</p><p>  case 10:time[2]=time[2]/10*10+6;break;</p><p>  case 3

124、:time[2]=time[2]/10*10+7;break;</p><p>  case 7:time[2]=time[2]/10*10+8;break;</p><p>  case 11:time[2]=time[2]/10*10+9;break;</p><p>  case 8:time[2]=time[2]/10*10;break;</p>

125、<p>  default:break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 0x20:</p><p>  switch(key)</p><p><b>  {&l

126、t;/b></p><p>  case 1:time[2]=time[2]%10+10;break;</p><p>  case 5:time[2]=time[2]%10+20;break;</p><p>  case 8:time[2]=time[2]%10;break;</p><p>  default:break;<

127、/p><p><b>  }</b></p><p>  if(time[2]>23)</p><p>  time[2]=0;</p><p><b>  break;</b></p><p><b>  }</b></p><p

128、><b>  }</b></p><p><b>  }</b></p><p>  if(set_flag==0)</p><p><b>  {</b></p><p>  ReadTime(time);</p><p>  displayti

129、me(1,time[2],time[1],time[0]);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  fan_displaytime(1,time[2],time[1],

130、time[0],weizhi);</p><p>  SetTime(time);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void interruptt

131、ime0(void) interrupt 1</p><p><b>  {</b></p><p><b>  TR0 = 0;</b></p><p>  TH0 = 0x0EC;</p><p>  TL0 = 0x78;</p><p>  if(timeflag&l

132、t;=2000)</p><p>  timeflag++;</p><p><b>  else</b></p><p><b>  {</b></p><p>  timeflag=0;</p><p>  jiaotong_con();</p><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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論