汽车信号灯和里程表单片机模拟系统讲解.docx

上传人:b****7 文档编号:9020692 上传时间:2023-02-02 格式:DOCX 页数:58 大小:594.05KB
下载 相关 举报
汽车信号灯和里程表单片机模拟系统讲解.docx_第1页
第1页 / 共58页
汽车信号灯和里程表单片机模拟系统讲解.docx_第2页
第2页 / 共58页
汽车信号灯和里程表单片机模拟系统讲解.docx_第3页
第3页 / 共58页
汽车信号灯和里程表单片机模拟系统讲解.docx_第4页
第4页 / 共58页
汽车信号灯和里程表单片机模拟系统讲解.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

汽车信号灯和里程表单片机模拟系统讲解.docx

《汽车信号灯和里程表单片机模拟系统讲解.docx》由会员分享,可在线阅读,更多相关《汽车信号灯和里程表单片机模拟系统讲解.docx(58页珍藏版)》请在冰豆网上搜索。

汽车信号灯和里程表单片机模拟系统讲解.docx

汽车信号灯和里程表单片机模拟系统讲解

单片机原理及接口技术

 

课程设计报告

 

设计题目:

汽车信号灯和里程表单片机模拟系统

学号:

姓名:

指导教师:

张扬

 

信息与电气工程学院

二零一四年六月

汽车信号灯和里程表单片机模拟系统

随着城市改革开放的进一步深化,汽车行业迅速发展,汽车里程表的市场需求量也大大增加,同时对汽车的性能要求也越来越高。

经过了早期的机械齿轮结

构和采用手摇计算机与机械结构相结合的半机械半电子化的里程表后,全电子化

里程表终于应运而生了。

因为单片机兼容性强,性能价格比高,且软件、硬件应用设计资源资料丰富,它以其极高的性能价格比受到人们的重视和关注。

单片机以及外围芯片的不断发展促进了里程表的发展,而且随着电子技术的发展以及对里程表的不断改进和完善,也产生了诸多附加功能。

因此以单片机为核心的里程

表以其体积小,抗干扰能力强,对环境的要求不高,价格低廉,可靠性高,开发

较为容易,并可获得较高的经济效益等特点,很快占有了汽车里程表领域的市场。

本课题就如何利用单片机和其他元器件构成汽车信号灯和里程表模拟系统

做一些研究。

汽车信号灯模拟系统是实现7个开关分别对8个灯的控制,此系

统采用多路采集电路,节省了端口的资源;汽车里程表模拟系统是实现里程计算及LCD动态显示,使里程数一目了然。

1.设计任务

结合实际情况,基于AT89S52单片机设计一个汽车信号灯和里程表单片机模拟系统。

该系统应满足的功能要求为:

(1)远光灯、近光灯、刹车灯、倒车灯、左转向、右转向灯以及双闪灯的控制;

(2)里程表—对输入脉冲计数,显示累计里程。

主要硬件设备:

AT89S52单片机、开关量输入模块、LED输出模块、液晶显示器、8255实验模块

2.整体方案设计

汽车信号灯和里程表单片机模拟系统以AT89S52单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个汽车信号灯和里程表单片机模拟系统。

该系统通过单片机扩展8255接口,将A口连接开关量模块用以控制各个信号灯的输入,C口连接信号灯显示相应的信号。

单片机的P1口作为液晶显示的数据输出口以显示相应的里程数和信号灯,P3口作为液晶显示的控制端口。

汽车信号灯和里程表单片机模拟系统的结构图如图2-1所示。

图2-1汽车信号灯和里程表单片机模拟系统结构图

本系统硬件主要由开关量、LED灯显示系统、12864液晶显示系统、外部脉冲输入等几部分组成。

各模块的主要功能如下:

(1)开关量模块作为信号灯的输入模块,用来实施对远光灯、近光灯、刹车灯、倒车灯、左转向、右转向灯以及双闪灯的控制。

