單片機課程設(shè)計--交通燈及數(shù)字電壓表_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機原理及應(yīng)用</b></p><p><b>  課程設(shè)計報告</b></p><p>  班級 </p><p>  學(xué)號 </p><p>  姓名 &l

2、t;/p><p><b>  設(shè)計任務(wù)1:交通燈</b></p><p><b>  一、設(shè)計要求:</b></p><p>  假設(shè)一個十字路口為東西南北走向,以紅、綠、黃色4組12個發(fā)光二極管表示交通信號燈,用數(shù)碼管顯示秒倒計時時間。初始狀態(tài)為東西紅燈,南北綠燈,倒計時從30秒開始;25秒后,即倒計時到5秒時,南北綠燈滅,

3、黃燈閃;5秒后,即計時到0時,改為東西綠燈亮,南北紅燈亮,重新開始倒計時。</p><p><b>  二、選用的器件:</b></p><p>  控制器采用Atmel公司的AT89C51單片機,交通燈直接采用Protues提供的TRAFFIC LIGHTS。兩個路口分別采用紅色和藍色的數(shù)碼管作為倒計時的顯示使用。另有排阻(RESPACK-8)、晶振、電容、電阻等。

4、</p><p>  使用單片機的P0口作為倒計時數(shù)碼管的段碼輸出。P2.0~P2.2控制南北方向的三個交通燈,P2.3~P2.5控制東西方向的交通燈。</p><p>  采用單片機內(nèi)部提供的計時器定時器0進行計時。</p><p>  三、電路圖(見下頁):</p><p><b>  四、程序:</b></p

5、><p>  #include <REGX51.H></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar n=0,temp=0; </p><p>  uchar code segco

