04_带串口控制的交通灯.doc_第1页
04_带串口控制的交通灯.doc_第2页
04_带串口控制的交通灯.doc_第3页
04_带串口控制的交通灯.doc_第4页
04_带串口控制的交通灯.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4 带超驰控制的红绿灯4.1 实现的功能上一个实验完成了简单的十字路口的红绿灯,虽然简单,但是已经能够实现基本功能了。当然,在条件允许的情况下,人们总是期望实现更多的功能。(事实上,当你在公司里从事嵌入式开发的时候,你的无知而且可憎的上司,也总是让你在原本就已经十分复杂的系统里塞入一个又一个有用或者无用的功能。我们最好现在就开始面对这一点。)目前交通灯具有的一项重要的功能是“超驰控制”功能,即交通警察可以根据实际的交通情况,人为地改变红绿灯的状态,以便对某个方向放行或同时禁止双向通行。这时交通警察使用一无线遥控器,可以人为改变红绿灯,我们用串行通信接口实现这一功能。用一台计算机模拟遥控器,使用串口调试软件,通过发送不同数据控制红绿灯的工作方式。有4种工作方式:0-正常工作方式,南北向东西向依次通行;1-南北向通行,东西向关闭;2-东西向通行,南北向关闭;3-东西向南北向均关闭。通过RS232口发送十六进制数:00h或01h或02h或03h,来控制工作方式。4.2 电路设计完成这个功能需要一台PC、一个ISP下载器、最小系统板、十字路口LED板、串口通信板。连接步骤是:(1)将十字路口LED板的5V接线端子同最小系统板的5V接线端子用杜邦线连接;(2)将十字路口LED板红、黄、绿12只LED按照同一条马路对应同样的灯的原则分为两组,共6路控制信号;(3)将6路控制信号分别接至最小系统板的P0.0-P0.5口上;(4)将串口通信板GND和5V分别同最小系统板的GND和5V相连接;(5)将串口通信板TXD和RXD分别同最小系统板的TXD和RXD相连接;(6)用串口线将串口板同计算机串口相连接;(7)将ISP下载器同最小系统板相连接;(8)将ISP下载器的USB端口同PC的USB口相连接。3.3 软件设计在WAVE6000环境下编写程序,然后将程序代码编译成机器代码文件,然后利用ISP软件将代码文件下载到单片机中。上电后,系统默认进入工作方式0,即正常的红绿等;当用“串口调试助手”发送0x01时,系统进入工作方式1,并且“串口调试助手”显示刚才发送的数据。依次可实验所有状态。模块1,文件名“mydefine.h”,文件如下:;-os_ms_b equ 7fh ;系统10ms计数器os_dida_b equ 7eh ;系统dida计数器os_dida_o_b equ 7dh ;系统dida跟随计数器;-sec_b equ 78h ;秒min_b equ 77h ;分hour_b equ 76h ;时week_b equ 75h ;周;-lamp_sp_b equ 6fh ;红绿灯指针lamp_bz_b equ 6eh ;红绿灯工作方式标志;-主文件,文件名“main.asm”,文件如下:;-include mydefine.h;- org 0000h jmp main_start org 000bh jmp t0_zdzcx org 0023h jmp uart_zdzcx;- org 0040hmain_start: mov SP,#02fh call csh_zcxmain_loop: mov a,os_dida_b xrl a,os_dida_o_b jz main_next mov os_dida_o_b,os_dida_b ;- call clock_zcx ;时钟子程序 call lamp_zcx ;红绿灯子程序 ;-main_next: jmp main_loop;-;控制系统dida为1秒,即超级循环1秒执行一次t0_zdzcx: push a push PSW ;- mov TH0,#0d8h mov TL0,#0f8h ;- inc os_ms_b mov a,os_ms_b cjne a,#100,t0_exit mov os_ms_b,#0 inc os_dida_b mov a,os_dida_b cjne a,#60,t0_exit mov os_dida_b,#0 ;-t0_exit: pop PSW pop a reti;-uart_zdzcx: jbc TI,uart_fs jbc RI,usrt_js jmp uart_exit ;-uart_fs: jmp uart_exit ;-usrt_js: mov lamp_bz_b,SBUF mov SBUF,SBUF ;-uart_exit: reti;-csh_zcx: ;-var- mov os_ms_b,#0 mov os_dida_b,#0 mov os_dida_o_b,#0 ;- mov sec_b,#0 mov min_b,#0 mov hour_b,#0 mov week_b,#0 ;- mov lamp_sp_b,#0 mov lamp_bz_b,#0 ;-t01- mov TMOD,#00100001b mov TH0,#0d8h mov TL0,#0f0h mov TH1,#0e6h mov TL1,#0e6h setb TR0 setb TR1 ;-uart- mov SCON,#01010000b ;-int- mov IP,#00000000b mov IE,#10010010b ;- ret;-;秒/分/小时/周 计算clock_zcx: inc sec_b mov a,sec_b cjne a,#60,clock_exit mov sec_b,#0 inc min_b mov a,min_b cjne a,#60,clock_exit mov min_b,#0 inc hour_b mov a,hour_b cjne a,#24,clock_exit mov hour_b,#0 inc week_b mov a,week_b cjne a,#7,clock_exit mov week_b,#0clock_exit: ret;-;控制红绿灯闪烁lamp_zcx: mov a,lamp_bz_b anl a,#003h mov b,#3 mul ab mov dptr,#lamp_ms_tab jmp a+dptrlamp_ms_tab: ljmp lamp_ms0 ljmp lamp_ms1 ljmp lamp_ms2 ljmp lamp_ms3 ;-lamp_ms0: mov a,lamp_sp_b mov dptr,#lamp_data_tab movc a,a+dptr mov P0,a ;- inc lamp_sp_b mov a,lamp_sp_b cjne a,#20,lamp_exit mov lamp_sp_b,#0 jmp lamp_exit ;-lamp_ms1: mov P0,#11011011b jmp lamp_exit ;-lamp_ms2: mov P0,#11110110b jmp lamp_exit ;-lamp_ms3: mov P0,#11110011b jmp lamp_exit ;-lamp_exit: ret;-lamp_data_tab:db 11011011b, 11011011b, 11011011b, 11011011bdb 11011011b, 11011011b, 11101011b, 11101011b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论