基于單片機(jī)的交通燈課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機(jī)原理及接口技術(shù)</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p><b>  基于單片機(jī)的交通燈</b></p><p><b>  目 錄</b></p><p>  第一章 概述- 2 -</p><p>

2、;  1.1 設(shè)計(jì)背景- 2 -</p><p>  第二章 系統(tǒng)總體方案及硬件設(shè)計(jì)- 4 -</p><p>  2.1 AT89S52單片機(jī)簡介- 4 -</p><p>  2.2 系統(tǒng)硬件電路的設(shè)計(jì)-4 -</p><p>  第三章 軟件設(shè)計(jì)-7 -</p><p>  3.1 交通燈的設(shè)計(jì)程序流程

3、圖- 7 -</p><p>  第四章 Proteus軟件仿真- 8 -</p><p>  4.1 仿真圖- 8 -</p><p>  4.2 仿真步驟- 9 -</p><p>  第五章 課程設(shè)計(jì)體會- 11-</p><p><b>  第一章 概述</b></p>

4、;<p><b>  1.1 設(shè)計(jì)背景</b></p><p>  如今隨著人們生活水平的提高,車輛越來越多,交通事故頻繁發(fā)生。交通信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量,提高道路通行能力,減少交通事故有明顯效果。交通燈在城市交通中起著重要的作用,它與人們?nèi)粘I蠲芮邢嚓P(guān),是人們出行的安全保障。因此提供一個可靠、安全、便捷的多功能交通燈控制系統(tǒng)有著現(xiàn)實(shí)的必要性。為了

5、解決這些問題,我們更應(yīng)該提高交通控制和管理水平,合理使用現(xiàn)有交通設(shè)施,充分發(fā)揮其能力,提高交通效率,促進(jìn)和諧交通的建立。</p><p>  近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動傳統(tǒng)控制檢測日新月益更新。在實(shí)時(shí)檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個核心部件來使用,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,加以完善。</p

6、><p>  本系統(tǒng)設(shè)計(jì)一個基于單片機(jī)的交通燈控制系統(tǒng)。能方便的對交通燈進(jìn)行控制,使交通更和諧。</p><p><b>  1.2設(shè)計(jì)任務(wù) </b></p><p>  1)設(shè)計(jì)一個十字路口的交通燈控制電路,要求南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運(yùn)行,主干道每次通行時(shí)間都設(shè)為30秒、支干道每次通行間為20秒,時(shí)

7、間可設(shè)置修改。</p><p>  2)在綠燈轉(zhuǎn)為紅燈時(shí),要求黃燈先亮5秒鐘,才能變換運(yùn)行車道;</p><p>  3)黃燈亮?xí)r,要求每秒閃亮一次。</p><p>  4)東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時(shí)間都用顯示器進(jìn)行顯示(采用計(jì)時(shí)的方法)。</p><p>  5)一道有車而另一道無車(實(shí)驗(yàn)時(shí)用開關(guān) K0

8、 和 K1 控制),交通燈控制系統(tǒng)能立即讓有車道放行。 </p><p>  6)有緊急車輛要求通過時(shí),系統(tǒng)要能禁止普通車輛通行,A、B道均為紅燈,緊急車由K2 開關(guān)模擬。</p><p>  系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p>  2.1 AT89S52單片機(jī)簡介</p><p>  AT89S52是一種低功耗、高性能CMOS8位微控制

9、器。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個數(shù)據(jù)指針,三個16位定時(shí)器/計(jì)數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。空閑模式下,CPU停止工作,允許RAM、定時(shí)器

10、/計(jì)數(shù)器、串口、中斷繼續(xù)工作。鑒于以上的優(yōu)點(diǎn)本系統(tǒng)采用AT89S52作為主控芯片,實(shí)現(xiàn)對整個系統(tǒng)的控制。</p><p>  2.2 系統(tǒng)硬件電路的設(shè)計(jì)</p><p><b>  (1)時(shí)鐘電路設(shè)計(jì)</b></p><p>  圖2-1時(shí)鐘電路原理圖</p><p>  如圖2-1所示,采用內(nèi)部時(shí)鐘產(chǎn)生方式,在XTAL