8个开关从低位到高位依次定义为远光灯、近光灯、刹车灯、倒车灯、左转向、右转向、双闪灯的控制开关,最高位的开关为复位开关。

(2)LED灯显示系统的8个等从低位到高位分别定义为远光灯、近光灯、刹车灯、倒车灯、左转向、右转向灯以及双闪灯,其中双闪灯占用最后两个LED灯。

远光灯、近光灯、刹车灯、倒车灯的开关置为高电平时,相应的灯亮;左转向、右转向灯的开关置为高电平时,相应的转向灯闪烁;双闪灯的开关置高电平时,两个双闪灯一起闪烁显示,且其他开关的任何状态均无效。

(3)12864液晶显示系统负责里程数和远光灯、近光灯、左转向、右转向灯及双闪紧急情况的文字显示。

双闪灯亮时,停止里程计数,并闪烁“紧急!

”字样。

其他情况下,以上四个灯哪个亮显示对应的文字,且左右转向为动态显示,远近光灯为动态显示。

(4)外部脉冲输入是由试验箱上的直流电机无极调速产生脉冲,连接到T0计数器,且每计数12次,产生T0中断,而相关的里程计数对应加一。

系统的整体设计方案设计图如图2-2所示。

图2-2系统的整体方案设计图

3.系统硬件电路设计

3.1时钟电路

在51单片机XTAL1和XTAL2外接晶振就构成了内部振荡器

图3-1时钟电路

3.2复位电路

复位方式为上电自动复位。

当单片机上电后后,复位动作自动完成。

图3-2复位电路

3.3LED显示电路

LED显示电路采用扩展的8255芯片,以其A口作输入C口作输出的方式工作。

课程设计中,用试验箱上LED显示模块作为车辆运行的信号灯,以及,试验箱上开关模块中开关的变化作为控制信号灯的信号,并用汇编程序控制信号灯的亮灭状态。

8255芯片中,A0-A7为PA口,C0-C7为PC口,D0-D7为数据口,剩下的为其控制端。

其与单片机的接口电路如图3-3所示。

图3-38255电路与信号灯、开关量的连接图

 

3.4液晶显示与蜂鸣器电路

单片机中的P10-P17为12864液晶的数据端口,P3.0-P3.3和P3.5为12864的控制端,蜂鸣器一端接双闪灯的C7口,另一端接地。

图3-4液晶显示器与蜂鸣器电路

3.5单片机控制模块

单片机的P0接地址译码芯片,且P3.4为外部计数端口,计外部直流电机产生的脉冲数,计算里程数。

图3-5单片机控制模块

4.系统程序设计

4.1主程序流程图

首先进行系统的初始化,LED灯全灭,液晶显示器上显示里程数为0,并开始计数。

拨动开关可使相应的灯亮或者闪烁显示。

有远光近光左右转向灯亮情况时,在液晶显示器上显示对应的文字,当左右转向灯均开,则俩灯均不亮,为互锁状态,同理远近光灯也是。

在12864显示液晶上远近光为静态显示,左右转向为闪烁显示,且其闪烁频率和左右转向等的闪烁频率一致。

系统主程序流程图如图4-1所示。

图4-1主程序流程图

4.2LED信号灯子程序流程图

LED显示系统的8个灯从低位到高位分别定义为远光灯、近光灯、刹车灯、倒车灯、左转向、右转向灯以及双闪灯,其中双闪灯占用最后两个LED灯。

远光灯、近光灯、刹车灯、倒车灯的开关置为高电平时,相应的等亮;左转向、右转向灯的开关置为高电平时,相应的转向灯闪烁;双闪灯的开关置高电平时,两个双闪灯一起闪烁显示,且不理会其他开关的高低电平。

图4.2LED信号灯子程序流程图

4.3液晶显示信号灯状态子程序路程图

液晶显示信号灯状态子程序流程图如图4-3所示。

图4-3液晶显示信号灯状态子程序路程图

 

4.4液晶显示里程数子程序流程图

通过计数器T0对外部脉冲进行计数,T0工作在方式一。

