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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8543|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

基于51單片機(jī)的智能交通燈仿真設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:168523 發(fā)表于 2017-10-26 17:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
交通燈設(shè)計(jì)仿真文件:



單片機(jī)源程序如下:
  1. #include<reg51.h>                                         // 對(duì)單片機(jī)的口進(jìn)行了定義
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,      
  5.                 0x6d,0x7d,0x07,0x7f,0x6f      /*0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10*/};//段碼組合,共陽極
  6. uchar code b[4]={0x01,0x02,0x04,0x08}; //位碼組合         
  7. uchar code c[4]={0xcc,0xd4,0x78,0xb8};//P1 綠紅、黃紅、紅綠、紅黃                  
  8. uchar NB=25,DX=30,NBG=25,DXG=15,H=5;  //數(shù)碼管顯示值設(shè)置
  9. uchar i,k=0,cnt=0,j=0;
  10. sbit K0=P3^4;               //南北路道通行
  11. sbit K1=P3^5;               //東西路道通行
  12. sbit K4=P3^6;               //返回
  13. sbit K3=P3^2;              //設(shè)置時(shí)間
  14. sbit K2=P3^3;              //緊急剎車

  15. void delay(uchar t);       //定義延時(shí)程序
  16. void key();                //定義鍵盤程序
  17. void display();            //定義顯示程序
  18. void settime();            //定義時(shí)間設(shè)置顯示程序
  19. //*************************程序初始*********************************************
  20. void init()
  21. {
  22.         TMOD=0x01;   //使用定時(shí)器0模式一
  23.         TH0=(65536-5000)/256;   
  24.         TL0=(65536-5000)%256;  
  25.         IT0=1;      //開中斷
  26.         ET0=1;                //定時(shí)器T1中斷允許
  27.         TR0=1;                //啟動(dòng)定時(shí)器0
  28.         EA=1;            //開總中斷
  29.         EX0=1;
  30.         EX1=1;
  31.         P1=c[k];    //開啟交通燈
  32. }
  33. //*************************中斷0處理程序***************************************
  34. void int0(void) interrupt 0    //通行時(shí)間設(shè)置
  35. {         
  36.     EA=0;           //關(guān)中斷
  37.     P1=0xd8;       //紅燈全亮
  38.     for(;;)
  39.         {
  40.          settime();
  41.          if(K1==0)   //設(shè)置東西路通行時(shí)間
  42.            {  
  43.             delay(10);          //按鍵消抖,按鍵是否按下
  44.             if(K1==0)
  45.               {
  46.                while(!K1)           //按鍵是否松開
  47.                     {
  48.                                  settime();
  49.                                 }
  50.                DXG++;           //東西路通行時(shí)間加1
  51.                if(DXG==99)
  52.                DXG=0;                        
  53.              }
  54.            }
  55.          
  56.          if(K0==0)          //設(shè)置南北路通行時(shí)間         
  57.            {  
  58.             delay(10);
  59.             if(K0==0)
  60.               {
  61.                while(!K0)
  62.                      {
  63.                                   settime();
  64.                                  }
  65.                NBG++;          //南北路通行時(shí)間加1
  66.                if(NBG==99)
  67.                NBG=0;               
  68.              }
  69.            }
  70.          
  71.           if(K4==0)                  //返回
  72.             {  
  73.              delay(10);        
  74.              if(K4==0)
  75.                {
  76.                 while(!K4)
  77.                      {
  78.                                           settime();
  79.                      }
  80.                 k=0;
  81.                                 P1=c[k];
  82.                 NB=NBG,DX=NBG+H;        
  83.                 display();
  84.                 EA=1;         
  85.                 break;
  86.               }                       
  87.            }
  88.          }
  89. }


  90. //***********************************中斷1處理程序********************
  91. void int1(void) interrupt 2                                         //緊急情況
  92. {                                                                                          
  93.                                  /*東西南北紅燈亮*/
  94.         EA=0;                                                                        
  95.         TR0=!TR0;                    /*停止計(jì)數(shù)*/

  96.         for(;;)                                                                   /*主支干道顯示全為0*/
  97.         {         
  98.            P1=0xd8;
  99.            P0=a[0];
  100.                    P2=b[0];
  101.            delay(10);
  102.            
  103.            P2=b[1];
  104.            delay(10);

  105.            P2=b[2];
  106.            delay(10);

  107.            P2=b[3];
  108.            delay(10);
  109.            if(K4==0)                    /*返回*/
  110.               {
  111.                 delay(10);
  112.                 EA=1;   
  113.                 P1=c[k];                                 /*返回緊急前狀態(tài)開始計(jì)數(shù)*/
  114.                 TR0=!TR0;                                                /*重啟計(jì)數(shù)*/
  115.                 break;                                                           
  116.               }
  117.         }
  118. }
  119. void time1(void) interrupt 1          /*交通燈控制程序*/
  120. {
  121.         TH0=(65536-5000)/256;      /*定時(shí)50ms*/
  122.         TL0=(65536-5000)%256;                                                                                         
  123.         cnt++;
  124.         if(cnt>=20)                                                /*每20*50ms=1s自減一*/
  125.         {
  126.           NB--;
  127.           DX--;
  128.           cnt=0;
  129.           if(NB==0||DX==0)
  130.             {
  131.               k++;
  132.               if(k>3)                                                                        /*k取0,1,2,3*/
  133.               k=0;
  134.               switch(k)
  135.                   {        
  136.                    case 0:NB=NBG,DX=NBG+H;j=0;P1=c[k];break;          /*主干道通行顯示綠紅*/
  137.                    case 1:NB=H;j=1;P1=c[k];break;                                           /*主干道黃燈閃爍*/
  138.                    case 2:NB=DXG+H,DX=DXG;j=0;P1=c[k];break;          /*支干道通行顯示紅綠*/
  139.                    case 3:DX=H;j=2;P1=c[k];break;                                           /*支干道黃燈閃爍*/
  140.                   }
  141.             }                 
  142.         }
  143. }
  144. /***************************延時(shí)程序延時(shí)1ms *****************************/
  145. /*void delay(uchar t)                           
  146. {
  147.   uchar i,j;
  148.   for(i=0;i<t;i++)  
  149.       for(j=0;j<120;j++);
  150.   
  151. }*/
  152. void delay(uchar t)                         //延時(shí)程序延時(shí)0.1*nms   
  153. {
  154.   uchar i;
  155.   do
  156.    {
  157.      for(i=0;i<20;i++)
  158.      ;;;
  159.    } while(t--);
  160. }


  161. /*************************時(shí)間設(shè)定函數(shù)**********************/
  162. void settime()
  163. {
  164.   P2=b[0],P0=a[(NBG+H)%10];        /*顯示主干道通行時(shí)間         */
  165.   delay(10);
  166.                   
  167.   P2=b[1],P0=a[(NBG+H)/10];        
  168.   delay(10);
  169.                   
  170.   P2=b[2],P0=a[(DXG+H)%10];                /*顯示支干道通行時(shí)間*/
  171.   delay(10);
  172.                   
  173.   P2=b[3],P0=a[(DXG+H)/10];        
  174.   delay(10);
  175. }
  176. /*******************鍵盤程序用KO K1模擬一道有車一道無車        *****************/
  177. void  key()                              
  178. {
  179. if(K1==0)           //南北通行,東西禁止
  180.    {  
  181.     delay(10);
  182.     if(K1==0)                        
  183.       {
  184.        while(!K1)
  185.            {  
  186.             display();
  187.            }
  188.        k=0,P1=c[k];cnt=0;
  189.        NB=NBG, DX=NBG+H;
  190.        display();
  191.        }
  192.     }
  193.     if(K0==0)         //東西通行,南北禁止
  194.      {  
  195.       delay(10);
  196.       if(K0==0)
  197.          {
  198.           while(!K0)
  199.           {
  200.            display();
  201.           }
  202.           k=2,P1=c[k];cnt=0;
  203.           NB=DXG+H,DX=DXG;
  204.           display();
  205.          }
  206.      }
  207. }
  208. /*******************************數(shù)碼管顯示程序        ***********************/
  209. void display()               
  210.      {
  211.       
  212.           P2=b[0],P0=a[NB%10];  //由k的不同值進(jìn)入確定顯示數(shù)值
  213.       delay(10);   
  214.       P2=b[1],P0=a[NB/10];
  215.       delay(10);  
  216.       P2=b[2],P0=a[DX%10];
  217.       delay(10);                                             
  218.       P2=b[3],P0=a[DX/10];
  219.       delay(10);
  220.      }

  221. /************************************主程序函數(shù)*********************/
  222. void main(void)
  223. {                //主程序
  224. init();      
  225. for(;;)
  226.     {
  227.      display();
  228.      key();   
  229.      //黃燈閃爍程序
  230.      while(j==1)                             //主干道黃燈閃爍
  231.           {                                                                                                               
  232.            P1=0xdc;                          //給黃燈一高電平黃燈滅                 
  233.            for(i=83;i>0;i--)
  234.                       {display();}                    //執(zhí)行for循環(huán)延時(shí)                        
  235.                P1=c[k];                         //再給黃燈一低電平黃燈亮
  236.                for(i=83;i>0;i--)
  237.                              {display();}
  238.                         }
  239.      while(j==2)
  240.          {                                //支干道黃燈閃爍         
  241.           P1=0xf8;
  242.           for(i=83;i>0;i--){display();}
  243.           P1=c[k];
  244.           for(i=83;i>0;i--){display();}
  245.          }                                                                        
  246.      
  247.          
  248.                
  249.      }
  250. }
