完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx

上传人:b****2 文档编号:2448811 上传时间:2023-05-03 格式:DOCX 页数:35 大小:158.22KB
下载 相关 举报
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第1页
第1页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第2页
第2页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第3页
第3页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第4页
第4页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第5页
第5页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第6页
第6页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第7页
第7页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第8页
第8页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第9页
第9页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第10页
第10页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第11页
第11页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第12页
第12页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第13页
第13页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第14页
第14页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第15页
第15页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第16页
第16页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第17页
第17页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第18页
第18页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第19页
第19页 / 共35页
完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx

《完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx》由会员分享,可在线阅读,更多相关《完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx(35页珍藏版)》请在冰点文库上搜索。

完美升级版基于单片机与VB汽车尾灯控制毕业论文报告.docx

完美升级版基于单片机与VB汽车尾灯控制毕业论文报告

(此文档为word格式,下载后您可任意编辑修改!

课程设计(论文)

 

设计课题:

基于单片机的汽车尾灯控制

学校院系:

海南师范大学物电学院

专业:

10电子一班

学生姓名:

学号:

指导教师:

 

摘要

本次的课题是基于单片机的汽车尾灯控制器,该设计课题主要由STC89C52RC单片机为核心展开的汽车尾灯控制电路的设计方法,用发光二极管模拟汽车尾灯,可以用VB上位机界面和按键开关作为转弯等控制信号,,并且把信息显示在LCD1602上。

在VB6.0环境下,上位机利用MSCOMM通信控件与单片机之间串口通信实现上位机控制汽车尾灯。

设计电路能很好的综合运用我们所学习到的单片机、C语言、VB上位机编程,熟悉电子电路设计的基本方法。

关键词:

STC89C52RC;发光二极管;单片机;C语言;VB上位机;

MSCOMM控件

引言3

一·设计任务3

1.1任务说明3

1.2任务分析3

二·设计方案选择及论证4

2.1方案一:

采用555定时器等构成的汽车尾灯电路4

2.2方案二:

由STC89C52RC及其外围电路构成的汽车尾灯控制器4

2.3方案比较和选择4

2.4系统框图5

三·系统硬件原理介绍7

3.1单片机STC89C52RC介绍7

3.2LCD1602液晶屏介绍8

3.3系统结构原理图、器件选择9

3.4硬件电路总原理图14

3.5硬件设计原理及状态图14

四.程序流程15

4.1下位机软件程序15

4.1.1键盘扫程序设计流程图15

4.2.1显示程序设计流程图17

4.2VB上位机界面设计18

4.2.1设计方案原理与设计特点分析18

五·仿真图实物调试20

5.1仿真图20

5.2实物图21

六·课设总结21

参考文献22

附录一23

引言

汽车作为现代交通工具已经大量进入人们的生活,随着电子技术的发展,对于汽车的控制电路也已经从过去的全人工开关控制发展到了智能化的控制。

汽车尾灯控制器是随着汽车智能化技术的发展而迅速发展起来的,汽车尾灯一般基于微处理器的硬件电路结构构成,而正因为硬件电路的局限性,不能随意的更改电路的功能和性能,且可靠性得不到保证,因此对汽车尾灯控制系统的发展带来局限性,难以满足现代智能化的要求。

本次的设计是基于单片机的汽车尾灯控制器,用发光二极管模拟汽车尾灯,用VB上位机和按键开关作为汽车转弯等控制信号,实现汽车尾灯的智能化控制。

一·设计任务

1.1任务说明

本次课题主要是以STC89C52RC为核心的单片机控制电路,它主要模拟了汽车尾灯系统的正常行驶、转弯、刹车、倒车、夜间行驶等状态下的发光情况,实现了汽车尾灯控制的智能化。

1.2任务分析

设计一个基于单片机的汽车尾灯控制器,其具体设计要求如下:

1)汽车白天正常行驶时指示灯全灭;

2)汽车右(左)转弯时,前后最右(左)边和右(左)侧那个指示灯亮并闪烁;

3)汽车临时刹车时车尾灯全部亮;

4)汽车倒车时尾灯中间4个指示灯亮;

5)汽车夜间行驶时,车前灯全亮,尾灯两边各中间的灯亮;

6)可通过串口连接PC控制车尾灯(自己发挥部分);

二·设计方案选择及论证

2.1方案一:

采用555定时器等构成的汽车尾灯电路

采用译码器74LS138、计数器74LS161、脉冲产生器555、开光控制电路、显示驱动电路、发光二极管以及各种逻辑元件等构成的汽车尾灯控制电路。

