PLC交通灯实训.docx
- 文档编号:26694730
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:19
- 大小:172.72KB
PLC交通灯实训.docx
《PLC交通灯实训.docx》由会员分享,可在线阅读,更多相关《PLC交通灯实训.docx(19页珍藏版)》请在冰豆网上搜索。
PLC交通灯实训
项目设计报告
项目名称:
交通灯控制系统
课程名称:
学院:
专业:
学 号:
姓 名:
成绩:
年月日
1.设计任务与要求
设计任务:
设计基于51单片机的交通灯控制系统。
设计要求:
(1)设计程序能够控制红灯、黄灯和绿灯的切换。
假设十字路口为东西南北走向,南北方向为主干道,东西方向为辅干道,主干道通行时间长于辅干道。
要求按表1实现过程控制。
(2)应用两位动态显示的LED显示器倒计时显示通行时间,总时间应包含绿灯闪烁和黄灯亮的时间。
(3)当绿灯闪烁和黄灯亮时,蜂鸣器发声提示。
。
(4)处理紧急情况,按键引发外部中断进入紧急状况。
在紧急状况下东西、南北均为红灯,15秒钟后恢复进入紧急状况之前的正常运行状态。
过程顺序
红路灯状态
时间
1
东西红灯,南北红灯
10秒
2
南北绿灯,东西红灯
40秒
3
南北绿灯闪烁3次,东西红灯
闪烁间隔1秒
4
南北黄灯,东西红灯
4秒
5
南北红灯,东西绿灯
30秒
6
南北红灯,东西绿灯闪烁3次
闪烁间隔1秒
7
南北红灯,东西黄灯
4秒
8
转过程2,循环执行
2.总体方案设计
图2.1总体设计原理图
3.硬件设计
3.1各单元模块功能及电路设计,绘制电路原理图
图3.1驱动板电路原理图
图3.2原理图
图3.2LED显示驱动代码
3.2电路参数的计算及元器件的选择
电源5V,一个TrafficModule_lEDBoardV3.0SN-6062,一个8052单片机,若干电阻。
4.软件设计
4.1分模块大是事实上多的地方fffffttt放放风分模块说明程序功能,阐述程序设计思路;
利用控制字的置1/置0、循环语句、定时器实现交通灯的按一定顺序控制的顺控程序。
4.2程序中重要参数(控制字、定时器初值等)的计算及说明
程序代码
N_DISPLAY∕M_DISPLAY;显示块字位口定义
DIODE_YANGEQU;;LED灯字位口定义
P0EQU;显示块选向定义
DIODE_YINEQU;LED段选向定义
DX_DIODE_YINEQU0CCH;东西向选控制字
NB_DIODE_YINEQU33H;南北向选控制字
NB_DIODE_YANG∕DX_DIODE_YANGEQU09H;红色LED灯段选控制字
NB_DIODE_YANG∕DX_DIODE_YANGEQU24H;绿色LED灯段选控制字
NB_DIODE_YANG∕DX_DIODE_YANGEQU12H;黄色LED灯段选控制字
P0,EQU55H;低位显示块位选控制字
P0EQU0AAH;高位显示块位选控制字
CLRF0;绿灯闪烁是否的标志
定时器0初值
X=2^16-fosc*t/12=65536-12*10^6*50*10^-3/12
=65536-50000=15536=3CB0H
Tx初值:
THx=3CH,TLx=B0H
定时器1初值
X=2^16-fosc*t/12=65536-12*10^6*20*10^-3/12
=65536-244=65292=FF0CH
Tx初值:
THx=0FFH,TLx=0CH
4.3程序流程图
5.系统调试及结果
5.1完成调试内容、调试方法以及调试仪器;
本系统的调试共分为两个大部分:
硬件调试和软件调试。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
单片机控制模块的调试以及电机控制控制模块的调试。
软件调试采用KeiluVision4进行汇编语言程序编程;利用仿真器、TrafficModule_lEDBoardV3.0SN-6062以此进行程序的调试,主要是检查语法错误并确认硬件完整无误。
步进电机控制程序,看其是否能否完成预定的功能,如能,测试通过,否则,修改并反复测试直到通过。
5.2说明调试中出现的问题及解决方法。
1.在编程之前,由于对LED和电路板电路的不了解,所以在编程中不清楚具体的输出对应哪个输入口线,最后在通过和老师沟通和在小组同学讨论下,共同解决了这个问题,从而在软件编程中也更加的得心应手。
2.实验时交通灯和数码管没有按正常的现象运行,交通灯亮的顺序和数量不对,数码管显示的数值不按每秒一次的变化,通过组长带领我们组认真学习研究发现问题是在编程时没有正确的输入字形和字位程序以及实验设备不完善所致,所以在实验中没有出现正确的现象。
3.由于未对计时器进行正确的初值设置使交通灯循环运行时,变化太快,不易观察出显现,通过对定时器的学习,了解到51单片机定时器其实是从计数器演变过来的,并且在编写程序时正确设置定时器0初值为3CB0H,定时器1初值设置为B1E0H,使程序正确运行。
6.设计总结
通过这次设计单片机对我们让日常中的交通灯设计,不仅让我进一步掌握了C51语言的编程,将理论教学与实践相结合,使我对于单片机的实际应用有了较深刻的认识,更让我对单片机硬件接线的方式方法有了更深层次的认识,在完成实验过程中使我对顺序控制领域尤其是像我们今天做的实际中的交通灯顺序控制的相关理论有了更深刻的感受。
这次运用的处理器是C51单片机和实际中交通灯SN-6062,程序是用汇编语言编写的,这不但要求设计者具有较强的编程能力,还要对硬件相当熟悉,这使我对单片机应用系统设计的各种方法有所了解。
在接线过程中首先我们应了解LED和驱动电路电路图,从而实现对新电路的设计。
每个新的项目都有自己的要求,要很好的设计出一个汇编语言程序,首先我们必须设计出程序框图,并且进行逻辑推理,考虑要用到什么硬件软件设备,比如定时器,计数器,然后经过汇编,不断完善我们的设计思路和程序,才能完成对程序的设计。
随着计算机的发展,单片机也在不断的发展,并且具有非常大的发展空间,这提高了我对设计课题的分析能力、编程能力及解决实际问题的综合能力。
增强了下阶段的学习信心。
为毕业设计奠定了基础。
7.参考资料
1.参考资料一:
《单片机接口技术实训指导书》
作者:
北京联合大学机电学院
2.参考资料二:
《微机原理与接口技术实验指导书2009》
作者:
北京联合大学机电学院
3.参考资料三《单片机原理及接口技术》
作者:
胡建
附件
程序代码
;J6---P0(G1~G8:
显示屏阴极)
;J7---P2(G9~G16:
发光二极管阴极)
;J5---P1(A~H:
屏和二极管的阳极)
;BUZZ----P3.0(蜂鸣器)
;STOP----INT0(外部按键);定义各引脚
DISP_LEQU52H
DISP_HEQU51H;保存个位与十位的数据
TIMEEQU50H;保存时间的数据
BIAOZHIEQU55H;保存标志的数据
NB_DIODE_YANGEQU56H;保存南北阳极与阴极的数据
NB_DIODE_YINEQU57H
DX_DIODE_YANGEQU58H;保存东西阳极与阴极的数据
DX_DIODE_YINEQU59H
TEM_TIMEEQU5AH;暂存时间的数据
TEM_BIAOZHIEQU5BH;暂存标志的数据
TEM_NB_DIODE_YANGEQU5CH;暂存南北阳极与阴极的数据
TEM_NB_DIODE_YINEQU5DH
TEM_DX_DIODE_YANGEQU5EH;暂存东西阳极与阴极的数据
TEM_DX_DIODE_YINEQU5FH
ORG0
AJMPMAIN
ORG0003H;选择外部中断0
LJMPSTOP
ORG000BH;选择定时器T0
AJMPT0_50;跳转到标号
ORG001BH;选择定时器T1
LJMPT1_KK
ORG0030H;程序开始单元
MAIN:
MOVR0,#7FH
K_CLR:
MOV@R0,#0
DJNZR0,K_CLR;判断R0的值是否为0
MOVTMOD,#11H;选择定时器T1(10H)与T0(01H)的工作方式1
SETBIT0
MOVTH0,#3CH;给定时器T0设置初值为50ms
MOVTL0,#0B0H
MOVTH1,#0FFH;给定时器T1设置初值
MOVTL1,#0CH
MOVR4,#20;循环20次,基本时间为1s
MOVIE,#8BH;开中断大门
MOVTIME,#10;灯亮10s
MOVNB_DIODE_YANG,#09H;南北红灯亮
MOVNB_DIODE_YIN,#33H
MOVDX_DIODE_YANG,#09H;东西红灯亮
MOVDX_DIODE_YIN,#0CCH
MOVBIAOZHI,#00H;指第一种状态(东西南北红灯亮10秒)
CLRF0;表示绿灯闪烁是否的标志
SETBTR0;开定时器0
CLRTR1;关定时器1
LOOP:
ACALLDISPLAY;跳到标号DISPLAY
ACALLDIODE;跳到标号DIODE
SJMPLOOP
T0_50:
MOVTL0,#0B0H
MOVTH0,#3CH
DJNZR4,EXITMM;判断R4的值是否为0,若不为0,则跳到,EXITMM;
反之,顺序执行
MOVR4,#20;20*50=1000ms=1s
DECTIME;40-1-1-...-1=?
1
MOVA,BIAOZHI
CJNEA,#00H,NEXT1;判断A里的内容与00H比较,若不相等,则跳到NEXT1;反之,顺序执行
MOVA,TIME
CJNEA,#00H,EXITMM;判断A里的内容与00H比较,若不相等,则跳到EXITMM;反之,顺序执行
MOVBIAOZHI,#01H
MOVTIME,#50
MOVNB_DIODE_YANG,#24H;南北绿灯亮
MOVNB_DIODE_YIN,#33H
MOVDX_DIODE_YANG,#09H;东西红灯亮
MOVDX_DIODE_YIN,#0CCH
SJMPEXITMM
NEXT1:
MOVA,BIAOZHI
CJNEA,#01H,NEXT2;判断A里的内容与01H比较,若不相等,则跳到NEXT2;反之,顺序执行
MOVA,TIME
CJNEA,#00H,SS;判断A里的内容与00H比较,若不相等,则跳到SS;反之,顺序执行
CLRTR1;关定时器1
MOVBIAOZHI,#02H;指第三种状态(南北红灯,东西绿灯亮30秒)
MOVTIME,#40
MOVNB_DIODE_YANG,#24H;东西绿灯亮
MOVNB_DIODE_YIN,#0CCH
MOVDX_DIODE_YANG,#09H;南北红灯亮
MOVDX_DIODE_YIN,#33H
SJMPEXITMM
SS:
MOVA,TIME
CJNEA,#10,NEXT1_10_1;判断A里的内容与10比较,若不相等,则跳到NEXT1_10_1;反之,顺序执行
NEXT1_10_1:
JNCEXITMM;判断累加器C是否为0,若为1,则跳转到EXITMM;反之,顺序执行
MOVA,TIME
CJNEA,#5,NEXT1_4;判断A里的内容与5比较,若不相等,则跳到NEXT1_4;反之,顺序执行
NEXT1_4:
JNCNEXT1_SHANSHUO;判断累加器C是否为0,若为1,则跳转到NEXT1_SHANSHUO;反之,顺序执行
SJMPNEXT1_YELLOW
NEXT1_SHANSHUO:
SETBTR1;开定时器1
CPLF0
JBF0,MIE_NEXT1;判断F0这位是否为1,若不为1,则跳转到MIE_NEXT1;反之,顺序执行
MOVNB_DIODE_YANG,#24H
EXITMM:
LJMPEXIT
MIE_NEXT1:
MOVNB_DIODE_YANG,#00H
SJMPEXIT
NEXT1_YELLOW:
SETBTR1
MOVNB_DIODE_YANG,#12H
SJMPEXIT
NEXT2:
MOVA,BIAOZHI
CJNEA,#02H,NEXT3;判断A里的内容与02H比较,若不相等,则跳到NEXT3;反之,顺序执行
MOVA,TIME
CJNEA,#00H,SSSS;判断A里的内容与00H比较,若不相等,则跳到SSSS;反之,顺序执行
MOVBIAOZHI,#01H;指状态2(南北绿灯,东西红灯亮40秒)
MOVTIME,#10
CLRTR1
MOVNB_DIODE_YANG,#24H;南北绿灯亮
MOVNB_DIODE_YIN,#33H
MOVDX_DIODE_YANG,#09H;东西红灯亮
MOVDX_DIODE_YIN,#0CCH
SJMPEXIT
SSSS:
MOVA,TIME
CJNEA,#10,NEXT2_10_2
NEXT2_10_2:
JNCEXIT
MOVA,TIME
CJNEA,#5,NEXT2_4;判断A里的内容与5比较,若不相等,则跳到NEXT2_4;反之,顺序执行
NEXT2_4:
JNCNEXT2_SHANSHUO;判断累加器C是否为0,若为1,则跳转到NEXT2_SHANSHUO;反之,顺序执行
SJMPNEXT2_YELLOW
NEXT2_SHANSHUO:
SETBTR1
CPLF0
JBF0,MIE_NEXT2;判断F0这位是否为1,若不为1,则跳转到MIE_NEXT2;反之,顺序执行
MOVNB_DIODE_YANG,#24H
SJMPEXIT
MIE_NEXT2:
MOVNB_DIODE_YANG,#00H
SJMPEXIT
NEXT2_YELLOW:
SETBTR1
MOVNB_DIODE_YANG,#12H;南北黄灯亮
SJMPEXIT
NEXT3:
MOVA,BIAOZHI
CJNEA,#03H,EXIT;判断A里的内容与03H比较,若不相等,则跳到EXIT;反之,顺序执行
CLRTR1
MOVA,TIME
CJNEA,#01H,NEXT4_N;判断A里的内容与01H比较,若不相等,则跳到NEXT4_N;反之,顺序执行
MOVTIME,TEM_TIME;当发生第四状态(紧急状态:
东西南北红灯亮)将所有数据暂存在已定义的单元里
MOVBIAOZHI,TEM_BIAOZHI
MOVNB_DIODE_YANG,TEM_NB_DIODE_YANG
MOVNB_DIODE_YIN,TEM_NB_DIODE_YIN
MOVDX_DIODE_YANG,TEM_DX_DIODE_YANG
MOVDX_DIODE_YIN,TEM_DX_DIODE_YIN
SJMPEXIT
NEXT4_N:
MOVNB_DIODE_YANG,#09H东西南北红灯亮
MOVDX_DIODE_YANG,#09H
EXIT:
RETI
T1_KK:
MOVTL1,#30H;定时器1定时蜂鸣器
MOVTH1,#0F8H
CPLP3.0;开蜂鸣器
RETI
STOP:
CLREA
JBP3.2,STOP_H;判断P3.2这位是否为1,若不为1,则跳转到STOP_H;反之,顺序执行
ACALLDELAY;调用延时
ACALLDELAY
ACALLDELAY
ACALLDELAY
ACALLDELAY
ACALLDELAY
JBP3.2,STOP_H
MOVTEM_TIME,TIME
MOVTEM_BIAOZHI,BIAOZHI
MOVTEM_NB_DIODE_YANG,NB_DIODE_YANG
MOVTEM_NB_DIODE_YIN,NB_DIODE_YIN
MOVTEM_DX_DIODE_YANG,DX_DIODE_YANG
MOVTEM_DX_DIODE_YIN,DX_DIODE_YIN
MOVTIME,#15
MOVBIAOZHI,#03H;指紧急状态
MOVNB_DIODE_YANG,#09H;东西南北红灯亮
MOVDX_DIODE_YANG,#09H
STOP_H:
SETBEA
RETI
DISP_PRO:
MOVA,TIME
MOVB,#10
DIVAB;A除以B(商放在十位,余数放在个位)
MOVDISP_H,A
MOVDISP_L,B;LED数字显示,十位与个位分离
RET
DISPLAY:
ACALLDISP_PRO
MOVP2,#00H;关发光二极管
MOVDPTR,#DISP_TAB
MOVA,DISP_H;十位
CJNEA,#00H,N_DISPLAY
SJMPM_DISPLAY
N_DISPLAY:
MOVCA,@A+DPTR;查表指令
MOVP1,A
MOVP0,#0AAH
ACALLDELAY
M_DISPLAY:
MOVA,DISP_L;个位
MOVCA,@A+DPTR
MOVP1,A
MOVP0,#55H
ACALLDELAY
RET
DIODE:
MOVP0,#00H;关LED
MOVP1,NB_DIODE_YANG
MOVP2,NB_DIODE_YIN
ACALLDELAY
MOVP1,DX_DIODE_YANG
MOVP2,DX_DIODE_YIN
ACALLDELAY
RET
DELAY:
MOVR7,#2
DEL:
MOVR6,#0FAH
DJNZR6,$;T=2*250*4=2ms
DJNZR7,DEL;判断R7的内容减1是否为0,若不为0,则跳转到DJNZ;反之,顺序执行
RET
DISP_TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;LED查表
END
注:
1.定时器T0控制时间;T1控制蜂鸣器
2.程序共有四种状态:
1)00H----指第一状态(东西南北红灯亮10秒)
2)01H----指第二状态(南北绿灯亮,东西红灯亮40秒)
3)02H----指第三状态(南北红灯亮,东西绿灯亮30秒)
4)03H----指紧急状态(东西南北红灯亮15秒后自动回复到原来的状态)
个人总结
通过这次对交通灯的控制设计,我单片机硬件设计的能力有所提高,我学会了怎么控制交通灯和数码管,学了硬件设计与软件设计。
尤其使我对单片机编程语言有了更多了解,知道了如何使用字形码和字位码控制应用数码管和交通灯,对定时/计数器有了更深一步了解。
在编程时特别要注意口线问题,不能接错、接反。
反映出来的问题也是十分明显的,比如对于基础知识掌握的不牢固。
总之对单片机编程实验我们要认真分析、设计、计算,编程。
调试时要有信心和耐心。
编程人员必须严于律己,工作态度严谨。
尤其在数据计算和输入程序的时候。
在现代信息自动化高速发展的时代,我相信单片机一定会发展成为高端的领先产品,我们也会努力学好这一课程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLC 交通灯