11、1和XTAL2兩端跨接晶體或陶瓷振蕩器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自擊蕩器。其發(fā)出的時(shí)鐘脈沖直接送入片內(nèi)定時(shí)控制部件。</p><p><b> ?。?)復(fù)位電路設(shè)計(jì)</b></p><p>  圖2-2上電+按鈕電平復(fù)位電路原理圖</p><p>  如圖2-2所示,采用上電+按鈕電平復(fù)位方式,當(dāng)按下按鈕時(shí),RST管腳高電平觸發(fā)。為保證復(fù)位可靠,

12、RC時(shí)間常數(shù)應(yīng)大于兩個機(jī)器周期,一般電容去22uF,電阻取1K。</p><p> ?。?)燈控制電路設(shè)計(jì)</p><p>  圖2-3交通燈狀態(tài)顯示電路</p><p>  如圖2-3所示,交通燈狀態(tài)顯示電路由東西南北四個方向各三個LED燈組成,分別顯示四個方向上紅、黃、綠三個狀態(tài),用以指示十字路口各方向車輛的行駛。通過軟件編程,可使路口交通變化情況為:南北方向(

13、主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運(yùn)行,主干道每次通行時(shí)間都設(shè)為30秒、支干道每次通行間為20秒;在綠燈轉(zhuǎn)為紅燈時(shí),要求黃燈先亮5秒鐘,才能變換運(yùn)行車道;黃燈亮?xí)r每秒閃亮一次。</p><p> ?。?)倒計(jì)時(shí)顯示電路設(shè)計(jì)</p><p>  圖2-4 數(shù)碼管顯示電路原理圖</p><p>  如圖2-4所示,由一個共陽極四位數(shù)碼管來實(shí)現(xiàn)倒

14、計(jì)時(shí)。由于P0口輸出電流小,需外接上拉電阻,COME端接5V電源。</p><p> ?。?)按鍵控制電路設(shè)計(jì)</p><p>  圖2-5鍵盤電路原理圖</p><p>  如圖2-5所示,開光控制由PD1-PD5四個連接到單片機(jī)的控制按鈕組成。通過軟件編程,按下PD1電路進(jìn)入外部中斷響應(yīng),數(shù)碼顯示時(shí)間將停止倒計(jì)時(shí),此時(shí),可通過按鈕PD3和PD4設(shè)置通行時(shí)間,每按

15、一下PD3時(shí)間增加1s,而按下PD4時(shí)間減少1s。按下PD5將使程序重新進(jìn)入循環(huán)點(diǎn)亮狀態(tài)。</p><p><b>  軟件設(shè)計(jì)</b></p><p>  3.1 交通燈的設(shè)計(jì)程序流程圖</p><p>  Proteus軟件仿真</p><p><b>  4.1 仿真圖</b></p&

16、gt;<p><b>  4.2 仿真步驟</b></p><p> ?。?)根據(jù)電路圖選擇器件連接電路</p><p> ?。?)雙擊AT89S52裝入源程序編譯生成的HEX文件</p><p> ?。?)單擊運(yùn)行按鈕運(yùn)行仿真</p><p>  (4)根據(jù)仿真情況與程序?qū)崿F(xiàn)任務(wù)對比,對于不能實(shí)現(xiàn)的任務(wù)修

17、改并調(diào)試程序,重新裝載重新運(yùn)行調(diào)試仿真,直到能完全實(shí)現(xiàn)所要求的功能為止</p><p>  (5)進(jìn)一步改進(jìn)和簡化程序在進(jìn)行調(diào)試仿真</p><p><b>  課程設(shè)計(jì)體會</b></p><p>  通過這次單片機(jī)實(shí)訓(xùn)課程學(xué)習(xí),才深刻體會到自己實(shí)際操作能力的匱乏。從剛開始老師對單片機(jī)的整體介紹及其應(yīng)用前景,對單片機(jī)產(chǎn)生了濃厚的興趣,并利用自

