基于80C51單片機(jī)的交通燈設(shè)計(jì)_第1頁(yè)
基于80C51單片機(jī)的交通燈設(shè)計(jì)_第2頁(yè)
基于80C51單片機(jī)的交通燈設(shè)計(jì)_第3頁(yè)
基于80C51單片機(jī)的交通燈設(shè)計(jì)_第4頁(yè)
基于80C51單片機(jī)的交通燈設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于80C51單片機(jī)的交通燈設(shè)計(jì)班級(jí):電信1101 姓名:XXXX 學(xué)號(hào):0703110107一、設(shè)計(jì)說(shuō)明及材料清單(一) 設(shè)計(jì)說(shuō)明:本交通燈的設(shè)計(jì)簡(jiǎn)化了十字路交通燈,只將東西和南北兩個(gè)路向的交通燈情況表示出來(lái),但也做了很多改進(jìn),設(shè)計(jì)了針對(duì)不同時(shí)間段不同的控制方案,并且采用串口通訊可將不同的控制方案下載到芯片中,外接掉電保存程序的非易失性存儲(chǔ)芯片和掉電仍可計(jì)時(shí)的時(shí)鐘芯片,以保證計(jì)時(shí)的正確性。(二) 材料清單: 二、電路原理圖設(shè)計(jì)本設(shè)計(jì)共用到四款主要芯片,分別為單片機(jī)芯片80C51、EEPROM芯片AT24C02、時(shí)鐘芯片DS1302和轉(zhuǎn)串口芯片MAX232。(一) 下圖為80C51單片機(jī)芯片的

2、管腳圖,80C51有兩個(gè)16位定時(shí)計(jì)數(shù)器,兩個(gè)外中斷,兩個(gè)定時(shí)計(jì)數(shù)中斷,及一個(gè)串行中斷,并有4個(gè)8位并行輸入口即I/O口。80C51內(nèi)部有時(shí)鐘電路,但需要石英晶體和微調(diào)電容外接,本系統(tǒng)中采用12MHz的晶振頻率。 (二) 下圖為AT24C02芯片的原理圖,該芯片是一種帶有I2C總線結(jié)構(gòu)的EEPROM芯片,通過(guò)SDA和SCL端口與總線連接,具有非易失性,掉電仍可保存程序。其管腳功能如下:管腳名稱 功能 說(shuō)明A0、A1、A2 器件地址選擇 本設(shè)計(jì)全部接地 SDA 串行數(shù)據(jù)、地址 與單片機(jī)的P1.6連接進(jìn)行數(shù)據(jù)、地址的傳輸SCL 串行時(shí)鐘 與單片機(jī)的P1.7相連,串行時(shí)鐘信號(hào)輸入WP 寫(xiě)保護(hù) WP=

3、1,只能對(duì)其讀,寫(xiě)禁止,所以令WP=0VCC +1.8V6.0V工作電壓 電源輸入GND 地 接地引腳 (三) 下圖是時(shí)鐘芯片的電路原理圖,DS1307是一款低功耗,地址和數(shù)據(jù)通過(guò)兩線雙向的串行總線的傳輸,節(jié)省單片機(jī)資源,該芯片可以提供秒,分,小時(shí)等信息,芯片有一個(gè)內(nèi)置的電源感應(yīng)電路,具有掉電檢測(cè)和電池切換功能,本設(shè)計(jì)中需要其停電后繼續(xù)計(jì)時(shí)。其中的7引腳是方波的輸出端,可接入單片機(jī)的可引起中斷的端口,利用引腳7產(chǎn)生的方波引起中斷,從而顯示時(shí)間的變化。 (四) 下圖是MAX232芯片的原理圖,因?yàn)樵O(shè)計(jì)要求與電腦有串口通訊,就是將交通燈不同時(shí)間段程序控制方案通過(guò)串口下載到單片機(jī)里,單片機(jī)上有一個(gè)全