给T0一个初值,使其每计数12个脉冲便产生中断,里程数加一。

当双闪灯开启时停止计数,双闪灯灭时继续计数。

图4-4液晶显示里程数子程序流程图

5.系统调试

5.1Proteus软件仿真调试

(1)调试过程

首先用Proteus软件结合我们实验箱的资源,绘制出其电路图,并用Keil软件运行汇编程序,产生HEX文件,导入仿真图的单片机中,点击运行按钮,进行软件仿真。

其仿真过程图如下:

图5-1整体仿真电路图

由于有8个开关,和8个LED灯,故我们将其安排在底部,再由于此系统连线复杂,故我们对其均采用了总线的连接方式,减少了连线复杂带来的视觉疲劳,也避免产生连线错误。

图5-2开关处于全关状态,里程表计数

上图为程序运行起来后的状况,所有开关均处于关状态,T0一上电,便开始计数,里程数递加。

图5-3远光灯,倒车灯,右转向开启,右转向灯闪烁,右转向文字闪烁

如上图所示,里程数已经计数到466了,此时打开远光开关,右转向开关,倒车开关,右转LED灯闪烁,12864上面“右转向”文字闪烁,“远光灯”文字静态显示,说明运行正常。

图5-4近光灯,左转向开启,左转向灯闪烁,左转向文字闪烁

 

图5-5远近光灯都开时,则俩灯都不亮

如上图,此时远近光灯均开,则远近光LED灯均不亮,此为其互锁状态,左转向开关接高电平,左转向闪烁显示。

图5-6开双闪

当打开双闪开关时,俩个双闪LED灯闪烁,其他6个灯全部灭了,且里程数停止计数,在12864上面显示闪烁的“紧急!

”字样。

图5-7开复位开关

当打开复位开关后,对12864进行清屏,且把里程数重新置为0,所以的8个LED灯均亮,当把复位开关再掰为低电平时,则退出复位,开始计数。

(2)调试时应注意的问题

在调试中不应该将开关的名称和LED灯的名称取相同,在使用总线时要小心,注意标号要标清楚,且能表明所在管脚的大概含义。

在选择文件时,不知其名字时,可以XX查询,方便快速找到想要的芯片。

(3)分析遇到的问题及问题的解决方法

1)在给开关和LED灯命名时,命重了,就发现8255的PA口读不了开关量开关的状态,后来经过仔细查看,发现是重名会使开关失去作用,遂改名了。

2)由于实验箱上是由P0和P2来控制8255的,但是由于找不到试验箱上译码的芯片,遂查看单片机原理的课本,将电路连成如书上的样式,只用P0口来控制数据和地址,这样每次要把仿真的程序倒到实验箱中进行实物仿真,就必须对8255的PA,PC和控制器地址进行修改。

在仿真中,PA,PB.PC,控制器的地址为#0FF7CH,#0FF7DH,#0FF7EH,#0FF7FH,而实验箱中对应的地址分别为#0FF28H,#0FF29H,#0FF2AH,#0FF2BH.

5.2硬件调试

(1)调试过程

1)LED调试电路

由于先编写了液晶显示模块,占用了P1和P3的5个IO口,所以在编灯的程序时,就想用P0口作为输出口,但是程序运行不成功,经过几番波折,终于发现是P0口驱动力不足导致的。

由于P0口为双向口,且外部没加上拉电阻,不能将其当做普通的准双向的IO口使用,然后我们翻阅实验箱使用说明,得知P0和P2均连接到82C55的数据端和控制端,又考虑到82C55有PA,PB,PC三个IO口,刚好够我们使用,于是我们用了8255扩展,用PA口作为输入,PC口作为输出。

然后再后面编LED灯时,我们误以为其为高电平点亮的,然后发现其实际是为低电平点亮的,遂将输出给PC口的值全部取反后才输出。

2)液晶显示电路

最初以为试验箱的12864是有带字库的,后来发现其没带字库,最后上网用汉字取模软件将所需用的字的字码表导入,才实现了汉字的输出。