復(fù)制代碼

管理提醒:作者發(fā)布的源文件由于 多人回帖說有問題 已經(jīng)被刪除,大家可以參考:http://www.zg4o1577.cn/bbs/dpj-118303-1.html

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

使用道具 舉報(bào)

來自 2#
ID:554654 發(fā)表于 2020-3-15 12:36 | 只看該作者
仿真與截圖不符
回復(fù)

使用道具 舉報(bào)

板凳
ID:242454 發(fā)表于 2017-10-27 09:58 | 只看該作者
這是用的什么仿真軟件
回復(fù)

使用道具 舉報(bào)

地板
ID:168523 發(fā)表于 2017-10-28 17:40 | 只看該作者
不錯(cuò)的設(shè)計(jì),支持
回復(fù)

使用道具 舉報(bào)

5#
ID:89286 發(fā)表于 2017-10-28 22:49 | 只看該作者
thanks for sharing
回復(fù)

使用道具 舉報(bào)

6#
ID:314436 發(fā)表于 2018-4-27 21:14 來自手機(jī) | 只看該作者
非常感謝
回復(fù)

使用道具 舉報(bào)

7#
ID:405631 發(fā)表于 2018-10-5 17:54 | 只看該作者

protues
回復(fù)

使用道具 舉報(bào)

