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

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

QQ登錄

只需一步,快速開(kāi)始

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

交通燈設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:255438 發(fā)表于 2017-11-29 22:03 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

  1. #include<reg51.h>

  2. //--定義使用的IO口--//
  3. #define GPIO_DIG   P0
  4. #define GPIO_PLACE P1

  5. #define GPIO_TRAFFIC P2

  6. sbit RED10   = P2^0;   //左紅燈
  7. sbit GREEN10 = P2^1;   //左綠燈

  8. sbit RED11   = P2^2;   //南北紅
  9. sbit YELLOW11= P2^3;   //南北黃
  10. sbit GREEN11 = P2^4;   //南北綠

  11. sbit RED00   = P3^0;        //下人行道紅燈
  12. sbit GREEN00 = P3^1;        //下人行道綠燈

  13. sbit RED01   = P2^5;        //東西紅
  14. sbit YELLOW01= P2^6;        //東西黃
  15. sbit GREEN01 = P2^7;        //東西綠

  16. //--定義全局變量--//
  17. unsigned char code DIG_PLACE[8] = {
  18. 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位選控制   查表的方法控制

  19. unsigned char code DIG_CODE[17] = {
  20. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  21. 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  22. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼

  23. unsigned char DisplayData[8];
  24. //用來(lái)存放要顯示的8位數(shù)的值
  25. unsigned char Time, Second;                  //用來(lái)存放定時(shí)時(shí)間
  26. /*void main()
  27. {
  28.         P2=0x00;
  29.         RED00=0;
  30.         GREEN00=0;
  31.         GPIO_DIG=0xff;
  32.         GPIO_PLACE=0x00;
  33.         while(1);
  34. }        */

  35. //--聲明全局函數(shù)--//
  36. void DigDisplay(); //動(dòng)態(tài)顯示函數(shù)
  37. void Timer0Cofig(void);

  38. void main(void)
  39. {
  40.         Second = 1;

  41.         Timer0Cofig(); //定時(shí)器初始化

  42.         while(1)
  43.         {
  44.                 if(Second == 70) //總時(shí)間歸零
  45.                 {
  46.                         Second = 1;
  47.                 }

  48.                 //--南北通行,30秒--//
  49.                 if(Second < 31)
  50.                 {
  51.                         DisplayData[0] = DIG_CODE[(35 - Second) % 100 / 10]; //東西紅燈35S
  52.                         DisplayData[1] = DIG_CODE[(35 - Second) %10];

  53.                         DisplayData[2] = DIG_CODE[(30 - Second) % 100 / 10];//南北綠燈35S
  54.                         DisplayData[3] = DIG_CODE[(30 - Second) %10];

  55.                         DisplayData[4] = DIG_CODE[(35 - Second) % 100 / 10];//下紅燈35S
  56.                         DisplayData[5] = DIG_CODE[(35 - Second) %10];

  57.                         DisplayData[6] = DIG_CODE[(30 - Second) % 100 / 10];//左綠燈35S
  58.                         DisplayData[7] = DIG_CODE[(30 - Second) %10];

  59.                         DigDisplay();

  60.                         RED11 = 1;                 //南北紅燈滅
  61.                         YELLOW11 = 1;        //南北黃燈滅
  62.                         GREEN11 = 0;    //南北綠燈亮
  63.                               

  64.                         RED01 = 0;      //東西紅燈亮
  65.                         YELLOW01 = 1;        //東西黃燈滅
  66.                         GREEN01 = 1;        //東西綠燈滅

  67.                         RED10=1;                //左人行道紅燈滅
  68.                         GREEN10        = 0;    //左人行道綠燈亮

  69.                         RED00 = 0;      //下人行道紅燈亮
  70.                         GREEN00 = 1;        //下人行道綠燈滅

  71.                 }

  72.                 //--南北黃燈等待切換狀態(tài),5秒--//
  73.                 else if(Second < 36)
  74.                 {
  75.                         DisplayData[0] = DIG_CODE[(35 - Second) % 100 / 10]; //東西紅燈35S
  76.                         DisplayData[1] = DIG_CODE[(35 - Second) %10];

  77.                         DisplayData[2] = DIG_CODE[(35 - Second) % 100 / 10];//南北黃燈5S
  78.                         DisplayData[3] = DIG_CODE[(35 - Second) %10];

  79.                         DisplayData[4] = DIG_CODE[(35 - Second) % 100 / 10];//下紅燈5S
  80.                         DisplayData[5] = DIG_CODE[(35 - Second) %10];

  81.                         DisplayData[6] = DIG_CODE[(70 - Second) % 100 / 10];//左紅燈5S
  82.                         DisplayData[7] = DIG_CODE[(70 - Second) %10];

  83.                         DigDisplay();

  84.                         RED11 = 1;                 //南北紅燈滅
  85.                         YELLOW11 = 0;        //南北黃燈亮
  86.                         GREEN11 = 1;    //南北綠燈滅
  87.                               

  88.                         RED01 = 0;      //東西紅燈亮
  89.                         YELLOW01 = 1;        //東西黃燈滅
  90.                         GREEN01 = 1;        //東西綠燈滅

  91.                         RED10 = 0;                //左人行道紅燈亮
  92.                         GREEN10        = 1;    //左人行道綠燈滅

  93.                         RED00 = 0;      //下人行道紅燈亮
  94.                         GREEN00 = 1;        //下人行道綠燈滅
  95.                 }

  96.                 //--東西通行--//
  97.                 else if(Second < 66)
  98.                 {
  99.                         DisplayData[0] = DIG_CODE[(65 - Second) % 100 / 10];
  100.                         DisplayData[1] = DIG_CODE[(65 - Second) %10];

  101.                         DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];
  102.                         DisplayData[3] = DIG_CODE[(70 - Second) %10];

  103.                         DisplayData[4] = DIG_CODE[(65 - Second) % 100 / 10];
  104.                         DisplayData[5] = DIG_CODE[(65 - Second) %10];

  105.                         DisplayData[6] = DIG_CODE[(70 - Second) % 100 / 10];
  106.                         DisplayData[7] = DIG_CODE[(70 - Second) %10];
  107.                         DigDisplay();

  108.                         RED11 = 0;                 //南北紅燈亮
  109.                         YELLOW11 = 1;        //南北黃燈滅
  110.                         GREEN11 = 1;    //南北綠燈滅
  111.                               

  112.                         RED01 = 1;      //東西紅燈滅
  113.                         YELLOW01 = 1;        //東西黃燈滅
  114.                         GREEN01 = 0;        //東西綠燈亮

  115.                         RED10 = 0;                //左人行道紅燈亮
  116.                         GREEN10        = 1;    //左人行道綠燈滅

  117.                         RED00 = 1;      //下人行道紅燈滅
  118.                         GREEN00 = 0;        //下人行道綠燈亮
  119.                 }

  120.                 //--黃燈等待切換狀態(tài),5秒--//
  121.                 else
  122.                 {
  123.                         DisplayData[0] = DIG_CODE[(70 - Second) % 100 / 10];
  124.                         DisplayData[1] = DIG_CODE[(70 - Second) %10];

  125.                         DisplayData[2] = DIG_CODE[(70 - Second) % 100 / 10];
  126.                         DisplayData[3] = DIG_CODE[(70 - Second) %10];

  127.                         DisplayData[4] = DIG_CODE[(105 - Second) % 100 / 10];
  128.                         DisplayData[5] = DIG_CODE[(105 - Second) %10];

  129.                         DisplayData[6] = DIG_CODE[(70 - Second) % 100 / 10];
  130.                         DisplayData[7] = DIG_CODE[(70 - Second) %10];
  131.                         DigDisplay();

  132.                         RED11 = 0;                 //南北紅燈亮
  133.                         YELLOW11 = 1;        //南北黃燈滅
  134.                         GREEN11 = 1;    //南北綠燈滅
  135.                               

  136.                         RED01 = 1;      //東西紅燈滅
  137.                         YELLOW01 = 0;        //東西黃燈亮
  138.                         GREEN01 = 1;        //東西綠燈滅

  139.                         RED10 = 0;                //左人行道紅燈亮
  140.                         GREEN10        = 1;    //左人行道綠燈滅

  141.                         RED00 = 0;      //下人行道紅燈亮
  142.                         GREEN00 = 1;        //下人行道綠燈滅
  143.                 }
  144.         }                              
  145. }         

  146. void DigDisplay()
  147. {
  148.         unsigned char i;
  149.         unsigned int j;


  150.         for(i=0; i<8; i++)
  151.         {
  152.                 GPIO_PLACE = DIG_PLACE;           //發(fā)送位選                GPIO_DIG = DisplayData;     //發(fā)送段碼                j = 10;                                                   //掃描間隔時(shí)間設(shè)定                while(j--);                        GPIO_DIG = 0x00;               //消隱        }}
  153. void Timer0Cofig(void){        TMOD = 0x01;     //定時(shí)器0選擇工作方式1    TH0  = 0x3C;         //設(shè)置初始值,定時(shí)50MS    TL0  = 0xB0;     EA   = 1;             //打開(kāi)總中斷    ET0  = 1;                 //打開(kāi)定時(shí)器0中斷    TR0  = 1;                 //啟動(dòng)定時(shí)器0        }  
  154. void Timer0() interrupt 1{        TH0 = 0x3C;         //設(shè)置初始值        TL0 = 0xB0;        Time++;        if(Time == 20)        {                Second ++;                Time = 0;        }}
  155.                
復(fù)制代碼


000004-交通燈設(shè)計(jì).zip

375.78 KB, 下載次數(shù): 4, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩一区二区三区 | 午夜丰满寂寞少妇精品 | 国产99久久久久 | 国产一区二区中文字幕 | 成人精品鲁一区一区二区 | 日韩精品视频在线免费观看 | 日韩欧美亚洲 | 人人做人人澡人人爽欧美 | 欧美亚洲国产精品 | 日韩中文字幕一区二区 | 老头搡老女人毛片视频在线看 | 蜜桃视频在线观看免费视频网站www | 亚洲精品久久久一区二区三区 | 欧美亚洲在线 | 精品国产欧美一区二区三区成人 | 国产在线成人 | 91精品国产乱码久久久 | 夜夜草 | 精品一区二区三区四区五区 | 久久99视频免费观看 | 中文字幕国产在线 | 日本精品免费在线观看 | 国产精品污www一区二区三区 | 久久久久久久一区 | 日日夜夜精品视频 | 成人精品国产一区二区4080 | 欧美日韩不卡合集视频 | 欧美久久免费观看 | 精品国模一区二区三区欧美 | 免费看欧美一级片 | 午夜影院网站 | 久久y| 成人av播放 | 五月激情综合网 | 精品在线一区二区三区 | 国产精品久久久久久久午夜片 | 国产精品国产精品国产专区不片 | 成人免费视频在线观看 | 91精品国产乱码久久久久久久久 | 中文字幕国产 | 成人亚洲片 |