电信19-2 翁大弟
一、实验目的
- 熟练掌握Keil和Proteus软件的C51设计与仿真操作
- 熟悉C51编程的变量、存储等概念及使用方法
- 掌握74LS245或74LS373的扩展方法
- 熟悉定时计数器、外部中断的编程设计,初步掌握串行通信编程方法
二、实验要求
- D级别要求:
- 机制1:南北:红5秒,红 3 秒,绿5秒,黄闪3秒,在南北向亮灯的同时,东西方向的状态:绿5秒,黄闪3秒,红5秒,红 3 秒
- 或机制2:可以按照四个路口方向逐次亮起红灯24秒,绿灯5秒,黄灯3秒。
- 有一个外部中断,下降沿触发,触发后,四个方向全红,再次触发后,恢复正常
注:a) 和 b) 是两种不同的红绿灯控制机制,选择实现其一即可
- C级别要求:
- 实现D级别的功能
- 有设置键,可设置绿灯时间为其他秒数(红灯对应)
- 可切换D级别的两种红绿灯机制,用设置键切换
- B级别要求:
- 用2个单片机分别作为南北方向和东西方向的灯的控制
- 2个单片机之间通过串行通信发送数据,实现同步,功能现象如D级要求
- A级别要求:
- 实现B级别的功能
- 某一个单片机上有设置键,能实现绿灯时间的设置(红灯对应)。
三、实验实现的功能说明
主函数:调用交通灯切换子程序:
被调用的交通灯子程序:
1、状态一:东西,绿5秒;南北,红5秒
2、状态二:南北,红3秒 ;东西,黄闪3秒
3、状态三:南北,绿5秒;东西,红5秒
4、状态四:南北,黄闪3秒;东西,红3秒
5、状态五:外部中断,下降沿触发,触发后,四个方向全红,再次触发后,恢复正常
6、具体的外部中断程序
四、实验实现的原理及仿真电路设计
实验原理:
- 对于交通灯的状态1至状态4,用sbit来定义灯对应的单片机上的引脚,设置为共阳极,低电平有效。
- 对于外部中断的程序,设置EXT=1,设置外部中断请求的标志位。并实现下降沿有效,即IT0=1。结束中断后,让状态码变为1,重新开始运行。
实验原理电路图:
五、实验流程图:
六、实验主要功能代码
七、实验过程及实验情况
在该实验中主要遇到了两个问题:1、设置的状态码不能自动跳转,导致交通灯不能顺利运行下去。
2、另一个是进入外部中断后,再启动外部中断,不能有效退出外部中断,导致实验无法运行。
解决方法:
- 经过检查,原来是设置了多个延时函数,导致程序无法获得最新的状态码,改善程序后解决了改问题。
- 对于外部中断这个问题,我设置了一个标志位,等结束外部中断后,能及时设置状态码为1,重新执行程序。
八、实验小结,
经过该实验,进一步让我熟悉了Keil和Proteus软件的使用。更重要的是让我熟悉了外部中断的具体应用,实现了定时器的应用,也能灵活使用状态码这个编程小技巧。让我所学的知识得到了实践,提高了动手能力。也让我明白了自己的不足,今后仍会继续加强自身的学习。
链接:https://pan.baidu.com/s/1IoHf5DWfI8mEyEUPn9bzDA?pwd=42ux
提取码:42ux
搜索
复制



