欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      單片機(jī)控制交通燈的案例

      時(shí)間:2019-05-14 01:32:47下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《單片機(jī)控制交通燈的案例》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《單片機(jī)控制交通燈的案例》。

      第一篇:單片機(jī)控制交通燈的案例

      單片機(jī)控制交通燈

      AT89C51單片機(jī)及由Keil 軟件編寫單片機(jī)程序,并且通過Proteus仿真測(cè)試,設(shè)計(jì)一個(gè)交通燈系統(tǒng),實(shí)現(xiàn)簡單的交通燈的管理功能。在交通燈系統(tǒng)的管理中,用發(fā)光二極管模擬交通信號(hào)燈,用邏輯電平開關(guān)模擬控制開關(guān)。在交通繁忙時(shí),交通信號(hào)燈控制系統(tǒng)應(yīng)有手控開關(guān),可人為地改變信號(hào)燈的狀態(tài),以緩解交通擁擠狀況。

      工作內(nèi)容及最終成果:

      十字路口的交通指揮信號(hào)燈控制要求如下:

      (1)信號(hào)燈受一個(gè)起動(dòng)開關(guān)控制,當(dāng)起動(dòng)開關(guān)接通時(shí),信號(hào)系統(tǒng)開始工作,且先南北紅燈亮,東西綠燈亮。當(dāng)起動(dòng)開關(guān)斷開時(shí),所有信號(hào)燈都熄滅。(2)南北綠燈和東西綠燈不能同時(shí)亮,如果同時(shí)亮?xí)r應(yīng)關(guān)閉信號(hào)燈系統(tǒng),并報(bào)警。

      (3)南北紅燈亮維持25S。在南北紅燈亮的同時(shí)東西綠燈也亮,并維持20S。到20S時(shí),東西綠燈閃爍,閃爍3S后熄滅。在東西綠燈熄滅時(shí),東西黃燈亮,并維持2S。到2S時(shí),東西黃燈熄,東西紅燈亮。同時(shí),南北紅燈熄滅,南北綠燈亮。

      (4)東西紅燈亮維持30S。南北綠燈亮維持25S。然后閃爍3S,熄滅。同時(shí)南北黃燈亮,維持2S后熄滅,這時(shí)南北紅燈亮,東西綠燈亮。(5)周而復(fù)始。

      ORG

      0000H

      LJMP START

      ORG

      0040H START:

      MOV

      SP,#60H

      LCALL STATUS0;初始狀態(tài)(都是紅燈)CIRCLE:

      LCALL STATUS1;南北綠燈,東西紅燈

      LCALL STATUS2;南北綠燈閃轉(zhuǎn)黃燈,東西紅燈

      LCALL STATUS3;南北紅燈,東西綠燈

      LCALL STATUS4;南北紅燈,東西綠燈閃轉(zhuǎn)黃燈

      LJMP CIRCLE STATUS0:

      ;南北紅燈,東西紅燈

      MOV DPTR,#8300H

      MOV A,#0FH

      MOVX @DPTR,A

      MOV R2,#10

      ;延時(shí)1秒

      LCALL DELAY

      RET STATUS1:

      ;南北綠燈,東西紅燈

      MOV DPTR,#08300H

      MOV A,#96H

      ;南北綠燈,東西紅燈

      MOVX @DPTR,A

      MOV R2,#200

      ;延時(shí)20秒

      LCALL DELAY

      RET STATUS2:

      ;南北綠燈閃轉(zhuǎn)黃燈,東西紅燈

      MOV DPTR,#8300H

      MOV R3,#03H

      ;綠燈閃3次 FLASH:

      MOV A,#9FH

      MOVX @DPTR,A

      MOV R2,#03H

      LCALL DELAY

      MOV A,#96H

      MOVX @DPTR,A

      MOV R2,#03H

      LCALL DELAY

      DJNZ R3,FLASH

      MOV A,#06H

      ;南北黃燈,東西紅燈

      MOVX @DPTR,A

      MOV R2,#10

      ;延時(shí)1秒

      LCALL DELAY

      RET STATUS3:

      ;南北紅燈,東西綠燈

      MOV DPTR,#8300H

      MOV A,#69H

      MOVX @DPTR,A

      MOV R2,#200

      ;延時(shí)20秒

      LCALL DELAY

      RET STATUS4:

      ;南北紅燈,東西綠燈閃轉(zhuǎn)黃燈

      MOV DPTR,#8300H

      MOV R3,#03H

      ;綠燈閃3次 FLASH1:

      MOV A,#6FH

      MOVX @DPTR,A

      MOV R2,#03H

      LCALL DELAY

      MOV A,#69H

      MOVX @DPTR,A

      MOV R2,#03H

      LCALL DELAY

      DJNZ R3,FLASH1

      MOV A,#09H

      ;南北紅燈,東西黃燈

      MOVX @DPTR,A

      MOV R2,#10

      ;延時(shí)1秒

      LCALL DELAY

      NOP

      RET DELAY:

      ;延時(shí)子程序

      PUSH 2

      PUSH 1

      PUSH 0 DELAY1:

      MOV 1,#00H DELAY2:

      MOV 0,#0B2H

      DJNZ 0,$

      DJNZ 1,DELAY2;延時(shí) 100 mS

      DJNZ 2,DELAY1

      POP 0

      POP 1

      POP 2

      RET

      END

      第二篇:基于51單片機(jī)的交通燈控制電路設(shè)計(jì)

      交通燈

      一、功能要求

      要求甲車道和乙車道兩條交叉道路上的車輛交替運(yùn)行,每次通行時(shí)間都設(shè)為25秒,黃燈先亮5秒鐘,才能變換運(yùn)行車道;黃燈亮?xí)r,要求每秒鐘閃亮一次。

      二、電路圖

      說明:1)每一位數(shù)碼管位選要分開,對(duì)應(yīng)IO口參照程序中紅色部分 2)圖示數(shù)碼管為共陽,沒加驅(qū)動(dòng)數(shù)碼管顯示較暗,建議加驅(qū)動(dòng)

      三、程序

      //TrafficLight.c #include“reg52.h”

      //IO口定義 sbit red_1 =P2^0;//南北方向 sbit red_2 =P2^3;//東西方向 sbit yellow_1 =P2^1;sbit yellow_2 =P2^4;sbit green_1 =P2^2;sbit green_2 =P2^5;sbit com1_1 =P3^6;//十位 南北方向 數(shù)碼管位選 sbit com1_2 =P3^7;//個(gè)位 南北方向 sbit com2_1 =P3^4;//十位 東西方向 sbit com2_2 =P3^5;//個(gè)位 東西方向

      //全局變量 char time=30;//倒計(jì)時(shí)

      unsigned char num1=0,num2=0;//輔助計(jì)時(shí) unsigned char flag1=0,flag2=0;//黃燈閃標(biāo)志位 unsigned char shi1,shi2,ge1,ge2;//數(shù)碼管十位個(gè)位

      const unsigned char ledNum[] =

      {// 0 1

      A

      b

      c

      d

      E

      F

      不顯示-o(18)H(19)h(20)C(21)0(22)n(23)0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8e,0xFF,0xbf,0xa3,0x89,0x8b,0xc6,0xc0,0xab };//共陽數(shù)碼管

      //中斷優(yōu)先級(jí)別T0>T1,數(shù)碼管顯示中斷間隔2ms,計(jì)時(shí)時(shí)間間隔50ms //計(jì)時(shí)要求比較精確,間隔長,不應(yīng)該被打斷,故中斷優(yōu)先級(jí)要高,使用T0 //數(shù)碼管中斷可以被打斷,打斷時(shí)間較短,不會(huì)影響顯示,使用T1 //在交通燈中,計(jì)時(shí)和數(shù)碼管顯示一直進(jìn)行,故定時(shí)器開啟后不用停止 void InitInter(void){ TMOD=0x11;//設(shè)置定時(shí)器工作方式為16位計(jì)時(shí)器

      TH0=(65535-45872)/256;//11.0592M晶振,50ms TL0=(65535-45872)%256;TH1=(65535-1835)/256;//11.0592M晶振,2ms TL1=(65535-1835)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;}

      void Display(void){ static unsigned char i=1;

      switch(i){ case 1:

      com2_2=0;

      P0=ledNum[shi1];

      com1_1=1;

      break;case 2:

      com1_1=0;

      P0=ledNum[ge1];

      com1_2=1;

      break;case 3:

      com1_2=0;

      P0=ledNum[shi2];

      com2_1=1;

      break;case 4:

      com2_1=0;

      P0=ledNum[ge2];

      com2_2=1;

      break;

      default:;}

      i++;if(i>4)i=1;}

      //紅燈可以直接變成綠燈,但綠燈必須先變成黃燈再變紅燈 void main(void){ bit i=0;InitInter();

      while(1){

      red_1=0;//0為亮

      red_2=1;

      green_2=0;

      time=30;

      while(time>5)

      {

      shi1=time/10;

      ge1=time%10;

      shi2=(time-5)/10;

      ge2=(time-5)%10;

      }

      green_2=1;

      yellow_2=0;

      flag2=1;

      num2=0;

      while(time>0)

      {

      shi1=time/10;

      ge1=time%10;

      shi2=time/10;

      ge2=time%10;

      }

      flag2=0;

      yellow_2=1;

      red_2=0;

      red_1=1;

      green_1=0;

      time=30;

      while(time>5)

      {

      shi2=time/10;

      ge2=time%10;

      shi1=(time-5)/10;

      ge1=(time-5)%10;

      }

      green_1=1;

      yellow_1=0;

      flag1=1;

      num2=0;

      while(time>0)

      {

      shi2=time/10;

      ge2=time%10;

      shi1=time/10;

      ge1=time%10;

      }

      flag1=0;

      yellow_1=1;

      //red_1=0;

      //green_2=0;} } void Timer_0(void)interrupt 1//計(jì)時(shí) { TH0=(65535-45872)/256;TL0=(65535-45872)%256;num1++;if(num1>=20){

      num1=0;

      time--;

      //if(time<0)time=30;

      //處理time,顯示方式

      } if(flag1||flag2){

      num2++;

      if(num2>=10)

      {

      num2=0;

      if(flag1)yellow_1=~yellow_1;

      if(flag2)yellow_2=~yellow_2;

      } } }

      void Timer_1(void)interrupt 3 { TH1=(65535-1835)/256;//11.0592M晶振,2ms TL1=(65535-1835)%256;

      Display();}

      第三篇:基于單片機(jī)控制的交通燈設(shè)計(jì)系統(tǒng)

      基于單片機(jī)控制的交通燈設(shè)計(jì)系統(tǒng)

      班級(jí):

      姓名:

      學(xué)號(hào):

      第一章 概述 1.設(shè)計(jì)內(nèi)容

      本系統(tǒng)需要采用AT89C51單片機(jī)AT89C5中心器件來設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)以下功能: 1.1初始東西綠燈亮,南北紅燈亮,東西方向通車。1.2黃燈閃爍后,東西路口紅燈亮同時(shí)南北路口綠燈亮,南北方向開始通車。1.3延時(shí)27s,南北方向綠燈滅,黃燈閃爍3次,然后又切換成東西方向通車,如此重復(fù)。

      設(shè)計(jì)交通燈控制系統(tǒng)硬件電路與軟件控制程序,對(duì)硬件電路與軟件程序分別進(jìn)行調(diào)試,并進(jìn)行軟硬件聯(lián)調(diào),要求獲得調(diào)試成功的仿真圖。2.設(shè)計(jì)目的

      2.1 了解交通燈管理的基本工作原理。2.2 熟悉AT89C51工作原理和應(yīng)用編程。

      2.3 熟悉AT89C51行接口的各種工作方式和應(yīng)用。

      2.4 熟悉AT89C51數(shù)器/定時(shí)器的工作方式和應(yīng)用編程外部中斷的方法。2.5 掌握多位LED顯示問題的解決。3.設(shè)計(jì)原理

      AT89C51片機(jī)具有控制二連體共陰極數(shù)碼管和發(fā)光二極管的輸出顯示以及檢測(cè)按鍵輸入的功能。利用AT89C51片機(jī)模仿制作室外十字路口多功能交通燈,實(shí)現(xiàn)室內(nèi)控制與室外顯示的功能。合理控制交通繁忙,交通特殊情況和恢復(fù)交通正常的三種情況。

      本設(shè)計(jì)用4個(gè)共陽極LED數(shù)碼管的分別表示東、西、南、北四個(gè)方向路口,以數(shù)碼管的上、中、下3個(gè)橫段分別代表紅、黃、綠3盞燈,用P0、P1口分別輸出控制模擬交通燈的狀態(tài)顯示的數(shù)碼管和倒計(jì)時(shí)顯示數(shù)碼管的狀態(tài)碼,P3^

      1、P3^

      2、P3^4-P3^7控制數(shù)碼管的位選,P2^0-P2^4接收中斷信號(hào)并反饋給INT0接口進(jìn)行中斷處理。

      第二章 硬件設(shè)計(jì)

      1.設(shè)計(jì)框圖 如圖2-1所示 此處要有文字說明

      圖2-1設(shè)計(jì)框圖

      2.元器件選擇及其功能介紹

      AT89C51是一種帶4K字節(jié)LASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51片引腳圖如下圖2-2所示。

      圖2-2 AT89C51片引腳圖

      主要特性:

      ·與MCS-51 兼容

      ·4K字節(jié)可編程閃爍存儲(chǔ)器 ·壽命:1000寫/擦循環(huán) ·數(shù)據(jù)保留時(shí)間:10年 ·全靜態(tài)工作:0Hz-24MHz ·三級(jí)程序存儲(chǔ)器鎖定 ·128×8位內(nèi)部RAM ·32可編程I/O線

      ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷源 ·可編程串行通道

      ·低功耗的閑置和掉電模式 ·片內(nèi)振蕩器和時(shí)鐘電路 3.設(shè)計(jì)原理圖

      硬件電路圖通過Proteus 仿真之后如圖2-3所示,其中: 按鈕K0連接P2^0端口實(shí)現(xiàn)紅燈全亮,處理交通意外 按鈕K1連接P2^1端口實(shí)現(xiàn)南北方向亮燈時(shí)間+1s 按鈕K2連接P2^2端口實(shí)現(xiàn)南北方向亮燈時(shí)間-1s 按鈕K3連接P2^3端口實(shí)現(xiàn)東西方向亮燈時(shí)間+1s 按鈕K4連接P2^4端口實(shí)現(xiàn)東西方向亮燈時(shí)間-1s

      圖2-3整體連接電路原理圖

      第三章 軟件設(shè)計(jì)

      1.各個(gè)程序段介紹 1.1數(shù)碼管顯示

      void Display(uchar j)//j控制顯示table中連續(xù)位的起始點(diǎn) { char h,l;if(j<11)//根據(jù)狀態(tài)判定時(shí)間

      {

      h=Time_EW/10;//EW通行時(shí)間十位

      l=Time_EW%10;//EW通行時(shí)間個(gè)位

      } else if(j<23){

      h=Time_SN/10;//SN通行時(shí)間十位

      l=Time_SN%10;//SN通行時(shí)間個(gè)位

      } for(i=0;i<4;)//按位顯示通行狀況及時(shí)間

      {

      P0=table1[j];//通行狀況顯示

      P3=tab[i];//位選顯示

      i++;

      j++;

      if(i%2)//兩位計(jì)時(shí)顯示

      {

      P1=table[l];

      Delay(400);

      }

      else

      {

      P1=table[h];

      Delay(400);

      } } Delay(5);} 1.2 INT0外部中斷服務(wù)程序

      void EXINT0(void)interrupt 0//INT0外部中斷 { EX0=0;//關(guān)中斷

      if(Busy_Button==0){

      P0=0xFE;//意外按鈕按下全顯示紅燈

      for(;Busy_Button!=1;)//意外按鈕彈起時(shí)恢復(fù)之前狀態(tài)

      Display(24);} /*四個(gè)時(shí)間控制按鈕分別控制SN、EW方向初始通行時(shí)間加減,最長不超過s,最少不低于s*/ if(SN_Add==0)//SN+1 {

      SN1+=1;

      if(SN1>99)

      SN1=99;} if(SN_Red==0)//SN-1 {

      SN1-=1;

      if(SN1<20)

      SN1=20;} if(EW_Add==0)//EW+1 {

      EW1+=1;

      if(EW1>99)

      EW1=99;} if(EW_Red==0)//EW-1 {

      EW1-=1;

      if(EW1<20)

      EW1=20;} EX0=1;//開中斷 } 1.3延時(shí)子程序

      void Delay(uchar a)//循環(huán)a次 { uchar x;x=a;while(x--){;} } 2.程序

      #define uchar unsigned char #include uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};uchar code table1[28]={0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xF E, 0xFE,0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF, 0xFE,0xFE,0xFE,0xFE};uchar code tab[4]={0x1E,0x2D,0x4E,0x8D};uchar EW=30,SN=30,EW1=30,SN1=30;uchar count;uchar i,j;sbit Busy_Button=P2^0;sbit SN_Add=P2^1;sbit SN_Red=P2^2;sbit EW_Add=P2^3;sbit EW_Red=P2^4;char Time_EW;char Time_SN;void Delay(uchar a){

      uchar x;x=a;while(x--){;} } void Display(uchar j){ char h,l;if(j<11){

      h=Time_EW/10;

      l=Time_EW%10;} else if(j<23){

      h=Time_SN/10;

      l=Time_SN%10;} for(i=0;i<4;){

      P0=table1[j];

      P3=tab[i];

      i++;

      j++;

      if(i%2)

      {

      P1=table[l];

      Delay(400);

      }

      else

      {

      P1=table[h];

      Delay(400);

      } } Delay(5);} void EXINT0(void)interrupt 0 { EX0=0;if(Busy_Button==0){

      P0=0xFE;

      for(;Busy_Button!=1;)Display(24);} if(SN_Add==0){

      SN1+=1;

      if(SN1>99)

      SN1=99;} if(SN_Red==0){

      SN1-=1;

      if(SN1<20)

      SN1=20;} if(EW_Add==0){

      EW1+=1;

      if(EW1>99)

      EW1=99;} if(EW_Red==0){

      EW1-=1;

      if(EW1<20)

      EW1=20;} EX0=1;

      } void timer0(void)interrupt 1 using 1 { TH0=0x3C;TL0=0xB0;count++;if(count==20){

      Time_EW--;

      Time_SN--;

      count=0;} } 第四章 仿真結(jié)果及其總結(jié)

      1.仿真結(jié)果圖

      1.1正常狀態(tài)的仿真結(jié)果如圖4-1所示

      圖4-1正常狀態(tài)

      1.2黃燈狀態(tài)的仿真結(jié)果如圖4-2所示

      圖4-2黃燈狀態(tài)

      1.3緊急狀態(tài)的仿真結(jié)果如圖4-3所示

      圖4-3 緊急狀態(tài)

      1.4延長通行時(shí)間的仿真結(jié)果如圖4-4所示

      圖4-4延長通行時(shí)間

      2.總結(jié)

      通過這次交通燈的課程設(shè)計(jì),使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決現(xiàn)實(shí)問題的能力。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用學(xué)習(xí)過程中,以及在常用編程設(shè)計(jì)思路技巧的掌握方面都能向前邁了一大步,為日后成為一名合格的應(yīng)用型人才打下良好的基礎(chǔ)。綜合課程設(shè)計(jì)讓我把以前學(xué)習(xí)到的知識(shí)得到鞏固和進(jìn)一步的提高認(rèn)識(shí),對(duì)已有知識(shí)有了更深層次的理解和認(rèn)識(shí)。在此,由于自身能力有限,在課程設(shè)計(jì)中碰到了很多的問題,我通過查閱相關(guān)書籍、資料以及和周圍同學(xué)交流得到解決。

      通過這次交通燈的課程設(shè)計(jì),使我了解了寫畢業(yè)設(shè)計(jì)的流程和方法。為自己以后的畢業(yè)論文的設(shè)計(jì)做一次練習(xí),具有積極的意義。還有交通燈是我們生活中非常常見的一種東西,對(duì)于我們學(xué)以致用的這種能力得到了很好鍛煉,能夠?yàn)槲覀円院蟮墓ぷ饔趯W(xué)習(xí)打下基礎(chǔ)。

      由于本人的水平有限,設(shè)計(jì)中難免會(huì)有一些不合理的部分,系統(tǒng)的穩(wěn)定性還有待提高,望批評(píng)更正。

      第四篇:單片機(jī)交通燈控制程序

      #include #define uchar unsigned char #define uint unsigned int uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40 };//*************digit display port******* sbit led_w1=P1^1;sbit led_w2=P1^0;sbit led_w3=P1^3;sbit led_w4=P1^2;

      //*****define led port ********** sbit R1=P2^4;//east and west red led sbit Y1=P2^3;//east and west yellow led sbit G1=P2^2;//east and west green led sbit R2=P2^5;//south and north red led sbit Y2=P2^6;//south and north yellow led sbit G2=P2^7;//south and north green led

      //*********define key************** sbit k0=P3^0;//emergency sbit k1=P3^1;//east and west pass sbit k2=P3^2;//south and north pass sbit k3=P3^3;//start and subtract 1 sbit k4=P3^4;//pause and add 1 sbit k5=P3^5;//set time

      //*********define variable********* bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;

      //*********define key******** void delay(uint i){ uint x,y;for(x=i;x>0;x--)

      for(y=110;y>0;y--);} void timer0_init(){ TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;}

      void led_display(uchar dx,nb){ uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx>99){

      led_w1=1;

      led_w2=1;} else {

      led_w1=0;

      P0=table[dx1];

      delay(5);

      led_w1=1;

      if(dx<10&&dx>0)led_w2=1;

      else

      {

      led_w2=0;

      P0=table[dx2];

      delay(5);

      led_w2=1;

      } } if(nb>99){

      led_w3=1;

      led_w4=1;} else {

      led_w3=0;

      P0=table[nb1];

      delay(5);

      led_w3=3;

      if(nb<10&&nb>0)led_w4=1;

      else

      {

      led_w4=0;

      P0=table[nb2];

      delay(5);

      led_w4=4;

      } } } //*************light work********** void circle_led(){ if(!flag){

      if(pass_time>5)

      {

      led_display(pass_time-5,pass_time);

      R1=1;Y1=1;G1=0;

      //east and west pass

      R2=0;Y2=1;G2=1;

      //south and north stop

      }

      if(pass_time<=5&&pass_time>0)

      {

      if(cnt>=10)led_display(pass_time,pass_time);

      else led_display(100,pass_time);

      R1=1;G1=1;

      //east and west yellow led flash

      if(cnt>=10)Y1=0;

      else Y1=1;

      R2=0;Y2=1;G2=1;

      }

      if(pass_time==0)

      {

      pass_time=nb_time;

      flag=1;

      } } else {

      if(pass_time>5)

      {

      led_display(pass_time,pass_time-5);

      R1=0;Y1=1;G1=1;

      //east and west stop

      R2=1;Y2=1;G2=0;

      //south and north pass

      }

      if(pass_time<=5&&pass_time>0)

      {

      if(cnt>=10)led_display(pass_time,pass_time);

      else led_display(pass_time,100);

      R1=0;Y1=1;G1=1;

      R2=1;G2=1;

      //south and north yellow led flash

      if(cnt>=10)Y2=0;

      else Y2=1;

      }

      if(pass_time==0)

      {

      pass_time=dx_time;

      flag=0;

      } } }

      void emergency()

      //east and west,south and north stop { led_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;} void dx_pass()

      //east and west pass,south and north stop { led_display(100,100);if(y_time<=5&&y_time>0){

      TR1=1;

      R1=0;Y1=1;G1=1;

      R2=1;G2=1;

      //south and north yellow led flash

      if(cnt1>=10)Y2=0;

      else Y2=1;} if(y_time==0){

      TR1=0;

      R1=1;Y1=1;G1=0;

      R2=0;Y2=1;G2=1;} } void nb_pass()

      //south and north pass,east and west stop { led_display(100,100);if(y_time<=5&&y_time>0){

      TR1=1;

      R1=1;G1=1;

      if(cnt1>=10)Y1=0;//east and west yellow led flash

      else Y1=1;

      R2=0;Y2=1;G2=1;

      } if(y_time==0){

      TR1=0;

      R1=0;Y1=1;G1=1;

      R2=1;Y2=1;G2=0;} }

      //***********keyboard scan************ void keyscan(){

      if(!k5num)

      {

      if(k0==0)//*******emergency*******

      {

      delay(10);

      if(k0==0)

      {

      while(!k0);

      TR0=0;

      k0num=1;

      }

      }

      if(!k1num&&!k0num)

      {

      if(k1==0)

      {

      delay(10);

      if(k1==0)

      {

      while(!k1);

      k1num=1;

      k2num=0;

      y_time=5;//單方向通行時(shí),黃燈閃爍時(shí)間

      TR0=0;

      TR1=1;

      }

      }

      }

      if(!k2num&&!k0num)

      {

      if(k2==0)

      {

      delay(10);

      if(k2==0)

      {

      while(!k2);

      k1num=0;

      k2num=1;

      y_time=5;//單方向通行時(shí),黃燈閃爍時(shí)間

      TR0=0;

      TR1=1;

      }

      }

      }

      if(k3==0)

      {

      delay(10);

      if(k3==0)

      {

      while(!k3);

      if(k1num||k2num)pass_time=dx_time;//由東西或南北通行返回時(shí),重新開始執(zhí)行。

      k0num=0;

      k1num=0;

      k2num=0;

      k4num=0;

      k5num=0;

      TR0=1;

      TR1=0;

      flag_t=0;

      }

      } {

      } if(!k4&&!k0num)

      //pause { delay(10);if(k4==0){

      while(!k4);

      TR0=0;

      k4num=1;} }

      if(k4num==1)

      //暫停鍵按下時(shí),才可以調(diào)整兩個(gè)方向通行時(shí)間 if(k5==0){ delay(10);if(k5==0){

      k5num++;

      while(!k5);

      switch(k5num)

      {

      case 1:

      TR0=1;

      flag_t=1;//調(diào)整時(shí)間時(shí),pass_time值不變。

      k5num=1;

      break;

      case 2:

      k5num=2;

      break;

      case 3:

      TR0=0;

      k5num=0;

      pass_time=dx_time;//重新賦值

      break;

      } } } if(k5num!=0){ if(k3==0){

      delay(10);

      if(k3==0)

      {

      while(!k3);

      switch(k5num)

      {

      case 1:

      dx_time--;

      if(dx_time<10)

      break;

      case 2:

      nb_time--;

      if(nb_time<10)

      break;

      }

      }

      }

      if(k4==0)

      {

      delay(10);

      if(k4==0)

      {

      while(!k4);

      switch(k5num)

      {

      case 1:

      dx_time++;

      if(dx_time>=100)

      break;

      case 2:

      nb_time++;

      if(nb_time>=100)

      break;

      }

      }

      }

      } } } void main(){ timer0_init();dx_time=45;nb_time=30;

      dx_time=99;nb_time=99;dx_time=10;nb_time=10;

      pass_time=dx_time;while(1){ keyscan();if(k0num)emergency();else { switch(k4num){

      case 0:

      if(!k1num&&!k2num)

      circle_led();

      else

      {

      if(k1num)dx_pass();

      if(k2num)nb_pass();

      }

      break;

      case 1:

      switch(k5num)

      {

      case 0:

      if(!k1num&&!k2num)

      circle_led();

      else

      {

      if(k1num)dx_pass();

      if(k2num)nb_pass();

      }

      break;

      case 1:

      R1=1;Y1=1;G1=1;//調(diào)整時(shí)間時(shí),關(guān)閉所有燈

      R2=1;Y2=1;G2=1;

      if(cnt<=10)

      led_display(100,nb_time);

      else

      led_display(dx_time,nb_time);

      break;

      case 2:

      R1=1;Y1=1;G1=1;//調(diào)整時(shí)間時(shí),關(guān)閉所有燈

      R2=1;Y2=1;G2=1;

      if(cnt<=10)

      led_display(dx_time,100);

      else

      led_display(dx_time,nb_time);

      break;

      }

      break;

      }

      }

      } } void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==20){

      cnt=0;

      if(flag_t==0)pass_time--;//調(diào)整時(shí)間時(shí),不執(zhí)行此操作

      } } void timer1()interrupt 3 { TH1=(65536-50000)/256;TL1=(65536-50000)%256;cnt1++;if(cnt1==20){

      cnt1=0;

      y_time--;//單方向通行時(shí),黃燈閃爍時(shí)間。

      } }

      第五篇:交通燈單片機(jī)課程設(shè)計(jì)

      《單片機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告》

      課題:以交通燈為主的多功能任務(wù)設(shè)計(jì)

      班級(jí) 學(xué)號(hào) 學(xué)生姓名

      指導(dǎo)教師

      淮陰工學(xué)院 電子與電氣工程學(xué)院

      2015-6 1

      目錄

      一、課程設(shè)計(jì)目的......................................................................................................3

      二、設(shè)計(jì)要求..............................................................................................................3 1. 總體要求........................................................................................................3 2. 具體要求........................................................................................................3 3. 系統(tǒng)硬件總框圖............................................................................................4 1)AT89C52單片機(jī).......................................................................................5 3)數(shù)碼管顯示電路........................................................................................6 4)LED燈顯示...............................................................................................7 5)鍵盤掃描模塊............................................................................................7 6)蜂鳴器電路................................................................................................8

      三、硬件電路的設(shè)計(jì)及描述......................................................................................8 1. 硬件總框圖及原理圖....................................................................................8 2. 主程序流程圖..............................................................................................10 3. 各模塊流程圖..............................................................................................11 1)時(shí)間顯示程序流程圖..............................................................................12 2)流水燈程序流程圖..................................................................................12 3)利用蜂鳴器的音樂流程圖......................................................................13 4)交通燈控制..............................................................................................13

      四、源程序代碼........................................................................................................14

      六、調(diào)試情況

      六、設(shè)計(jì)心得............................................................................................................20

      七、參考文獻(xiàn)............................................................................................................20

      一、設(shè)計(jì)目的

      《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)是一項(xiàng)重要的實(shí)踐性教育環(huán)節(jié),是學(xué)生在校期間必須接受的一項(xiàng)工程訓(xùn)練。在課程設(shè)計(jì)過程中,在教師指導(dǎo)下,應(yīng)用工程的方法,通過一個(gè)簡單課題的設(shè)計(jì)練習(xí),可使學(xué)生初步體驗(yàn)單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)過程、設(shè)計(jì)要求、完成的工作內(nèi)容和具體的設(shè)計(jì)方法,了解必須提交的各項(xiàng)工程文件,也達(dá)到鞏固、充實(shí)和綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的目的。

      通過課程設(shè)計(jì),應(yīng)該能加強(qiáng)學(xué)生如下能力的培養(yǎng):(1)獨(dú)立工作能力和創(chuàng)造力;

      (2)綜合運(yùn)用專業(yè)及基礎(chǔ)知識(shí),解決實(shí)際工程技術(shù)問題的能力;(3)查閱圖書資料、產(chǎn)品手冊(cè)和各種工具書的能力;(4)工程繪圖的能力;

      (5)編寫技術(shù)報(bào)告和編寫技術(shù)資料的能力。

      二、設(shè)計(jì)要求

      1.總體要求

      (1)獨(dú)立完成設(shè)計(jì)任務(wù)(2)繪制系統(tǒng)硬件總框圖(3)繪制系統(tǒng)原理電路圖

      (4)制定編寫設(shè)計(jì)方案,編制軟件框圖,完成詳細(xì)完整的程序清單和注釋(5)制定編寫調(diào)試方案,編寫用戶操作使用說明書

      (6)寫出設(shè)計(jì)工作小結(jié)。對(duì)在完成以上文件過程所進(jìn)行的有關(guān)步驟如設(shè)計(jì)思想、指標(biāo)論證、方案確定、參數(shù)計(jì)算、元器件選擇、原理分析等作出說明,并對(duì)所完成的設(shè)計(jì)作出評(píng)價(jià),對(duì)自己整個(gè)設(shè)計(jì)工作中經(jīng)驗(yàn)教訓(xùn),總結(jié)收獲和今后研究方向。

      2.具體要求

      本次工程實(shí)踐的校內(nèi)部分主要以單片機(jī)為基礎(chǔ),進(jìn)行單片機(jī)軟件編程,目的 3 是為了提高學(xué)生的軟件編程和系統(tǒng)設(shè)計(jì)能力,整個(gè)設(shè)計(jì)系統(tǒng)包括兩個(gè)部分,硬件及軟件部分,硬件部分已經(jīng)制作成功,學(xué)生只需要掌握其原理和焊接相應(yīng)的元器件,掌握元器件的辨別和元器件的作用以及應(yīng)用場(chǎng)所即可,另外對(duì)所焊接的電路還需要進(jìn)行仔細(xì)的檢查,判斷是否有焊接錯(cuò)誤的地方或者短路的地方,對(duì)出現(xiàn)的異常情況要能夠根據(jù)現(xiàn)象判別原因,并具備解決問題的能力,從而切實(shí)提高學(xué)生的硬件電子電路的分析、判斷能力。

      軟件編程是本次課程設(shè)計(jì)的重要環(huán)節(jié)。在為期兩周的工程實(shí)踐中,將占據(jù)主要時(shí)間,完成的軟件編程任務(wù)主要包括以下幾點(diǎn):

      1)、熟悉Keil C51編程平臺(tái)及相關(guān)編程軟件

      2)、編寫、調(diào)試蜂鳴器、繼電器動(dòng)作、方波程序并進(jìn)行軟硬件聯(lián)調(diào) 3)、編寫、調(diào)試LED流水燈(循環(huán)顯示)程序并進(jìn)行軟硬件聯(lián)調(diào) 4)、編寫、調(diào)試鍵盤掃描子程序并進(jìn)行軟硬件聯(lián)調(diào) 5)、編寫、調(diào)試數(shù)碼管動(dòng)態(tài)掃描程序并進(jìn)行軟硬件聯(lián)調(diào) 6)、基于交通燈的多功能控制設(shè)計(jì)

      其中前五個(gè)內(nèi)容是后兩個(gè)內(nèi)容的基礎(chǔ),主要是編制一些子程序,為后繼的整個(gè)系統(tǒng)設(shè)計(jì)打下基礎(chǔ)。交通燈控制是在五個(gè)課題中選做的一個(gè)設(shè)計(jì),是一個(gè)簡單的單片機(jī)編程設(shè)計(jì),來實(shí)現(xiàn)智能交通燈的多功能作用。

      3.系統(tǒng)硬件總框圖

      圖1 系統(tǒng)設(shè)計(jì)總框圖

      此次課程設(shè)計(jì),AT89C52是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機(jī)。1)AT89C52單片機(jī)

      設(shè)計(jì)中所用的單片機(jī)型號(hào)為AT89C52,其主要功能為:

      AT89C52是低功耗、高性能的CMOS 8位單片機(jī)。片內(nèi)帶有8KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。另外,AT89C52的指令系統(tǒng)和引腳與80C52完全兼容,所以,近幾年AT89C52單片機(jī)應(yīng)用極為廣泛。

      AT89C52單片機(jī)除了含有8KB的Flash存儲(chǔ)器外,片內(nèi)還有256 B的RAM,32條I/O口線,3個(gè)16位定時(shí)/計(jì)算器、6個(gè)中斷源、1個(gè)全雙工串行口等。同時(shí),與80C52一樣,有空閑和掉電兩種節(jié)電運(yùn)行方式。

      AT89C52引腳如下圖所示:

      圖2 AT89C52引腳

      AT89C52單片機(jī)為40腳雙列直插封裝的8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。

      2)DS1302模塊

      DS1302的RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。

      其管腳圖如下:

      圖3 DS1302管腳圖

      各引腳功能:Vcc1為后備電源,VCC2為主電源,X1和X2是振蕩源,SCLK為輸入端

      RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。

      3)數(shù)碼管顯示電路

      圖4 數(shù)碼管顯示電路

      設(shè)計(jì)中采用六位共陰極數(shù)碼管,通過單片機(jī)STC89C52的P0口控制其位選和段選,以達(dá)到動(dòng)態(tài)顯示相應(yīng)數(shù)值的效果。在其位選控制部分,采用了一個(gè)9012型三極管,要求當(dāng)P0口輸出低電平時(shí),位選成功。

      所謂動(dòng)態(tài)掃描就是指我們采用分時(shí)的方法,輪流控制各個(gè)顯示器的COM端,6 使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的(約1ms),但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。

      4)LED燈顯示

      圖5 LED顯示模塊

      本次課程設(shè)計(jì)中,“程序語言”通過“翻譯”軟件“翻譯”成單片機(jī)所需的二進(jìn)制代碼,單片機(jī)可工作。要用外加電源和分壓電阻來控制低電平驅(qū)動(dòng)點(diǎn)亮,因?yàn)閱纹瑱C(jī)不能直接高電平驅(qū)動(dòng)LED燈。如圖D1-D8和R1、R2以及R6-R11連接到單片機(jī)IO口,當(dāng)P1口某腳變低時(shí)相應(yīng)LED發(fā)光。實(shí)現(xiàn)LED燈的閃爍,只需利用編程方法依次從低位到高位逐個(gè)變?yōu)榈碗娖剑却僭S時(shí)刻再變高即可。

      5)鍵盤掃描模塊

      圖6 按鍵輸入電路

      本模塊四個(gè)開關(guān)分別用于控制流水燈控制電路,時(shí)間顯示電路,音樂蜂鳴器電路,交通燈四部分功能。當(dāng)按下其中一個(gè)開關(guān)時(shí),該部分電路導(dǎo)通,給單片機(jī) 發(fā)出地址信號(hào),實(shí)現(xiàn)其中一項(xiàng)功能的運(yùn)做,如圖4所示。

      KEYA鍵:其功能是當(dāng)該鍵按下時(shí),蜂鳴器程序工作; KEYB鍵:其功能是當(dāng)該鍵按下時(shí),流水燈程序工作;

      KEYC鍵:其功能是當(dāng)該鍵按下時(shí),數(shù)碼管動(dòng)態(tài)掃描程序工作; KEYD鍵:其功能是當(dāng)該鍵按下時(shí),交通燈程序工作。

      6)蜂鳴器電

      圖7 蜂鳴器電路

      蜂鳴器單元電路是通過一個(gè)PNP三極管來放大驅(qū)動(dòng)蜂鳴器,蜂鳴器的正極接到+5V電源上面,蜂鳴器的負(fù)極接到三極管的發(fā)射極,三極管的基極經(jīng)過限流電阻后由單片機(jī)的P3.4控制。

      當(dāng)輸出高電平時(shí),三極管截止,蜂鳴器的兩引腳間的直流電壓接近于0V,沒有電流流過線圈,蜂鳴器不發(fā)聲;當(dāng)輸出低電平時(shí),三極管導(dǎo)通,使蜂鳴器的兩個(gè)引腳間獲得將接近+5V的直流電壓,這樣蜂鳴器的電流形成回路,發(fā)出聲音。因此,我們可以通過程序控制IO口輸出的電平來控制蜂鳴器是否發(fā)出聲音,實(shí)現(xiàn)各種可能音響的產(chǎn)生。

      三、硬件電路的設(shè)計(jì)及描述

      1.硬件總框圖及原理圖

      圖8 硬件總框圖

      圖9 硬件總原理圖

      2.主程序流程圖

      3.各模塊流程圖 1)時(shí)間顯示程序流程圖

      2)流水燈程序流程圖

      3)利用蜂鳴器的音樂流程圖

      4)智能交通燈

      四、源程序代碼

      /******************************************************************** * 文件名

      : 4個(gè)功能由按鍵控制.c * 描

      : 按下A鍵,實(shí)現(xiàn)蜂鳴器動(dòng)作。

      按下B鍵,實(shí)現(xiàn)LED流水燈循環(huán)顯示。

      按下C鍵,實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)掃描顯示。

      按下D鍵,實(shí)現(xiàn)交通燈功能。* 創(chuàng)建人

      ***********************************************************************/ #include #include

      #define uint unsigned int

      // 無符號(hào)整形習(xí)慣的定義

      #define uchar unsigned char

      //無符號(hào)字符型習(xí)慣的定義 void buzz_key(void);

      //子函數(shù)聲明 void led_key(void);void tube_key(void);void traffic(void);unsigned char code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 0 1 2 3 4 5 6 7 8 9

      unsigned char code weima[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

      // 選擇哪個(gè)數(shù)碼管

      unsigned char temp[6];uchar i=35;uchar k=30;uchar l=5;uchar j;uchar b;

      //定義變量

      sbit duan=P2^6;//定義管腳 sbit wei=P2^7;sbit key_A=P3^4;sbit key_B=P3^5;sbit key_C=P3^6;sbit key_D=P3^7;sbit buzz=P2^3;sbit DIOLA=P2^5;sbit csda=P3^2;sbit red=P1^0;//交通燈管腳定義 sbit green=P1^1;sbit yellow=P1^2;/******************************************************************** * 名稱 : Delay_1ms()* 功能 : 延時(shí)子程序,延時(shí)時(shí)間為 1ms * x * 輸入 : x(延時(shí)一毫秒的個(gè)數(shù))* 輸出 : 無

      ***********************************************************************/

      void Delay_1ms(unsigned int t){ unsigned char x,y;for(x=t;x>0;x--)for(y=110;y>0;y--);

      }

      /******************************************************************** * 名稱 : Main()* 功能 : 實(shí)現(xiàn)蜂鳴器,流水燈,數(shù)碼管,交通燈

      ***********************************************************************/ void main(){

      DIOLA=0;//流水燈鎖存器關(guān) 流水燈未選通

      wei=0;//位選關(guān)

      duan=1;

      P0=0;

      duan=0;

      csda=0;

      while(1){

      if(key_A==0 || key_B==0 || key_C==0|| key_D==0)

      {

      if(key_A==0)

      //A鍵按下

      {

      buzz_key();

      //調(diào)用蜂鳴器子程序

      }

      else if(key_B==0)//B鍵按下

      {

      led_key();

      //調(diào)用流水燈子程序

      }

      else if(key_C==0)//C鍵按下時(shí)

      {

      tube_key();//調(diào)用數(shù)碼管顯示子程序

      }

      else

      //D鍵按下時(shí)

      {

      traffic();

      //調(diào)用交通燈子程序

      i=35;

      k=30;

      l=5;

      return;

      }

      }

      } }

      /******************************************************************** * 名稱 : buzz_key(void)* 功能 : 蜂鳴器子程序

      ***********************************************************************/

      void buzz_key(void)

      {

      DIOLA=0;wei=0;

      buzz=0;

      //蜂鳴器響

      while(key_B&&key_C&&key_D&&!key_A);

      buzz=1;

      //關(guān)蜂鳴器

      }

      /********************************************************************* * 名稱 : led_key(void)* 功能 : 流水燈子程序

      ***********************************************************************/ void led_key(void){

      DIOLA=1;b=0xfe;

      P1=b;//11111110 while(key_B==0){

      b=_crol_(b,1);

      //左移11111101

      Delay_1ms(500);

      P1=b;

      //111111011

      Delay_1ms(500);

      }

      while(key_A&&key_B&&key_C&&key_D);

      P1=0xff;

      }

      /******************************************************************** * 名稱 : tube_key(void)* 功能 : 數(shù)碼管子程序

      ***********************************************************************/

      void tube_key(void){

      DIOLA=0;

      //流水燈使能端置0 while(key_C==0)

      { unsigned int i;

      for(i=0;i<6;i++)

      {

      wei=1;

      P0=weima[i];

      //位選信號(hào)

      wei=0;

      duan=1;

      P0=duanma[i];//段選信號(hào)

      duan=0;

      Delay_1ms(500);

      }

      duan=1;

      P0=0;

      duan=0;

      //清零

      }

      }

      /******************************************************************** * 名稱 : traffic_key(void)* 功能 : 交通燈子程序

      ***********************************************************************/

      void traffic(void)

      {

      DIOLA=0;

      while(key_D==0)

      {

      if(i>0)

      {

      DIOLA=1;

      b=0xfe;

      P1=b;//11111110

      for(j=0;j<40;j++)

      {

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[0];

      wei=0;

      duan=1;

      //第1位數(shù)碼管顯示

      P0 = duanma[(i / 10)%10];//在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)40毫秒后顯示下一個(gè)數(shù)

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[1];

      wei=0;

      duan=1;

      //第2位數(shù)碼管顯示

      P0 = duanma[i % 10];

      //在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)40毫秒后顯示下一個(gè)數(shù)

      }

      i--;

      }

      else if(k>0)

      {

      DIOLA=1;

      b=0xfd;

      P1=b;//11111110

      for(j=0;j<40;j++)

      {

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[0];

      wei=0;

      duan=1;

      //第1位數(shù)碼管顯示

      P0 = duanma[(k / 10)%10];//在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)3毫秒后顯示下一個(gè)數(shù)

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[1];

      wei=0;

      duan=1;

      //第2位數(shù)碼管顯示

      P0 = duanma[k % 10];

      //在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)3毫秒后顯示下一個(gè)數(shù)

      }

      k--;

      }

      else if(l>0)

      {

      DIOLA=1;

      b=0xfb;

      P1=b;//11111110

      for(j=0;j<40;j++)

      {

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[0];

      wei=0;

      duan=1;

      //第1位數(shù)碼管顯示

      P0 = duanma[(l / 10)%10];//在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)3毫秒后顯示下一個(gè)數(shù)

      P0 = 0;

      wei=1;

      //消隱

      P0 = weima[1];

      wei=0;

      duan=1;

      //第2位數(shù)碼管顯示

      P0 = duanma[l % 10];

      //在這里取 i 的個(gè)位數(shù)

      Delay_1ms(40);

      //延時(shí)3毫秒后顯示下一個(gè)數(shù)

      }

      l--;

      }

      }

      }

      五、設(shè)計(jì)心得

      通過兩個(gè)星期的實(shí)驗(yàn),我的設(shè)計(jì)雖然有一些毛病,但總體上還是成功的。兩周的時(shí)間雖然短暫,但我從中受益匪淺,畢竟在課堂學(xué)習(xí)到的東西真真正正的用到實(shí)際中還是有很大困難的,要把理論運(yùn)用于實(shí)踐確實(shí)并非一件易事。我從最初的設(shè)想設(shè)計(jì)一個(gè)什么樣的數(shù)字電路到繪制電路圖,然后打印排版,最后矯正設(shè)計(jì)中的漏洞與不足,整個(gè)過程我翻閱了大量的資料。

      這次交通燈的課程設(shè)計(jì),也使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決現(xiàn)實(shí)問題的能力。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用學(xué)習(xí)過程中,以及在常用編程設(shè)計(jì)思路技巧的掌握方面都能向前邁了一大步,為日后成為一名合格的應(yīng)用型人才打下良好的基礎(chǔ)。綜合課程設(shè)計(jì)讓我把以前學(xué)習(xí)到的知識(shí)得到鞏固和進(jìn)一步的提高認(rèn)識(shí),對(duì)已有知識(shí)有了更深層次的理解和認(rèn)識(shí)。在此,由于自身能力有限,在課程設(shè)計(jì)中碰到了很多的問題,我通過查閱相關(guān)書籍、資料以及和周圍同學(xué)交流得到解決。

      還有交通燈是我們生活中非常常見的一種東西,對(duì)于我們學(xué)以致用的這種能力得到了很好鍛煉,能夠?yàn)槲覀円院蟮墓ぷ饔趯W(xué)習(xí)打下基礎(chǔ)。

      六、參考文獻(xiàn)

      1.《單片機(jī)原理及接口技術(shù)》 李朝青 北京航空航天大學(xué)出版社,2004 2.《單片機(jī)原理及應(yīng)用》 李全力 高等教育出版社,2001 3.《電子系統(tǒng)設(shè)計(jì)與實(shí)踐》 楊剛,周群 電子工業(yè)出出版社,1997 4.《單片機(jī)微型計(jì)算機(jī)技術(shù)》 劉國榮 機(jī)械工業(yè)出版社,1997 5.《數(shù)字電子技術(shù)》 楊志忠 高等教育出版社,2003 6.《電子技術(shù)》 胡宴如 高等教育出版社,2001 7.《電子線路CAD》 王延才 機(jī)械工業(yè)出版社,2001 8.《單片機(jī)應(yīng)用技術(shù)選編》 何利民 北京航空航天大學(xué)出版社,1996 9.《單片機(jī)應(yīng)用技術(shù)》 吳國經(jīng) 中國電力出版社,2004 10.《單片機(jī)及接口技術(shù)實(shí)踐教程》 胡健 北京機(jī)械工業(yè)出版社,2002 11.《使用接口技術(shù)》 李廣軍 成都電子科技大學(xué)出版社,1998

      下載單片機(jī)控制交通燈的案例word格式文檔
      下載單片機(jī)控制交通燈的案例.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)[5篇范文]

        摘要 本設(shè)計(jì)是單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)。由單片機(jī)系統(tǒng)、LED顯示、交通燈演示系統(tǒng)、鍵盤電路及其控制電路組成。該系統(tǒng)除基本交通燈功能外,還具有倒計(jì)時(shí)、緊急情況處理......

        單片機(jī)定時(shí)器控制交通燈程序1(精選5篇)

        定時(shí)器控制交通指示燈 /* 名稱:定時(shí)器控制交通指示燈說明:東西向綠燈亮5s后,黃燈閃爍,閃爍5次亮紅燈, 紅燈亮后,南北向由紅燈變成綠燈,5s后南北向黃燈閃爍, 閃爍5次后亮紅燈,東西向綠......

        單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)范文大全

        交通燈控制系統(tǒng)設(shè)計(jì) 摘要:本系統(tǒng)由單片機(jī)系統(tǒng)、鍵盤、LED 顯示、交通燈演示系統(tǒng)組成。系統(tǒng)包括人行道、左轉(zhuǎn)、右轉(zhuǎn)、以及基本的交通燈的功能。系統(tǒng)除基本交通燈功能外,還具有......

        基于單片機(jī)的交通燈設(shè)計(jì)

        基于單片機(jī)的交通燈設(shè)計(jì) 設(shè)計(jì)程序: #include #define uchar unsigned char /**************************變量、控制位定義**************************/ uchar code table[10......

        基于單片機(jī)的交通燈控制系統(tǒng)

        單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告基于單片機(jī)的交通燈控制系統(tǒng) 1 引言 單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、......

        51單片機(jī)控制交通燈原理圖及C語言程序

        Proteus仿真原理圖:Keil C源程序: #include #define uchar unsigned char #define uint unsigned int sbit RED_DONGXI = P1^0;//南北方向紅燈亮 sbit YELLOW_DONGXI =......

        單片機(jī)帶應(yīng)急的交通燈控制實(shí)驗(yàn)程序(精選)

        單片機(jī)帶應(yīng)急的交通燈控制實(shí)驗(yàn)(匯編) org 00h ajmp main org 0003h ajmp int_ red_we equ p1.1 yel_we equ p1.2 gre_we equ p1.3 red_sn equ p1.5 yel_sn equ p1.6 gre_sn e......

        單片機(jī)AT89C52十字路口交通燈控制C語言程序

        單片機(jī)AT89C52十字路口交通燈控制程序 東西方向60秒,南北方向57秒#include #define uchar unsigned char #define uint unsigned int #define ON 0 #define OFF 1 sbit NS_G......