疫情期间在家完成的微机课程设计,虽然功能比较简单,但作为初学者来说还是花费了我不少精力,好在最终完成的效果不错。
1.设计概述
1.1 设计任务
在本课程设计中,其设计任务为设计并制作出汽车信 灯微机控制系统,控制的信 灯有仪表板左/右转弯灯、左/右头灯和左/右尾灯共六类灯,在不同的驾驶操作控制下可驱动相对应的汽车信 灯闪烁或长亮。
1.2 设计要求
(1)使用汇编语言或C语言;
(2)通过小键盘和开关给定,实现系统启动/停止,数码管(或液晶屏)显示当前系统状态及参数信息,简单故障诊断与 警。
(3)程序功能要求:汽车信 灯控制系统,所需执行的操作由相应的开关状态反映,所需控制的信 灯有仪表板左/右转弯灯、左右头灯和左右尾灯共六类灯,其驾驶操作与灯光信 对应关系如下:
a).左/右转弯(合上左/右开关):仪表板左/右转弯灯、左/右尾灯闪烁、左/右头灯闪烁。
b).紧急开关合上:所有灯闪烁。
c).刹车(合上刹车开关):左右尾灯亮。
d).左/右转弯刹车:仪表板左/右转弯灯、左/右头灯闪烁,右/左尾灯亮。
e).刹车、合上紧急开关:尾灯亮,左右转弯灯同时闪烁、头灯闪烁。
f).左/右转弯刹车并合上紧急开关:右/左转弯、左/右头灯闪烁,尾灯亮。
g).停靠(合上停靠开关):头灯、尾灯以30Hz的频率闪烁。
(4)上位机监控功能要求:通过串口或USB口实现上/下位机通信,能够显示汽车信 灯当前状态,能够从上位机控制下位机之信 灯的工作。
1.3 实验设备
在本设计中,所用到的设备器材如下所示:
(1)PC机,Keil、Proteus、Altium Designer、Visual Basic等软件;
(2)AT89C51单片机开发板,1602液晶显示屏;
(3)杜邦线若干。
2.项目内容
2.1硬件电路设计
在设计时,我选择了五个开关、AT89C51 单片机以及6只LED发光二极管。其中AT89C51单片机作为控制核心,当5个开关的状态发生改变后,单片机检测到开关信 后就通过软件输出相关信 ,从而达到驱动6个汽车信 灯根据开关的相应状态闪烁或长亮的效果。
总体设计电路图如下图所示(用AD软件画的):
2.2电路印制板图绘制(PCB板图)
PCB版图2D效果
PCB版图3D效果
2.3控制程序编写
程序控制流程图
其中图上的K1-K5 五个开关依次分别是:左开关、右开关、紧急开关、刹车开关、停靠开关
2.4上位机制作
在仿真时是利用Proteus里的COMPIM模块和虚拟串口工具VSDP实现Proteus仿真和上位机通信的,而在实物中是直接用串口线将单片机与PC机连接起来即可实现串口通信,单片机将数据发送给上位机,上位机在接收区显示汽车信 灯当前状态,同时上位机界面上的7个指示灯也会跟单片机上的LED灯同步闪烁或长亮(这一监视功能和1602显示功能是类似的),而上位机也能通过最下面一排的五个按键控制单片机之信 灯的工作(这一控制功能和单片机上的按键控制功能是类似的),也就是说通过串口通信实现了上位机对单片机比较好的监控功能。
用VB编写的上位机
2.5 控制系统仿真实验
proteus仿真图
调试结果图
2.6实物制作
在仿真实验完全成功了之后,我开始了实物的制作,由于实物和仿真在开关控制和串口通信方面的不同,我需要对仿真程序进行一些修改。首先是控制方面,因为在Proteus仿真中我用的是开关控制,而在实物中只有按键控制,所以我将程序改为检测一次按键,改变一次P2.0- P2.4的输入状态,然后对输入状态进行判断进入相应程序分支;其次在串口通信方面,我直接用串口线通过USB接口将单片机电脑连接起来从而实现串口通信。
程序调试好之后,我用杜邦线将学习板上的LED模块和独立按键模块分别与AT89C51芯片的P1.0- P1.7管脚、P3.2- P3.7管脚相连,然后将1602液晶屏模块也接入电路中,具体实物连接图如图3-8所示。最后烧入程序,运行结果,经过一次次的修改调试,最终在学习板上成功地得到了理想的结果,完成了汽车信 灯控制系统的实物制作。
实物图
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!