电工学习网

 找回密码
 立即注册
查看: 2990|回复: 0
打印 上一主题 下一主题

单片机红绿灯的程序和图

[复制链接]
跳转到指定楼层
楼主
发表于 2020-6-11 07:28:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这是我前几天无聊自己写的交通灯程序,在51单片机上实现的。基本的定时的交通灯转换是实现了,根据时间来改变交通灯的变换。可以下载下来看看的,电路图和原程序都有,代码就自己下载吧。我不全放上了。
仿真原理图如下
单片机红绿灯的程序和图
单片机源程序:
  • #include
  • sbit beiR=P1^0;
  • sbit beiY=P1^1;
  • sbit beiG=P1^2;
  • sbit nanR=P1^3;
  • sbit nanY=P1^4;
  • sbit nanG=P1^5;
  • uint a,b,c,type,j,i;
  • void Delay(uint x)                   //延时
  • {
  •         uchar i;
  •         while(x--)for(i=0;i<120;i++);
  • }
  • void delay_ms(uint q)           //延时
  • {
  •         uint i,j;
  •         for(i=q;i>0;i--)
  •         for(j=141;j>0;j--);
  • }
  • void shumaguan(uint k)           //数码管显示
  • {
  •                 b=k/10;
  •                 c=k%10;
  •                 P3=11111101;
  •                 P2=smg_dw;//选段码
  •         delay_ms(20);//延时5ms
  •                 P3=11111110;
  •                 P2=smg_dw[c];//选段码
  •                 delay_ms(20);//延时5ms
  • }
  • main()
  • {
  •         TMOD=0x01;                                   //设置定时器T0为工作方式1定时
  •         TH0=(65536-50000)/256;
  •         TL0=(65536-50000)%256;
  •         TR0=1;                                          //启动T0计数
  •         ET0=1;                                          //允许T0中断
  •         EX0=1;                                          //允许外部中断0中断
  •         EA=1;                                          //开中断
  •         IT0=1;                                          //允许外部中断0为边沿触发方式
  •         a=10;                                          //倒计时10s
  •         type=1;
  •         while(1){
  •                 switch(type)
  •                 {
  •                         case 1: //东西向绿灯与南北向红灯亮
  •                                 beiR=0;beiY=1;beiG=1;
  •                                 nanR=1;nanY=1;nanG=0;
  •                                 shumaguan(a);
  •                         break;
  •                         case 2: //东西向黄灯闪烁,绿灯关闭
  •                                 if(a%2!=0)
  •                                 {
  •                                 beiR=1;beiY=0;beiG=1;
  •                                 }
  •                                 if(a%2==0)
  •                                 {
  •                                 beiR=1;beiY=1;beiG=1;
  •                                 }
  •                                 shumaguan(a);
  •                         break;
  •                         case 3: //东西向红灯,南北向绿灯亮
  •                                 beiR=1;beiY=1;beiG=0;
  •                                 nanR=0;nanY=1;nanG=1;
  •                                 shumaguan(a);
  •                         break;
  •                         case 4: //南北向黄灯闪烁3次
  •                                 if(a%2!=0)
  •                                 {
  •                                 nanR=1;nanY=0;nanG=1;
  •                                 }
  •                                 if(a%2==0)
  •                                 {
  •                                 nanR=1;nanY=1;nanG=1;
  •                                 }
  •                                 shumaguan(a);
  •                         break;
  •                 }
  •                         }
  • }

回复

使用道具 举报

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

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-27 01:17

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

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