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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《單片機技術》課程設計說明書</p><p>  基于單片機的交通燈設計</p><p>  院 、 部: 電氣與信息工程學院 </p><p>  學生姓名: </p><p>  指導教師: 職稱 講師 </p><p>  專

2、 業: 電子信息工程 </p><p>  班 級: </p><p>  學 號: </p><p>  完成時間: 2013年6月10日 </p><p><b>  摘 要</b></p>

3、;<p>  隨著人們社會活動的日益頻繁,無論是上班、旅游等等,都離不開交通。為了減少交通事故,讓交通有秩序,交通信號燈有很大的作用,近年來單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。所以本人用單片機技術來制作一個交通燈。</p><p>  本系統采用單片機AT89S52為中心器件來設計交通燈控制器。本設計就是采用單片機模擬十字路口交通燈的各種狀態顯示以及倒計時時間。該系統由單片機

4、I/O口擴展系統、交通燈狀態顯示系統、LED數碼顯示系統、復位電路等幾大部分組成。系統除基本的交通燈功能外,還具有倒計時等功能,較好的模擬實現了十字路口可能出現的狀況。</p><p>  關鍵字:交通燈; AT89S52; I/O口;LED </p><p><b>  ABSTRACT</b></p><p>  As people

5、9;s social activities have become increasingly frequent, whether it is work, tourism and so on, are inseparable from the traffic. In order to reduce traffic accidents, let the traffic order, traffic signal lights have gr

6、eat role, in recent years the monolithic integrated circuit application unceasingly thorough, traditional control detection technology is updated. So I use single-chip technology to the production of a traffic light.<

7、/p><p>  The system uses a single-chip AT89S52 as the center device to design the traffic light controller. This design is the use of single-chip simulation of traffic lights at the crossroads of various state

8、display and countdown time. The system consists of single chip I/O port expansion system, the traffic light state display system, LED digital display system, the reset circuit and components. In addition to the basic tra

9、ffic light function, but also has a countdown function, to achieve a better sim</p><p>  Keywords: traffic lights; AT89S52; I/O; LED</p><p><b>  目 錄</b></p><p>

10、;  1設計課題設計要求及總體方案介紹1</p><p>  1.1 設計課題任務1</p><p>  1.2 功能要求說明1</p><p>  1.3 交通燈總體方案介紹及工作原理說明1</p><p>  2 交通燈硬件系統的設計3</p><p>  2.1 交通燈硬件系統各模塊功能簡要介紹

11、3</p><p>  2.2交通燈電路原理圖、PCB圖、元器件分布圖4</p><p>  2.3交通燈元器件清單4</p><p>  3交通燈軟件系統的設計5</p><p>  3.1單片機資源使用情況5</p><p>  3.2軟件各模塊簡要介紹5</p><p>  3

12、.3交通燈程序流程圖5</p><p>  3.4交通燈設計程序清單7</p><p>  4交通燈設計結論8</p><p>  4.1 使用說明8</p><p>  4.2 系統調試8</p><p><b>  4.4設計體會8</b></p><p>

13、<b>  結束語9</b></p><p><b>  致 謝10</b></p><p><b>  參考文獻11</b></p><p>  附錄A:PCB圖12</p><p>  附錄B:元器件分布圖13</p><p>  附錄C

14、:元器件清單14</p><p>  附錄D:程序清單15</p><p>  1設計課題設計要求及總體方案介紹</p><p>  1.1 設計課題任務 </p><p>  設計一個具有特定功能的十字路口交通燈。該交通燈上電或按鍵復位后能自動顯示系統提示符“d.1004-16”, 進入準備工作狀態。按開始鍵則開始工作,按結束鍵

15、則返回“d.1004-16”狀態。</p><p>  1.2 功能要求說明</p><p>  要求甲車道和乙車道兩條交叉道路上的車輛交替運行,甲車道為主車道,每次通車時間為60秒,乙車道為次車道,每次通車時間為30秒,要求黃燈亮3秒,并且1秒閃爍一次。有應急車輛出現時,紅燈全亮,應急車輛通車時間10秒,同時禁止其他車輛通過。</p><p>  1.3 交通

16、燈總體方案介紹及工作原理說明</p><p>  1.3.1電源提供方案</p><p>  為使模塊穩定工作,須有可靠電源,采用單片機控制模塊提供電源。此方案的優點是系統簡明扼要,節約成本;缺點是輸出功率不高。</p><p><b>  1.3.2復位方案</b></p><p>  復位方式有兩種:按鍵復位與軟件復