在后面调试远近光灯的显示时,一直发现将远光灯关掉时,液晶上仍然显示着,后才发现要在12个查询语句中那些没显示远近关灯的程序里,给远近光灯的显示空间上写上空数据,以使其得到消除。

在硬件的调试过程中还发现,在我们没对其写的液晶空间上,有时会出现乱码覆盖,后才发现是由于在显示过程中由于对累加器ACC赋值不当,导致数据溢出,覆盖到其他未控制的空间,最终对累加器的赋值进行改进,修复了大部分情况,不过偶尔也会出现溢出情况(这些乱码大都出现在里程数计数到2000多后),这一问题仍需要以后慢慢研究。

(2)调试时应注意的问题

1)每次连接好线路并检查无误后再打开实验箱电源,以免破坏实验箱电路,并注意要保护好仿真器的插口。

2)由开关量开关输入给PA口的连线颖看清楚哪个对应的是高位,哪个对应的是低位,以免高低位错乱。

3)当发现程序烧不进单片机时,要检查是否将仿真器的开关掰上。

(3)分析遇到的问题及问题的解决方法

1)遇到程序烧不进去时,我就将单片机重新插一遍,或是将仿真器开关重新打开就好了。

2)遇到12864产生乱码,后来发现是因为12864的管脚插松了,紧一紧就又正常了。

3)有次遇到某个LED灯不管开关怎样都不亮,后来发现是连线断了,重新换一根就好了。

 

6.程序清单

///////////////////端口定义//////////////////////////

OUTPUTEQUP1;液晶数据口定义

CSAEQUP3.5

CSBEQUP3.3

RSEQUP3.0;液晶控制口定义

RWEQUP3.1

EEQUP3.2

FUNEQU01H;LED灯口定义

COMEQU21H

DATEQU22H

CODESEQU23H

COLUMNEQU24H

PAGEFEQU25H

CPAGEEQU26H

CCOLUMNEQU27H

COLUMN2EQU28H;液晶变量定义

PAGEF2EQU29H

CPAGE2EQU2AH

CCOLUMN2EQU2BH

COUNTEQU2CH

COUNT1EQU2DH

COUNT2EQU2EH

LOADEQU2FH;拨码开关口定义

COLUMN1EQU30H

PAGEF1EQU31H

CPAGE1EQU32H

CCOLUMN1EQU33H

COLUMN3EQU34H

PAGEF3EQU35H

CPAGE3EQU36H

CCOLUMN3EQU37H

SECONDEQU45H

MINUTEEQU46H;计数器变量定义

HOUREQU47H

SHUJI1EQU50H

SHUJI2EQU51H

SHUJI3EQU52H;6位里程数定义

SHUJI4EQU53H

SHUJI5EQU54H

SHUJI6EQU55H

BT0BIT20H.0

BT1BIT20H.1

BT2BIT20H.2;标志位定义

BT3BIT20H.3

BT4BIT20H.4

BT5BIT20H.5

BT6BIT20H.6

////////////////////////////////////////////////////

ORG0000H

LJMPSTART

ORG000BH;程序地址

LJMPINTP0

ORG0100H

;********************主程序开始*************************

START:

MOVTMOD,#05H

MOVTH0,#0FFH;计数器初值

MOVTL0,#0FAH

MOV45H,#00H

MOV46H,#00H

MOV47H,#00H

MOV50H,#00H;6位里程数设初值

MOV51H,#00H

MOV52H,#00H

MOV53H,#00H

MOV54H,#00H

MOV55H,#00H

LCALLINT;调用初始化子程序

LCALLCLEAR;调用清屏子程序

LCALLDE

LCALLDE

MOVDPTR,#0FF2BH;8255控制字初始化

MOVA,#90H;A输入C输出

MOVX@DPTR,A

//////////////////////////////////////////////

MAIN:

LCALLCHULI

LCALLDISPLAY;调用显示程序

MOVCOM,#00

LCALLPRR0

LCALLPRM0

LCALLDISPLAY55

