單片機(jī)原理及系統(tǒng)設(shè)計課程設(shè)計--基于at89c51單片機(jī)的交通燈設(shè)計_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)原理及系統(tǒng)課程設(shè)計</p><p>  專 業(yè):電氣工程及其自動化</p><p>  班 級: 電氣1002班 </p><p>  姓 名: </p><p>  學(xué) 號: </p><p>  指導(dǎo)教師:

2、 </p><p>  2013 年 3 月 15 日</p><p>  基于AT89C51單片機(jī)的交通燈設(shè)計</p><p>  摘要:交通燈控制的方式很多,本系統(tǒng)采用MCS-51系列單片機(jī)AT8951為中心器件來設(shè)計交通控制器,實現(xiàn)了通過8051芯片設(shè)置紅,綠,黃燈點亮?xí)r間的功能;倒計時剩4秒黃燈閃爍警示。本系統(tǒng)設(shè)計周期短,可靠性高,實用性強(qiáng),操作簡

3、單,維護(hù)方便,擴(kuò)展功能強(qiáng),設(shè)計過程及程序通俗易懂。</p><p>  ABSTRACT:Traffic lights to control the way a lot of the MCS-51 series microcontroller AT8951-centric devices to design traffic controller, the 8051 set of red, green, yello

4、w kindle a function of time; countdown 4 seconds left flashing yellow light alerts. The system design cycle is short, high reliability, practicality, simple operation, easy maintenance, extended functionality, design pro

5、cess and procedures easy to understand.</p><p><b>  1 引言</b></p><p>  十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊靠的是交通信號燈的自動指揮系統(tǒng)。交通燈必須穩(wěn)定有規(guī) 律的連續(xù)運作,不能出現(xiàn)突然停機(jī)或是無規(guī)律的運作。用51單片機(jī)設(shè)計的交通燈可以穩(wěn)定連續(xù)運作而不出現(xiàn)突發(fā)情況,保證了交通

6、控制系統(tǒng)的正常運作。</p><p><b>  2 設(shè)計方案及原理</b></p><p>  采用AT89C51單片機(jī)作為核心控制器,其片內(nèi)程序存儲器4K、數(shù)據(jù)存儲器256B,不需擴(kuò)展存儲器。 用8155芯片擴(kuò)展I/O接口,使得編程容易,系統(tǒng)的控制更簡單可靠。整體設(shè)計框圖如圖1所示。</p><p><b>  圖1原理框圖<

7、;/b></p><p>  系統(tǒng)開始運行先南北段通行、東西段禁止30秒,然后東西段通行、南北段禁止30秒,依此循環(huán)。開機(jī)后數(shù)碼管顯示“30”。此時南北段通行(綠燈)、東西段禁止(紅燈),同時數(shù)碼管從30秒開始倒計時,至最后5秒南北段黃燈開始閃爍;計時結(jié)束,東西段通行,南北段禁止,如此循環(huán)。</p><p><b>  3 硬件設(shè)計</b></p>

8、<p>  控制系統(tǒng)整體電路設(shè)計如圖2所示。</p><p>  圖2控制系統(tǒng)電路圖 </p><p>  采用8155芯片作為I/O口的擴(kuò)展,其口地址為COM(0X7FF8),PA(0X7FF9),PB(</p><p>  0X7FFA),PC(0X7FFB), 其接口電路如圖3所示。 </p><p>  圖3 采用815

9、5芯片作為接口電路圖</p><p>  由于AT89C51內(nèi)部沒有時鐘發(fā)生器,需外接晶振。外部時鐘與復(fù)位電路如圖4所示。</p><p>  圖4 時鐘與復(fù)位電路</p><p>  十字路口交通信號燈和時間顯示的電路圖如圖5所示。</p><p>  圖5 十字路口交通信號燈和時間顯示的電路圖</p><p>  

10、信號燈與51單片機(jī)接線關(guān)系如表1所示。</p><p><b>  表1信號燈接線說明</b></p><p><b>  4 軟件設(shè)計</b></p><p>  采用C語言編程實現(xiàn),具體的系統(tǒng)軟件設(shè)計流程圖如圖6所示,其中Direction 為初始條件,Count為計時時間。</p><p> 