17、位。由考慮到程序的簡潔,避免冗長,本設計采用按鍵復位,在芯片的復位端口外接復位電路,通過按鍵對單片機輸入一個高電平脈沖,達到復位的目的。</p><p><b>  1.3.3輸入方案</b></p><p>  直接在IO口線上接上按鍵開關。因為設計時精簡和優化了電路,所以剩余的口資源還比較多,我們使用2個按鍵,分別是K1、K2。 由于該系統對于交通燈及數碼

18、管的控制,只用單片機本身的I/O 口就可實現,且本身的計數器及RAM已經夠用</p><p>  1.3.4顯示界面方案</p><p>  該系統要求完成倒計時、狀態燈等功能。</p><p>  采用數碼管與點陣LED (點陣式和8段式LED)相結合的方法因為設計既要求倒計時數字輸出,又要求有狀態燈輸出等,為方便觀看并考慮到現實情況,用數碼管與LED燈分別顯示時

19、間與提示信息。這種方案既滿足系統功能要求,又減少了系統實現的復雜度。權衡利弊,第三種方案可互補一二方案的優缺,我們決定采用方案三以實現系統的顯示功能。</p><p>  2 交通燈硬件系統的設計</p><p>  2.1 交通燈硬件系統各模塊功能簡要介紹</p><p>  2.1.1 設計方框圖</p><p><b> 

20、 圖2-1</b></p><p>  2.1.2復位電路模塊</p><p>  復位方式有多種,本設計采用按鍵復位,在設定的定時時間內,89S52必須在RST引腳產生一個由高到低的電平變化,以清內部定時器。 </p><p>  2.1.3晶振電路模塊</p><p>  選取原則:傳統做法,但能夠實現所需,即最簡單也最是實用

21、。電容選取33pF,晶振為12MHz。</p><p>  2.1.4流水燈電路模塊</p><p>  流水燈電路直接接在單片機的P2口上,采用共陽接法。</p><p>  2.15數碼管電路模塊</p><p>  數碼管的段控口接在單片機的P0口上,位控通過三極管接在單片機的P2口上。</p><p>  2.

22、1.6按鍵電路模塊</p><p>  按鍵電路的設計就是在一段共接地,另一端通過上拉電阻接到P1口有按鍵時。相應的口就會變成低電平,產生一個下降沿。</p><p>  2.1.7下載口電路</p><p>  下載口的1腳接在P1.5口,2腳懸空,3腳接在單片機的復位口上,4腳接在P1.6口,5叫接在P1.7口,6、7、8、9、10接地。</p>

23、<p>  2.2交通燈電路原理圖、PCB圖、元器件分布圖</p><p><b>  PCB圖見附錄A。</b></p><p>  元器件布局圖見附錄B。</p><p>  2.3交通燈元器件清單</p><p>  元器件清單見附錄C。</p><p>  3交通燈軟件系統的設計

24、</p><p>  3.1單片機資源使用情況</p><p>  AT89S52的P3口用來接八個發光二極管的陰極,控制其亮與滅,P0口和P2口外接由8個LED數碼管構成的顯示器,用P0口作LED的段碼輸出口(P0.0~P0.7對應于LED的a~dp),P2口作LED的位控輸出線,P2口外接3個按鍵A、B、C(分別對應于P1.0、P1.1、P1.2)用于調整顯示接口電路。</p&g

25、t;<p>  3.2軟件各模塊簡要介紹</p><p>  軟件設計是由C語言來編寫的,由主程序、鍵處理和鍵掃描程序、顯示程序、延時程序這幾個模塊組成的。</p><p><b>  3.2.1主程序</b></p><p>  主程序中會一直調用顯示程序、鍵掃描程序,延時程序,當沒有鍵按下時,數碼管會一直顯示d.1004-16

26、,當有按鍵按下時,就會按操作執行。</p><p><b>  3.2.2顯示程序</b></p><p>  顯示程序主要完成數碼管動態顯示。</p><p>  3.2.3鍵處理和鍵掃描程序</p><p>  鍵處理程序主要將P1口的取值送往單片機進行取反。鍵掃描主要判斷是否有鍵按下,即過度前沿抖動在判斷是否有鍵按

27、下。最終將處理完的鍵值作為返回值返回。</p><p><b>  3.2.4延時程序</b></p><p>  延時程序主要是用來倒計時用的,用來計算秒數。</p><p>  3.3交通燈程序流程圖</p><p>  3.3.1主程序流程框圖</p><p>  主程序流程圖如圖3-1所示