由于汽车左右转弯时,四个指示灯循环点亮,所以用四进制计数器控制译码器电路顺序输出低电平,从而控制尾灯按要求点亮,达到模拟汽车转弯、刹车、正常行驶等状态。

由于行车时都是开关控制,所以每一个开关都应该有一个消除机械振动的装置,可以用基本SR触发器来实现。

2.2方案二:

由STC89C52RC及其外围电路构成的汽车尾灯控制器

STC89C52RC是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

本次单片机的控制系统以STC89C52RC为控制器,键盘为输入信号,由于STC89C52RC本身的功能强大,汽车转弯灯的驱动用单片机的驱动功能来完成。

使得单片机的功能得到了充分的运用;并且显示电路从并行IO口输出,由限流电阻和发光二极管组成,低电平使发光二极管导通,显示出相应的信号灯亮灭情况,实现了左转、右转、刹车、应急灯多种状态下的控制效果。

2.3方案比较和选择

方案一中,要使用多种控制电路,实现的方法繁杂且不灵活,成本高,搭建好电路后调试起来不方便,不可以任意定义各种状态,电路的可靠性以及可扩展性不高,且与本次课题所要求运用的知识相悖,因此不宜使用此方案。

方案二中,以单片机为核心,而单片机的编程比较直接,且可重复擦除修改,硬件电路搭建方便简单。

搭建好电路后通过STC89C52RC来编写程序,控制LED的亮灭,大大的简化了系统结构,降低材料的成本,提高系统的先进性和可靠性,能实现控制器的智能化。

由于采用此种方法开发的系统其升级和改进较为方便,因此本次课题选用方案二。

采用串口连接笔记本电脑,通过VB上位机控制LED的亮灭,实现真正意义上的智能化控制。

2.4系统框图

 

图2.4.1系统结构框图

整个系统包括电源电路、时钟电路、复位电路、按键电路、发光二极管显示电路、液晶屏显示电路、串口电路、单片机、PC上位机等。

其中主要由按键电路和PC上位机发出控制信号,由显示电路显示信号的具体状态。

三·系统硬件原理介绍

3.1单片机STC89C52RC介绍

图3.1.1STC89C52RC引脚图

(1)STC89C52RC部分引脚功能介绍:

1、VCC:

STC89C52RC电源正端输入,接+5V。

2、VSS:

电源地端。

3、XTAL1:

单芯片系统时钟的反相放大器输入端。

4、XTAL2:

系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。

5、RESET:

STC89C52RC的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。

3.2LCD1602液晶屏介绍

1602LCD主要技术参数:

显示容量:

16×2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明:

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据命令选择

12

D5

数据

5

RW

读写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

表10-13:

引脚接口说明表

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

3.3系统结构原理图、器件选择

(1)电源电路

图3.3.1电源电路

电源电路可以给单片机提供工作所需电源,有指示灯提示,灯亮时表示提供正常工作电压。

(2)时钟电路

图3.3.2时钟电路

时钟电路中使用的12M晶振,为单片机提供系统时钟。

(3)复位电路

图3.3.3复位电路

复位电路是单片机能上电复位,当程序混乱跑飞时可以通过按键手动复位。

(4)按键电路

图3.3.4按键电路

按键电路可以通过按键来模拟汽车的转弯、刹车、应急等各种状态,控制LED和液晶屏的显示。

(5)发光二极管显示电路

图3.3.5发光二极管显示电路

发光二极管可以模拟汽车车灯,显示各种控制信号的效果。

(6)液晶屏显示电路

图3.3.6液晶屏显示电路

液晶屏显示电路可以直观的显示出汽车的行进状态,增加尾灯系统的可视性。

(7)串口电路

为了使单片机内的电平与计算机的电平一样需要利用电平转换,MAX232芯片是专为RS232标准串口设计的单电源点平转换芯片。

其特点如下:

1)符合所有的RS232技术标准;

2)只需要单一+5V电源供电;

3)片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压;

4)功耗低,典型供电电流5mA;

5)内部集成2个RS-232C驱动器;

6)高集成度,片外最低只需4个电容即可工作;

7)连接方式如图5所示。

图5串口连接

3.4硬件电路总原理图

图3.4.1总原理图

硬件总原理分解如3.3.1~3.3.6各图所示,完整的实现了汽车尾灯的控制,用按键模拟控制信号,用发光二极管和液晶屏显示状态,达到所有指标。

3.5硬件设计原理及状态图

本次由按键作为控制信号,发光二极管模拟汽车尾灯,状态表如下所示:

 

驾驶操作

输出信号

LED1

LED2

