久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2663|回復: 0
打印 上一主題 下一主題
收起左側

單片機交通信號燈TrafficLight仿真與源碼

[復制鏈接]
跳轉到指定樓層
樓主
交通信號燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1.    #include<reg51.h>
  2.    #define uchar unsigned char
  3.    #define uint unsigned int
  4.    sbit P1_0=P1^0;
  5.    sbit P1_2=P1^2;
  6.    sbit P1_3=P1^3;
  7.    sbit P1_5=P1^5;
  8.    sbit P3_0=P3^0;
  9.    sbit P3_1=P3^1;
  10.    sbit P3_4=P3^4;
  11.    sbit P3_5=P3^5;
  12.    sbit P3_6=P3^6;
  13.    sbit P3_7=P3^7;
  14.    uchar n=90,f0=0,f1=0,a=0;
  15.    uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//1-9
  16.    void init()        //初始化函數
  17.    {
  18.         IT1=1;                                   //外部中斷1采用跳沿觸發方式
  19.         IT0=1;                                   //外部中斷0采用跳沿觸發方式
  20.         TMOD=0x11;                          //T1,T0都采用方式1工作
  21.         TH0=(65536-50000)/256;//定時初值50毫秒
  22.         TL0=(65536-50000)%256;
  23.         TR0=1;                                  //啟動定時器/計數器0
  24.         IP=0X01;                           //外部中斷0為高優先級
  25.         IE=0X87;
  26.    }
  27.   void delay1()
  28.   {
  29.      uchar i,j;
  30.          for(i=0;i<10;i++)
  31.             for(j=0;j<33;j++)
  32.                    ;
  33.   }
  34.   void delayn(uint n)
  35.   {
  36.           uint i;
  37.         for(i=0;i<n;i++)
  38.         delay1();
  39.   }
  40.   void timer0() interrupt 1//定時器T0中斷,實現倒計時
  41.   {
  42.         TH0=(65536-50000)/256;
  43.         TL0=(65536-50000)%256;
  44.         a++;                       
  45.         if(a==20) //沒記一次為0.05秒,一共計20次為1秒,然后a重新歸零計數,總時間n減1
  46.         {               
  47.                 a=0;
  48.                 n--;
  49.         }               
  50.         if(f1==0)
  51.         {
  52.             P1=0XF3;//南北方向綠燈亮,東西方向紅燈亮
  53.                 if(n<=6) //綠燈閃爍倒計時計數
  54.                 {  
  55.                   if(a==10)
  56.                   {
  57.                    P1_2=!P1_2;        //綠燈閃爍
  58.                   }
  59.                 }                                                                                                   
  60.                    if(n==0)          //黃燈倒計時
  61.                    {
  62.                       delayn(500);
  63.                           P1=0XF5;
  64.                           delayn(500);
  65.                    }       
  66.         }
  67.         if(f0==0)
  68.         {
  69.                 if(n==0)
  70.                 {
  71.                         n=50;
  72.                         f1=1;
  73.                 }
  74.         }       
  75.         if(f1==1)
  76.         {
  77.             P1=0XDE;  //東西方向綠燈亮
  78.                 if(n<=6) //當時間剩6秒時綠燈閃爍
  79.                 {
  80.                 if(a==10)
  81.                  {
  82.                   P1_5=!P1_5;
  83.                  }
  84.                 }
  85.                 if(n==0)   //黃燈
  86.                  {  
  87.                     delayn(500);
  88.                         P1=0XEE;
  89.                         delayn(500);
  90.                  }
  91.                 f0=1;
  92.                 if(n==0)
  93.                 {
  94.                         n=90;
  95.                         f1=0;
  96.                         f0=0;
  97.                 }       

  98.         }
  99.   }
  100.         void display()        //倒計時計數,讓數碼管顯示相應的數字
  101.         {
  102.           while(1)
  103.           {
  104.           if(P1_0==0)
  105.           {
  106.            P0=seg[n%10];
  107.            P3_5=1;
  108.            delayn(5);
  109.            P3_5=0;
  110.            delayn(10);
  111.            P0=seg[n/10];
  112.            P3_4=1;
  113.            delayn(5);
  114.            P3_4=0;
  115.          }
  116.            if(P1_3==0)
  117.            {
  118.            P2=seg[n%10];
  119.            P3_7=1;
  120.            delayn(5);
  121.            P3_7=0;
  122.            P2=seg[n/10];
  123.            P3_6=1;
  124.        delayn(5);
  125.            P3_6=0;
  126.            delayn(10);
  127.            }
  128.           }
  129.         }
  130.    void int0() interrupt 0 //緊急情況1:四個方向都亮紅燈
  131.    {
  132.             int n2;
  133.          P3_4=P3_5=P3_6=P3_7=0;
  134.          for(n2=0;n2<40;n2++)
  135.          {
  136.            delayn(1000);
  137.            P1=0XF6;
  138.          }
  139.          
  140.    }
  141.     void int1() interrupt 2       
  142.    {
  143.              int n2,n3;
  144.           P3_4=P3_5=P3_6=P3_7=0;
  145.           if(P3_1==0)  //緊急情況2:東西方向同行,南北方向禁止通行
  146.           {
  147.              P3_0=1;
  148.                  P1=0xDE;
  149.                  for(n2=0;n2<30;n2++)  //執行30秒恢復正常
  150.                  {
  151.                    delayn(1000);
  152.                    P1=0XDE;
  153.                  }
  154. ……………………

  155. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
新建文件夾 (4).rar (292.04 KB, 下載次數: 13)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: japanhd成人| 国产精品美女久久久久久免费 | 毛片一级电影 | 国产精品美女久久久久久免费 | a免费视频 | 色播久久| 日韩欧美福利视频 | 精品久久久网站 | 久热9 | 日韩欧美在线不卡 | 精品综合久久久 | 欧美一级欧美一级在线播放 | 91久久久久久 | 九九精品在线 | 亚洲性综合网 | 国内成人免费视频 | 成人黄色电影在线观看 | 久久精品日产第一区二区三区 | 精品av| 免费成人在线网站 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 久久久久久免费毛片精品 | 久久大| 国产一区二区三区在线视频 | 黑人巨大精品欧美一区二区免费 | 久久一| 免费看黄视频网站 | www.久久艹 | 国产视频观看 | 国产成人精品网站 | 欧洲成人午夜免费大片 | 久久日本 | 久久国产精品72免费观看 | 中文字幕久久久 | 成人精品一区二区户外勾搭野战 | 国产高潮好爽受不了了夜色 | 成人一区二区在线 | 久久夜夜 | 一区二区三区四区在线视频 | 综合二区| 91精品国产高清一区二区三区 |