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

標(biāo)題: 單片機(jī)紅綠燈程序加proteus仿真 [打印本頁]

作者: zw1025    時間: 2016-12-20 20:38
標(biāo)題: 單片機(jī)紅綠燈程序加proteus仿真
單片機(jī)紅綠燈程序加仿真


  1. /****************************************************************                                                                 *
  2. *第一個狀態(tài):主干道、支干道均亮紅燈5S                             *
  3. *第二個狀態(tài):主干道亮綠燈30S、支干道亮紅燈                        *
  4. *第三個狀態(tài):主干道綠燈閃3次轉(zhuǎn)亮黃燈、支干道亮紅燈3S              *
  5. *第四個狀態(tài):主干道亮紅燈、支干道亮綠燈25S                        *
  6. *第五個狀態(tài):主干道亮紅燈、支干道綠燈閃3次轉(zhuǎn)亮黃燈3S              *
  7. *返回到第二個狀態(tài)                                                 *
  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. /*數(shù)碼管顯示0-9*/
  23. uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  24. /*子函數(shù)聲明*/
  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.    主函數(shù)
  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為沿觸發(fā)方式
  50.           init1();
  51.   while(1)
  52.   {
  53.                   init2();//第2個狀態(tài)
  54.                 init3(); //第3個狀態(tài)
  55.                 init4(); //第4個狀態(tài)
  56.                  init5();//第5個狀態(tài)       
  57.   }
  58. }

  59. void  init1()//第一個狀態(tài):主干道、支干道均亮紅燈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;              //第一個狀態(tài)主干道、支干道均亮紅燈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()//第二個狀態(tài):主干道亮綠燈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;//第二個狀態(tài):主干道亮綠燈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() //第三個狀態(tài):主干道綠燈閃3次轉(zhuǎn)亮黃燈、支干道亮紅燈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()//第四個狀態(tài):主干道亮紅燈、支干道亮綠燈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;//第一個狀態(tài)主干道、支干道均亮紅燈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()//第五個狀態(tài):主干道亮紅燈、支干道綠燈閃3次轉(zhuǎn)亮黃燈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. /*顯示子函數(shù)*/
  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的優(yōu)先級為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. /*定時中斷子函數(shù)*/
  250. void  xtimer0()  interrupt 1
  251. {
  252.         TH0=0x4c;
  253.         TL0=0x00;
  254.         aa++;
  255. }
  256. /*延時子函數(shù)*/
  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延時函數(shù)
  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. }
復(fù)制代碼

全部資料下載:
交通紅綠燈.zip (78.36 KB, 下載次數(shù): 62)

作者: 1663845911    時間: 2017-7-2 19:39
怎么改程序啊
作者: 弘毅無非    時間: 2017-11-6 14:09
學(xué)習(xí)一個




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本一区二区高清不卡 | 亚洲美女视频 | 99久热在线精品视频观看 | 欧美一区免费 | 亚洲精品久| 国产精品久久久亚洲 | 6080亚洲精品一区二区 | 日韩三级一区 | 成人免费网站在线 | 特级一级黄色片 | 午夜视频在线 | 自拍 亚洲 欧美 老师 丝袜 | 精品一区二区三区视频在线观看 | 免费黄色大片 | 精品香蕉一区二区三区 | 日韩欧美中文 | 黄色三级毛片 | 国产亚洲一区二区精品 | 精品国产18久久久久久二百 | 国产欧美一区二区久久性色99 | 精品国产一区二区三区在线观看 | 日韩一区二区福利视频 | 精品国产乱码久久久久久影片 | 欧美日韩国产在线观看 | aaaa网站 | 国产电影一区二区在线观看 | 一区二区免费看 | 精品国产一区探花在线观看 | 一区二区三区视频在线免费观看 | 成人免费在线播放 | 久久成人免费视频 | 狠狠爱综合网 | 国产一级视频在线观看 | 亚洲一区亚洲二区 | 久久久久久免费毛片精品 | 国产一区二区麻豆 | 99精品视频免费观看 | 免费亚洲网站 | 一区二区三区免费 | 91社影院在线观看 | 狠狠色网 |