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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9512|回復: 2
收起左側

單片機紅綠燈程序加proteus仿真

[復制鏈接]
ID:156348 發表于 2016-12-20 20:38 | 顯示全部樓層 |閱讀模式
單片機紅綠燈程序加仿真
0.png

  1. /****************************************************************                                                                 *
  2. *第一個狀態:主干道、支干道均亮紅燈5S                             *
  3. *第二個狀態:主干道亮綠燈30S、支干道亮紅燈                        *
  4. *第三個狀態:主干道綠燈閃3次轉亮黃燈、支干道亮紅燈3S              *
  5. *第四個狀態:主干道亮紅燈、支干道亮綠燈25S                        *
  6. *第五個狀態:主干道亮紅燈、支干道綠燈閃3次轉亮黃燈3S              *
  7. *返回到第二個狀態                                                 *
  8. *                                                                 *
  9. ***************************************************************/
  10. /* 11.0952M晶振*/
  11. #include<reg51.h>//頭文件
  12. #include<intrins.h>//頭文件
  13. #define  uchar  unsigned  char//宏定義
  14. #define  uint   unsigned   int//宏定義
  15. sbit   RED_ZHU    =  P1^0;
  16. sbit   YELLOW_ZHU =  P1^1;
  17. sbit   GREEN_ZHU  =  P1^2;
  18. sbit   RED_ZHI    =  P1^3;
  19. sbit   YELLOW_ZHI =  P1^4;
  20. sbit   GREEN_ZHI  =  P1^5;
  21. uint aa, bai,shi,ge,bb; //定義變量
  22. /*數碼管顯示0-9*/
  23. uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  24. /*子函數聲明*/
  25. void  delay(uint z);
  26. void  delay0(uint z);
  27. //void  init(uint a);
  28. void  display(uint shi,uint ge);
  29. void  xtimer0();
  30. void  init1();
  31. void  init2();
  32. void  init3();
  33. void  init4();
  34. void  init5();
  35. void xint1();
  36. void xint0();
  37. void  LED_ON();
  38. void  LED_OFF();
  39. /*********************************************************
  40.    主函數
  41. *********************************************************/
  42. void main()
  43. {       
  44.         P0=0XFF;
  45.         P1=0xFF;
  46.            P2=0xFF;
  47.         EA=1;//打開外部中斷
  48.         EX0=1;//允許外部中斷0中斷
  49.         IT0=0;//INT0為沿觸發方式
  50.           init1();
  51.   while(1)
  52.   {
  53.                   init2();//第2個狀態
  54.                 init3(); //第3個狀態
  55.                 init4(); //第4個狀態
  56.                  init5();//第5個狀態       
  57.   }
  58. }

  59. void  init1()//第一個狀態:主干道、支干道均亮紅燈5S
  60. {
  61.         uint temp;
  62.         temp=6;//變量賦初值
  63.         TMOD=0x01;//定時器0工作于方式1
  64.         TH0=0x4c;
  65.         TL0=0x00;//定時器賦初值
  66.         EA=1;//開外部中斷
  67.         ET0=1;//開定時中斷
  68.         TR0=1;//開定時器0
  69.         while(1)
  70.         {
  71.                 RED_ZHU=0;              //第一個狀態主干道、支干道均亮紅燈5S
  72.                    RED_ZHI=0;
  73.                 GREEN_ZHU=1;
  74.                 GREEN_ZHI=1;
  75.                 YELLOW_ZHU=1;
  76.                 YELLOW_ZHI=1;
  77.                 if(aa==10)//定時20*50MS=1S
  78.                 {
  79.                         aa=0;//定時完成一次后清0
  80.                         temp--;//變量自增
  81.                         //delay(10);
  82.                         if(temp>250)//定時100S
  83.                         {
  84.                                 temp=6;//變量清0
  85.                                 break;
  86.                         }
  87.                         shi=temp%100/10;//顯示十位
  88.                         ge=temp%10;//顯示個位         
  89.                 }
  90.                 display(ge,shi);
  91.         }
  92. }

  93. void  init2()//第二個狀態:主干道亮綠燈30S、支干道亮紅燈
  94. {
  95.         uint temp;
  96.         temp=31;//變量賦初值
  97.         TMOD=0x01;//定時器0工作于方式1
  98.         TH0=0x4c;
  99.         TL0=0x00;//定時器賦初值
  100.         EA=1;//開外部中斷
  101.         ET0=1;//開定時中斷
  102.         TR0=1;//開定時器0
  103.         while(1)
  104.         {         
  105.                 RED_ZHU=1;
  106.                 RED_ZHI=0;
  107.                 GREEN_ZHU=0;
  108.                 GREEN_ZHI=1;
  109.                 YELLOW_ZHU=1;//第二個狀態:主干道亮綠燈30S、支干道亮紅燈
  110.                    YELLOW_ZHI=1;
  111.                
  112.                 if(aa==20)//定時20*50MS=1S
  113.                 {
  114.                         aa=0;//定時完成一次后清0
  115.                         temp--;//變量自增
  116.                         if(temp==4)//定時100S
  117.                         {
  118.                                 temp=30;//變量清0
  119.                                 break;
  120.                         }
  121.                         shi=temp%100/10;//顯示十位
  122.                         ge=temp%10;//顯示個位
  123.                 }
  124.                 display(ge,shi);
  125.         }
  126. }

  127. void  init3() //第三個狀態:主干道綠燈閃3次轉亮黃燈、支干道亮紅燈3S
  128. {
  129.         uint temp;
  130.         temp=4;//變量賦初值
  131.         TMOD=0x01;//定時器0工作于方式1
  132.         TH0=0x4c;
  133.         TL0=0x00;//定時器賦初值
  134.         EA=1;//開外部中斷
  135.         ET0=1;//開定時中斷
  136.         TR0=1;//開定時器0
  137.         while(1)
  138.         {
  139.                 RED_ZHI=0;
  140.                 GREEN_ZHU=1;
  141.                 //YELLOW_ZHU=~YELLOW_ZHU;
  142.                 if(aa==20)//定時20*50MS=1S
  143.                 {
  144.                         aa=0;//定時完成一次后清0
  145.                         temp--;//變量自增
  146.                         YELLOW_ZHU=~YELLOW_ZHU;
  147.                         if(temp>200)//定時100S
  148.                         {
  149.                                 temp=4;//變量清0
  150.                                 break;
  151.                         }
  152.                         shi=temp%100/10;//顯示十位
  153.                         ge=temp%10;//顯示個位         
  154.                 }
  155.                 display(ge,shi);;
  156.         }
  157. }
  158. void  init4()//第四個狀態:主干道亮紅燈、支干道亮綠燈25S
  159. {
  160.         uint temp;
  161.         temp=26;//變量賦初值
  162.         TMOD=0x01;//定時器0工作于方式1
  163.         TH0=0x4c;
  164.         TL0=0x00;//定時器賦初值
  165.         EA=1;//開外部中斷
  166.         ET0=1;//開定時中斷
  167.         TR0=1;//開定時器0
  168.         while(1)
  169.         {       
  170.                 RED_ZHU=0;
  171.                 RED_ZHI=1;
  172.                 YELLOW_ZHU=1;//第一個狀態主干道、支干道均亮紅燈5S
  173.                    GREEN_ZHI=0;
  174.                 if(aa==20)//定時20*50MS=1S
  175.                 {
  176.                         aa=0;//定時完成一次后清0
  177.                         temp--;//變量自增
  178.                         if(temp==4)//定時100S
  179.                         {
  180.                                 temp=25;//變量清0
  181.                                 break;
  182.                         }
  183.                         shi=temp%100/10;//顯示十位
  184.                         ge=temp%10;//顯示個位         
  185.                 }
  186.                 display(ge,shi);
  187.         }
  188. }

  189. void  init5()//第五個狀態:主干道亮紅燈、支干道綠燈閃3次轉亮黃燈3S
  190. {
  191.         uint temp;
  192.         temp=4;//變量賦初值
  193.         TMOD=0x01;//定時器0工作于方式1
  194.         TH0=0x4c;
  195.         TL0=0x00;//定時器賦初值
  196.         EA=1;//開外部中斷
  197.         ET0=1;//開定時中斷
  198.         TR0=1;//開定時器0
  199.         while(1)
  200.         {
  201.                 RED_ZHI=1;
  202.                 RED_ZHU=0;
  203.                 GREEN_ZHU=1;
  204.                 GREEN_ZHI=1;
  205.                 //YELLOW_ZHI=~YELLOW_ZHI;
  206.                 if(aa==20)//定時20*50MS=1S
  207.                 {
  208.                         aa=0;//定時完成一次后清0
  209.                         temp--;//變量自增
  210.                         YELLOW_ZHI=~YELLOW_ZHI;
  211.                         if(temp>200)//定時100S
  212.                         {
  213.                                 temp=4;//變量清0
  214.                                 break;
  215.                         }
  216.                         shi=temp%100/10;//顯示十位
  217.                         ge=temp%10;//顯示個位         
  218.                 }
  219.                 display(ge,shi);
  220.         }
  221. }
  222. /*顯示子函數*/
  223. void  display(uint shi,uint ge)
  224. {
  225.         P0=0xfd;
  226.         P2=table[shi];//顯示十位
  227.         delay0(5);
  228.         P0=0xfe;
  229.         P2=table[ge];//顯示個位
  230.         delay0(5);

  231. }
  232. void  xint0()  interrupt  0 //外部中斷0,這里用2是INT1的優先級為0
  233. {
  234.         LED_ON();
  235.        
  236. }

  237. void  LED_ON()//外部中斷0顯示子程序
  238. {
  239.                         RED_ZHI=0;
  240.                         RED_ZHU=0;
  241.                         GREEN_ZHI=1;
  242.                         GREEN_ZHU=1;
  243.                     YELLOW_ZHI=1;
  244.                         YELLOW_ZHU=1;
  245.                         delay(2);
  246.                         return ;
  247.        
  248. }
  249. /*定時中斷子函數*/
  250. void  xtimer0()  interrupt 1
  251. {
  252.         TH0=0x4c;
  253.         TL0=0x00;
  254.         aa++;
  255. }
  256. /*延時子函數*/
  257. void  delay0(uint z)
  258. {
  259.         uint i,j;
  260.         for(i=0;i<z;i++)
  261.                 for(j=0;j<110;j++);
  262. }

  263. /*********************************************************
  264.    500ms延時函數
  265.    晶振:11.0592MHz
  266. *********************************************************/
  267. void delay(unsigned char j)
  268. {
  269.    unsigned char k;
  270.    unsigned int i;
  271.    for(;j>0;j--)
  272.   {
  273.      for(i=1250;i>0;i--)
  274.      {
  275.        for(k=180;k>0;k--);
  276.      }
  277.    }
  278. }
