2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  物理與信息工程學(xué)院</b></p><p><b>  單片機(jī)</b></p><p><b>  課</b></p><p><b>  程</b></p><p><b>  設(shè)</b></p&

2、gt;<p><b>  計</b></p><p>  題 目:基于51單片機(jī)的交通燈</p><p>  學(xué) 院:物理與信息工程學(xué)院</p><p>  專 業(yè):自動化</p><p><b>  目錄</b></p><p>  概述--

3、----------------------------------------------3</p><p>  系統(tǒng)各部分硬件的設(shè)計------------------------4</p><p>  總的硬件設(shè)計流程---------------------------4</p><p>  各硬件部分的電路設(shè)計---------------------5&

4、lt;/p><p>  軟件的分塊流程圖及程序編寫---------------7</p><p>  軟件仿真圖---------------------------------------15</p><p>  5、心得體會-----------------------------------------16</p><p><b&g

5、t;  1、概述</b></p><p>  背景:交通的發(fā)達(dá),標(biāo)志著城市的發(fā)達(dá),相對交通的管理則顯得越來越重要。對于復(fù)雜的城市交通系統(tǒng),為了確保安全,保證正常的交通秩序,十字路口的信號控制必需按照一定的規(guī)律變化,以便于車輛行人能順利地通過十字路口。正常情況下,十字路口的紅綠燈應(yīng)交替變換,考慮緊急情況下,如有救護(hù)車或警車到來時,應(yīng)優(yōu)先讓其通過。 </p><p>  交通燈在安

6、全行車過程中起著十分重要的作用, 現(xiàn)在交通燈一般設(shè)在十字路口, 在醒目位置用紅、綠、黃三種顏色的指示燈, 加上一個倒計時的顯示計時器來控制行車, 對于一般情況下的安全行車、車輛分流發(fā)揮著作用, 但根據(jù)實際行車過程中出現(xiàn)的情況, 主要有如下幾個缺點: 1兩車道讓車輪流放行時間相同且固定, 在十字路口, 經(jīng)常一個車道為主干道,車輛較多, 放行時間應(yīng)該長些; 另一車道為副干道, 車輛較少,放行時間短些。2 沒有考慮緊急車通過時, 兩車道應(yīng)采取

7、的措施, 譬如, 有消防車通過執(zhí)行緊急任務(wù)時, 兩車道的車都應(yīng)停止, 讓緊急車通過。根據(jù)行車過程中出現(xiàn)的實際情況, 如何全面有效地利用交通燈指示交通情況, 本人嘗試用單片機(jī)來控制交通燈, 在軟、硬件方面采取一些改進(jìn)措施, 使交通燈在控制中靈活而有效。</p><p><b>  實現(xiàn)的任務(wù):</b></p><p> ?、艈纹瑱C(jī)來實現(xiàn),根據(jù)設(shè)計要求,交通信號燈控制器的

8、外部輸出信號為主、副車道紅、黃、綠燈共12個驅(qū)動信號;編程使相應(yīng)位復(fù)/置位來實現(xiàn)信號燈的亮/滅控制,使得十字路口的紅、綠燈交替點亮;在燈色交換時,黃燈閃爍提醒。</p><p> ?、圃O(shè)計要求有緊急車輛通過時,十字路口均顯示紅燈??梢酝ㄟ^軟件中斷來完成緊急任務(wù),定義T0為計數(shù)中斷并為下降沿觸發(fā),編寫對應(yīng)中斷向量子程序和中斷服務(wù)程序,完成中斷處理。</p><p>  ⑶設(shè)計還對定時控制有所

9、要求。對于精確定時,應(yīng)該用計數(shù)器加以控制,硬件實現(xiàn)復(fù)雜度增加??紤]到該設(shè)計對時間精度要求不高,所以采用軟件定時可以大大簡化電路。先計算出程序單部執(zhí)行的時間,設(shè)置循環(huán)參數(shù),利用if語句按設(shè)計要求完成定時控制。</p><p>  (4)當(dāng)南北方向車輛較多,東西方向車倆較少時,通過開關(guān)來改變各方向的燈來調(diào)節(jié)。 </p>&l