18、己的課余時(shí)間提前學(xué)習(xí)有關(guān)單片機(jī)的基本知識。但空有理路知識,卻無半點(diǎn)的實(shí)際操作經(jīng)驗(yàn)。后來在老師的建議下,選擇運(yùn)用單片機(jī)設(shè)計(jì)一個交通燈控制系統(tǒng),從簡單開始,后期逐步復(fù)雜化。</p><p>  從給定電路圖的分析到實(shí)際電路元件的識別、焊接,再到后期的程序設(shè)計(jì)以及系統(tǒng)調(diào)試,初步掌握了運(yùn)用單片機(jī)系統(tǒng)設(shè)計(jì)特定功能的設(shè)計(jì)步驟,也對單片機(jī)有了更深的體會。了解和掌握了一些簡單的編程思想,對單片機(jī)各管腳的功能,I/O口的使用條件都

19、有了更深的理解。這次的課程設(shè)計(jì)讓我把單片機(jī)的理論知識運(yùn)用的實(shí)踐中,實(shí)現(xiàn)了理論與實(shí)踐的相結(jié)合,從中更懂得了理論是實(shí)踐的基礎(chǔ),實(shí)踐更能檢驗(yàn)理論的真實(shí)性,讓我受益匪淺。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 李朝青.單片機(jī)原理及接口技術(shù)(修訂版).北京:北京航空航天大學(xué)出版社,1998[2] 李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出

20、版社,1992[3] 何立民.單片機(jī)應(yīng)用技術(shù)大全.北京:北京航空航天大學(xué)出版社, 1994[4] 張毅剛. 單片機(jī)原理及接口技術(shù).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990[5] 譚浩強(qiáng).單片機(jī)課程設(shè)計(jì). 北京:清華大學(xué)出版社,1989</p><p>  [6] 余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù) 焦作:中國礦業(yè)大學(xué)出版社,2007</p><p><b>  附錄1 源程序代碼&

21、lt;/b></p><p>  //#include<REG51.H> </p><p>  #include<AT89X51.H> // 對單片機(jī)的口進(jìn)行了定義</p><p>  #define uint unsigned int</p><p>  #define uchar unsigne

22、d char</p><p>  uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼組合,共陰極</p><p>  uchar code b[4]={0xfe,0xfd,0xfb,0xf7}; //位碼組合 低有效</p><p>  uchar code c[4]

23、={0xcc,0xd4,0x78,0xb8};/*P1 綠紅、黃紅、紅綠、紅黃*/ </p><p>  //12MHz </p><p>  //*************************************************************************************</p><p>  uchar NB=2

24、5,DX=30,NBG=25,DXG=15,H=5; /*數(shù)碼管顯示值設(shè)置*/</p><p>  uchar i,k=0,cnt=0,j=0; </p><p>  sbit K0=P3^5; /*支干道通行*/</p><p>  sbit K1=P3^6; /*主干道通行*/</p><p>  sbit K

25、4=P3^7; /*返回*/</p><p>  sbit K3=P3^2;/*設(shè)置時(shí)間*/</p><p>  sbit K2=P3^3;/*緊急剎車*/</p><p>  void delay(uchar t);/*定義延時(shí)程序*/</p><p>  void key();/*定義鍵盤程序*/<

26、/p><p>  void display();/*定義顯示程序*/</p><p>  void settime();/*定義時(shí)間設(shè)置顯示程序*/</p><p>  //*************************程序初始*********************************************</p><p>