LED3

LED4

LED5

LED6

LED7

LED8

左转

闪烁

右转

闪烁

刹车

正常行驶

夜间行驶

倒车行驶

本次课题主要以STC89C52RC为核心展开的汽车尾灯控制器,通过原理仿真以及实物制作,完整的实现了汽车尾灯智能化控制的效果,相比以前用数字逻辑电路原理打成的汽车尾灯更方便、更简单。

制作出的实物板有6个控制状态的按键,可以搭配起来控制6种汽车的行驶状态,完美的模拟了汽车尾灯控制系统,完成本次课题的全部指标。

四.程序流程

4.1下位机软件程序

4.1.1键盘扫程序设计流程图

键扫程序的过程为:

开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。

其流程图如图所示。

软件设计思路,程序开始后进入初始化,然后扫描键盘等待有键按下。

如果没有键按下则一直扫描,如果有键按下,则判断是哪个键,如果为1键,则正常行驶;为2键,则右转;为3键,则左车;为4键,则应急状态;为5键,则倒车行驶;为6键,则夜间行驶。

图4.3.1软件流程图

4.2.1显示程序设计流程图

图4.2.1显示程序流程图

显示程序的过程为:

显示开始时,先进行LCD的初始化,判断是否显示汉字或ACSII码或图形,若不显示,则返回,若显示的是汉字或ACSII码,则进行相应功能的设置,然后送地址和数据,再判断是否显示完,显示完则返回,没有显示完则继续送地址,若显示的是图形,则先进行相应功能的设置,再送行地址和列地址,然后送数据,最后判断是否显示完,显示完则返回,没有显示完则继续送行地址和列地址。

其流程图如图7所示。

(1)在编写液晶屏的显示程序时,发现液晶屏只能瞬间的显示状态,而不能保持,因此在液晶显示程序后要加上一个延时,使液晶屏能够保持状态;

(2)要使发光二极管闪烁可以通过指令让其取反,但是在编写程序时,只能取反一次,一次可以使用一个while函数,当没有按键时候发光二极管一直取反,且在程序里加上适当的延时;

(3)在使发光二极管闪烁时,如果前一个状态中正在使用改二极管,则切换状态后,每个灯管的闪烁时间不同步,因此在让其闪烁之前先令所有二极管保持同一个状态;

4.2VB上位机界面设计

4.2.1设计方案原理与设计特点分析

(1)IO控制系统原理框图:

发送数据

将PC机和单片机通过RS232连接,通过上位机软件可以向单片机发送数据来测试两者的通讯状态,同时单片机也可以向上位机软件返回数据,以显示当前通信状态是否正常。

以及用上位机软件控制单片机上的指示灯工作。

从而实现简单的IO控制系统。

(2)上位机软件

(3)通信协议

本通信系统使用了一个简单的通信协议,就是每当向单片机发送一个特定字符串时,单片机在接收到字符串时会向上位机软件反馈一条信息,来表明上位机软件和硬件是否正常通信,制定通信协议时需要指定端口号,关键代码如下:

MSComm1mPort=“”

MSComm1.InputMode=“”

MSComm1.RThreshold=“”

MSComm1.SThreshold=“”

MSComm1.Settings=""

MSComm1.PortOpen=“”

VB上位机界面通过协议控制车灯的智能开关。

五·仿真图实物调试

5.1仿真图

5.2实物图

6课设总结

本次的课设作品的主要元件为STC89C52RC,在其控制下保证了系统的正常工作,达到模拟汽车尾灯控制的效果,实现汽车尾灯的智能化控制。

两周的课程设计,相较于之前所选修的各种实验课程,此次更增加了自己的动手实践能力。

理论与实践还是有一定的差距的,在理论上不管多精确的数据,一旦用于实际中,就不得不考虑其仪器,器件的误差,以及自己操作上的能力。

而且,在课设过程中添加了自己的思考,该选择怎样的电阻、电容,想要修改最后的输出,应该在什么地方做改变。

虽然是一些很基础的东西,但仅仅是书上的理论学习,会让人对知识遗忘得比较快,相反,通过自己动手实践过的东西,会更加记忆深刻。

看着自己成功制作出来的电路板觉得很有成就感。

通过这次课设教我还学会很多关于电子产品知识。

进一步的认识了我们现实生活电子产品,了解和掌握了一些简单电子元件的运用,大大的扩展了我们的知识面。

提高了自己以后在学习生活中自己动手能力。

给我们很大的启发,很有助于我们将来的学习生活和工作。

在查阅资料中,获得了许多额外的知识,开拓视野。

