版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 湖南大學(xué)電氣與信息工程學(xué)院</p><p> 本科生單片機(jī)課程設(shè)計(jì)</p><p> 題 目:基于LCD12864的交通信號(hào)燈 </p><p> 學(xué) 院:電氣與信息工程學(xué)院</p><p> ?! I(yè):電氣工程及其自動(dòng)化</p><p><b> 班 級(jí):
2、</b></p><p><b> 學(xué) 號(hào):</b></p><p><b> 姓 名:</b></p><p><b> 指導(dǎo) 老師:</b></p><p> 設(shè)計(jì) 時(shí)間: 2012年6月 29日 </p><p><
3、;b> 交通燈的歷史</b></p><p> 1868年12月10日,信號(hào)燈家族的第一個(gè)成員就在倫敦議會(huì)大廈的廣場(chǎng)上誕生了,由當(dāng)時(shí)英國(guó)機(jī)械師德·哈特設(shè)計(jì)、制造的燈柱高7米,身上掛著一盞紅、綠兩色的提燈--煤氣交通信號(hào)燈,這是城市街道的第一盞信號(hào)燈。</p><p> 1914年,在美國(guó)的克利夫蘭市才率先恢復(fù)了紅綠燈,不過,這時(shí)已是“電氣信號(hào)燈”。稍后又在
4、紐約和芝加哥等城市,相繼重新出現(xiàn)了交通信號(hào)燈。</p><p> 隨著各種交通工具的發(fā)展和交通指揮的需要,第一盞名副其實(shí)的三色燈(紅、黃、綠三種標(biāo)志)于1918年誕生。它是三色圓形四面投影器,被安裝在紐約市五號(hào)街的一座高塔上,由于它的誕生,使城市交通大為改善。</p><p> 中國(guó)最早的馬路紅綠燈,則是于1928年出現(xiàn)在上海的英租界。</p><p><
5、b> 目 錄</b></p><p> 第一部分 開發(fā)板部分硬件介紹3</p><p> 一、板上資源分布3</p><p> 二、ADuC848簡(jiǎn)要介紹5</p><p> 三、LCD顯示模塊6</p><p> 第二部分 交通信號(hào)燈的設(shè)計(jì)8</p><
6、p> 一、題目任務(wù)設(shè)計(jì)要求8</p><p> 二、系統(tǒng)原理分析及流程框圖8</p><p> 三、具體程序?qū)崿F(xiàn)10</p><p> 四、具體操作步驟18</p><p> 五、設(shè)計(jì)心得體會(huì)19</p><p><b> 六、參考文獻(xiàn)21</b></p>
7、<p> 附錄一:開發(fā)板硬件圖22</p><p> 附錄二:?jiǎn)纹瑱C(jī)歷史23</p><p> 第一部分 開發(fā)板硬件部分介紹</p><p><b> 一、板上資源分布</b></p><p> 圖1.1 板上資源分布</p><p> 1、2、3:?jiǎn)纹瑱C(jī)P0、P2、
8、P3口引出接口(有限流保護(hù)電阻); </p><p> 4:上排圖形點(diǎn)陣LCD12864的接口、下排LCD1602的接口; </p><p> 5、6:兩路16位ADC輸入、可作差分輸入; </p><p> 7、8:12位DAC輸出、對(duì)DAC輸出進(jìn)行比例放大或者跟隨的運(yùn)放; </p><p> 9:?jiǎn)纹瑱C(jī)AduC848; </
9、p><p> 10:無源蜂鳴器、由單片機(jī)PWM模塊輸出信號(hào)控制; </p><p> 11:8位數(shù)碼管; </p><p> 12:SPI接口; </p><p> 13:RS232串口(通過串口在線下載、單步、斷點(diǎn)、運(yùn)行到某一行等方式調(diào)試程序); </p><p> 14:步進(jìn)電機(jī)(5V、70歐姆、6線4相)接
10、口; </p><p> 15:8路LED,從左至右為L(zhǎng)ED7~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個(gè)獨(dú)立按鍵; </p><p> 24:直流電源輸入; </p><p> 此外還有紅外二極管(由單片機(jī)PWM模塊輸出信號(hào)控制)、USB電源輸入接口。<
12、;/p><p> 二、ADuC848的簡(jiǎn)要介紹</p><p> 1、8051-based core、5V供電電壓; </p><p> 2、可以通過串口在線下載程序和單步、斷點(diǎn)、運(yùn)行到某一行等方式調(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程序存儲(chǔ)器、4kbyte用戶信息Flash存儲(chǔ)器、256RAM+2048XRAM(byte); </p><p> 6、PLL(12.58 MHz max)(片外只需接32.768kHz晶振); </p><p> 7、3×16位
14、定時(shí)/計(jì)數(shù)器、看門狗定時(shí)器; </p><p> 8、11中斷源(2優(yōu)先級(jí))、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、勵(lì)電流源。</p><p> 12、單片機(jī)引腳分布 </p><p> 三、 LCD顯示模塊 </p><p> LCD顯示信號(hào)連接圖如下圖所示。</p><p> 圖1.7 LCD信號(hào)連接</p><p> 關(guān)鍵網(wǎng)絡(luò)名和引腳名解釋: </p><p> ?。?)DISCTRL0~4:
16、顯示控制信號(hào)。</p><p> ?。?)D0~D7、DB0~DB7:數(shù)據(jù)總線。</p><p> ?。?)E:LCD使能信號(hào)。</p><p> (4)RS:數(shù)據(jù)、指令選擇信號(hào)。</p><p> ?。?)RW:讀、寫選擇信號(hào)。</p><p> ?。?)CS1、CS2:LCD12864由兩部分組成,CS1和CS2
17、為選擇信號(hào)。</p><p> 板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排針和排母左對(duì)齊插入。</p><p> 第二部分 交通信號(hào)燈的設(shè)計(jì)</p><p><b> 題目任務(wù)設(shè)計(jì)要求</b></p><p><b> 題目設(shè)計(jì)及目的</b></p>
18、<p> ?。?)設(shè)計(jì)一智能交通信號(hào)燈。</p><p> ?。?)了解交通燈管理的基本工作原理(2)熟悉ADuC848的工作原理和應(yīng)用編程(3)熟悉ADuC848并行接口的各種工作方式和應(yīng)用(4)熟悉AT89C51計(jì)數(shù)器/定時(shí)器的工作方式和應(yīng)用編程外部中斷的方法(5)掌握LCD顯示問題的解決 </p><p><b> 2、題目設(shè)計(jì)要求</b>
19、;</p><p> (1)了解實(shí)際交通燈的變化規(guī)律(以十字路口為例)</p><p> ?。?)要求用LCD顯示字符“紅、黃、綠”(或字母r、y、g)代替相應(yīng)的信號(hào)燈</p><p> ?。?)要求有東西、南北四組信號(hào)燈顯示,并顯示對(duì)應(yīng)的時(shí)間</p><p> (4)時(shí)間要求倒計(jì)時(shí)顯示,計(jì)時(shí)時(shí)間到,對(duì)應(yīng)的信號(hào)準(zhǔn)確切換</p>
20、<p> ?。?)信號(hào)燈按一定的規(guī)律閃爍,實(shí)現(xiàn)簡(jiǎn)單的交通管理</p><p> ?。?)能實(shí)現(xiàn)緊急事件處理(例如救護(hù)車的通行等),可用蜂鳴器報(bào)警和特殊數(shù)字顯示</p><p> ?。?)可根據(jù)交通流量智能調(diào)整各路段的通行時(shí)間</p><p> ?。?)顯示北京時(shí)間,可調(diào)整</p><p> 二、系統(tǒng)原理分析及程序流程框圖<
21、;/p><p> 1、交通燈通常指由紅、黃、綠三種顏色燈組成用來指揮交通的信號(hào)燈。綠燈亮?xí)r,準(zhǔn)許車輛通行,黃燈亮?xí)r,已越過停止線的車輛可以繼續(xù)通行;紅燈亮?xí)r,禁止車輛通行。</p><p> 下圖為一種紅綠燈的顯示狀態(tài)圖</p><p> 狀態(tài)一:設(shè)東西向?yàn)橹鞲傻溃瑬|西向綠燈定為20s. </p><p> 狀態(tài)二 設(shè)定黃燈時(shí)間
22、為5s。</p><p> 狀態(tài)三 南北向?yàn)楦备傻溃媳毕蚓G燈設(shè)為10s </p><p> 狀態(tài)四 南北向黃燈也設(shè)為5s.</p><p> 緊急狀態(tài):此時(shí)為緊急狀態(tài),所有燈為紅燈,所有車輛禁止通行,觸發(fā)緊急狀態(tài)由緊急按鈕觸發(fā),再次觸發(fā),則解除緊急狀態(tài),回到原來狀態(tài)。</p><p><b> 車流量處理。<
23、;/b></p><p> 首先根據(jù)兩條道路的車流量劃分為主干道和副干道,主干道和副干道的綠燈時(shí)間設(shè)置不一樣,主干道的綠燈時(shí)間設(shè)置的較長(zhǎng),紅燈時(shí)間等于另一條道路的綠燈時(shí)間與黃燈時(shí)間之和。其次,考慮有車流高峰時(shí)期,在本次設(shè)計(jì)中,設(shè)置北京時(shí)間18:00:00——20:00:00為車流量高峰時(shí)期,在此時(shí)期,亮燈時(shí)間會(huì)變成另一個(gè)設(shè)定值,具體設(shè)置可依據(jù)實(shí)踐情況設(shè)置,本次設(shè)計(jì)中將主干道,副干道綠燈實(shí)踐均延長(zhǎng)10s.當(dāng)
24、在此時(shí)期之外時(shí),亮燈時(shí)間為正常設(shè)定時(shí)間。</p><p><b> 3、倒計(jì)時(shí)顯示。</b></p><p> 東西南北四個(gè)方向各有一個(gè)倒計(jì)時(shí)顯示,倒計(jì)時(shí)數(shù)字表示當(dāng)前亮燈的剩余時(shí)間。因?yàn)橄鄬?duì)的方向顯示相同,因而本次設(shè)計(jì)中只兩個(gè)倒計(jì)時(shí)顯示,一個(gè)表示南北方向,一個(gè)表示東西方向。計(jì)時(shí)的快慢通過改變對(duì)頻率的計(jì)數(shù)實(shí)現(xiàn)。</p><p><b&g
25、t; 4、北京時(shí)間顯示。</b></p><p> 本次設(shè)計(jì)中,12864LCD顯示屏第一行顯示北京時(shí)間的時(shí)、分、秒,時(shí)間可調(diào)。北京時(shí)間功能采用T0計(jì)時(shí)器中斷來實(shí)現(xiàn)。ADuC848的core clock頻率默認(rèn)為1.572864MHz,定時(shí)器0的時(shí)鐘為core clock,1572864=65536*24。故將定時(shí)器0設(shè)置為16位計(jì)數(shù)模式,且初值為0,無需在定時(shí)器溢出中斷中給定時(shí)器賦初值(中斷溢出
26、就開始執(zhí)行中斷程序,計(jì)數(shù)器為加法計(jì)數(shù)器,從0加到65536)。每65536個(gè)core clock周期將產(chǎn)生一次中斷,在中斷處理程序中累計(jì)中斷次數(shù),當(dāng)有24次中斷產(chǎn)生時(shí)即為1秒,進(jìn)行計(jì)時(shí)。</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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)--模擬交通信號(hào)燈
- 單片機(jī)課程設(shè)計(jì)-控制交通信號(hào)燈
- 單片機(jī)課程設(shè)計(jì)--模擬交通信號(hào)燈
- 單片機(jī)課程設(shè)計(jì)報(bào)告--交通信號(hào)燈的模擬系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)---交通信號(hào)燈模擬控制設(shè)計(jì)
- 交通信號(hào)燈課程設(shè)計(jì)--基于單片機(jī)的交通燈設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通信號(hào)燈控制系統(tǒng)
- 交通信號(hào)燈課程設(shè)計(jì)---交通信號(hào)燈系統(tǒng)設(shè)計(jì)
- 單片機(jī)控制交通信號(hào)燈
- 交通信號(hào)燈課程設(shè)計(jì)報(bào)告
- 淺析單片機(jī)控制交通信號(hào)燈
- 課程設(shè)計(jì)交通信號(hào)燈
- 交通信號(hào)燈課程設(shè)計(jì)
- 交通信號(hào)燈課程設(shè)計(jì)--交通信號(hào)燈控制電路的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--交通信號(hào)燈實(shí)時(shí)控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--交通信號(hào)燈模擬控制系統(tǒng)設(shè)計(jì)
- 交通信號(hào)燈課程設(shè)計(jì)
- 交通信號(hào)燈課程設(shè)計(jì)
- 基于51單片機(jī)的交通信號(hào)燈系統(tǒng)
- 交通信號(hào)燈課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論