MOVDPTR,#0FF28H;PA口

MOVXA,@DPTR

MOVLOAD,A

ANLA,#33H

MOVFUN,A

MOVA,LOAD

ANLA,#80H

CJNEA,#80H,PXSTART

AJMPSTART

PXSTART:

MOVA,LOAD

ANLA,#40H

CJNEA,#40H,PX00

CLREA;满足只是双闪为高条件

LCALLSETALL

LCALLSHAN1O

LCALLDISPLAY33

MOVR2,#20H

LCALLDELY

LCALLSHAN1X

LCALLDISPLAY5

LCALLDISPLAY44

MOVR2,#20H

LCALLDELY

AJMPMAIN

SETALL:

MOVDPTR,#0FF2AH;关所有灯的子程序

MOVA,#0FFH

MOVX@DPTR,A

RET

SHAN1O:

MOVDPTR,#0FF2AH

MOVA,#3FH

MOVX@DPTR,A

RET

SHAN1X:

MOVDPTR,#0FF2AH

MOVA,#0FFH

MOVX@DPTR,A

RET

PX00:

SETBEA

SETBET0

SETBTR0

PX01:

MOVA,FUN

CJNEA,#00H,PX02

LCALLDISPLAY33

LCALLDISPLAY44;左右转向灯均关,远近光灯均关

MOVA,LOAD

ANLA,#0CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LJMPMAIN

PX02:

MOVA,FUN

CJNEA,#01H,PX03

LCALLDISPLAY3

MOVA,LOAD;左右转向灯均关,远光灯开

ANLA,#0DH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LJMPMAIN

PX03:

MOVA,FUN

CJNEA,#02H,PX04

LCALLDISPLAY4

MOVA,LOAD

ANLA,#0EH;左右转向灯均关,近光灯开

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LJMPMAIN

PX04:

MOVA,FUN

CJNEA,#03H,PX05

LCALLDISPLAY33

LCALLDISPLAY44

MOVA,LOAD

ANLA,#0CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A;左右转向灯均关,远近光灯均开

LJMPMAIN

PX05:

MOVA,FUN

CJNEA,#10H,PX06

LCALLDISPLAY33

LCALLDISPLAY44

MOVA,LOAD

ANLA,#1CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY1;左转向灯开,远近光灯均关

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY11

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX06:

MOVA,FUN

CJNEA,#11H,PX07

LCALLDISPLAY3

MOVA,LOAD;左转向灯开,远光灯开

ANLA,#1DH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY1

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0DH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY11

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX07:

MOVA,FUN

CJNEA,#12H,PX08

LCALLDISPLAY4

MOVA,LOAD

ANLA,#1EH

CPLA;左转向灯开,近光灯开

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY1

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0EH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY11

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX08:

MOVA,FUN

CJNEA,#13H,PX09

LCALLDISPLAY33

LCALLDISPLAY44

MOVA,LOAD

ANLA,#1CH

CPLA

MOVDPTR,#0FF2AH;左转向灯开,远近光灯均开

MOVX@DPTR,A

LCALLDISPLAY1

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY11

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX09:

MOVA,FUN

CJNEA,#20H,PX10

LCALLDISPLAY33

LCALLDISPLAY44

MOVA,LOAD

ANLA,#2CH

CPLA;右转向灯开,远近光灯均关

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY2

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0CH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY22

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX10:

MOVA,FUN

CJNEA,#21H,PX11

LCALLDISPLAY3

MOVA,LOAD

ANLA,#2DH

CPLA;右转向灯开,远光灯开

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY2

MOVR2,#20H

LCALLDELY

MOVA,LOAD

ANLA,#0DH

CPLA

MOVDPTR,#0FF2AH

MOVX@DPTR,A

LCALLDISPLAY22

MOVR2,#20H

LCALLDELY

LJMPMAIN

PX11:

MOVA,FUN

CJNEA,#22H,PX12

LCALLDISPLAY4

MOVA,LO

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

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1