11、 圖6 程序設(shè)計流程圖</p><p><b>  程序代碼見附錄B。</b></p><p><b>  5 系統(tǒng)仿真與調(diào)試</b></p><p>  通過proteus和keil c的聯(lián)調(diào)仿真驗證了該設(shè)計的目的,下面為不同狀態(tài)下的實時仿真顯示圖形。</p><p>  當(dāng)南北方向允許機(jī)動車輛通

12、行,東西方向禁止機(jī)動車輛通行時的仿真顯示圖形如附錄A圖1所示。</p><p>  當(dāng)南北方向允許通行由30秒倒計時到5秒時,南北方向黃燈亮,綠燈閃爍,這樣可以使已經(jīng)進(jìn)入十字路口的機(jī)動車輛繼續(xù)由南北方向通行。實時仿真圖如附錄A圖2所示。</p><p>  當(dāng)30秒倒計時結(jié)束時進(jìn)入下一個30秒倒計時,即當(dāng)南北方向禁止機(jī)動車輛通行,東西方向允許機(jī)動車輛通行時的仿真顯示圖形如附錄A圖3所示。&

13、lt;/p><p>  當(dāng)東西方向允許通行由30秒倒計時到5秒時,東西方向黃燈亮,綠燈閃爍,這樣可以使已經(jīng)進(jìn)入十字路口的機(jī)動車輛繼續(xù)由東西方向通行。實時仿真圖如附錄A圖4所示。</p><p><b>  6 總結(jié)</b></p><p>  本設(shè)計能夠?qū)崿F(xiàn)對十字路口人車通行的指示,提高通行質(zhì)量,主要適用于通流量較小的十字路口,適合普通通行方式的十

14、字路口。對于一些復(fù)雜的通流量大的十字路口效果就差了,它對于轉(zhuǎn)彎沒有指示,需要改進(jìn)的是,在各個方向加上一個指示轉(zhuǎn)彎的指示燈。再通過程序?qū)崿F(xiàn)對定時的改變,便可使此交通燈系統(tǒng)實現(xiàn)全方位的指示。由于時間有限,在此就不做此項擴(kuò)展。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 王思明,李華.單片機(jī)原理及應(yīng)用.蘭州:蘭州大學(xué)出版社[M],2001&l

15、t;/p><p>  [2] 杜樹春.基于Proteus和KeilC51的單片機(jī)設(shè)計與仿真.北京:電子工業(yè)出版社[M],2012</p><p><b>  附錄A 系統(tǒng)仿真</b></p><p>  圖1 南北方向允許通行,東西方向禁止通行的仿真圖</p><p>  圖2 南北方向允許通行進(jìn)入5秒倒計時的實時仿真圖

16、</p><p>  圖3南北方向禁止通行,東西方向允許通行的仿真圖</p><p>  圖4 東西方向允許通行進(jìn)入5秒倒計時的實時仿真圖</p><p>  附錄B 軟件設(shè)計源程序</p><p>  /***********************89c51、8155交通燈設(shè)計************************/</

17、p><p>  #include<reg52.h></p><p>  #include<absacc.h></p><p>  /***************************定義系統(tǒng)變量*****************************/</p><p>  #define uint unsigned

18、int</p><p>  #define uchar unsigned char</p><p>  #define COM XBYTE[0X7FF8] //8155的命令口</p><p>  #define PA XBYTE[0X7FF9] //8155的PA</p><p>  #define PB XBYTE[

19、0X7FFA] //8155的PB</p><p>  #define PC XBYTE[0X7FFB] //8155的PC</p><p>  sbit dxred = P1 ^ 0;</p><p>  sbit dxyellow = P1 ^ 1;</p><p>  sbit dxgreen = P1 ^ 2;

20、</p><p>  sbit nbred = P1 ^ 3;</p><p>  sbit nbyellow = P1 ^ 4;</p><p>  sbit nbgreen = P1 ^ 5;</p><p>  uchar code du_code[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D

21、, 0x7D, 0x07, 0x7F, 0x6F}; //8段共陰極數(shù)碼管顯示碼值</p><p>  uchar dis_buf[] = {0x3F, 0x06}; //xx</p><p>  uchar code bit_code[] = {0xfe, 0xfd}; //數(shù)碼管顯示的位值</p><p>  bit direction = 0,

22、hl = 0;</p><p>  uchar num = 0, den = 0, count = 0, count1 = 0;</p><p>  /****************************初始化程序******************************/</p><p>  void initial()</p><p&g

