单片机实验三(急救车与交通灯)(共2篇)
1.单片机实验三(急救车与交通灯) 篇一
单片机带应急的交通灯控制实验(汇编)
org 00h ajmp main org 0003h ajmp int_
red_we equ p1.1 yel_we equ p1.2 gre_we equ p1.3 red_sn equ p1.5 yel_sn equ p1.6 gre_sn equ p1.7 org 0030h main: mov sp ,#65h call init_int clr red_we clr red_sn call delay3 loop: clr gre_we setb red_we call delay5
setb gre_we clr yel_we mov r4,#10 sight:call delay_200ms cpl yel_we djnz r4,sight setb yel_we
call delay_200ms clr gre_sn setb red_sn clr red_we call delay5 setb gre_sn
clr yel_sn mov r4,#10 sight1:
call delay_200ms cpl yel_sn djnz r4,sight1 setb yel_sn
clr red_sn clr red_we call delay_200ms sjmp loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;中断服务程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;int_: push psw push 04h setb gre_sn setb yel_sn setb gre_we setb yel_we clr red_sn clr red_we call delay5 call init_int pop 04h pop psw reti;;;;;;;;;;;;;;;;;;;;;;;;;;外部中断初始化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;init_int: setb ex0 setb it0 setb ea ret
;;;;;;;;;;;;;;;;;;;;;;;5秒延时
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay5: mov r4,#5 delay5_ : call delay_1s djnz r4,delay5_ ret;;;;;;;;;;;;;;;;;;;;;;;3秒延时
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay3: mov r4,#3 delay3_: call delay_1s djnz r4,delay3_ ret
;;;;;;;;;;;;;;;;;;;;;;
delay_200ms: mov r5,#20 s: call delay_10ms djnz r5,s ret
0.2秒延时
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;
非中断精确1MS定时程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_1ms: push 07h MOV R7 ,#249 signed:
;循环部分4机器周期 nop
nop djnz R7 ,signed pop 07h ret
;返回指令2机器周期
;2+249*4+2=1000us 可以精确定时1MS,假设外部晶振是12M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确10MS定时程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_10ms: push 06h mov r6,#9
;2个机器周期用2us
delay_10ms_sined:;9次循环共用9(1ms+4us)=9036us acall delay_1ms djnz r6,delay_10ms_sined
MOV r6 ,#240
;2个机器中期用2us signed_10ms :
;循环部分4机器周期 共240次 nop
nop djnz r6 ,signed_10ms pop 06h ret
;返回指令要2us;2us+9036us+240*4us+2us = 10ms 即可精确定时10ms;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
非中断精确定时1s
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay_1s: push 05h mov r5,#99
;两个机器周期2us
delay_1s_signed:
;循环指令周期为4us,加上延时10ms
;(10ms+4us)*99 = 990.396ms acall delay_10ms djnz r5,delay_1s_signed mov r5 ,#9
;两个机器周期2us signed_1s:
;循环指令周期为4us,加上延时1ms
;(1ms+4us)*9 = 9ms+36us acall delay_1ms djnz r5 ,signed_1s
mov r5 ,# 140
;机器周期2us signed_1s_:
;一次循环4us共有140次。140us*4 = 560us nop nop djnz r5,signed_1s_ pop 05h ret
;2us
;2us+990ms+396us+2us+9ms+36us+2us+560us+2us = 999ms+1000us = 1s
end
2.单片机交通灯设计与制作实训报告 篇二
第二天:在布局好的8.7*6.2万能板上我们要把各个元件都焊好,将焊接好的万能板与下载线一端连接,另一端口连接到计算机的并口,接通电源,检测已焊接好的电路是否接通。纯硬件测试调试。焊接时是在覆铜一面进行焊接,没有覆铜一面用来放置元件。了解了焊接的原理,焊锡借助于助焊剂的作用,经过加热熔化成液态,进入被焊金属的缝隙,在焊接物的表面,形成金属合金使两种金属体牢固地连接在一起
第三天:主控芯片是采用AT89S52单片机,电路完成后检查,确定电路无虚焊、无短路、集成元件是否安装正确,开始调试。我们来到机房,老师讲解采用AT89S52单片机来设计一个基本交通灯控制,编译源程序,运用AEDK51软件编辑,生成HEX文件,烧写成实验板,接着我们跟着老师步骤学会自己编译源程序,汇编语言程序设计,要做好四个状态
第四天:运用AEDK51软件根据程序流程图编辑,编译源程序,汇编语言程序设计,做好四个状态之后,生成HEX文件,烧写成实验板,利用progisp软件调试,慢慢的改正错误,一次次的调试之后加上在同学帮助下终于完成了控制两个方向的单片机交通灯
第五天:成功完成单片机交通灯后,回顾这一周来的实训过程,总结实训中所学到的,认识了单片机的硬件结构,工作原理,汇编语言程序设计以及接口应用
实训结果:根据设计要求,将焊接好的万能板与下载线一端连接,另一端口连接到计算机的并口,运用AEDK51软件编辑,生成HEX文件,烧写成实验板,完成了利用单片机控制12个发光二极管的交替点亮和熄灭
实训心得体会:短短的一周经过老师的精心指导下,花费的时间与精力终于效果渐渐地出现了,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识.,也让我们对单片机有了更深一步的了解。我们注意到,应该在万能板上把12个发光二极管分散点布局,焊接时是在覆铜一面进行焊接,没有覆铜一面用来放置元件,细心的放好芯片再调试,打开AEDK51软件要细心编辑,根据程序流程一步一步认真的完成汇编语言程序设计,保存的文件名称只能是英文,充分利用了AT89S52芯片实现了能根据实际车流量通过单片机芯片的P1口控制红、黄、绿灯的燃亮与熄灭
【单片机实验三(急救车与交通灯)】推荐阅读:
单片机交通灯设计报告08-03
单片机数据采集与双机通信系统的设计任务书09-04
单片机的发展概况09-05
单片机应用实践报告09-12
51单片机电子时钟程序09-15
单片机数字钟设计总结08-05
单片机数字万用表课程设计08-30
单片09-10