课程设计论文-基于51单片机的交通灯控制设计内容摘要:
A 车道绿灯亮,南北方向 B 车道红灯亮。 表示南北方向 B 车道上的车辆禁止通行,东西方向 A 车道允许通行。 绿灯亮足规 定的时间隔时,控制器发出状态信号,转到下一工作状态。 ( 2)东西方向 A 车道黄灯亮,南北方向 B 车道红灯亮。 表示东西方向 A 车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,南北方向 B 车道禁止通行。 黄灯亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。 ( 3)东西方向 A 车道红灯亮,南北方向 B 车道绿灯亮。 表示东西方向 A 车道上的车辆禁止通行,南北方向 B 车道允许通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。 ( 4)东西方向 A 车道红灯亮,南北方向 B 车道黄灯亮。 表示东西方向 A 车 道禁止通行,南北方向 B 车道上未过限停车线的车辆停止通行,已过停车线的车辆继续通行。 黄灯亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到 8 第( 1)种工作状态。 控制灯程序流程图如下: 延时程序模块的设计 延迟程序块是要生成一定的是时间延时,这在数码管显示模块中会用到延迟程序,以满足足动态扫描时数码管的闪亮能产生视觉效果。 4 Proteus 软件仿真 Proteus 软件系统仿真 如硬件系统图所示接线 ,图中 ,在十字路口的红 ,黄 ,绿交通灯中 A 道的两组同色灯连在起 ,B上的也互联 ,受 MCS51 的 控制。 打开 keil软件 调试环境,把已经编好的程序输入,保存为 “ .asm” 格式的,然后编译,系统自动生成 “ .hex”文件。 设置好仿真器后,编译程序无误后调试执行程序,结果显示符合要求。 具体仿真结果见 Protues 里仿真图形。 置 A 道放行标志 0— F0 A 道放行时间送 R4 缓冲 3。 A 道亮绿灯, B 道亮红灯 A 道黄灯 B 道红灯 B 道亮绿灯 A 道亮红灯 B 道黄灯 A 道红灯 B 时间已走完。 A 已走完。 缓冲 3? 9 5 课程设计体会 这次课程设计经过一个假期的反复琢磨与修改,终于完成了。 从查资料,整理资料到读程序,写程序,改程序,仿真直至通过老师的验收,一切都充满了刻苦与艰辛,其间充满了挫折可是同时又伴随着欢乐。 令我感触最深的就是 同学们倾心的帮助,由于我的《单片机原理与应用技术》学的并不是很好,所以对某些知识点并不是很清楚,可是同学们总是不厌其烦的给我一遍又一遍的讲解,直到我弄清楚为止。 他们的知识阅历另我打开眼界,他们的无私精神更另我感动不已。 另外,在重复修改与设计的过程中,我又重新把《单片机原理与应用技术》这本书仔细的看了一下,弄懂了一些以前一知半解的东西,进一次加强和巩固了我的理论知识。 在此次课程设计过程中,我把单片机的理论知识用于实践中,使理论与实践相结合,使我的理论知识的到了巩固,在查资料翻阅资料的过程中也丰富了我的知识 跟阅历。 参考文献 [1] 张毅刚 .新编 MCS51 单片机应用设计(第 3 版) .哈尔滨工业大学出版社, 2020 [2] 马家辰 .MCS51 单片机原理及接口技术(修订版)哈尔滨工业大学出版社民 2020 [3] 何立民 .MCS51 系列 —— 单片机应用系统设计 . 北京:北京航空航天大学出版社 1990 [4]侯玉宝,基于 protues 的 51 系列单片机设计与仿真 . 北京:电子工业出版社 2020 10 附 1 源程序代码。 .........数字显示代码 ........................................... ORG 0100H TAB: DB 3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH。 主程序 ORG 0300H MAIN: MOV 26H,80。 东西通行时间初始值,存到 26H 单元 MOV 25H,60。 南北通行时间初始值,存到 25H 单元 MOV SP,40H。 堆栈选址 CLR。 MOV TMOD,66H。 T0、 T1 都计数方式,工作模式 2 ,启动方式 TRi 确定 MOV TL0,255。 计数器 0 初值 低 8 位 MOV TH0,0。 计数器 0 初值高 8 位 MOV TL1,255。 计数器 1 初值 低 8 位 MOV TH1,0。 计数器 1 初值高 8 位 SETB IT0。 外部中断一边沿触发 SETB IT1。 外部中断二边沿触发 MOV IE,8FH。 开中断 SETB TR0。 T0 开始计数 SETB TR1。 T1 开始计数。 ......东西绿灯南北红灯 ............................................... DXLD: CLR。 MOV R3,26H。 东西通行 80 秒 ( 26H)=80, (DXLD 即东西绿灯) DXLD1: MOV P2,33H。 点亮东西绿灯南北红灯 MOV 24H,R3。 为东西方向显示时间做准备 MOV A,R3。 ADD A,3。 黄灯的时间差 MOV 23H,A。 为南北方向显示时间做准备 LCALL DISP3。 时间显示 ,其中有 秒延时 LCALL DISP3。 凑够 1 秒时间 DJNZ R3,DXLD1。 判断 80 秒是否已完。 .......南北红灯东西黄灯闪 ......................................... ShanHD1: MOV R2,3。 转入黄灯闪亮 3 秒 HD1: MOV 22H,R2。 为显示做准备 MOV P2,2BH。 点亮南北红灯东西黄灯 LCALL DISP2。 显示时间,并延时 秒 MOV P2,3BH。 点亮南北红灯关闭东西黄灯 LCALL DISP2。 显时,且再延时 秒以便凑够 1 秒 DJNZ R2,HD1。 判断 5 秒是否到,若未到继续闪灭东西黄灯 AJMP NBLD。 .......南北绿灯东西红灯 ................................ NBLD: CLR。 MOV R1,25H。 南北通行时间 60 秒 (25h)=60,( NBLD 即东西绿灯) NBLD1: MOV P2,1EH。 点亮南北绿灯东西红灯 MOV 20H,R1。 为南北方向显示时间做准备 MOV A,R1。 ADD A,3。 MOV 21H,A。 为东西方向显示时间做准备 LCALL DISP1。 显示通行所剩时间,其中有 秒延时 LCALL DISP1。 再次显示以便数码管不闪,且再延时 秒以便凑够一秒 DJNZ R1,NBLD1。 判断 30 秒是否已完,若未完则从新显示、延时 11。 .......南北黄灯闪东西红灯 ............................................. ShanHD: MOV R2,3。 黄灯闪亮 3 秒 HD: MOV P2,1DH。 点亮黄灯 MOV 22H,R2。 为显示时间做准备 LCALL DISP2。 黄灯闪亮剩时显示 ,其中延时 秒 MOV P2,1FH。 熄灭黄灯 LCALL DISP2。 显时,且再延时 秒以便凑够 1 秒 DJNZ R2,HD。 判断 5 秒是否已完,若未完则从新闪灭、延时和显示。 主程序到此完 */。 ......延时程序 ..。课程设计论文-基于51单片机的交通灯控制设计
相关推荐
实现时钟计时的基本方法 利用 MCS51 系列单片机的可编程定时 /计数器、中断系统来实现时钟计数。 (1) 计数初值计算 : 把定时器设为工作方式 1,定时时间为 50ms,则计数溢出 20 次即得时钟计时最小单位秒,而 100 次计数可用软件方法实现。 假设使用 T/C0,方式 1, 50ms 定时, fosc=12MHz。 则初值 X 满足( 216X) 1/12MHz 12μ s
电压。 唐山学院课程设计 5 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 逐次逼近式 A/D 转换模块设计 逐次逼近型 A/D 转换器属于直接型 A/D 转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。 主要由比较器、环形分配器、控制门、寄存器与 D/A 转换器组成。 引脚功能 图 14 ADC0808 引脚图
组成。 MCS— 51 中的寄存器较多,大体可分为通用寄存器和专用寄存器两类。 图 微处理器存储器结构 MCS— 51 存储器配置:微型计算机必须配置一定数量的存储器,但不同的微型计算机存储器的配置不同。 一种是程序与数据共用一个存储器,如图 3(a)所示。 一般的通用计算机都采用此种形式。 另一种是将程序与数据分别放在两个存储器内,一个称程序存储器,另一个称数据存储器,如图 3(b)所示。
的制作 本次设计的数字钟系统中由于频率不是特别高,所以在设计 PCB 板时不存在考虑走线之间频率干扰问题, 但由于设计规定了 PCB 板的大小为 7*9cM,并且是单面板,所以对我们的设计带来了一定的难度,在设计中不得不通过走飞线的方式完成 PCB 板的制作。 5. 1 PCB 板的制作规则 我在数字钟设计中采用 Orcad 软件平台, 完成了 PCB 的制作, 在 PCB
LCALL DL1MS LCALL DL1MS JNB , SSWAIT SSST: MOV TIME, TIMED0。 120S LCALL TUNBCD MOV SN, 99H MOV EW, 0AAH SETB EA。 总中断开放 SETB PX1 SETB EX1 SETB ET0。 允许 T0 中断 SETB TR0。 开启 T0 定时器 MOV R4, 14H。 1S 定时用初值(
if(s1==0) //功能键按下 { while(s1==0)。 //松手检测 s1num++。 //功能键按下计数 TR0=0。 //T0 定时停止,进入时间调整 switch(s1num) { case 1: write_(0x80+0x40+0x09)。 break。 //光标闪烁位定为秒个位 case 2: write_(0x80+0x40+0x06)。 break。