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

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

QQ登錄

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

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

單片機(jī)交通燈設(shè)計(jì)(東西南北四個(gè)方向分別添加紅、黃、綠交通信號(hào)燈)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:322586 發(fā)表于 2018-5-5 10:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
、任務(wù)功能介紹:
(1)四位數(shù)碼管計(jì)時(shí),分別代表小時(shí)和分鐘(為了便于演示,可加快時(shí)間,實(shí)際是最高兩位按分鐘變動(dòng),低兩位按秒變動(dòng))
(2)兩個(gè)獨(dú)立按鍵,分別對(duì)小時(shí)數(shù),分鐘數(shù)修改(按一下加一個(gè)值)
(3)東西南北四個(gè)方向分別添加紅、黃、綠交通信號(hào)燈以及兩位數(shù)碼管顯示信號(hào)燈剩余時(shí)間。

單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<rtx51tny.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit con=P3^2;                 //存儲(chǔ)寄存器的時(shí)鐘輸入。

  6. sbit snr=P2^2;                //上升沿時(shí)移位寄存器中的數(shù)據(jù)進(jìn)入存儲(chǔ)寄存器,         
  7. sbit sng=P2^3;                    //下降沿時(shí)存儲(chǔ)寄存器中的數(shù)據(jù)保持不變。                                                         
  8. sbit sny=P2^4;                    //應(yīng)用時(shí)通常將ST_CP置為低點(diǎn)平,
  9. sbit ewr=P2^5;                    //移位結(jié)束后再在ST_CP端產(chǎn)生一個(gè)正脈沖更新顯示數(shù)據(jù)。                 
  10. sbit ewg=P2^6;
  11. sbit ewy=P2^7;

  12. sbit KEY1 = P1^0;      
  13. sbit KEY2 = P1^1;
  14. sbit LA=P2^0;
  15. sbit LB=P2^1;

  16. uchar minute=0;
  17. uchar hour=0;
  18. uchar code DSY_DUAN[]={0x3f,0x06,0x5b,0x4f,0x66,
  19.                                                 0x6d,0x7d,0x07,0x7f,0x6f};
  20. unsigned char code tew[]={0x06,0x7f,0x06,0x07,0x06,0x7d,0x06, 0x6d,
  21.                                                         0x06,0x66,0x06,0x4f,0x06,0x5b,0x06,0x06,
  22.                                                         0x06,0x3f,0x3f,0x6f,0x3f,0x7f,0x3f,0x07,
  23.                                                         0x3f,0x7d,0x3f,0x6d,0x3f,0x66,0x3f,0x4f,
  24.                                                         0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x06,0x66,
  25.                                                         0x06,0x4f,0x06,0x5b,0x06,0x06,0x06,0x3f,
  26.                                                          0x3f,0x6f,0x3f,0x7f,0x3f,0x07,0x3f,0x7d,
  27.                                                         0x3f,0x6d,0x3f,0x66,0x3f,0x4f,0x3f,0x5b,
  28.                                                         0x3f,0x06,0x3f,0x3f,0x3f,0x4f,0x3f,0x5b,
  29.                                                         0x3f,0x06,0x3f,0x3f};
  30.                                              //東西方向數(shù)碼管倒計(jì)時(shí)段碼表
  31. unsigned char code tsn[]={0x06,0x66,0x06,0x4f,0x06,0x5b,0x06,0x06,
  32.                                                         0x06,0x3f,0x3f,0x6f,0x3f,0x7f,0x3f,0x07,
  33.                                                         0x3f,0x7d,0x3f,0x6d,0x3f,0x66,0x3f,0x4f,
  34.                                                         0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x3f,0x4f,
  35.                                                         0x3f,0x5b,0x3f,0x06,0x3f,0x3f,0x06,0x7f,
  36.                                                         0x06,0x07,0x06,0x7d,0x06,0x6d,0x06,0x66,
  37.                                                         0x06,0x4f,0x06,0x5b,0x06,0x06,0x06,0x3f,
  38.                                      0x3f,0x6f,0x3f,0x7f,0x3f,0x07,0x3f,0x7d,
  39.                                                         0x3f,0x6d,0x3f,0x66,0x3f,0x4f,0x3f,0x5b,
  40.                                                         0x3f,0x06,0x3f,0x3f};
  41.                                             //南北方向數(shù)碼管倒計(jì)時(shí)段碼表
  42. void delay(uint t)
  43. {
  44.    uchar i;
  45.    while(t--);
  46.    for(i=0;i>250;i++);
  47. }


  48. void job0() _task_ 0
  49. {
  50.     os_create_task(1);
  51.         os_create_task(2);
  52.         os_create_task(3);
  53.         os_create_task(4);
  54.         os_create_task(5);
  55.         os_delete_task(0);
  56. }
  57. void job1() _task_ 1                  //十字路口數(shù)碼管倒計(jì)時(shí)部分
  58. {         
  59.         uchar i;
  60.         SCON=0x00;                          //配置串口通信為方式0,八位同步移位寄存器
  61.         con=0;                                  //con先拉低,后拉高
  62.         while(1)
  63.         {
  64.            for(i=0;i<38;i++)             //每?jī)蓚(gè)數(shù)碼管倒計(jì)時(shí)部分共有76個(gè)段碼,
  65.                                       //所以需要乘2才能到達(dá)下一個(gè)狀態(tài)。        
  66.               {
  67.                            SBUF=tsn[i*2];              //南北方向9-15數(shù)碼管掃描
  68.                            while(!TI);
  69.                            TI=0;                          //軟件清零部分;
  70.                            SBUF=tsn[i*2+1];      //南北方向1-7數(shù)碼管掃描
  71.                            while(!TI);
  72.                            TI=0;
  73.                         SBUF=tew[i*2];
  74.                            while(!TI);
  75.                            TI=0;               
  76.                         SBUF=tew[i*2+1];
  77.                            while(!TI);
  78.                            TI=0;                      //接收完畢信號(hào);
  79.                            con=1;                           //595芯片ST_CP端工作;
  80.                            os_wait(K_IVL,10,0);       //延時(shí)100ms;
  81.                            con=0;                           //595芯片ST_CP端停止工作;
  82.           }
  83.         }                  
  84. }

  85. void job2() _task_ 2
  86. {
  87.    while(1)
  88.    {
  89.                 minute++;                    //分鐘加一
  90.                 if(minute==60)               //分鐘滿(mǎn)60;
  91.                 {
  92.                         minute=0;                //分鐘清零;
  93.                         hour++;                  //小時(shí)加一;
  94.                         if(hour==60)             //小時(shí)滿(mǎn)60;
  95.                         {
  96.                                 hour=0;              //小時(shí)清零;
  97.                         }
  98.                            
  99.                 }
  100.                 os_wait(K_IVL,100,0);        //延時(shí)1s;
  101.         }
  102. }
  103. void job3() _task_ 3                    //按鍵檢測(cè)
  104. {
  105.         while(1)
  106.         {
  107.                 if(P1!=0xff)                //有鍵被按下;
  108.                 {
  109.                         delay(10);
  110.                         
  111.                         if(KEY1==0)                    //如果第一個(gè)鍵被按下,分鐘個(gè)位加一;
  112.                         {
  113.                                 minute=minute%10+1;
  114.                                 if(minute==60)      //分鐘滿(mǎn)60清零
  115.                                 {
  116.                                         minute=0;
  117.                                 }
  118.                         }
  119.                         else if(KEY2==0)        //如果第二個(gè)鍵被按下,小時(shí)個(gè)位加一;
  120.                         {
  121.                                 hour=hour%10+1;
  122.                                 if(hour==60)        //小時(shí)滿(mǎn)60清零
  123.                                 {
  124.                                         hour=0;
  125.                                 }
  126.                         }
  127.                         while(P1!=0xff);             //判斷抬起;   
  128.                 }
  129.         }
  130. }

  131. void job4() _task_ 4                    //計(jì)時(shí)數(shù)碼管掃描程序
  132. {
  133.         while(1)
  134.         {

  135.                 LA=1,LB=1;                            //P2口前兩個(gè)管腳輸入
  136.                 P0=DSY_DUAN[minute%10];                //分個(gè)
  137.                 delay(500);
  138.         
  139.                 LA=1,LB=0;
  140.                 P0=DSY_DUAN[hour%10];           //時(shí)個(gè)
  141.                 delay(500);
  142.                
  143.                 LA=0,LB=1;
  144.                 P0=DSY_DUAN[minute/10];
  145.                 delay(500);
  146.         
  147.                 LA=0,LB=0;
  148.                 P0=DSY_DUAN[hour/10];
  149.                 delay(500);         
  150.    }         
  151. }

  152. void job5() _task_ 5               //南北方向交通燈
  153. {
  154.    while(1)
  155.    {
  156.             snr=0;sng=1;sny=1;                                                           //南北紅,東西綠
  157.          ewr=1;ewg=0;ewy=1;
  158.          os_wait(K_IVL,150,0);
  159.          
  160.          snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
  161.          ewr=1;ewg=1;ewy=0;
  162.          os_wait(K_IVL,10,0);
  163.          snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
  164.          ewr=1;ewg=1;ewy=1;
  165.          os_wait(K_IVL,10,0);
  166.          snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
  167.          ewr=1;ewg=1;ewy=0;
  168.          os_wait(K_IVL,10,0);
  169.          snr=0;sng=1;sny=1;                                                           //南北紅,東西黃
  170.          ewr=1;ewg=1;ewy=1;
  171.          os_wait(K_IVL,10,0);
  172.          
  173.          snr=1;sng=0;sny=1;                                                           //南北綠,東西紅
  174.          ewr=0;ewg=1;ewy=1;
  175.          os_wait(K_IVL,150,0);
  176.          
  177.          snr=1;sng=1;sny=0;                                                           //南北黃,東西紅
  178.          ewr=0;ewg=1;ewy=1;
  179.          os_wait(K_IVL,10,0);
  180.          snr=1;sng=1;sny=1;                                                           //南北黃,東西紅
  181.          ewr=0;ewg=1;ewy=1;
  182.          os_wait(K_IVL,10,0);
  183.          snr=1;sng=1;sny=0;                                                           //南北黃,東西紅
  184.          ewr=0;ewg=1;ewy=1;
  185.          os_wait(K_IVL,10,0);
  186.          snr=1;sng=1;sny=1;                                                           //南北黃,東西紅
  187.          ewr=0;ewg=1;ewy=1;
  188.          os_wait(K_IVL,10,0);

  189.    }
  190.         os_wait(K_IVL,100,0);   
  191. }
