11
收藏
微博
微信
复制链接

51单片机交通灯项目(Proteus仿真及源码)

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
bcdf51cadc83c2344b5129938a0964.png0.png

摘 要... I
一、设计要求以及总体方案介绍... 1
1.2交通灯总体方案介绍... 1
1.3元件清单... 2
二、交通灯各模块及程序设计... 2
2.1数码管显示模块... 3
2.2红绿灯模块... 6
2.3按键模块... 6
三、仿真与部分实物演示... 8
3.1南北通行... 8
3.2东西通行... 8
3.3夜间模式... 8
设计心得... 9
附 录... 10

为了节省按键占用的I/O口,也为了去除查询按键的时间占用,减轻CPU的负担,所以按键使用外部中断的方式,通过74HC573扩展中断。此时只需要使用三个I/O口,使用中断的好处是只有触发中断时程序才回去执行按键功能,增加了程序运行的效率。
具体内容见交通灯压缩包,附有源代码,仿真文件,仿真实物视频


1、东西方向、南北方向均有红、黄、绿三种信号灯,初始红灯
30秒,黄灯闪烁3秒,绿灯30秒,东西方向红灯时刻,南北方向绿灯,南北方向绿灯,东西方向红灯;
2、按键调节与控制功能,通过按键,可以控制某一个方向长时间绿灯,另一个方向长时间红灯;通过按键可以调整某一个方向的红灯时长,比如调整东西方向红灯40秒,绿灯20秒,于此同时,南北方向红灯20秒,绿灯40秒。
3、夜间模式按钮按下,所有方向显示黄灯闪烁
4、实时提醒灯亮的剩余时间
1.2 交通灯总体方案介绍
初始状态:东西方向绿灯,南北红灯,南北时间为13秒,东西方向为10秒。
while循环:有按键检测函数,有按键执行程序;数码管显示函数。
定时器T0中断函数:计时时间为50ms,当计时20次计时变量加到20后清零,时间为1s,此时让数码管显示的数自减,判断红绿灯的状态是否需要改变。
外部中断0中断函数:将标志变量flag置1,并读取P2口的值,用以判断按键按下。

1.3 原件清单

  名称
  
型号
数量
  单片机
  
STC89C52RC

  排阻
  
10k/4.7K
1
  发光二极管
  
红黄绿
4/4/4
  晶振
  
12MHZ
1
  电容
  
10uf  30pf
1/2
  电阻
  
10K/1K/0.33K
4/7/14
  按键
  
4
7
  数码管
  
两位八段
4
  74HC573/74LS148
  

2/1
  导线
  
15cm
若干
  杜邦线
  
15cm/10cm
若干
  焊锡
  

若干
  单排插针
  
SIP20
若干
  DIP40芯片座子
  


1
  DC插座
  

1
  US转DC002电源线
  

1
  三极管
  
S9012
4
  万用板  
  
7*9cm/9*15cm
1/1

收藏 47 0 11
粉丝
1
关注
0
主题
5
很好,很强大,模式多样。
0

回答于 · 2024-12-02 07:19

粉丝
0
关注
0
主题
3
附件里面有仿真图文件吗
0

回答于 · 2024-12-02 10:06

粉丝
1
关注
0
主题
4
不行啊,数码管数字一直在闪动,倒计时都不减少的
0

回答于 · 2024-12-02 19:12

粉丝
0
关注
0
主题
7
里面的仿真文件没有错误吧
0

回答于 · 2024-12-02 19:42

粉丝
0
关注
0
主题
5
楼主,贴里面有protues原理图仿真文件吗
0

回答于 · 2024-12-03 01:40

粉丝
0
关注
0
主题
5
有用吗??????
0

回答于 · 2024-12-03 11:04

粉丝
0
关注
0
主题
7
谢谢楼主,不过仿真有问题
0

回答于 · 2024-12-04 00:36

粉丝
0
关注
0
主题
7
有仿真吗
0

回答于 · 2024-12-04 11:51

粉丝
0
关注
0
主题
2
学习了,比我考虑的周全
0

回答于 · 2024-12-04 14:09

粉丝
0
关注
0
主题
8
模式多样。
0

回答于 · 2024-12-04 20:36