28、</p><p><b>  圖3-1</b></p><p>  緊急情況時的中斷服務程序(外中斷0)</p><p><b>  圖3-2</b></p><p>  3.3.2顯示子程序流程框圖</p><p>  顯示子程序框圖如圖3-3所示</p>&

29、lt;p><b>  圖3-3</b></p><p>  3.3.3鍵掃子程序流程框圖</p><p>  鍵掃子程序流程框圖如圖3-4所示</p><p><b>  圖3-4</b></p><p>  3.4交通燈設計程序清單</p><p><b>

30、  程序清單見附錄D。</b></p><p><b>  4交通燈設計結論</b></p><p><b>  4.1 使用說明</b></p><p>  通電后,數碼管會顯示d.1004-16,按下S2鍵后,交通燈開始進入運行狀態。運行時按S1復位,如果按下S2鍵,主車道綠燈亮60秒,次車道紅燈亮60秒,

31、隨后主車道黃燈亮2秒,閃3下,然后主車道紅燈亮30秒,次車道綠燈亮30秒,緊接著次車道黃燈亮2秒閃三下,一直循環,如果按下S3則回到初始值d.1004-16為緊急情況使用;再按S2鍵主次車道紅燈都亮10秒。</p><p><b>  4.2 系統調試</b></p><p>  單片機AT89S52是系統的核心,利用萬用表檢測單片機電源VCC是否為(40腳)+5V、

32、晶振是否正常工作(可視波器調試,也可用萬用表檢測,亮引腳電壓一般為1.8~2.3V之間)、復位引腳RST(復位時為高電平,單片機工作時為低電平)、EA是否為+5V(高電平),單片機能工作了,再結合電路圖,檢測故障就容易了。</p><p><b>  4.4設計體會</b></p><p>  本次設計中,因為本人單片機基礎學到不少很好,所以費了很大的時間,在硬件方面

33、,一直都不是很順利,出現虛焊的情況很多,在檢查板子的時候由于焊孔太多遇到很大的困難,甚至想放棄,但最后還是堅持下來了,軟件設計方面,也不是很會,通過別人的一些幫忙,使我完成了這次的設計,真的很不容易。</p><p><b>  結束語</b></p><p>  通過這學期單片機的學習,本人喜歡上了在軟件上的編程,雖然學的不是很好,但本人會不斷努力,在學習編程技能,

34、為以后進去手機開發設計方面打好基礎,本人已經喜歡上了這個行業,相信能在以后有一番作為。</p><p><b>  致 謝</b></p><p>  感謝桂老師對我們單片機這門課程學習的嚴格要求,讓我們學到了很多,不僅在學習上,還是做人方面,都起到很大的作用,還要感謝在學習中幫助我的同學,在沒有老師的情況下解決了我的疑惑,真的很謝謝你們。</p>&

35、lt;p><b>  參考文獻</b></p><p>  [1].李朝青.單片機原理及接口技術(第3版).2005年10月</p><p>  Li Zhaoqing. The SCM theory and Interface Technology ( Third Edition ) .2005 year in October</p>

36、<p>  [2].蔡朝洋.單片機控制實習與專題制作</p><p>  Cai Zhaoyang SCM control practice and special topic production</p><p>  [3].樓然苗.單片機課程設計指導</p><p>  building and seedlings. SCM curriculum de

37、sign guidance</p><p>  Zhao Guanglin</p><p>  [4].趙廣林.電路設計與制版</p><p>  circuit design and plate making.</p><p><b>  附錄A:PCB圖</b></p><p><b&g

38、t;  頂層圖</b></p><p><b>  底層圖</b></p><p>  附錄B:元器件分布圖</p><p><b>  附錄C:元器件清單</b></p><p><b>  附錄D:程序清單</b></p><p>  /

39、/名稱:十字路口交通燈控制</p><p><b>  //作者: </b></p><p>  //時間: 2013年6月10日</p><p>  //設計要求:上電或按鍵復位后能自動顯示系統提示符“d.1004-16”, 進入準備工作狀態。按開始鍵則開始工作,按結束鍵則返回“d.1004-16”狀態。要求甲車道和乙車道兩條交叉

40、道路上的車輛交替運行,甲車道為主車道,每次通車時間為60秒,乙車道為次車道,每次通車時間為30秒,要求黃燈亮3秒,并且1秒閃爍一次。有應急車輛出現時,紅燈全亮,應急車輛通車時間10秒,同時禁止其他車輛通過。</p><p>  /********************************************************/</p><p>  #include<r

41、eg52.h></p><p>  #include<intrins.h></p><p>  char code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff}; </p><p>  char time;</p><p>&