8#
ID:405918 發(fā)表于 2018-10-7 17:15 | 只看該作者
挺好的,謝謝分享
回復(fù)

使用道具 舉報(bào)

9#
ID:406373 發(fā)表于 2018-10-8 10:17 | 只看該作者
挺好的 3q
回復(fù)

使用道具 舉報(bào)

10#
ID:659446 發(fā)表于 2019-12-9 11:26 | 只看該作者
數(shù)碼管時(shí)間會(huì)不會(huì)太短了
回復(fù)

使用道具 舉報(bào)

11#
ID:662757 發(fā)表于 2019-12-12 20:37 | 只看該作者

Protues
回復(fù)

使用道具 舉報(bào)

12#
ID:638551 發(fā)表于 2019-12-18 17:00 | 只看該作者
仿真與截圖不符
回復(fù)

使用道具 舉報(bào)

13#
ID:666600 發(fā)表于 2019-12-19 21:01 | 只看該作者
電路圖怎么不正確可以發(fā)我一份嗎
回復(fù)

使用道具 舉報(bào)

14#
ID:707309 發(fā)表于 2020-3-17 21:26 | 只看該作者
正在學(xué)習(xí),謝謝分享
回復(fù)

使用道具 舉報(bào)

15#
ID:745177 發(fā)表于 2020-5-9 16:34 | 只看該作者

為什么我打不開
回復(fù)

使用道具 舉報(bào)

16#
ID:247623 發(fā)表于 2020-5-23 15:38 | 只看該作者
審核的人能不能自己打開測(cè)試一下,什么東西啊,仿真圖紙不全,另外仿真結(jié)果錯(cuò)誤,浪費(fèi)我們黑幣啊

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
51hei團(tuán)團(tuán) + 15 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区av在线播放 | 99久久久国产精品 | 国产精品一区二区视频 | 久草在线 | 国产探花在线精品一区二区 | 亚洲一区二区精品视频在线观看 | 久久精品国产一区二区电影 | 区一区二在线观看 | 国产良家自拍 | 国产精品久久久久久久岛一牛影视 | 亚洲国产专区 | 日本黄色不卡视频 | 中文字幕视频在线观看 | 国产激情综合五月久久 | 久久精品欧美一区二区三区不卡 | 欧美激情久久久 | 欧美亚洲视频在线观看 | 精品乱码一区二区 | 狠狠干天天干 | 亚洲精品在线播放 | 欧美日韩亚洲成人 | 亚洲人成人一区二区在线观看 | 国产精品日韩欧美一区二区三区 | 色综合国产 | 天天精品在线 | 国产精品综合久久 | 久久国产精品免费一区二区三区 | 中文字幕一区在线 | 在线国产一区 | 美女视频h | 成年人网站在线观看视频 | 久久久精品一区 | 羞羞视频网站免费看 | 久久久久黄色 | 涩涩视频在线观看 | av中文字幕网站 | 成人福利在线观看 | 免费一看一级毛片 | 久久在视频| 国产精品无码专区在线观看 | 亚洲欧美日韩久久久 |