27、;  void init(void)</p><p><b>  {</b></p><p>  TMOD=0x01; /*使用定時(shí)器0模式一*/</p><p>  TH0=0x3c; /*(65536-5000)/256*/</p><p>  TL0=0xb0; /*(65536-5000)

28、%256*/</p><p>  IT0=1; //開中斷</p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  EA=1;</b></p><p><b> 

29、 EX0=1;</b></p><p><b>  EX1=1;</b></p><p>  P1=c[k]; //開啟交通燈</p><p><b>  }</b></p><p>  //*************************中斷0處理程序***********

30、****************************</p><p>  void int0(void) interrupt 0 //通行時(shí)間設(shè)置</p><p><b>  { </b></p><p><b>  EA=0;</b></p><p>  P1=0xd8;/*紅

31、燈全亮*/</p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  settime();</p><p>  if(K1==0) /*P3^6=0設(shè)置主干道通行時(shí)間*/</p><p><b>  

32、{ </b></p><p>  delay(40);</p><p><b>  if(K1==0)</b></p><p><b>  {</b></p><p>  while(!K1)</p><p><b>  { </b><

33、;/p><p>  settime();</p><p><b>  }</b></p><p>  NBG++;/*主干道通行時(shí)間加1*/</p><p>  if(NBG==100)</p><p><b>  NBG=0;</b></p><

34、;p><b>  }</b></p><p><b>  }</b></p><p>  if(K0==0) /*P3^5=0設(shè)置支干道通行時(shí)間*/</p><p><b>  { </b></p><p>  delay(40);</p>&l

35、t;p><b>  if(K0==0)</b></p><p><b>  {</b></p><p>  while(!K0)</p><p><b>  {</b></p><p>  settime();</p><p><b> 

36、 }</b></p><p>  DXG++;/*支干道通行時(shí)間加1*/</p><p>  if(DXG==100)</p><p><b>  DXG=0;</b></p><p><b>  }</b></p><p><b>  

37、}</b></p><p>  if(K4==0) /*P3^7=0返回*/ </p><p><b>  { </b></p><p>  delay(40);</p><p><b>  if(K4==0)</b></p><p><

38、;b>  {</b></p><p>  while(!K4)</p><p><b>  {</b></p><p><b>  }</b></p><p>  k=0;P1=c[k];</p><p>  NB=NBG,DX=NBG+H;</p&

39、gt;<p>  display(); </p><p><b>  EA=1;</b></p><p><b>  break;</b></p><p>  } </p><p><b>  }</b></p><

40、;p><b>  }</b></p><p><b>  }</b></p><p>  /***********************************中斷1處理程序********************</p><p>  void int1(void) interrupt 2 //緊急情況&

41、lt;/p><p>  { </p><p>  /*東西南北紅燈亮*/</p><p>  EA=0;</p><p>  TR0=!TR0; /*停止計(jì)數(shù)*/</p><p>  for(;;) /*主支干道顯示全為0*/</p&

