标题: 51单片机实现简易交通灯的程序和电路图 [打印本页]

作者: renqian4436    时间: 2017-12-14 09:11
标题: 51单片机实现简易交通灯的程序和电路图
这是我前几天无聊自己写的交通灯程序,在51单片机上实现的。基本的定时的交通灯转换是实现了,根据时间来改变交通灯的变换。可以下载下来看看的,电路图和原程序都有,代码就自己下载吧。我不全放上了。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

单片机源程序:
  1. #include<reg51.h>
  2. sbit beiR=P1^0;
  3. sbit beiY=P1^1;
  4. sbit beiG=P1^2;
  5. sbit nanR=P1^3;
  6. sbit nanY=P1^4;
  7. sbit nanG=P1^5;
  8. uint a,b,c,type,j,i;
  9. void Delay(uint x)                   //延时
  10. {
  11.         uchar i;
  12.         while(x--)for(i=0;i<120;i++);        

  13. }
  14. void delay_ms(uint q)           //延时
  15. {         
  16.         uint i,j;
  17.         for(i=q;i>0;i--)
  18.         for(j=141;j>0;j--);
  19. }
  20. void shumaguan(uint k)           //数码管显示
  21. {
  22.                 b=k/10;
  23.                 c=k%10;
  24.                 P3=11111101;
  25.                 P2=smg_dw[b];//选段码
  26.         delay_ms(20);//延时5ms
  27.                 P3=11111110;
  28.                 P2=smg_dw[c];//选段码
  29.                 delay_ms(20);//延时5ms
  30. }
  31. main()
  32. {
  33.         TMOD=0x01;                                   //设置定时器T0为工作方式1定时
  34.         TH0=(65536-50000)/256;
  35.         TL0=(65536-50000)%256;
  36.         TR0=1;                                          //启动T0计数
  37.         ET0=1;                                          //允许T0中断
  38.         EX0=1;                                          //允许外部中断0中断
  39.         EA=1;                                          //开中断
  40.         IT0=1;                                          //允许外部中断0为边沿触发方式
  41.         a=10;                                          //倒计时10s
  42.         type=1;
  43.         while(1){
  44.                 switch(type)
  45.                 {
  46.                         case 1: //东西向绿灯与南北向红灯亮
  47.                                 beiR=0;beiY=1;beiG=1;
  48.                                 nanR=1;nanY=1;nanG=0;
  49.                                 shumaguan(a);
  50.                         break;
  51.                         case 2: //东西向黄灯闪烁,绿灯关闭        
  52.                                 if(a%2!=0)
  53.                                 {
  54.                                 beiR=1;beiY=0;beiG=1;
  55.                                 }
  56.                                 if(a%2==0)
  57.                                 {               
  58.                                 beiR=1;beiY=1;beiG=1;
  59.                                 }
  60.                                 shumaguan(a);
  61.                         break;
  62.                         case 3: //东西向红灯,南北向绿灯亮
  63.                                 beiR=1;beiY=1;beiG=0;
  64.                                 nanR=0;nanY=1;nanG=1;
  65.                                 shumaguan(a);
  66.                         break;
  67.                         case 4: //南北向黄灯闪烁3次
  68.                                 if(a%2!=0)
  69.                                 {
  70.                                 nanR=1;nanY=0;nanG=1;
  71.                                 }        
  72.                                 if(a%2==0)
  73.                                 {        
  74.                                 nanR=1;nanY=1;nanG=1;
  75.                                 }
  76.                                 shumaguan(a);
  77.                         break;
  78.                 }
  79.                         }
  80. }
复制代码



全部资料51hei下载地址:
51单片机实现定时交通灯.rar (55.81 KB, 下载次数: 569)




作者: 凯尔特    时间: 2018-5-6 15:43
你的proteus仿真没有办法打开,格式上传错误的。请解决。
作者: guiyajin    时间: 2018-5-7 12:42
谢谢  
作者: 13033542722    时间: 2018-5-16 08:58
不能用啊

