单片机应用技术——汇编+C51项目教程教学教程姚存治主编项目8单片机交通灯远程控制系统设计和制作演示文稿.pptVIP

单片机应用技术——汇编+C51项目教程教学教程姚存治主编项目8单片机交通灯远程控制系统设计和制作演示文稿.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上位机PC和下位机单片机之间的通信协议为:有紧急情况时,主机发送命令字0x11,从机收到0x11后回复0x22给主机,此时A、B双向均为红灯。解除紧急情况时,主机发送命令字0x66,从机收到0x66后回复0x77给主机,此时A、B方向回复正常显示。 8.2.1 硬件电路设计 8.2.2虚拟串口驱动软件及串口调试软件的使用 8.2.3 程序设计 8.2.4 综合仿真调试 上一页 下一页 返回 8.2.1 硬件电路设计 上一页 下一页 返回 本电路中,用到了交通灯模型,可以非常逼真地显示交通信号,双向12个灯由P0.0~P0.5来控制,实物电路中,PC用DB-9标准接口通过MAX232和单片机的串行口连接,MAX232的TIN和R1OUT分别接单片机的TXD和RXD。为了能够在没有串口的情况下仿真调试,电路中用了串口组件COMPIM。当由CPU或UART软件生成的数字信号出现在PC物理COM接口时,它能缓冲所接收的数据,并将它们以数字信号的形式发送给PROTEUS仿真电路。如果没有物理COM,可使用虚拟串口,下面介绍虚拟串口的相关知识。COMPIM的设置如下图所示。 上一页 下一页 返回 上一页 下一页 返回 8.2.1 虚拟串口驱动软件及串口调试软件的使用 Virtual Serial Port DriverV6.9(VSPD)就是一款虚拟串口驱动软件,安装并运行后,在下图所示的界面中的First port中选择COM3,在Second port中选择COM4,然后单击右侧的“Add pair”按 钮,在左边的 Virtual Ports 中立即会出现 COM3/COM4, 并且可以看到有 蓝色的虚线将二 者连接了起来。 上一页 下一页 返回 并可以在设备管理器中看到这两个虚拟串口。如下图所示。 上一页 下一页 返回 串口调试小助手1.3是一款经典的串口调试软件,无需安装,可直接运行。其界面如下图所示。这里端口选COM3波特率选9600,数据帧格式的设置应和COMPIM的设置相同。勾选“十六进制发送”和 “十六进制显示”。 这样设置完之后, 就可以在计算机上 用串口小助手,利 用虚拟串口COM3 和COM4,仿真调 试计算机和单片机 的串行通信。 上一页 下一页 返回 8.2.3 程序设计 本项目对应的C51参考源程序为: #includeREGX51.h typedef unsigned char u8; //串口中断函数 void serial() interrupt 4 { u8 i; EA=0; if(RI==1) { RI=0; if(SBUF==0x11) 上一页 下一页 返回 {SBUF=0x22; while(!TI); TI=0; i=P0; P0=0x24; while(SBUF!=0x66) { while(!RI); RI=0; } SBUF=0x77; while(!TI); TI=0; P0=i; EA=1; } 上一页 下一页 返回 else { EA=1; } } } //延时0.5s函数 void Delay0_5s() { u8 i; for(i=0;i10;i++) { TH0=0x3C; TL0=0xB0; TR0=1; while(!TF0); TF0=0; } } //延时0.5~128s函数 void Delay_ts(u8 t) { u8 i; for(i=0;it;i++) Delay0_5s(); } void main(void) { u8 k; TMOD=0x21; 上一页 下一页 返回 TH1=0xFD; TL1=0XFD; TR0=1; TR1=1; SCON=0x50; PCON=0x00; EA=1; ES=1; while(1) { P0=0x21; Delay_ts(20); for(k=0;k3;k++) { P0=0x20; Delay0_5s(); P0=0x21; Delay0_5s(); } P0=0x22; Delay_ts(4); P0=0x0C; Delay_ts(30); for(k=0;k3;k++) { P0=0x04; Delay0_5s(); P0=0x0C; 上一页 下一页 返回 Delay0_5s(); } P0=0x14; Delay_ts(4); } } 8.2.4 综合仿真调试 在PROTEUS中运行仿真调试,可以看到A、B两个方向的红绿灯按事先定好的时序显示。此时,打开串口小助手1.3,在发送栏输入“11”,点“手动发送”按钮,则能收到单片机回应的“22”显示在接收区。同时,双向的红灯都亮起。直到在发送栏输入“66”,则收到单片机回应的“77”,同时,红绿灯的显示恢复正常。如下图所示。 上一页 下

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档