42、gt;<p>  { P1=0xd8,P0=a[0];</p><p><b>  P2=0xfe;</b></p><p>  delay(20);</p><p><b>  P2=0xfd;</b></p><p>  delay(20);</p><p>

43、;<b>  P2=0xfb;</b></p><p>  delay(20);</p><p><b>  P2=0xf7;</b></p><p>  delay(20);</p><p>  if(K4==0) /*返回*/</p><p><b&

44、gt;  { </b></p><p>  delay(20);</p><p><b>  EA=1;</b></p><p>  P1=c[k]; /*返回緊急前狀態(tài)開始計(jì)數(shù)*/</p><p>  TR0=!TR0;/*重啟計(jì)數(shù)*/</p><p>  b

45、reak; </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void time1(void) interrupt 1/*交通燈控制程序*/</p&g

46、t;<p><b>  {</b></p><p>  TH0=0x3c;/*定時(shí)50ms*/</p><p>  TL0=0xb0; </p><p><b>  cnt++;</b></p><p>  if(cnt>=20)

47、 /*每20*50ms=1s自減一*/</p><p><b>  {</b></p><p><b>  NB--;</b></p><p><b>  DX--;</b></p><p><b>  cnt=0;</b></p>

48、;<p>  if(NB==0||DX==0)</p><p><b>  {</b></p><p><b>  k++;</b></p><p>  if(k>3)/*k取0,1,2,3*/</p><p><b>  k=0;</b>

49、</p><p><b>  switch(k)</b></p><p><b>  {</b></p><p>  case 0:NB=NBG,DX=NBG+H;j=0;P1=c[k];break; /*主干道通行顯示綠紅*/</p><p>  case 1:NB=H;j=1;P1=c[k]

50、;break; /*主干道黃燈閃爍*/</p><p>  case 2:NB=DXG+H,DX=DXG;j=0;P1=c[k];break; /*支干道通行顯示紅綠*/</p><p>  case 3:DX=H;j=2;P1=c[k];break; /*支干道黃燈閃爍*/</p><p><b>  }</b></

51、p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void delay(uchar t) //延時(shí)程序延時(shí)0.1*nms </p><p><b&g

52、t;  { </b></p><p><b>  uchar i; </b></p><p><b>  do </b></p><p><b>  { </b></p><p>  for(i=0;i<20;i++) </p><p>

53、;<b>  ;;; </b></p><p>  } while(t--); </p><p><b>  } </b></p><p>  void settime()</p><p><b>  {</b></p><p>  P2=0xfe,P0

54、=a[(NBG+H)%10];/*顯示主干道通行時(shí)間 */</p><p>  delay(20); </p><p>  P2=0xfd,P0=a[(NBG+H)/10];</p><p>  delay(20); </p><p>  P2=0xfb,P0=a[(DXG+H)%10];/*顯示支干道通行時(shí)間*/</p>

55、;<p>  delay(20); </p><p>  P2=0xf7,P0=a[(DXG+H)/10];</p><p>  delay(20);</p><p><b>  }</b></p><p>  void key()//鍵盤程序用KO K1模擬一道有車一道無車</p>

56、<p><b>  {</b></p><p>  if(K1==0) /*主干道有車支干道無車*/</p><p><b>  { </b></p><p>  delay(40);</p><p>  if(K1==0) </p><p&g

57、t;<b>  { </b></p><p>  while(!K1)</p><p><b>  { </b></p><p>  display();</p><p><b>  }</b></p><p>  k=0,P1=c[k];cnt=0;

58、</p><p>  NB=NBG, DX=NBG+H;</p><p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(K0==0) /*支干道有車主干道無車*/</p

59、><p><b>  { </b></p><p>  delay(40);</p><p><b>  if(K0==0)</b></p><p><b>  {</b></p><p>  while(!K0)</p><p>

60、<b>  {</b></p><p>  display(); </p><p><b>  }</b></p><p>  k=2,P1=c[k];cnt=0;</p><p>  NB=DXG+H,DX=DXG;</p><p>  display(); </p&

61、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void display()//顯示程序</p><p><b>  {</b></

62、p><p>  P2=0xfe,P0=a[NB%10]; /*由k的不同值進(jìn)入確定顯示數(shù)值*/</p><p>  delay(20);</p><p>  P2=0xfd,P0=a[NB/10];</p><p>  delay(20);</p><p>  P2=0xfb,P0=a[DX%10];</p&g

63、t;<p>  delay(20);</p><p>  P2=0xf7,P0=a[DX/10];</p><p>  delay(20);</p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {//主

64、程序</b></p><p><b>  init();</b></p><p><b>  for(;;)</b></p><p><b>  {</b></p><p>  display();</p><p><b>  ke

65、y();</b></p><p><b>  //黃燈閃爍程序</b></p><p>  while(j==1)/*主干道黃燈閃爍*/</p><p>  {</p><p>  P1=0xdc;/*給黃燈一高電平黃燈滅*/ </p>

66、;<p>  for(i=83;i>0;i--){display();}/*執(zhí)行for循環(huán)延時(shí)*/</p><p>  P1=c[k];/*再給黃燈一低電平黃燈亮*/</p><p>  for(i=83;i>0;i--){display();}</p><p><b>  }</b><

67、/p><p>  while(j==2)</p><p>  { /*支干道黃燈閃爍*/</p><p><b>  P1=0xf8;</b></p><p>  for(i=83;i>0;i--){display();}</p><p><b>  P1=c[k]

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

評論

0/150

提交評論