復制代碼
0.png
全部資料下載:
交通紅綠燈.zip (78.36 KB, 下載次數: 62)
回復

使用道具 舉報

ID:216620 發表于 2017-7-2 19:39 | 顯示全部樓層
怎么改程序啊
回復

使用道具 舉報

ID:246344 發表于 2017-11-6 14:09 | 顯示全部樓層
學習一個
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线播放精品视频 | 国产精品观看 | 91视频国产一区 | 91亚洲欧美 | 一级片在线免费看 | 精品九九| 免费网站国产 | 亚洲一区二区三区四区五区中文 | 精品欧美一区二区精品久久久 | 免费成人高清在线视频 | 国产精品毛片一区二区在线看 | 久久精品亚洲一区 | 三级特黄特色视频 | 国产精品区一区二 | 亚洲成人福利视频 | 国产精品亚洲综合 | 天天综合日日夜夜 | 免费一区 | 亚洲一区二区不卡在线观看 | 午夜私人影院在线观看 | 欧美日韩精品一区二区三区四区 | 国产成人精品一区二区三区四区 | 久久久青草婷婷精品综合日韩 | 99pao成人国产永久免费视频 | 极品销魂美女一区二区 | 97人人爱| 午夜精品一区二区三区在线视频 | 亚洲一区二区三区在线播放 | 欧美日韩一本 | 超碰在线免费公开 | 色就干| 日韩精品在线免费 | 91视视频在线观看入口直接观看 | 日本精品一区二区三区在线观看 | 国产偷录叫床高潮录音 | 日本三级播放 | 亚洲91精品| 一级片免费视频 | 国产有码| 四虎成人精品永久免费av九九 | 亚洲综合中文字幕在线观看 |