找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2807|回复: 4
收起左侧

单片机设计交通灯源程序

[复制链接]
ID:111129 发表于 2016-3-28 15:15 | 显示全部楼层 |阅读模式
使用C程序编写的控制程序
红灯30s
绿灯25s
黄灯5s
  1.                           #include<reg52.h>
  2.                           #define uchar unsigned char
  3.                           #define uint unsigned int
  4.                           sbit SN_green=P3^2;                   //南北方向绿灯,黄灯和红灯
  5.                           sbit SN_yellow=P3^1;
  6.                           sbit SN_red=P3^0;
  7.                           sbit EW_green=P3^5;             //东西方向绿灯,黄灯和红灯
  8.                           sbit EW_yellow=P3^4;
  9.                           sbit EW_red=P3^3;
  10.                           uchar cnt_sn,cnt_ew;
  11.                           uchar state_sn,state_ew;
  12.               uint T1_cnt;
  13.                           uchar led_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  14.                           uchar init_sn[3]={24,4,29};
  15.                           uchar init_ew[3]={29,24,4};

  16.                           void delay(uint i)
  17.                            {
  18.                   while(i--);
  19.                            }
  20.                

  21.                           void led_show(uint u,uint v)
  22.                           {
  23.                           uchar i;
  24.                           i=u%10;
  25.                           P0=led_code[i];
  26.                           P2=0xbf;
  27.                           delay(100);
  28.                           i=u%100/10;
  29.                           P0=led_code[i];
  30.                           P2=0x7f;
  31.                           delay(100);
  32.                           i=v%10;
  33.                           P0=led_code[i];
  34.                           P2=0xfe;
  35.                           delay(100);
  36.                           i=v%100/10;
  37.                           P0=led_code[i];
  38.                           P2=0xfd;
  39.                           delay(100);
  40.                           }
  41.                           
  42.                           void timer1() interrupt 3
  43.                           {
  44.                           T1_cnt++;
  45.                           if(T1_cnt>3999)
  46.                           {
  47.                           T1_cnt=0;
  48.                           if(cnt_sn!=0)
  49.                           {
  50.                           cnt_sn--;
  51.                           }
  52.                           else
  53.                           {
  54.                           state_sn++;
  55.                           if(state_sn>2)
  56.                           {
  57.                           state_sn=0;
  58.                           }
  59.                           cnt_sn=init_sn[state_sn];
  60.                           switch(state_sn)
  61.                           {
  62.                           case 0:
  63.                           SN_green=0;
  64.                           SN_yellow=1;
  65.                           SN_red=1;
  66.                           break;
  67.                           case 1:
  68.                           SN_green=1;
  69.                           SN_yellow=0;
  70.                           SN_red=1;
  71.                           break;
  72.                           case 2:
  73.                           SN_green=1;
  74.                           SN_yellow=1;
  75.                           SN_red=0;
  76.                           break;
  77.                           }
  78.                           }
  79.                           if(cnt_ew!=0)
  80.                           {
  81.                           cnt_ew--;
  82.                           }
  83.                           else
  84.                           {
  85.                           state_ew++;
  86.                           if(state_ew>2)
  87.                           {
  88.                           state_ew=0;
  89.                           }
  90.                           cnt_ew=init_ew[state_ew];
  91.                           switch(state_ew)
  92.                           {
  93.                           case 0:
  94.                           EW_green=0;
  95.                           EW_yellow=1;
  96.                           EW_red=1;
  97.                           break;
  98.                           case 1:
  99.                           EW_green=1;          
  100.                           EW_yellow=0;
  101.                           EW_red=1;
  102.                           break;
  103.                           case 2:
  104.                           EW_green=1;
  105.                           EW_yellow=1;
  106.                           EW_red=0;
  107.                           break;
  108.                           }
  109.                           }
  110.                           }
  111.                           }
  112.                           void main()
  113.                           {
  114.                           cnt_sn=init_sn[0];
  115.                           cnt_ew=init_ew[0];
  116.                           T1_cnt=0;
  117.                           state_sn=0;
  118.                           state_ew=0;
  119.                           SN_green=0;
  120.                           SN_yellow=1;
  121.                           SN_red=1;
  122.                           EW_green=1;
  123.                           EW_yellow=1;
  124.                           EW_red=0;
  125.                           
  126.                           TMOD=0x20;
  127.                           TH1=0;
  128.                           TL1=0x19;
  129.                           EA=1;
  130.                           ET1=1;
  131.                           TR1=1;
  132.                           while(1)
  133.                           {
  134.                           led_show(cnt_sn,cnt_ew);
  135.                           }
  136.                           }

  137.                           

复制代码


JTD.rar

19.75 KB, 下载次数: 13, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:111173 发表于 2016-3-28 18:18 | 显示全部楼层
大神,正是我需要的,谢谢
回复

使用道具 举报

ID:111173 发表于 2016-3-28 18:18 | 显示全部楼层
厉害厉害,很有用
回复

使用道具 举报

ID:111173 发表于 2016-5-24 16:33 | 显示全部楼层
再次谢谢
回复

使用道具 举报

ID:250460 发表于 2017-11-17 17:36 | 显示全部楼层
我没有黑币了啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表