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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

無線交通燈設計

[復制鏈接]
跳轉到指定樓層
樓主
無線交通燈設計,C程序

原理圖.jpg (86.57 KB, 下載次數: 92)

原理圖.jpg

無線交通燈.zip

23.13 KB, 下載次數: 18, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:1 發表于 2016-9-24 13:30 | 只看該作者
樓主的程序:
  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. char count=0,num=15,i,j; /**count為定時器技術變量,num為時刻變量,i為*/
  6. char number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//
  7. bit flag=0;//1s的標識變量

  8. //交通燈控制位
  9. sbit P1_0=P1^0;               
  10. sbit P1_1=P1^1;
  11. sbit P1_2=P1^2;
  12. sbit P1_3=P1^3;
  13. sbit P1_4=P1^4;
  14. sbit P1_5=P1^5;
  15. sbit P1_6=P1^6;

  16. //數碼管顯示位控制
  17. sbit P2_0 = P2^0;               
  18. sbit P2_1 = P2^1;

  19. //PT2272接收端
  20. sbit PT2272_DDR_D0 = P3^0;
  21. sbit PT2272_DDR_D1 = P3^1;
  22. sbit PT2272_DDR_D2 = P3^2;
  23. sbit PT2272_DDR_D3 = P3^3;

  24. /*************************************************************
  25. **函數名稱:delayms()                                                                                                     
  26. **函數功能:ms延時函數                                                                                   
  27. **入口參數:延時時間 i;                                                                                                
  28. **出口參數:無                                                                                                               
  29. *************************************************************/

  30.   void delayms(unsigned char i)
  31.   {        unsigned char j         ;
  32.     while(i--)
  33.    {for(j=0;j<125;j++)
  34.    {; }        }
  35.   }

  36. /*************************************************************
  37. **函數名稱:Timer_srv() interrupt 1                                                                                                     
  38. **函數功能:定時器中斷函數                                                                                           
  39. **入口參數:無                                                                                                
  40. **出口參數:無                                                                                                               
  41. *************************************************************/
  42. Timer_srv() interrupt 1 using 1
  43. {
  44.                 TH0=0x3c;
  45.                 TL0=0xaf;                /**重新設置定時器初值**/
  46.                 count++;                //定時器計數加1,表示已經計數100ms
  47.                 if(count==10)
  48.                 {
  49.                                 count=0;
  50.                                 flag=1;
  51.                         }  //計滿10次,定時器計數變量count初始化,并標識已計時1s       
  52. }
  53. /*************************************************************
  54. **函數名稱:Display(int n)                                                                                                   
  55. **函數功能:數碼管顯示函數                                                                                           
  56. **入口參數:要顯示的數字 n                                                                                                
  57. **出口參數:無                                                                                                               
  58. *************************************************************/
  59. void Display(int n)
  60. {
  61.                         P2_0 = 1;
  62.                         P0 = number[n%10];
  63.                         delayms(1);
  64.                         P2 = 0x00;
  65.                         P2_1 = 1;
  66.                         P0 = number[n/10];
  67.                         delayms(1);
  68.                         P2 = 0x00;
  69. }
  70. /*************************************************************
  71. **函數名稱:light()                                                                                                   
  72. **函數功能:交通燈顯示                                                                                           
  73. **入口參數:無                                                                                                
  74. **出口參數:無                                                                                                               
  75. *************************************************************/
  76. void light(void)
  77. {
  78.                 while(1)
  79.                 {
  80.                         P1_0=!P1_0;  //P1.0 S1狀態打開                南北方向 紅燈
  81.                         P1_3=!P1_3;  //P1.3 S1狀態打開                東西方向 綠燈
  82.                         Display(num);       
  83.                         while(num<60&&num>5)
  84.                         {
  85.                                         while(!flag) //等待1s
  86.                                         flag = 0;
  87.                                         num --;
  88.                                         Display(num);                //60秒倒計時顯示
  89.                         }
  90.                                
  91.                         P1_0=!P1_0;        //關閉S1狀態,
  92.                         P1_3=!P1_3;
  93.                        
  94.                         P1_1=!P1_1; //打開S2狀態         南北方向  黃燈
  95.                         P1_4=!P1_4; //打開S2狀態         南北方向  黃燈
  96.                         while(num>=0&&num<=5)
  97.                         {
  98.                                         while(!flag) //等待1s
  99.                                         flag = 0;
  100.                                         num --;
  101.                                         Display(num);                //5秒倒計時顯示
  102.                         }
  103.                         P1_1=!P1_1; /*黃燈閃爍*/
  104.                         P1_4=!P1_4;
  105.                         if(0==num)
  106.                         {
  107.                                          while(!flag) //等待1s
  108.                                         flag = 0;
  109.                                         num --;
  110.                                         Display(num);       
  111.                         }        //判斷時刻為0,重置數據
  112.                        
  113.                         P1_2=!P1_2; //關閉S2狀態,打開S3狀態          南北方向  綠燈
  114.                         P1_5=!P1_5; //關閉S2狀態,打開S3狀態          東西方向  紅燈
  115.                         while(num<=30&&num>5)
  116.                         {
  117.                                         while(!flag) //等待1s
  118.                                         flag = 0;
  119.                                         num --;
  120.                                         Display(num);          //30秒倒計時顯示
  121.                         }
  122.                         P1_2=!P1_2;         //關閉S3
  123.                         P1_5=!P1_5;
  124.                        
  125.                         P1_1=!P1_1;                //打開S2
  126.                         P1_4=!P1_4;         
  127.                         while(num>=0&&num<=5)
  128.                         {
  129.                                         while(!flag) //等待1s
  130.                                         flag = 0;
  131.                                         num --;
  132.                                         Display(num);                 //5秒倒計時顯示
  133.                         }
  134. P1_0=!P1_0; /*閃爍*/
  135.                         if(0==num)
  136.                         {
  137.                                          while(!flag) //等待1s
  138.                                         flag = 0;
  139.                                         num = 60;          //重置計數
  140.                         }       
  141.                 }
  142. }
  143. /*************************************************************
  144. **函數名稱:PT2272_init()                                                                                                   
  145. **函數功能:PT2272初始化函數                                                                                           
  146. **入口參數:無                                                                                                
  147. **出口參數:無                                                                                                               
  148. *************************************************************/
  149. void PT2272_init(void)
  150. {
  151.         PT2272_DDR_D0&= ~(PT2272_DDR_D0);
  152.         PT2272_DDR_D1 &= ~(PT2272_DDR_D1);
  153.         PT2272_DDR_D2 &= ~(PT2272_DDR_D2);
  154.         PT2272_DDR_D3 &= ~(PT2272_DDR_D3);
  155. }
  156. /***************主函數**************************/
  157. void main()
  158. {
  159.                 TMOD = 0x01;
  160.                 TH0=0x3c;
  161.                 TL0=0xaf;
  162.                 EA=1;
  163.                 TR0=1;/*開定時器0中斷*/
  164.                 P0 = 0x00;  /*初始化P0*/
  165.                 PT2272_init();//PT2272初始化
  166.                 light();/*調用顯示子程序*/
  167.                 while(1);        
  168. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线综合 | 久久av一区 | 国产精品视频久久 | 99亚洲国产精品 | 欧美一二区 | 中文字幕视频网 | 99亚洲精品 | 91精品久久久久久久久 | 超级黄色一级片 | 日韩欧美综合在线视频 | 久久久不卡网国产精品一区 | 天天爽网站 | 久久精品亚洲一区二区三区浴池 | a级在线 | 亚洲欧美在线一区 | www.久| 国产精品视频一二三区 | 91视频一88av | 福利片一区二区 | 色综合成人网 | 中文字幕日韩欧美一区二区三区 | 欧美日本一区 | 亚洲成人免费观看 | 国产精品18久久久久久白浆动漫 | 婷婷二区 | 亚洲国产成人av好男人在线观看 | 99久久中文字幕三级久久日本 | 日本黄色片免费在线观看 | 久久久久亚洲精品 | 午夜在线精品偷拍 | 四虎免费视频 | 亚洲国产成人精品女人久久久野战 | 欧美日韩亚洲国产 | 精品久久一区 | 91精品入口蜜桃 | 精品国产aⅴ | 日韩视频免费在线 | 国产午夜精品一区二区三区嫩草 | 亚洲精品欧美一区二区三区 | 精品欧美一区二区三区久久久小说 | 国产精品一区二区欧美黑人喷潮水 |