6、de0[]={0x5b,0x06,0x3f,0x5b,0x06,0x3f,0x5b,0x06,0x3f};</p><p>  uchar code segcode1[]={0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f};</p><p>  void delay(x)</p><p>  { while(x-

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

8、++;</b></p><p>  temp=temp%61;</p><p><b>  if(n==20)</b></p><p>  { temp++;</p><p><b>  n=0;</b></p><p><b>  }</b&g

9、t;</p><p>  if(temp<24) P2=0x21;</p><p>  if(temp==24)P2=0x22;</p><p>  if(temp==25) P2=0x20;</p><p>  if(temp==26)P2=0x22;</p><p>  if(temp==27) P2=0

10、x20;</p><p>  if(temp==28)P2=0x22;</p><p>  if((temp>28)&&(temp<30)) P2=0x22;</p><p>  if((temp>=30)&&(temp<54)) P2=0x0c;</p><p>  if(temp=

11、=54) P2=0x14;</p><p>  if(temp==55)P2=0x04;</p><p>  if(temp==56) P2=0x14;</p><p>  if(temp==57) P2=0x04;</p><p>  if(temp==58) P2=0x14;</p><p>  if(temp=

12、=59) P2=0x14; </p><p><b>  }</b></p><p><b>  main()</b></p><p>  { uint i=0;</p><p>  TMOD=0x01;</p><p>  TH0=(65536-50000)/256;&

13、lt;/p><p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  w

14、hile(1)</b></p><p><b>  {</b></p><p><b>  P1_0=0;</b></p><p><b>  P1_1=1;</b></p><p>  P0=segcode0[temp/10];</p><p&

15、gt;  delay(3000);</p><p><b>  P1_0=1;</b></p><p><b>  P1_1=0;</b></p><p>  P0=segcode1[temp%10];</p><p>  delay(3000); </p><p>

16、<b>  P1_1=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  五、設(shè)計心得:</b></p><p>  在設(shè)計中因為數(shù)碼管是分時點亮的開始的時候在延時時間上出了一點問題,數(shù)

17、碼管有閃爍,后來縮小了片選的延時時間問題得到解決?;镜脑O(shè)計思想是使用單片機的定時器計算出1s的時間,然后60s的循環(huán)。前25s點亮相應(yīng)路口的燈,25~30s因為黃燈需要閃爍所以每秒進行單獨的控制以保證器閃爍。后30~60s切換路口控制方式相同。通過這次的設(shè)計,體會學(xué)會了級聯(lián)型數(shù)碼管的控制,進一步熟悉了數(shù)碼管段碼的算法。使用C語言編寫程序更加的方便和便于理解。</p><p>  通過這次課程設(shè)計我發(fā)現(xiàn)單片機原理

18、應(yīng)用行很強,只有老師的講解不行,只看也不中,只有自己動手去做才會發(fā)現(xiàn)自己確實有太多的不足,許多的原理,程序看似簡單,真正去做才知道知識并沒有自己想象的那樣扎實。從而懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力

19、,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。</p><p>  設(shè)計任務(wù)2:數(shù)字電壓計</p><p><b>  一、設(shè)計要求:</b></p><p>  設(shè)計一個數(shù)字電壓計,用滑動變阻器模擬電壓信號的輸入,用ADC0808實現(xiàn)A/D轉(zhuǎn)換,用LED數(shù)碼管顯示當前的電壓值。</p><p><b&g

20、t;  二、選用的器件:</b></p><p>  選用AT89C51做控制器,ADC0808作為AD轉(zhuǎn)換器,顯示器使用的7SEG-MPX4-CC-BLUE共陰極4級聯(lián)藍色數(shù)碼管。信號源采用滑動變阻器(POT-HG),另有晶振、電阻、電容、按鍵開關(guān)等。</p><p>  因為單片機的P0口作為數(shù)碼管的段碼輸出所以加入了排阻(RESPACK-8)作為拉電阻使用。</p&

21、gt;<p>  ADC0808使用IN0口作為模擬量輸入口,OUT1~8連接到單片機的P1口作為數(shù)字量輸入到單片機的待處理量。處理之后在單片機的P0輸出到數(shù)碼管。</p><p>  為了驗證數(shù)字電壓表的準確性和可用性,使用Protues自帶的數(shù)字電壓表測量待測量,便于和單片機測出的值進行比較。</p><p>  ADC0808的時鐘信號直接使用單片機的定時器產(chǎn)生的定時脈

22、沖,通過P3.4引入到ADC0808的時鐘輸入引腳。</p><p>  三、電路圖(見下頁):</p><p><b>  四、程序:</b></p><p>  #include<absacc.h></p><p>  #include<reg51.h></p><p>

23、;  #define uchar unsigned char</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit START=P3^0;</p><p>  sbit OE=P3^1;</p><

24、p>  sbit EOC=P3^2;</p><p>  sbit P07=P0^7;</p><p>  sbit CLK=P3^4;</p><p>  uchar data led[4];</p><p>  int data tvdata; </p><p>  uchar code tv[]

25、={0x7e,0x7d,0x7b,0xf7};</p><p>  uchar code a[]={0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  void delay(void) //延時程序</p><

26、p><b>  {</b></p><p><b>  uint i;</b></p><p>  for(i=0;i<10;i++);</p><p><b>  }</b></p><p>  void ledxianshi(void) //顯示模塊

27、</p><p><b>  {</b></p><p>  uchar k,i;</p><p>  if(tvdata>5000)</p><p>  tvdata=5000;</p><p>  led[0]=tvdata%10;</p><p>  led[1

28、]=tvdata/10%10;</p><p>  led[2]=tvdata/100%10;</p><p>  led[3]=tvdata/1000;</p><p>  for(k=0;k<4;k++)</p><p><b>  { </b></p><p><b> 

29、 P2=tv[k];</b></p><p><b>  i=led[k];</b></p><p><b>  P0=a[i];</b></p><p><b>  if(k==3)</b></p><p><b>  {</b></p

30、><p><b>  P07 =1;</b></p><p><b>  }</b></p><p><b>  delay();</b></p><p><b>  }</b></p><p><b>  } </b&

31、gt;</p><p>  void main(void)</p><p><b>  {</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p><p>  TMOD=0x02;</p&g

32、t;<p><b>  TH0=216;</b></p><p><b>  TL0=216;</b></p><p><b>  TR0=1;</b></p><p><b>  while(1)</b></p><p><b>

33、  {</b></p><p><b>  START=1;</b></p><p>  START=0; //啟動轉(zhuǎn)換</p><p>  while(EOC==0);</p><p><b>  OE=1;</b></p><p>  tvd

34、ata=P1;</p><p>  tvdata*=20-0.4;</p><p><b>  OE=0;</b></p><p>  ledxianshi();</p><p><b>  delay();</b></p><p><b>  }</b>

35、;</p><p><b>  } </b></p><p>  void t0(void) interrupt 1 using 0</p><p><b>  {</b></p><p><b>  CLK=~CLK;</b></p><p>

36、<b>  }</b></p><p><b>  五、設(shè)計心得:</b></p><p>  設(shè)計中原來打算使用外部中斷的方式檢測ADC0808是否采集完畢,后來發(fā)現(xiàn)中斷不便與段碼的運算和延時的控制,所以直接采用while檢測ADC0808的轉(zhuǎn)換結(jié)束標志?;镜乃枷胧牵翰杉?位二進制數(shù)可表示0~255,也就是把5V的電壓值平均分成0~255個

溫馨提示

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

評論

0/150

提交評論