4、雙工的串行通訊口,但電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,所以采用了專用芯片MAX232進(jìn)行轉(zhuǎn)換,下圖中的7、8端口分別和電腦上的RS232端口的2、3連接,芯片的9和10端口與單片機(jī)的串口相連,如下圖所示: (五) 下圖為交通燈的總體原理圖(不包括上述芯片原理圖),根據(jù)要求選擇六只LED燈作為東西和南北方向的紅綠黃交通燈,并且每個(gè)方向上有時(shí)間計(jì)數(shù)提示,每個(gè)方向有兩位數(shù)碼管動(dòng)態(tài)顯示,最大為99,采用共陰極7段數(shù)碼管,單片機(jī)通過(guò)驅(qū)動(dòng)器SN7404的放大電流驅(qū)動(dòng)每位數(shù)碼管。P1.0至P1.5控制六只LED燈,數(shù)碼管由P0.0至P0.6控制進(jìn)行段

5、選,P2.0至P2.3控制位選。三、程序設(shè)計(jì)(一) 系統(tǒng)框圖: (二) 主程序如下: #include"reg51.h" #include<intrins.h>#define EW_H 0#define EW_L 1#define SN_H 2#define SN_L 3/函數(shù)聲明void EW_NONE();void EW_RED();void EW_YELLOW();void EW_GREEN();void SN_NONE();void SN_RED();void SN_YELLOW();void SN_GREEN();void LED_INIT();voi

6、d LED_WRITE(int dat,int con);/根據(jù)原理圖定義交通燈的引腳sbit EW_LED_RED = P10;sbit EW_LED_YELLOW = P11;sbit EW_LED_GREEN = P12;sbit SN_LED_RED = P13;sbit SN_LED_YELLOW = P14;sbit SN_LED_GREEN = P15;/定義P20-P23=LED數(shù)碼管控制sbit EW_weixuan_H = P20;sbit EW_weixuan_L = P21;sbit SN_weixuan_H = P22;sbit SN_weixuan_L = P23;

7、/定義P00-P07=LED數(shù)碼管段選引腳sbit LED_DATA_A = P00;sbit LED_DATA_B = P01;sbit LED_DATA_C = P02;sbit LED_DATA_D = P03;sbit LED_DATA_E = P04;sbit LED_DATA_F = P05;sbit LED_DATA_G = P06;sbit SCL = P16;sbit SDA = P17;/變量聲明unsigned char counter,ew_sign,sn_sign,ew_time,sn_time,hour/定義段碼code char LED_CODE10 = 0x3f

8、,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*main函數(shù)開(kāi)始*/main() counter = 3;/計(jì)數(shù)器,每3600s查詢一次當(dāng)前hour ew_sign = 0;/東西標(biāo)志位,0代表紅燈,1代表綠燈,2代表黃燈 sn_sign = 0;/南北標(biāo)志位,0代表紅燈,1代表綠燈,2代表黃燈 ew_time = 3;/東西時(shí)間 sn_time = 3;/南北時(shí)間 hour = 24;/當(dāng)前hourunsigned ew_total_time24 = 1,1,1,1,1,30,30,30,30,30,30,30,60,60,60,60,30,3

9、0,30,30,30,30/東西各時(shí)間段綠燈亮總時(shí)間unsigned char sn_total_time24 = 1,1,1,1,1,30,30,60,60,60,60,60,30,30,30,30,30,30,30,30,30,30/南北各時(shí)間段綠燈亮總時(shí)間LED_INTI();EW_RED();SN_RED();while(1)if(counter = 0)hour = GET_HOUR();counter = 3600;switch(hour)case 5:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_R

