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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:411308 發(fā)表于 2018-10-17 19:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
交通信號燈仿真原理圖如下(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采用跳沿觸發(fā)方式
  19.         IT0=1;                                   //外部中斷0采用跳沿觸發(fā)方式
  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為高優(yōu)先級
  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++)  //執(zhí)行30秒恢復正常
  150.                  {
  151.                    delayn(1000);
  152.                    P1=0XDE;
  153.                  }
  154. ……………………

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

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


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产一区 | 最新伦理片| 成人在线一区二区 | 91亚洲国产亚洲国产 | 亚洲精品国产一区 | 成人在线视频网站 | 午夜视频一区 | 成人在线中文字幕 | 免费观看www7722午夜电影 | 欧美精品久久久久 | 极品国产视频 | 国产精品精品视频一区二区三区 | 日日操夜夜操天天操 | 欧美一级淫片免费视频黄 | 久久婷婷av| 在线观看视频中文字幕 | 视频一区二区在线 | 久久精品成人 | 成人综合久久 | 一级毛片视频在线 | 蜜臀久久99精品久久久久久宅男 | 五月婷婷在线播放 | 一区观看 | 亚洲一区 中文字幕 | 日韩一区二区免费视频 | 91亚洲国产成人久久精品网站 | 黄网站在线播放 | 尤物在线视频 | 久久精品国产免费看久久精品 | 日韩精品一区二区三区在线观看 | 欧美精品久久久久 | 久久久久久国产精品免费 | 伊人久久成人 | 久久久国产精品视频 | 精品国产精品国产偷麻豆 | 久久久性 | 国产在线1区| 国产免费一区二区 | 国产免费一二三区 | 中国一级大黄大片 | 国产午夜视频 |