23、t;<b>  {</b></p><p>  TMOD = 0x11; //定義定時器的工作方式</p><p>  TH0 = (65536 - 50000) / 256;</p><p>  TL0 = (65536 - 50000) % 256; //給T0裝初值</p><p>  TH1 = (

24、65536 - 100) / 256;</p><p>  TL1 = (65536 - 100) % 256; //給T1裝初值</p><p>  ET0 = 1; //開T0的中斷</p><p>  ET1 = 1; //開T1的中斷</p><p>  EA = 1; //開總中斷</p

25、><p>  TR0 = 1; //關(guān)閉T0</p><p>  TR1 = 1; //開T0</p><p>  COM = 0x03; //定義8155的工作方式,PA和PB為輸出</p><p><b>  }</b></p><p>  /**********

26、*********************主程序*******************************/</p><p>  void main()</p><p><b>  { </b></p><p>  uchar display=0;</p><p>  initial();</p>

27、<p><b>  while(1)</b></p><p><b>  {</b></p><p>  display=30-count;</p><p>  dis_buf[0] = du_code[(display)/10];</p><p>  dis_buf[1] = du_co

28、de[(display)%10];</p><p>  if(direction == 1)</p><p><b>  {</b></p><p>  dxred = 0;</p><p>  nbred = 1;</p><p>  if(count <= 25)</p>

29、<p><b>  {</b></p><p>  dxgreen = 1;</p><p>  nbgreen = 0;</p><p>  dxyellow = 0;</p><p>  nbyellow = 0;</p><p><b>  }</b><

30、/p><p>  else if(count <= 28)</p><p><b>  {</b></p><p>  nbgreen = 0;</p><p>  dxyellow = 1;</p><p>  nbyellow = 0;</p><p>  if(hl

31、 == 1)</p><p>  dxgreen = 1;</p><p><b>  else</b></p><p>  dxgreen = 0;</p><p><b>  }</b></p><p>  else if(count <= 30)</p>

32、;<p><b>  {</b></p><p>  dxyellow = 1;</p><p>  nbyellow = 0;</p><p>  dxgreen = 0;</p><p>  nbgreen = 0;</p><p><b>  }</b>&

33、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  nbred = 0;</p><p>  dxred = 1;</p><p>  

34、if(count <= 25)</p><p><b>  {</b></p><p>  nbgreen = 1;</p><p>  dxgreen = 0;</p><p>  nbyellow = 0;</p><p>  dxyellow = 0;</p><p

35、><b>  }</b></p><p>  else if(count <= 28)</p><p><b>  {</b></p><p>  dxgreen = 0;</p><p>  nbyellow = 1;</p><p>  dxyellow =

36、0;</p><p>  if(hl == 1)</p><p>  nbgreen = 1;</p><p><b>  else</b></p><p>  nbgreen = 0;</p><p><b>  }</b></p><p>  el

37、se if(count <= 30)</p><p><b>  {</b></p><p>  nbyellow = 1;</p><p>  dxyellow = 0;</p><p>  nbgreen = 0;</p><p>  dxgreen = 0;</p>&l

38、t;p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************************T0 中斷程序 **

39、*************************/</p><p>  void timer0() interrupt 1</p><p><b>  {</b></p><p>  TH0 = (65536 - 50000) / 256;</p><p>  TL0 = (65536 - 50000) % 256;

40、 //給T1裝初值</p><p><b>  num++;</b></p><p><b>  den++;</b></p><p>  if(num == 20) //判斷1s時間是否到</p><p><b>  {</b></p><

41、;p>  num = 0;</p><p>  count++;</p><p><b>  }</b></p><p>  if(den == 10) //0.5s的閃動</p><p><b>  {</b></p><p&

42、gt;  den = 0;</p><p>  hl = ~hl;;</p><p><b>  }</b></p><p>  if(count >= 31)</p><p><b>  {</b></p><p>  direction =

43、~direction; //東西切換</p><p>  count = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /****************************T1中斷程序*****************

44、************/</p><p>  /***********************將要顯示數(shù)據(jù)發(fā)至8155************************/</p><p>  void timer1() interrupt 3</p><p><b>  {</b></p><p>  TH1 = (65

45、536 - 300) / 256;</p><p>  TL1 = (65536 - 300) % 256;</p><p>  PB = bit_code[count1];</p><p>  PA = dis_buf[count1];</p><p>  count1++;</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論