42、lt;b>  char v;</b></p><p>  char flag=0;</p><p>  /*顯示緩沖數組(存放顯示信息的字型碼的序號)*/ </p><p>  char find_code[8];</p><p>  /**************************************

43、******************/</p><p>  //函數名: void DelayX1ms(uint count)</p><p>  //功能: 延時時間為1ms</p><p><b>  //調用函數:</b></p><p>  //輸入參數:count,1ms計數</p>&l

44、t;p><b>  //輸出參數:</b></p><p>  //說明:總共延時時間為1ms乘以count,crystal=12Mhz</p><p>  /********************************************************/</p><p>  #define uchar unsigned

45、 char</p><p>  #define uint unsigned int</p><p>  void DelayX1ms(uint count) </p><p><b>  {</b></p><p><b>  uint j;</b></p><p>

46、;  while(count--!=0)</p><p><b>  {</b></p><p>  for(j=0;j<80;j++);</p><p><b>  }</b></p><p><b>  }</b></p><p><b&

47、gt;  /*顯示函數*/</b></p><p>  void disp()</p><p><b>  {</b></p><p>  char i,j=0xEF;</p><p><b>  char k;</b></p><p>  for(i=0;i&l

48、t;8;i++)</p><p><b>  {</b></p><p><b>  P2=j;</b></p><p>  k=find_code[i];</p><p>  P0=dis_code[k];</p><p>  DelayX1ms(1);</p>

49、<p>  j=_crol_(j,1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /************************************************************************</p>

50、<p>  * 函數原型:keychuli();</p><p>  * 功 能:處理與鍵盤相連的P1口的內容,作為鍵值。</p><p>  ************************************************************************/</p><p>  uchar keychul

51、i()</p><p><b>  {</b></p><p>  uchar k; </p><p>  k=P1; //P1口內容送K</p><p>  k=~k;

52、 //取反</p><p>  return(k); //返回鍵值</p><p><b>  }</b></p><p>  /************************************************************************<

53、/p><p>  * 函數原型:key();</p><p>  * 功 能:鍵盤掃描函數,函數返回值即鍵值。</p><p>  ************************************************************************/</p><p>  uchar key()<

54、/p><p><b>  {</b></p><p>  uchar keyzhi,keyzhii; //鍵盤按鍵鍵值臨時存放</p><p>  keyzhi=keychuli(); //調P1口處理函數</p><p>  if(keyzhi!=0)

55、 //有鍵動作延時去抖動,否則函數返回</p><p><b>  {</b></p><p><b>  disp();</b></p><p><b>  disp();</b></p><p>  keyzhi=keychuli();

56、 //再次調P1口處理函數</p><p>  if(keyzhi!=0) //真正有鍵按下,取鍵值并暫存</p><p><b>  {</b></p><p>  keyzhii=keyzhi;</p><p>  while(keyzhi!=0&&TF0)

57、 //判按鍵是否釋放,沒有釋放延時去抖動等待釋放</p><p><b>  {</b></p><p><b>  disp();</b></p><p><b>  disp();</b></p><p>  keyzhi=keychuli();</p>

58、<p><b>  }</b></p><p>  keyzhi=keyzhii; //按鍵釋放后恢復按鍵鍵值</p><p><b>  }</b></p><p><b>  } </b></p><p>  return(keyzhi);

59、 //返回按鍵鍵值</p><p><b>  }</b></p><p>  void delay1s()</p><p><b>  {</b></p><p>  TMOD=0x01; //定時器0,工作方式1</p><p>

60、  TH0 =0x3c;</p><p>  TL0 =0xb0; //50ms中斷一次</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p&

61、gt;<b>  do</b></p><p><b>  {disp();</b></p><p><b>  v=key();</b></p><p><b>  }</b></p><p>  while(time!=20&&v!=2

62、);</p><p><b>  TR0=0;</b></p><p><b>  time=0;</b></p><p><b>  }</b></p><p>  void INTT0() interrupt 1</p><p><b> 

63、 {</b></p><p>  TH0 = 0x3c;</p><p>  TL0 = 0xb0; </p><p><b>  time++;</b></p><p><b>  }</b></p><p>  void delay()</p>

64、<p><b>  {</b></p><p>  TMOD=0x01; //定時器0,工作方式1</p><p>  TH0 =0x3c;</p><p>  TL0 =0xb0; //50ms中斷一次</p><p><b>  EA=1;</b></p>&l

65、t;p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  do</b></p><p><b>  {disp();</b></p><p><b>  v=key();<

66、/b></p><p><b>  }</b></p><p>  while(time!=10&&v!=2);</p><p><b>  TR0=0;</b></p><p><b>  time=0;</b></p><p>

67、<b>  }</b></p><p>  void INTT1() interrupt 2</p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  }</b></p><

68、p>  void jinji()</p><p><b>  {</b></p><p><b>  int b;</b></p><p>  for(b=10;b>=0&&v!=2;b--)</p><p><b>  {</b></p>

69、;<p><b>  P3=0X6F;</b></p><p>  find_code[6]=b%10;</p><p>  find_code[7]=b/10;</p><p>  find_code[2]=b%10;</p><p>  find_code[3]=b/10;</p><

70、;p>  delay1s();</p><p><b>  flag=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {

71、 </b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  find_code[0]=0;</p><p>  find_code[1]=0;</p><p>  find_code[2]=1;

72、</p><p>  find_code[3]=11;</p><p>  find_code[4]=6</p><p>  find_code[5]=1;</p><p>  find_code[6]=4;</p><p>  find_code[7]=10;</p><p><b>

73、;  disp();</b></p><p>  EA=1;EX1=1;IT1=1;</p><p><b>  v=key();</b></p><p><b>  switch(v)</b></p><p><b>  {</b></p><

74、p>  case 0: disp(); break;</p><p>  case 1: </p><p>  while(v!=2)</p><p>  { int m,n=60,t=30,a=4;</p><p>  find_code[7]=11;</p><p>  for(m=60;m>=0&

75、amp;&v!=2;m--)</p><p><b>  {</b></p><p><b>  P3=0xAF;</b></p><p>  find_code[6]=m%10;</p><p>  find_code[7]=m/10;</p><p>  find

76、_code[2]=n%10;</p><p>  find_code[3]=n/10;</p><p>  delay1s();</p><p><b>  n--;</b></p><p>  if(flag==1&&v!=2)</p><p><b>  jinji(

77、);</b></p><p><b>  }</b></p><p>  for(m=0;m<2&&v!=2;m++)</p><p><b>  {</b></p><p><b>  P3=0XCF;</b></p><

78、p>  find_code[6]=a%10;</p><p>  find_code[7]=a/10;</p><p>  find_code[2]=n%10;</p><p>  find_code[3]=n/10;</p><p>  delay1s();</p><p><b>  n--;<

79、;/b></p><p><b>  a--;</b></p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  }</b></p><p>  for

80、(m=0;m<3&&v!=2;m++)</p><p><b>  { </b></p><p>  find_code[2]=n%10;</p><p>  find_code[3]=n/10;</p><p>  find_code[6]=a%10;</p><p> 

81、 find_code[7]=a/10;</p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  P3=0XEF;</b></p><p><b>  delay();</b><

82、;/p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  P3=0XCF;</b></p><p><b>  delay();</b></p><p><

83、b>  a--;</b></p><p><b>  n--;</b></p><p><b>  }</b></p><p><b>  a=4;</b></p><p>  for(m=30;m>=0&&v!=2;m--)</p

84、><p><b>  {</b></p><p><b>  P3=0X7D;</b></p><p>  find_code[6]=m%10;</p><p>  find_code[7]=m/10;</p><p>  find_code[2]=t%10;</p>

85、<p>  find_code[3]=t/10;</p><p>  delay1s();</p><p><b>  t--;</b></p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p>

86、<p><b>  }</b></p><p>  for(m=0;m<2&&v!=2;m++)</p><p><b>  {</b></p><p><b>  P3=0X7E;</b></p><p>  find_code[6]=a%10

87、;</p><p>  find_code[7]=a/10;</p><p>  find_code[2]=t%10;</p><p>  find_code[3]=t/10;</p><p>  delay1s();</p><p><b>  t--;</b></p><p

88、><b>  a--;</b></p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  } </b></p><p>  for(m=0;m<3&&am

89、p;v!=2;m++)</p><p><b>  { </b></p><p>  find_code[2]=t%10;</p><p>  find_code[3]=t/10;</p><p>  find_code[6]=a%10;</p><p>  find_code[7]=a/10;

90、</p><p>  if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  P3=0X7F;</b></p><p><b>  delay();</b></p><p> 

91、 if(flag==1&&v!=2)</p><p><b>  jinji();</b></p><p><b>  P3=0X7E;</b></p><p><b>  delay();</b></p><p><b>  t--;</b&g

92、t;</p><p><b>  a--;</b></p><p><b>  }</b></p><p>  } P3=0xFF;</p><p><b>  }</b></p><p><b>  }</b></p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論