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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機交通信號燈程序黃燈閃爍實現,請大神幫忙看看

[復制鏈接]
跳轉到指定樓層
樓主
ID:1086252 發表于 2023-6-30 23:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
編寫交通燈程序,下面程序能夠實現紅綠燈顯示及對應流水燈的顯示,但是怎么實現在黃燈時間流水燈閃爍不知道怎么調試了嘗試過黃燈流水燈亮時直接加入延時函數發現數碼管閃爍了,求大神指點實現黃燈閃爍。

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit  EW_LED2=P0^3;                //東西數碼管十位
  5. sbit  EW_LED1=P0^2;                //東西數碼管個位
  6. sbit  SN_LED2=P0^1;                //南北數碼管十位
  7. sbit  SN_LED1=P0^0;                //南北數碼管個位

  8. sbit  SN_red=P1^2;    //南北紅燈
  9. sbit  SN_yellow=P1^3;        //南北黃燈
  10. sbit  SN_green=P1^4;        //南北綠燈
  11. sbit  EW_red=P1^5;                //東西紅燈
  12. sbit  EW_yellow=P1^6;        //東西黃燈
  13. sbit  EW_green=P1^7;        //東西綠燈

  14. char  Time_EW;                                //東西數碼管顯示時間
  15. char  Time_SN;                                //南北數碼管顯示時間
  16. uchar EW=5,SN=10;                //南北通行狀態數碼管初始化
  17. uchar EW1=10,SN1=5;        //南北通行狀態數碼管初始化
  18. uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9數碼管端段碼(共陽極)
  19. void delay_ms(uint x)//延時函數
  20. {
  21.         uint i,j;
  22.         for(i=x;i>0;i--)
  23.         for(j=110;j>0;j--);
  24. }
  25. void Display(void)                //數碼管顯示函數
  26. {
  27.         char h,l;
  28.         h=Time_EW/10;
  29.         l=Time_EW%10;
  30.         P3=table[l];EW_LED2=1;delay_ms(1);EW_LED2=0;
  31.         P3=table[h];EW_LED1=1;delay_ms(1);EW_LED1=0;//東西方向數碼管秒數顯示
  32.         
  33.         h=Time_SN/10;
  34.         l=Time_SN%10;
  35.         P2=table[l];SN_LED2=1;delay_ms(1);SN_LED2=0;
  36.         P2=table[h];SN_LED1=1;delay_ms(1);SN_LED1=0;//南北方向數碼管秒數顯示
  37. }
  38. void main(void)
  39. {
  40.         EA=1;
  41.         ET0=1;
  42.         TMOD=0x01;
  43.         TL0=0xb0;
  44.         TH0=0x3c;
  45.         TR0=1;
  46.         while(1)
  47. //狀態1:東西綠燈5秒,南北紅燈10秒
  48.         {
  49.                 Time_EW=EW;        //數碼管賦初值
  50.                 Time_SN=SN;
  51.                 while(Time_SN>=6)
  52.                 {
  53.                         SN_yellow=0;        //南北黃燈滅
  54.                         SN_red=1;                        //南北紅燈亮
  55.                         SN_green=0;                //南北綠燈滅
  56.                         EW_yellow=0;        //東西黃燈滅
  57.                         EW_red=0;                        //東西紅燈滅
  58.                         EW_green=1;                //東西綠燈亮
  59.                         Display();                //數碼管顯示
  60.                 }
  61. //狀態2:東西黃燈5秒,南北紅燈5秒
  62.                 P1=0x00;                                 //清除燈的顯示
  63.                 if(Time_SN==5)
  64.                          Time_EW=5;
  65.                 while(Time_SN>=1)
  66.                 {
  67.                         SN_yellow=0;        //南北黃燈滅
  68.                         SN_red=1;                        //南北紅燈亮
  69.                         SN_green=0;                //南北綠燈滅
  70.                         EW_yellow=1;        //東西黃燈亮
  71.                         EW_red=0;                        //東西紅燈滅
  72.                         EW_green=0;                //東西綠燈滅
  73.                         Display();                //數碼管顯示
  74.                 }
  75. //狀態3:東西紅燈10秒,南北綠燈5秒
  76.                 Time_EW=EW1;        //數碼管賦初值
  77.                 Time_SN=SN1;
  78.                 while(Time_EW>=6)
  79.                 {
  80.                         SN_yellow=0;        //南北黃燈滅
  81.                         SN_red=0;                        //南北紅燈滅
  82.                         SN_green=1;                //南北綠燈亮
  83.                         EW_yellow=0;        //東西黃燈滅
  84.                         EW_red=1;                        //東西紅燈亮
  85.                         EW_green=0;                //東西綠燈滅
  86.                         Display();                //數碼管顯示
  87.                 }
  88. //狀態4:東西紅燈5秒,南北黃燈5秒
  89.                 P1=0x00;                                 //清除燈的顯示
  90.                 if(Time_EW==5)
  91.                         Time_SN=5;
  92.                 while(Time_EW>=1)
  93.                 {
  94.                         SN_yellow=1;        //南北黃燈亮
  95.                         SN_red=0;                        //南北紅燈滅
  96.                         SN_green=0;                //南北綠燈滅
  97.                         EW_yellow=0;        //東西黃燈滅
  98.                         EW_red=1;                        //東西紅燈亮
  99.                         EW_green=0;                //東西綠燈滅
  100.                         Display();                //數碼管顯示
  101.                 }
  102.         }
  103. }
  104. void timer0() interrupt 1
  105. {
  106.         uchar count;
  107.         TL0=0xb0;
  108.         TH0=0x3c;
  109.         count++;
  110.         if(count==20)
  111.         {
  112.                 Time_EW--;
  113.                 Time_SN--;
  114.                 count=0;
  115.         }
  116. }
復制代碼

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

使用道具 舉報

沙發
ID:712097 發表于 2023-7-1 09:17 | 只看該作者
有原理圖嗎?個人思路:優先保證數碼管顯示掃描時間間隔滿足不閃爍的要求。可以在數碼管顯示函數里面加入紅綠燈和黃燈的判定,利用數碼管掃描的間隔時間處理判定邏輯。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人手机在线 | 中国三级黄色录像 | 91久久久久久| 成人免费看片 | 九九伊人sl水蜜桃色推荐 | 亚洲国产欧美一区 | www在线| 午夜影晥| 免费看黄色国产 | 欧美13videosex性极品 | 中文字幕乱码一区二区三区 | 一级网站 | 日韩一区欧美一区 | 最新国产在线 | 亚洲成人在线视频播放 | 国产在线精品一区二区三区 | 国产精品视频在线播放 | 99在线免费观看视频 | 亚洲一区二区免费视频 | 欧美黑人狂野猛交老妇 | 毛片黄片免费看 | 日韩在线视频免费观看 | 亚洲视频精品在线 | 久久久久久久久久久久久91 | 久久免费小视频 | 一区二区三区亚洲视频 | 色婷婷激情综合 | 五月激情婷婷在线 | 欧美视频一区二区三区 | 欧美色综合 | 国产精品亚洲一区二区三区在线 | 992人人草 | 中文字幕日韩三级 | 中国大陆高清aⅴ毛片 | 久久不卡视频 | av影音| 视频一区二区在线观看 | 四虎永久免费地址 | 亚洲成人毛片 | 免费能直接在线观看黄的视频 | 黑人巨大精品欧美一区二区免费 |