10、t;p>  系統(tǒng)硬件的設(shè)計與流程</p><p> ?、啪д窈蛷?fù)位電路:單片機(jī)系統(tǒng)的必要組成部分,控制單片機(jī)的機(jī)器周期和功能復(fù)位通用的晶振電路</p><p>  單片機(jī)的晶振電路是一種典型電路,分為內(nèi)部時鐘方式和外部時鐘方式兩種。</p><p> ?、戚斎肟刂疲菏侵冈谝欢ㄒ笙拢扇『畏N形式的控制方式來實現(xiàn)單片機(jī)不同功能的轉(zhuǎn)換,以及控制指令以何種方式傳送到

11、單片機(jī)</p><p> ?、禽敵鲲@示:是指單片機(jī)將需要顯示的數(shù)據(jù)發(fā)送到LED、液晶等顯示模塊,并控制LED等顯示模塊按照一定的格式顯示的功能。</p><p> ?、韧鈬δ芷骷簡纹瑱C(jī)只是控制器件,對應(yīng)與一定的設(shè)計要求,需要加入特定功能的器件。單片機(jī)的最簡單系統(tǒng)是指單片機(jī)能正常工作所必須的外圍元件,主要由單片機(jī)、晶振電路和復(fù)位電路構(gòu)成。而輸入/輸出部分則通過單片機(jī)的I/O口實現(xiàn)。<

12、;/p><p>  開關(guān)用來實現(xiàn)特殊的功能,當(dāng)有救護(hù)車等出現(xiàn)時,按下開關(guān),所有燈變成紅燈,讓救護(hù)車通行。</p><p>  軟件的分塊流程與程序編寫</p><p><b>  編寫延時程序</b></p><p>  void delay0(uint z)</p><p><b>  