10、ED();break;case 7:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 12:ew_time = 60;sn_time = 63;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;case 18:ew_time = 30;sn_time = 33;ew_sign = 1;sn_sign = 0;EW_GREEN();SN_RED();break;default:break;if(ew_time = 0)switch(ew

11、_sign)case 0:ew_sign = 1;ew_time = ew_total_timehour;EW_GREEN();break;case 1:ew_sign = 2;ew_time = 3;EW_YELLOW();break;case 2:ew_sign = 0;ew_time = sn_total_timehour + 3;EW_RED();break;if(sn_time = 0)switch(sn_sign)case 0:sn_sign = 1;sn_time = sn_total_timehour;SN_GREEN();break;case 1:sn_sign = 2;sn

12、_time = 3;SN_YELLOW();break;case 2:sn_sign = 0;sn_time = ew_total_timehour + 3;SN_RED();break;LED_WRITE(ew_time/10,EW_H);LED_WRITE(ew_time%10,EW_L);LED_WRITE(sn_time/10,SN_H);LED_WRITE(sn_time%10,SN_L);/main函數(shù)到此結(jié)束,以下是所用到函數(shù)的定義/*所用函數(shù)的定義*/ void LED_INIT()LED = 0x00;EW_weixuan_H = 1;EW_weixuan_L = 1;SN_

13、weixuan_H = 1;SN_weixuan_L = 1;void LED_WRITE(int dat,int con)EW_weixuan_H = 0;EW_weixuan_L = 0;SN_weixuan_H = 0;SN_weixuan_L = 0;if(dat < 10)LED = LED_CODEdat;switch(con)case EW_H:EW_weixuan_H = 1;break;case EW_L:EW_weixuan_L = 1;break;case SN_H:SN_weixuan_H = 1;break;case SN_L:SN_weixuan_L = 1;

14、break;void timer_int() interrupt 0EA = 0;counter-;switch(hour)case 0:case 1:case 2:case 3:case 4:EW_YELLOW();SN_YELLOW();EW_NONE();SN_NONE();break;default:ew_time-;sn_time-;if(ew_sign = 1 && ew_time <= 3 && ew_time > 0) EW_GREEN();EW_NONE();if(sn_sign = 1 && sn_time <

15、;= 3 && sn_time > 0)SN_GREEN();SN_NONE();break;EA = 1;/* 延遲函數(shù)定義*/ void DELAY2()_nop_();_nop_();/延遲2usvoid DELAY4()DELAY2();DELAY2();/延遲4usvoid DELAY8()DELAY4();DELAY4();/延遲8us/void IIC_WRITE( unsigned char dat)unsigned char temp;for(temp = 0; temp < 8; temp+) SCL=0; if(dat << tem

16、p) & 0x80) SDA=1; else SDA=0; DELAY2(); SCL=1;DELAY4(); SCL=0;DELAY4();SDA = 1;DELAY2();SCL = 1;DELAY4();SCL = 0;unsigned char GET_HOUR()/START hour = 0;unsigned char temp;SDA = 1;SCL = 1;DELAY8();SDA = 0;DELAY8();/WRITEIIC_WRITE(0XD0);/HOURADDRESSIIC_WRITE(0X02);/RESTARTSDA = 1;SCL = 1;DELAY8()

17、;SDA = 0;DELAY8();/READIIC_WRITE(0XD1);/READHOUR SDA = 1;for(temp = 0; temp < 8; temp+) hour = hour << 1; SCL=1; DELAY2(); if(SDA = 1) hour+; SCL=0; /SENDNOACKSDA = 1;SCL = 1;DELAY4();SCL = 0;/STOPSDA = 0;SCL = 1;DELAY8();SDA = 1;DELAY4();SCL = 0;return hour;四、心得體會(huì) 通過(guò)這次的實(shí)驗(yàn)設(shè)計(jì),我深入了對(duì)單片機(jī)的了解,也明白了日常生活中處處有自動(dòng)控制的例子,其中不乏有各種系列的單片機(jī),同時(shí)我也認(rèn)識(shí)到對(duì)單片機(jī)的學(xué)習(xí)應(yīng)該更加深入才能得心應(yīng)手,雖然只是一個(gè)芯片而已

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論