在原理图的设计、使用proteus仿真、使用Altium绘制、实物的制作、板子调试等整个过程中加强了我们分析问题和解决问题的能力,深刻体味到实践是检验真理的唯一标准这一道理。

总而言之,这次课设,让我们受益匪浅。

参考文献

[1]李广弟,朱月秀,王秀山.单片机基础[M].北京:

航空航天大学出版社,2000.

[2]康华光,陈大钦.电子技术基础模拟部分[M].武汉:

高等教育出版社,1998.

[3]谢自美.电子线路设计·实验·测试(第二版).武汉:

华中理工出版社,2000.

[4]戴佳.51单片机C语言应用程序设计实例精讲[M].电子工业出版社,2006.

[5]徐爱钧,彭秀华。

KeilCx51V7.0单片机高级语言编程与μVision2应用实践[M].北京:

电子工业出版社,2006.

附录一

单片机源程序:

#include

ucharcodecdis6[]={"------night-----"};

ucharcodecdis7[]={"----"};

ucharcodecdis61[]={"------night-----"};

ucharcodecdis71[]={"MyControl"};

*******************************************************************

**

*检查LCD忙状态*

*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

*

**

*******************************************************************

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&0x80);

LCD_EN=0;

return(result);

}

*******************************************************************

**

*写指令数据到LCD*

*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

*

**

*******************************************************************

voidlcd_wcmd(ucharcmd)

{

while(lcd_busy());

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

_nop_();

_nop_();

P0=cmd;

delayNOP();

LCD_EN=1;

delayNOP();

LCD_EN=0;

}

*******************************************************************

**

*写显示数据到LCD*

*RS=H,RW=L,E=高脉冲,D0-D7=数据。

*

**

*******************************************************************

voidlcd_wdat(uchardat)

{

while(lcd_busy());

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P0=dat;

delayNOP();

LCD_EN=1;

delayNOP();

LCD_EN=0;

}

*******************************************************************

**

*LCD初始化设定*

**

*******************************************************************

voidlcd_init()

{

delay1(15);

lcd_wcmd(0x38);16*2显示,5*7点阵,8位数据

delay1(5);

lcd_wcmd(0x38);

delay1(5);

lcd_wcmd(0x38);

delay1(5);

lcd_wcmd(0x0c);显示开,关光标

delay1(5);

lcd_wcmd(0x06);移动光标

delay1(5);

lcd_wcmd(0x01);清除LCD的显示内容

delay1(5);

}

*******************************************************************

**

*设定显示位置*

**

*******************************************************************

voidlcd_pos(ucharpos)

{

lcd_wcmd(pos|0x80);数据指针=80+地址变量

}

*******************************************************************

voidinitUART(void)串口必须作以下初始化,才能正常工作。

{

TMOD=0x20;M1=1,M0=0定时器1工作方式2(定时常数重装,8位)

SCON=0x50;SM0=0,SM1=1,REN=1串口工作方式1,允许接收

TH1=0xfd;晶振11.0592时,波特率9600

TL1=0xfd;TL1计数,溢出后,TH1值送入TL1

EA=1;开总中断

ES=1;允许串口中断

TR1=1;启动定时器1

}

voidmain(void)

{

ucharm;

P1=0x00;

P2=0xff;

P0=0;

delay1(10);

延时

lcd_init();初始化LCD

lcd_pos(0);设置显示位置为第一行的第1个字符

for(m=0;m<16;m++)

lcd_wdat(cdis7[m]);

initUART();

lcd_pos(0x40);设置显示位置为第二行第1个字符

for(m=0;m<16;m++)

lcd_wdat(cdis2[m]);

while

(1)

{lcd_pos(0);设置显示位置为第一行的第1个字符

for(m=0;m<16;m++)

lcd_wdat(cdis7[m]);

白天正常行驶指示灯全灭

if(KEY1==1)

{

delay(10);

if(KEY1==1)

{

P2=0xff;

lcd_pos(0x40);

for(m=0;m<16;m++)

lcd_wdat(cdis1[m]);

}

}

汽车右转;亮并且闪

if(KEY2==1)

{

delay(10);

if(KEY2==1)

{

P2=0xff;

while

(1)

{

LED3=~LED3;

delay(100);

lcd_pos(0x40);

for(m=0;m<16;m++)

lcd_wdat(cdis4[m]);

if(KEY4==1||KEY3==1||KEY1==1||KEY5==1||KEY6==1)

break;

}

}

}

汽车左转;亮并且闪

if(KEY3==1)

{

delay(10);

if(KEY3==1)

{

P2=0xff;

while

(1)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2