13、{</b></p><p><b>  uint i,j;</b></p><p>  for(i=0;i<z;i++)//z為1是1ms</p><p>  for(j=0;j<110;j++);</p><p><b>  }</b></p><

14、p>  /*********************************************************</p><p><b>  500ms延時函數(shù)</b></p><p>  晶振:11.0592MHz</p><p>  *********************************************

15、************/</p><p>  void delay(uchar y) </p><p><b>  {</b></p><p><b>  uchar k;</b></p><p><b>  uint i;</b></p><p> 

16、 for(;y>0;y--)</p><p><b>  {</b></p><p>  for(i=1250;i>0;i--) </p><p><b>  {</b></p><p>  for(k=180;k>0;k--);</p><p><b

17、>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  2、定時1ms的程序代碼</p><p>  當(dāng)單片機(jī)的晶振為12MHz時,計數(shù)值1代表的時間就是1us。</p><p>  計數(shù)器的容

18、量是16位,也就是最大的計數(shù)值達(dá)到65536,因此計數(shù)計到65536就會產(chǎn)生溢出。</p><p>  Void t0(void)interrupt 1 using 0</p><p><b>  {</b></p><p>  TH0=(65536-1000)/256; //設(shè)置定時器高8位初值</p><p> 

19、 TL0=(65536-1000)%256; //設(shè)置定時器低8位初值</p><p><b>  外部中斷</b></p><p>  void xint0() interrupt 0 //外部中斷INT0</p><p>  { GREEN_ZHU_ON();</p><p><b>  }&

20、lt;/b></p><p>  void xint1() interrupt 2 //外部中斷INT1</p><p>  { GREEN_ZHI_ON(); </p><p><b>  }</b></p><p>  void GREEN_ZHU_ON()//外部中斷INT0顯示子程序</p&g

21、t;<p><b>  {P1=0xdb;</b></p><p><b>  P3_0=0;</b></p><p><b>  P3_1=1;</b></p><p><b>  P3_4=1;</b></p><p><b>

22、  P3_7=0;</b></p><p>  delay0(10000);</p><p><b>  }</b></p><p>  void GREEN_ZHI_ON()//外部中斷INT1顯示子程序</p><p><b>  { P1_2=0;</b></p>

23、<p><b>  P3_0=0;</b></p><p><b>  P1_5=1;</b></p><p><b>  P3_7=1;</b></p><p><b>  P1_0=1;</b></p><p><b>  P1_6

24、=1;</b></p><p><b>  P1_3=0;</b></p><p><b>  P3_1=0;</b></p><p><b>  P1_1=1;</b></p><p><b>  P1_4=1;</b></p>

25、<p><b>  P3_4=1;</b></p><p><b>  P0=0xff;</b></p><p><b>  P2=0X00;</b></p><p>  delay0(1000);</p><p><b>  return;</b&

26、gt;</p><p><b>  }</b></p><p><b>  四、總的程序</b></p><p>  #include<reg51.h></p><p>  #include<intrins.h>//做移位的一個頭文件頭文件</p><p&

27、gt;  #define uchar unsigned char//宏定義</p><p>  #define uint unsigned int//宏定義</p><p>  sbit P1_0=P1^0;</p><p>  sbit P1_1=P1^1;</p><p>  sbit P1_2=P1^2;</p>

28、<p>  sbit P1_3=P1^3;</p><p>  sbit P1_4=P1^4;</p><p>  sbit P1_5=P1^5;</p><p>  sbit P1_6=P1^6;</p><p>  sbit P1_7=P1^7;</p><p>  sbit P3_0=P3^0;&l

29、t;/p><p>  sbit P3_1=P3^1;</p><p>  sbit P3_4=P3^4;</p><p>  sbit P3_7=P3^7;</p><p>  uint aa,a,b,c=10; </p><p>  /*數(shù)碼管顯示0-9*/</p><p>  uint code

30、 table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p><b>  /*子函數(shù)聲明*/</b></p><p>  void delay0(uint z);</p><p>  void display(uint a,uint b);</p>

31、<p>  void flag1();</p><p>  void flag2();</p><p>  void flag3();</p><p>  void flag4();</p><p>  void xint0();</p><p>  void xint1();</p>

32、<p>  void xtimer0();</p><p>  void GREEN_ZHU_ON();</p><p>  void GREEN_ZHI_ON();</p><p>  /*********************************************************/</p><p>

33、  void main()</p><p><b>  {</b></p><p>  EA=1;//開中斷</p><p>  EX0=1;//允許外部中斷INT0中斷</p><p>  IT0=0;//定義INT0觸發(fā)方式</p><p>  PX0=1;//中斷優(yōu)先級高</p&g

34、t;<p>  EX1=1;//允許外部中斷INT1中斷</p><p>  IT1=0;//定義INT1觸發(fā)方式</p><p>  PX1=1;//中斷優(yōu)先級高</p><p><b>  while(1)</b></p><p>  {flag1(); //東西方向綠燈亮,南北方向紅燈亮</p

35、><p>  flag2(); //東西方向黃燈亮,南北方向紅燈亮</p><p>  flag3(); //東西方向紅燈亮,南北方向綠燈亮</p><p>  flag4(); //東西方向紅燈閃爍,南北方向黃燈亮</p><p><b>  }</b></p><p><b>  }&l

36、t;/b></p><p>  void flag1()//東西方向綠燈亮,南北方向紅燈亮30s </p><p><b>  {</b></p><p><b>  int time;</b></p><p>  time=11;//變量賦初值</p><p>  

37、TMOD=0x01;//定時器T0工作于方式1</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;//定時50ms</p><p>  EA=1;//開中斷</p><p>  ET0=1;//開定時中斷</p><p>  TR0=1;/

38、/開定時器T0</p><p><b>  while(1)</b></p><p>  { P1=0x9e; //東西方向綠燈亮,南北方向紅燈亮30ms</p><p><b>  P3_0=1;</b></p><p><b>  P3_1=1;&

39、lt;/b></p><p><b>  P3_4=1;</b></p><p><b>  P3_7=0;</b></p><p>  if(aa==20)//定時20*50MS=1S</p><p><b>  {</b></p><p>  

40、aa=0;//定時完成一次后清0</p><p>  time--;//變量自減</p><p>  if(time==5)</p><p><b>  {</b></p><p>  break; //跳出整個循環(huán)</p><p><b>  }</b></p&g

41、t;<p>  b=time%100/10;//顯示十位</p><p>  a=time%10;//顯示個位 </p><p><b>  }</b></p><p>  display(a,b);</p><p><b>  }</b></p><p>

42、<b>  }</b></p><p>  void flag2()</p><p>  { int time;</p><p>  time=6;//變量賦初值</p><p>  TMOD=0x01;//定時器T0工作于方式1</p><p>  TH0=(65536-50000)/256;

43、</p><p>  TL0=(65536-50000)%256;//定時50ms</p><p>  EA=1;//開中斷</p><p>  ET0=1;//開定時中斷</p><p>  TR0=1;//開定時器T0</p><p>  while(1) //東西方向黃燈閃爍,南北方向紅燈閃爍</p

44、><p><b>  {</b></p><p><b>  P1_0=1;</b></p><p><b>  P1_1=0;</b></p><p><b>  P1_2=1;</b></p><p><b>  P1_3

45、=1;</b></p><p><b>  P1_4=1;</b></p><p><b>  P1_6=1;</b></p><p><b>  P1_7=0;</b></p><p><b>  P3_0=1;</b></p>

46、<p><b>  P3_1=1;</b></p><p><b>  P3_4=1;</b></p><p>  if(aa==20)//定時20*50MS=1S</p><p><b>  {</b></p><p>  aa=0;//定時完成一次后清0<

47、/p><p>  time--;//變量自減</p><p>  P1_1=~P1_1;</p><p>  P1_7=~P1_7;</p><p>  if(time<0)</p><p><b>  {</b></p><p><b>  break;<

48、;/b></p><p><b>  }</b></p><p>  b=time%100/10;//顯示十位</p><p>  a=time%10;//顯示個位 </p><p><b>  }</b></p><p>  display(a,b);</p

49、><p><b>  }</b></p><p><b>  }</b></p><p>  void flag3() //東西方向紅燈亮,南北方向綠燈亮 20ms</p><p>  {int time;</p><p>  time=21;//變量賦初值</p&

50、gt;<p>  TMOD=0x01;//定時器T0工作于方式1</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;//定時50ms</p><p>  EA=1;//開中斷</p><p>  ET0=1;//開定時中斷</p>&l

51、t;p>  TR0=1;//開定時器T0</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  P1=0xf3;</b></p><p><b>  P3_0=0;</b><

52、/p><p><b>  P3_1=0;</b></p><p><b>  P3_4=1;</b></p><p><b>  P3_7=1;</b></p><p>  if(aa==20)//定時20*50MS=1S</p><p><b>

53、  {</b></p><p>  aa=0;//定時完成一次后清0</p><p>  time--;//變量自減</p><p>  if(time==6)</p><p><b>  {</b></p><p><b>  break;</b></p&

54、gt;<p><b>  }</b></p><p>  b=time%100/10;//顯示十位</p><p>  a=time%10;//顯示個位 </p><p><b>  }</b></p><p>  display(a,b);</p><p>

55、;<b>  }</b></p><p><b>  }</b></p><p>  void flag4()//東西方向紅燈閃爍,南北方向黃燈亮</p><p>  {int time;</p><p>  time=6;//變量賦初值</p><p>  TMOD

56、=0x01;//定時器T0工作于方式1</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;//定時50ms</p><p>  EA=1;//開中斷</p><p>  ET0=1;//開定時中斷</p><p>  TR0=1;//開定時

57、器T0</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  P1_0=1;</b></p><p><b>  P1_1=1;</b></p><p><b

58、>  P1_3=1;</b></p><p><b>  P1_4=0;</b></p><p><b>  P1_5=1;</b></p><p><b>  P1_6=1;</b></p><p><b>  P1_7=1;</b>&

59、lt;/p><p><b>  P3_1=1;</b></p><p><b>  P3_4=0;</b></p><p><b>  P3_7=1;</b></p><p>  if(aa==20)//定時20*50MS=1S</p><p><b&

60、gt;  {</b></p><p>  aa=0;//定時完成一次后清0</p><p>  time--;//變量自減</p><p>  P1_4=~P1_4;</p><p>  P3_4=~P3_4;</p><p>  if(time<0)</p><p><

61、b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  b=time%100/10;//顯示十位</p><p>  a=time%10;//顯示個位 </p><p><b

62、>  }</b></p><p>  display(a,b);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*顯示子函數(shù)*/</b></p><p>  void d

63、isplay(uint a,uint b)</p><p><b>  {</b></p><p><b>  P0=0xfe;</b></p><p>  P2=table[b];//顯示十位</p><p>  delay0(5);</p><p>  P2=0xff;/

64、/消隱</p><p><b>  P0=0xfd;</b></p><p>  P2=table[a];//顯示個位</p><p>  delay0(5);</p><p>  P2=0xff;//消隱</p><p><b>  }</b></p><

65、;p>  void xint0() interrupt 0 //外部中斷INT0</p><p>  { GREEN_ZHU_ON();</p><p><b>  }</b></p><p>  void xint1() interrupt 2 //外部中斷INT1</p><p>  { GRE

66、EN_ZHI_ON();</p><p><b>  }</b></p><p>  void GREEN_ZHU_ON()//外部中斷INT0顯示子程序</p><p><b>  {P1=0xdb;</b></p><p><b>  P3_0=0;</b></p&

67、gt;<p><b>  P3_1=1;</b></p><p><b>  P3_4=1;</b></p><p><b>  P3_7=0;</b></p><p>  delay0(10000);</p><p><b>  }</b>

68、</p><p>  void GREEN_ZHI_ON()//外部中斷INT1顯示子程序</p><p><b>  { P1_2=0;</b></p><p><b>  P3_0=0;</b></p><p><b>  P1_5=1;</b></p>&

69、lt;p><b>  P3_7=1;</b></p><p><b>  P1_0=1;</b></p><p><b>  P1_6=1;</b></p><p><b>  P1_3=0;</b></p><p><b>  P3_1=

70、0;</b></p><p><b>  P1_1=1;</b></p><p><b>  P1_4=1;</b></p><p><b>  P3_4=1;</b></p><p><b>  P0=0xff;</b></p>

71、<p><b>  P2=0X00;</b></p><p>  delay0(1000);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  /*定時中斷子函數(shù)*/</p><p&g

72、t;  void xtimer0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;//定時50ms</p><p><b>  aa++;</b>

73、</p><p><b>  }</b></p><p><b>  /*延時子函數(shù)*/</b></p><p>  void delay0(uint z)</p><p><b>  {</b></p><p><b>  uint i,j

74、;</b></p><p>  for(i=0;i<z;i++)//z為1是1ms</p><p>  for(j=0;j<110;j++);</p><p><b>  }</b></p><p>  /*******************************************

75、**************</p><p><b>  500ms延時函數(shù)</b></p><p>  晶振:11.0592MHz</p><p>  *********************************************************/</p><p>  void delay(ucha

76、r y) </p><p><b>  {</b></p><p><b>  uchar k;</b></p><p><b>  uint i;</b></p><p>  for(;y>0;y--)</p><p><b>  {&

77、lt;/b></p><p>  for(i=1250;i>0;i--) </p><p><b>  {</b></p><p>  for(k=180;k>0;k--);</p><p><b>  }</b></p><p><b>  }&

78、lt;/b></p><p><b>  } </b></p><p><b>  軟件仿真圖</b></p><p><b>  5心得體會</b></p><p>  通過做這次課程設(shè)計報告,我自己收獲了很多知識,也有很多的感受和體會。</p><

79、p>  首先,我感觸最深的是,理論的學(xué)習(xí)必須與實際的動手操作相結(jié)合。在剛剛學(xué)習(xí)單片機(jī)時,我們對于知識的學(xué)習(xí)主要來自于書本以及老師的講解,平時的上機(jī)實驗也主要是以熟悉軟件為目的,學(xué)習(xí)怎么應(yīng)用軟件。我們自己很少動手設(shè)計程序及用仿真進(jìn)行驗證。</p><p>  在做實驗設(shè)計的過程中,我了解到只會書本的知識對于我們自行設(shè)計并沒有很大的用處,并且學(xué)習(xí)是不容許有參假的成分,如果你讀不懂程序,不會應(yīng)用軟件,那么你很難完

80、成自己的設(shè)計報告。</p><p>  其次,通過這次的報告的設(shè)計,增強(qiáng)了我自主學(xué)習(xí)的能力,以前的學(xué)習(xí)主要來自于課本,我很少會通過其他途徑進(jìn)行學(xué)習(xí)。由于在完成這次的報告的過程中,我們會遇到很多我們以前沒有見過的問題,那么,通過上網(wǎng)查找答案及向?qū)W長詢問,往往能幫助我們學(xué)到更多的知識。</p><p>  第三點也是我覺得自己存在的很嚴(yán)重的一點的毛病就是,在學(xué)習(xí),我自己不是一個特別愿意與人交流

81、的人。在做這次的報告時,我自己能感覺到自己的缺點所帶來的弊端,有時自己長久發(fā)現(xiàn)不了的問題,經(jīng)別人一點撥就很輕松的解決,所以,學(xué)習(xí)不能閉門造車,要學(xué)會與別人多交流。</p><p>  然后我覺得這次的做報告的經(jīng)歷有苦有樂,對于我做的這個題目,對有的同學(xué)來說很簡單,但是對我來說卻有一定的難度,在設(shè)計報告之前,很多別人寫的程序,我都看得不大懂,然后對使用protues也不是很熟練,所以做起來比較痛苦,也是一個模塊要做

溫馨提示

  • 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

提交評論