数电课程设计高级出租车计价器.docx
- 文档编号:17024472
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:39
- 大小:312.09KB
数电课程设计高级出租车计价器.docx
《数电课程设计高级出租车计价器.docx》由会员分享,可在线阅读,更多相关《数电课程设计高级出租车计价器.docx(39页珍藏版)》请在冰点文库上搜索。
数电课程设计高级出租车计价器
附件1:
学号:
0121309341707
课程设计
题目
出租车计价器的设计与实现
学院
信息工程学院
专业
通信工程
班级
通信1304班
姓名
洪磊
指导教师
撒继铭
2015年7月9日
课程设计任务书
学生姓名:
洪磊专业班级:
通信1304
指导教师:
撒继铭工作单位:
信息工程学院
题目:
出租车计价器的设计与实现
初始条件:
本设计既可以使用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等,也可以使用单片机系统构建多功能数字钟。
用数码管显示行驶里程、停车时间和计费值。
要求完成的主要任务:
(包括课程设计工作量及技术要求,以及说明书撰写等具体要求)
1、课程设计工作量:
1周。
2、技术要求:
1)设计一个出租车计价器。
要求用4位数码管显示行驶里程、停车时间和计费值,采用按键切换显示物理量。
2)出租车的起步价为3元,当里程行驶到1km后,费用为4元;当里程行驶到1.5km后,费用为5元;,当里程行驶到2km后,费用为6元;当里程行驶到2.5km后,费用为7元;当里程行驶到3km后,费用为8元;此后每公里计费为0.7元/0.5km。
停车每达3分钟,增加0.7元。
3)具有秒、分为60进制计数功能,能显示分、秒停车状态的计时结果,格式为:
00:
00min。
。
按照轮胎转动1圈为1m计算,计算并显示行驶的里程结果,格式为:
000.0km。
能显示乘车费用,格式为:
000.0元。
4)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:
1、2015年6月23日,布置课设具体实施计划与课程设计报告格式的要求说明。
2、2015年6月25日至2015年6月28日,方案选择和电路设计。
3、2015年7月5日至2015年7月9日,电路调试和设计说明书撰写。
4、2015年7月10日,上交课程设计成果及报告,同时进行答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
1设计方案与比较
摘要
随着出租车行业的发展,对出租车计费器的要求也越来越高。
二十世纪后半期,随着集成电路和计算机技术的飞速发展,单片机技术也得到了飞速发展,基于单片机的出租车计费器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,特别是对小批量、多品种的产品需求,单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以低价高质的服务给人们带来了出行的享受。
但总存在着买卖纠纷困扰着行业的发展。
本课设就是基于此背景设计一个单片机为机架的,用数码管显示的计价器。
关键词:
出租车计价器单片机控制数码管
1设计方案与比较
1.1系统方案设计
方案一:
采用数字电路控制,用数电课上所学的相关知识,设计出一系列的电路,借助相关芯片和门电路来实现,计价,时间显示,里程显示,还有就是总价的显示,以及按键切换显示不同物理量的方式。
电路有几个部分;电源,传感器,处理器,4位数码管显示部分
图1-1数字电路实现方案框图
方案二:
采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图1.2所示:
图1-2DEA设计原理图
方案三:
采用单片机控制。
利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的里程计价功能,途中等待等不同功能[4]。
采用单片机控制。
利用单片机丰富的I/O端口,及其控制的灵活性,有较大的活动空间,便于修改。
不但能实现基本的里程计价功能和价格调节、显示功能,而且能在很大的程度上扩展功能,还可以方便的对系统进行升级。
为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求。
单片机控制实现方案框图,如图1-3所示。
图1-3单片机控制实现方案框图
1.2方案论证
采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
而用EDA技术实现此项计价器,我们EDA知识了解较少,实现起来比较困难,并且与数电课设的主题有所偏离。
为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,。
综上对比,采用方案一数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
而方案二的EDA技术实现的方案也比较难以实现。
自己对EDA技术了解不够,虽然能实现其所有应有的功能,但从实现的可能性上,舍弃了此方案。
方案三单片机有较大的活动空间,利用单片机丰富的I/O端口,及其控制的灵活性,不但能实现基本的里程计价功能和价格调节、时钟显示功能,而且能在很大的程度上扩展功能,还可以方便的对系统进行升级。
采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求。
因此采用方案三作为本次设计的实现方案。
2优选方案的原理与设计
2.1系统硬件设计
2.1.1单片机控制模块设计
本设计中,采取单片机最小系统作为系统中的控制模块。
单片机最小系统,是指能维持单片机运行的最简单配置的系统。
这种系统成本低廉、结构简单,常用来构成简单的控制系统。
图2-1单片机控制模块电路图
AT89C52的管脚结构图及管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C52的一些特殊功能口,如表2-1所示:
表2-1AT89S52部分引脚功能表
端口引脚
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中断0)
P3.3
/INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
图2-2AT89S52管脚结构图
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.1.1.1单片机时钟电路
AT89S52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或8051单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
本设计主要是用内部振荡方式完成的[9]。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
晶振频率,以19.2K波特率为例,19.2K波特率的晶振为
19200×(256-0FDH)×384×2=11.0592(SMOD=1)
选用11.0592MHz只是为了得到精确的通信波特率,串口通信的可靠性高。
外接石英晶体及电容C2、C3接在放大器的反馈回路中构成并联谐振电路,起稳定振荡频率、快速起振的作用。
对外接电容C2、C3虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度的稳定性,一般在20~60pF之间选择,本次采用22pF[10]。
时钟电路设计图,如图2-3所示。
图2-3时钟电路设计图
2.1.1.2单片机复位电路
单片机有一个复位引脚RST,它是施密特触发输入,当振荡器起振后,该引脚上出现2个机器周期以上的高电平,使器件复位,只要RST保持高电平,单片机保持复位状态[11]。
此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。
RST变为低电平后,退出复位,单片机从初始状态开始工作。
对于复位电路,本设计采用上电复位电路,由于89C51是高电平复位,因此通过在RESET端接一个电阻到地,并接一个电容到电源的方式完成上电复位,上电时电源给电容充电,电容导通,因此RESET脚就相当于连接到+5V电源,开始复位,当电容充电完成后,电容断开,RESET脚被下拉电阻钳位在低电平,则退出复位状态。
复位电路设计图,如图2-4所示。
复位电路连接图如下
图2-4复位电路设计图
单片机在启动运行时都需要进行复位操作,以便使CPU和系统中的其它部件都处于某一确定的初始状态,并从这个状态开始工作。
AT89C51单片机有一个引脚RST,它是施密特触发器的输入端,其输出端接复位电路的输入。
复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即二个机器周期)以上,若使用频率为6MHz的晶振,则复位信号持续时间应超过4μs才能完成复位操作。
复位之后,使ALE、PSEN、P0、P1、P2口的输出均为高电平(即为输入状态),复位后,内部寄存器的状态如表3、1所示。
RST变为低电平后,便又退出复位状态。
CPU从初始化工作,由状态表可知,复位后:
程序寄存器为0000H开始执行程序,内部RAM不受复位影响。
复位有电复位和按键手动复位两种。
按键手动复有电平方式和脉冲方式两种。
本次设计中,为方便人的操作,采用按键手动复位的按键电平复位。
其复位电路如下表示:
表2-2复位电路表
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
TH0
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0-P3
0FFH
SCON
00H
IP
XX000000H
SBUF
00H
IE
0X000000H
PCON
不定
TMOD
00H
0XXX0000B
2.1.2外部键盘调整模块设计
本设计中需要用到2个按键,驱动键盘,由于单片机的内部上拉,按键没按下时,处于稳定的高电平,当有按键按下时,单片机可扫描检查到低电平。
而不会引起按键的误操作,提高按键电路的抗干扰能力。
电路原理如图所示。
图2-5键盘调整模块
S1:
触发开关,接P1.1口,对上一次的计费进行清零,为下次载客准备
S2:
单掷开关,接P1.2口,实现暂停功能;当功能键S2按下时,开始暂停计费;直到S2弹起时,暂停结束。
需要注意的时,当按键按下和释放的瞬间都有抖动现象,一般来说,抖动的时间长短与键盘的机械特性有关,大约为5-10ms。
所以在实际编程时一定要注意键盘的去抖动。
键盘去抖动有专用的延时电路,也有专门的延时芯片,也可以用软件去抖,考虑到电路的难易程度,从简化硬件的角度,本次设计采用软件去抖动,用一个短延时程序,进行键盘去抖操作,采用delay函数,在后续会一一介绍。
2.1.3数据显示模块设计
本设计中采用四位一体共阴的数码管,数码管的位选信号即每个数码管的公共端,用单片机一组I/O口作为数据口向数码管发送数据信息,而用另一组I/O口对数码管进行位选,通过同相电平驱动芯片74HC573驱动,从而实现动态显示。
由于是共阴的数码管,因此当P2.0-P2.7输出为高电平时,数码管位选位被关闭,当P2.0-P2.3输出为低电平时,数码管位选位被打开。
前四个数码管分别接P2.0、P2.1和P2.2、P2.3,用于显示总金额;后面分别接P2.4、P2.5、P2.6和P2.7,用于显示里程。
数码管显示电路图,如图3-6所示。
图2-6数据显示模块数码管部分
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果能够节省大量的I/O端口,而且功耗更低。
图2-7数据显示模块74HC573驱动部分
显示单元由两个4位8段共阴数码管组成,电路连接时,公共端接低电平,由于数码管内部二极管点亮时需要5mA以上的电流,而单片机的输出电流还不到1mA,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机I/O接口,节省单片机I/O资源,此次设计采用74HC573锁存器,其输出电流较大,电路接口简单且可直接驱动数码管显示。
4位7段共阴数码管的管脚图如图2-8Abcdefgh,分别为4个数码管的7段段选,是4个数码管均在一起,1,2,3,4分别为4个数码管的共阴端口,称为位选,是选择哪个数码管工作。
图2-84位共阴数码管管脚分布
74HC573的引脚分布图2-6如下。
图2-974HC573的引脚分布
:
为三态允许输入端(低电平有效),也可称作输出允许端;1D-8D为数据输入端;
1Q-8Q为数据输出端;LE为锁存允许端。
74HC573所对应真值表2-10如表。
表2-374HC573真值表
INPUT
OUTPUT
LED
Q
LHL
LLX
HXX
H
Q0
Z
由真值表可以看出,当为高电平时,无论LE与D端为何电平状态,其输出均为高阻态,此时芯片处于不可控状态。
做设计时必须使其处于可控状态,即应该接低电平。
当为低电平时,若LE为H,则D与Q同时为H或者L,数据实现直通传送;而当LE为L时,无论D为何状态Q都保持上一次的数据状态,数据被锁存住,利用此特性即可实现对数码管的控制。
其中:
H—高电平;L—低电平;X—任意电平;Z—高阻态,既不是高电平也不是低电平,其电平状态由与它相连接的其它电气状态决定;Q0—上次的电平状态。
本次设计中:
段选信号LE接P1.5,对应图中标号P1.5;位选信号LE接P1.6,对应图中标号P1.6。
控制显示时先给P1.5高电平,使通道打开,接着送字码,然后把P1.5电平拉低,使字码保持住;之后打开P1.6(送高电平),紧接着送位码,控制要显示的位,然后把P1.6拉低,数据被保持。
最后延时5ms;依次循环扫描;利用数码管点亮后的余晖和人眼视觉暂留效应即可实现动态显示。
数码管动态显示电路如图2-10所示。
2.2软件程序设计
2.2.1总系统模块
在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。
若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,脉冲输入小于设定值时,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程送数码管显示出来。
程序流程如图所示。
图2-10系统主程序流程图
2.2.2中断模块
2.2.2.1里程计数中断模块
每当晶振输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计数一次,相应的变量设为inter就自加1,当里程计数器inter对里程脉冲计满500次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化。
里程中断子程序如图2-9所示。
图2-11里程中断服务子程序
2.2.2.2中途等待中断模块
在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明时钟中断没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额。
计数初值可有以下公式获得:
X=(65536-t)*11.0592*10^6/12;
TH=X/256;
TL=X%256;
其中:
X表示计数初值,TH、TL分别为16位计数器高8位和低8位应装入的初值。
用定时器作为基准,可使测试的等待时间更为精确(可以精确到uS级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理。
中途等待子程序流程图如图2-3所示。
图2-12中途等待中断子程序流程图
2.2.3总价计算模块
计算程序根据里程数分别进入不同的计算公式。
如果里程小于起步里程(即小于1公里),则执行公式:
执行公式:
总金额=起步价+等待时间*等待单价;
如果里程在第一阶梯单价里程内(即大于1公里,小于3公里),则执行公式:
总金额=起步价+(里程-1公里)*第一阶单价1等待时间*等待单价;
如果里程在第二阶梯单价里程内(即大于3公里),则执行公式:
总金额=起步价+(里程-1公里)*第三阶单价1+(里程-3公里)*第二阶单价+等待时间*等待单价;
显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。
图2-13中价计算子程序流程图
2.2.4按键调整程序设计
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
图2-14按键扫描子程序流程图
2.2.5数码管显示模块
显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现可实现显示。
3电路仿真结果
3.1仿真环境简介
本电路使用Proteus进行仿真,ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。
全局仿真电路图如图3-1所示。
图3-1全局仿真电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 高级 出租车 计价器