[code][/code]
作者: q734258234    时间: 2018-6-3 21:13
数码管是共阴的还是共阳的
作者: 1785346    时间: 2018-6-16 21:02
666太棒了
作者: Marauder    时间: 2018-9-14 21:20
谢谢你啊////
作者: 3361541322    时间: 2018-9-15 19:15
凯尔特 发表于 2018-5-6 15:43
你的proteus仿真没有办法打开,格式上传错误的。请解决。

那个可能是版本问题吧
作者: 衷曲无默    时间: 2018-10-6 15:10
代码有错

作者: zjx66666    时间: 2018-11-22 15:14
压缩包错误打不开啊
作者: 100234    时间: 2018-11-22 18:06
衷曲无默 发表于 2018-10-6 15:10
代码有错

我也觉得好像是有点问题的样子
作者: 1378917401    时间: 2018-11-24 15:11
定义的那里有错误啊

作者: zjlmm    时间: 2019-1-10 16:25
仿真图根本打不开

作者: zjlmm    时间: 2019-1-10 16:45
用isis打开不了

作者: sune111    时间: 2019-6-14 20:13
isis打不开求解决
作者: xingr    时间: 2019-10-17 17:08
为啥说第8行‘a’前missing一个“;”呢?
作者: 213584755    时间: 2019-11-13 16:37
你好厉害
作者: SHREK666    时间: 2019-12-3 15:57
xingr 发表于 2019-10-17 17:08
为啥说第8行‘a’前missing一个“;”呢?

我的也是

作者: SHREK666    时间: 2019-12-3 16:27
能改改程序不,第八行哪里错了
作者: 1001752    时间: 2019-12-10 15:09
很给力
作者: 1001752    时间: 2019-12-10 15:09

用isis打开不了
作者: 黑金山科技    时间: 2020-2-16 17:07
isis打开第八行有错误
作者: LL1975947052    时间: 2020-5-20 17:12
想要这个课件学习学习
作者: LL1975947052    时间: 2020-5-20 17:13
想要这个课件来学习学习
作者: MantraLimiter    时间: 2020-5-27 09:48
十分感谢
作者: 275917655    时间: 2020-6-2 10:35
很好的实例,不知道怎么下载
作者: 王呵呵呀    时间: 2020-6-3 10:18
大佬能不能实现一下东西南北带强通功能,和通过按键来调节红绿灯时间的
作者: suyang110    时间: 2020-6-8 09:04
好棒啊
作者: 寰夜    时间: 2020-6-8 15:28
用的是什么芯片啊

作者: 寰夜    时间: 2020-6-8 17:24
代码是错的,在proteus上弄不出来

作者: 嗯ヽ(○    时间: 2020-6-13 23:42
不错可以可以
作者: 东方可爱    时间: 2020-6-17 09:19
xingr 发表于 2019-10-17 17:08
为啥说第8行‘a’前missing一个“;”呢?

我也想问,无法解决

作者: zxc123mn    时间: 2020-10-13 08:18
超级牛逼啊兄弟
作者: Hei999    时间: 2020-10-18 19:26
寰夜 发表于 2020-6-8 17:24
代码是错的,在proteus上弄不出来

第108行的if(type==6)改为if(type==5)
作者: Hei999    时间: 2020-10-18 19:27
100234 发表于 2018-11-22 18:06
我也觉得好像是有点问题的样子

第108行的if(type==6)改为if(type==5)
作者: 再吐娜木    时间: 2020-10-21 21:40
#在这里快Build target 'Target 1' compiling jtd.c... linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS     SEGMENT: ?PR?_DELAY?JTD Program Size: data=21.0 xdata=0 code=475 creating hex file from "jtd"...速回复#
作者: abcd55    时间: 2020-10-30 09:24
代码有误啊,怎么修改呀?求解
作者: super233    时间: 2020-11-8 19:37
第八行的代码怎么修改啊?

作者: super233    时间: 2020-11-9 18:24
本帖最后由 super233 于 2020-11-11 19:41 编辑
super233 发表于 2020-11-8 19:37
第八行的代码怎么修改啊?

后面应该还有一串中断程序

作者: 花满楼1949    时间: 2021-1-12 15:04
这个单片机的程序是可以用于c51的单片机吗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1