復(fù)制代碼

所有資料51hei提供下載:
紅綠燈.rar (45.99 KB, 下載次數(shù): 69)



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

使用道具 舉報(bào)

沙發(fā)
ID:430008 發(fā)表于 2018-11-20 19:48 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

板凳
ID:449527 發(fā)表于 2018-12-19 08:54 | 只看該作者
感謝感謝
回復(fù)

使用道具 舉報(bào)

地板
ID:528461 發(fā)表于 2019-5-6 14:48 | 只看該作者
為什么數(shù)碼管不顯示數(shù)字
回復(fù)

使用道具 舉報(bào)

5#
ID:542332 發(fā)表于 2019-5-19 20:23 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

6#
ID:542727 發(fā)表于 2019-5-20 12:54 來(lái)自手機(jī) | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人综合一区二区 | 91麻豆精品一区二区三区 | 成人精品啪啪欧美成 | 免费在线观看一区二区 | 久久99久久99 | 美女在线国产 | 欧美精品一区二区三区蜜桃视频 | 精品久久久久久红码专区 | 久操国产 | aaa级片 | 三级免费 | 美国一级片在线观看 | 精品久| 男女免费观看在线爽爽爽视频 | 精品国产乱码久久久久久蜜臀 | 九九视频在线观看 | 网站黄色在线 | 国产精品久久777777 | 日韩免费一区 | 欧美aⅴ | 日日爱夜夜操 | 国产日韩一区二区 | 午夜天堂| 亚洲精品91 | 一区二区三区四区在线视频 | 亚洲一区二区三区免费视频 | 久久精品男人的天堂 | 久久精品一级 | 日韩成人免费av | 婷婷丁香在线视频 | 日韩欧美高清dvd碟片 | 99久久成人 | 国产亚洲一区二区三区 | 狠狠综合久久av一区二区老牛 | 特黄小视频 | 亚洲一区不卡 | 成人毛片在线观看 | 国产一区二区三区四区五区加勒比 | 亚洲天天干| 国产日韩欧美一区二区 | 欧产日产国产精品国产 |