基于51单片机的出租车计价器.docx
- 文档编号:24282385
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:31
- 大小:471.23KB
基于51单片机的出租车计价器.docx
《基于51单片机的出租车计价器.docx》由会员分享,可在线阅读,更多相关《基于51单片机的出租车计价器.docx(31页珍藏版)》请在冰豆网上搜索。
基于51单片机的出租车计价器
基于51单片机的出租车计价器
摘要
这款计价器设计应用场景是用于出租车运营,要求有计程计价的性能。
计价器由STC89C52单片机为主体,通过单片机丰富的借口连接,以复位电路,时钟电路,键盘电路等外围芯片为辅助,组成一个整体进行工作。
复位电路的意义是重启单片机,任何一款能正常使用的计价器都必备的功能,必要时也能摆脱操作错误的窘境,通过复位电路的功能可以重新进行工作。
作为计时部分的12MHz晶体时钟电路的用途,是为计价器提供具有高的精度的系统时钟源。
使用了Proteus等仿真软件,对计价器的软硬件部分模拟运行,用于调试。
通过连接上电源,字符型液晶1602可以显示三种收费:
最低起步距离内的起步价,超出最低里程后,按公里数以及中途等候时间向,乘客收费。
根据应用场景的不同,可以使用按键在里程收费,起步价,等候时间三种模式之间切换。
仿照出租车在载客运营的行为模式,暂停与结束。
与至相关的运行时间和暂停时间等信息可以在1602液晶上查看到,总成本和总距离可以通过计算得出来。
STC89C52控制器单片机为主体,P0端口与LCD模块1602的显示芯片连接,P1端口为键盘模块的连接端口,按键负责输入。
关键词:
AT89S52;1602液晶;出租车计价器;DS1302;K24C02
1前言
自国家实行改革开放以来,生活质量得到了极大的改善,出行的方式也多样化起来。
汽车是我们出行的工具,同时,出租车的队伍也跟随着一起壮大了起来,与之相关的出租车计价器的地位愈发重要,因为计价器的作用是保证司机与乘客之间公平交易的媒介。
通过几十年的发展,如今我们国家的出租车保有量超140万辆,出租车乘坐渗透入人民生活的方方面面。
而计程车行业能否健康发展,取决于它所使用的仪器是否公正。
出租车计价器是依靠电磁感应等方式,把车轮转动的次数纪录下来,判断运营行驶的距离,并衡量出价格的一种仪器。
出租车计价器是相关运营行业立身诚信的根本,计价器如果不准确,将会损害经营者或乘客的利益。
国家制定了相关法律法规,为保障司机与乘客的权益,将出租车计价器列为国家六类重点计量器具之一。
只有公正的标准才能保证出租车的运营。
国内外出租车计价器的研究现状:
长久以来,国内使用的出租车计价器只有单一的计量距离功能。
世界上大部分计价器产自台湾。
而我国的出租车计价器企业主要集中分布在北上广和沈阳这几个城市。
而接着第二代计价器登上历史的舞台。
与传统的单一功能相比,新一代的计价器可谓进步颇多,运用了齿轮传动的机械结构搭建主体,用于量程。
还简单的配备的了计算功能用于核算乘客的应付车资。
随着电子线路的制作越来越精巧,印刷线路板的诞生,计价器也迎来了第三代模式。
如今的计价器也是属于这个类型。
精密的线路使得更多的功能可以集成在计价器的核心里,在保证了原有的功能,在具备显示功能。
精度高,可靠性好。
随着集成电路的日益精密,单片机和各种电子芯片的功能也是日新月异。
使得计价器精度更高同时性能也比之前的更稳定,并产生了诸多的附加功能。
例如:
LCD显示功能、时钟功能、信息存储功能等。
新一代的计价器有很多拓展空间,可以根据用户的需求进行添加。
2
设计任务
2.1出租车计价器原理
设计一款基于STC89C52单片机的出租车计价器。
2.2出租车计价器细节设计
2.2.1实际运营的收费标准
白班,夜班和途中等待(等待时间3分钟起开始收费)
2.2.2计价器复位功能设计
2.2.3IO口分配的简易要求
利用霍尔开关A44E型号的电磁感应原理,测算车轮的转动次数从而测出距离
白天/晚上收费标准根据时间计算
2.2.4数据输出(采用LCD1602)
单价输出:
两位
路程输出:
两位
总金额输出:
三位
2.2.5按键
等待
时钟调节
白天/晚上转换
2.2.6发挥部分
要求具备计价功能。
要求时钟显示功能一直存在。
要求性能稳定,计价准确。
2.3系统主要功能
本次依靠单片机设计的出租车计价器可以实现以下功能:
数据结束或异常时的复位,昼/夜运营的价格转换,数据传输,里程与价格的计算,最终价格输出数据信息。
信息显示通过1602液晶显示屏展现。
该电路的设计,不仅实现了基本的仪表定价,还能同时使用于白班与夜班的情景中,中途等待也能公平计费,同时还能作为一个常规的时钟显示时间,方便司机与乘客。
2.4方案论证与比较
方案一:
采用自动化电子设计技术,在EDA软件平台上把计价器问题由上往下分层数个层次。
依其系统框图如图2.1所示:
分为分频,控制,计量,译码和动态扫描显示等模块。
图2.1方案一
方案二:
使用传统的单片机方案。
单片机采用51单片机系列里的STC89C52,作主要核心,由其他芯片组成子部件用作显示模块,计程模块,时钟模块等。
利用单片机丰富的IO口进行连接,不仅可以实现出租车计价器的上述功能,还有很多拓展的空间,方便对系统进行升级如图2所示:
图2.2方案二
3出租车计价器硬件设计
硬件是一个电子器具能否顺利运行的重要保障,它是软件的物质基础和载体。
本系统的硬件设计主要包含K24C02记忆存储模块,用于存储数据;DS1302时钟模块,为计价器计时;A44E霍尔传感器电路,丈量里程;数据显示部件,把信息显示在液晶屏上;里程计算及计价单元的设计,把单价与里程进行运算;以及最重要的单片机STC89C52。
充分发挥各部分硬件部件的功能特点,组成此多用途的出租车计价器设计。
合理搭配使用,尽量兼顾性能与性价比。
3.1系统的硬件构成及功能
硬件大体上可分为7个模块,方案图如图3-1。
包含了以下部件:
STC89C52,每公里价格与总价显示部件,键盘操作部分,里程计算部分,1302时钟显示模块,K24C02存储器存储模块。
通过正确的链接单片机上的多种IO端口,达到可以显示里程计算功能,调价功能以及时间展示功能。
不仅能达到所要求的功能,而且具有充足的拓展余地,还能非常便利地提升系统功能。
后面“多功能出租车计价器总体电路图”有更为详细的内容。
图3.1单片机控制方案图
3.2STC89C52单片机说明
STC89C52是一种耗能不高、性能高CMOS8位微控制器。
属于增强型的51单片机并具有可编程Flash存储器。
作为一款内含8位CPU的单芯片,在系统可编程Flash,具有很强的拓展空间,计价器一直处于发展状态,以后更新升级也比较方便。
这款单片机有这些部件:
看门狗定时器、8k字节Flash、32位I/O口线、MAX810复位电路、内置512字节RAM、4KB的EEPROM以及三个16位定时器/计数器和一个6向量2级中断结构,还有全双工串行口。
另外STC89C52可降至0Hz静态分析逻辑进行操作。
闲暇模式下,CPU停止,允许RAM,定时器/计数器,串行口,中断工作。
掉电保护管理方式下,RAM内容被保存,振荡器被冻结,计价器的STC89C52所有工作停止,直到下一个中断或硬件系统复位为止。
最大操作频率35MHz时,6T/12T可选的。
图3.289C52引脚图
引脚功能说明
VCC:
电源
GND:
接地
P0口:
这个端口有8位漏极开路,是个双向的I/O口。
一般为信息输入的端口,总共能驱动8位X8的TTL的逻辑电平。
把P0端口设置为“1”时,引脚可以用作高阻抗数据输入。
当访问别处的RAM或外部的程序时,P0端口的用处就是8位地址/数据复用。
P1口:
作为8为位双向I/O口,P1口输出缓冲器能驱动的逻辑电平有4个,且拥有内部上拉电阻。
把P1端口设置为“1”时,端口位会被内部上拉电阻拉高,此时我们可以利用它作为输入口设计使用。
当P1口被用于数据的输入功能时,会输出ILL的电流,因为外部拉低了引脚,影响了内部电阻。
而P1.0可作定时器/计数器2的外部计数输入,P1.2可作时器/计数器2的触发输入。
在闪存编程和验证,P1端口接收的低位地址位。
表3.189C52引脚说明
引脚号
第二功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程用)
P1.6
MISO(在系统编程用)
P1.7
SCK(在系统编程用)
P2口:
为8为位双向I/O口,其内部含有一个上拉电阻,P2输出缓冲器可以驱动4个TTL逻辑电平,把P2端口设置为“1”时,可以把这个端口用作输入口,因为内部端口被上拉电阻拉高。
如果有数据输入时,引脚被外部拉低后由于端口内部电阻的存在,输出电流(IIL)。
P2口在有需要的时候也能送出高八位地址,如用16位地址读取外部ROM或访问外部程序RAM时,P2口凭借其内部上拉输入信号“1”。
P2端口会在使用8位地址对外部RAM访问时,输出P2锁存器的信息。
在闪存编程和校验过程中,一些控制信号和高8位地址字节也能被该端口接收。
P3口:
作为8为位双向I/O口,其内部含有一个上拉电阻,P2输出缓冲器可以驱动4个TTL逻辑电平,把P3端口设置为“1”时,可以把这个端口用作输入口,因为内部端口被上拉电阻拉高。
如果有数据输入时,引脚被外部拉低后由于端口内部电阻的存在,输出电流(IIL)。
P3口作为这款单片机的特别功能使用,可查看下面表格更多内容。
在闪存编程和验证,控制信号还能被P3口接收。
表3.289CS52引脚说明
引脚号
第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器写选通)
RST:
使单片机作出复位动作的引脚。
当晶体振动工作时,想要用高电平将终止当前功能,使单片机复位,需要第一个脚持续2个机器周期即24个时钟周期。
在WDT完成计时后,复位引脚会输出高电平,共计96个晶振周期。
想要使复位功能无效可以借助一直独特的AUXR寄存器。
其DISRTO位能令复位功能暂停使用。
不过寄存器AUXR在正常的默认模式下是设定复位电路有效的。
ALE/
:
该引脚是专门负责发送地址锁存信号的端口。
当单片机与外部的ROM有访问需求时,地址锁存信号发出low8位的控制信号。
在编程时,输入脉冲也可以由该引脚发出。
在没有访问外部ROM需求时,此引脚按1/6的固定频率,向外发射电子脉冲,定时器和时钟就是依照此原理来进行工作的处。
需要注意的是,ALE脉冲会被跳过,如果单片机出于访问外部ROM的时候。
根据应用需求,我们可以将位于8EH的特殊功能寄存器最前面的位置写一,可以无效化ALE的操作。
此处为“1”时,只有查表指令或外部数据存储器的传送指令时,ALE的执行才有效。
若非如此,会把地址锁存控制信号轻微拉高。
当微控制器系统在一个外部环境中执行管理模式时,ALE的使能标志对其无效。
:
该引脚是通选信号,用于允许输出外部程序ROM的时候。
该单片机的外部ROM执行外部代码时,此引脚会被激活,每一个机器周期PSEN会生效两次。
其他情况下PSEN为待激活状态,如访问外部RAM时。
/VPP:
访问外部ROM的控制信号。
必须接地,以保证由0000H到FFFFH的使能可以读取ROM内的指令。
当接到VCC的时候,可以执行内部程序指令。
VPP的电压能在闪存编辑期间接收到12伏。
XTAL1:
输入振荡器、逆变器、放大器和内部时钟发生器电路。
XTAL2:
输出振荡器、逆变器、放大器。
3.3A44E霍尔传感器检测单元
图3.3传感器测距示意图
里程计算是车辙上安装的传感器通过电磁感应原理,将车辙的圆周运动转换成电信号输出到单片机里,换算成对应的公里数和价格最后显现在屏幕上。
通过A44E转换成数字信号符合TTL电平标准,因为它的工作电压比较大,在4.5~18V。
属于开关型霍尔元件。
其端口可以与STC89C52直接相连,1MHZ是目前能达到的最高频率检测。
这个集成霍耳开关由霍尔器,稳压片,差分放大器,OC输出门和施密特触发器五部分组成。
依照霍尔原理可知,霍尔电势发生器的两端通过稳压器的连接,与输入端输入的电压接通后,当霍尔片在磁场中,目前应用在垂直于磁场方向,然后大厅电位差HV输出将生成的方向垂直于两个方向,和HV信号将被放大的放大器和施密特触发器整形,所以它变成了一个方波和传播OC门的输出。
当存在的磁场强度满足要求时,达到了工作点(OPB),触发器相对于大地输出的电压为高电压,导通了三极管,而OC门处,低电压输出,霍尔开关此时被打开。
当存在的磁场强度满足要求时,达到“释放点”(即rPB)时,低电压从触发器处输出,使得高电压从OC门处输出,霍尔开关此时被关闭。
经过这样一开一关,完成了霍尔开关的一个工作周期。
为了使程序设计比较容易一点,我把信号的输入端定在了P3.2,内部为外部中断0,为方便计算,我假定出租车轮毂旋转一圈周长为1米,当车轮完成一次转动,霍尔开关就经过一个周期,发出脉冲,使得SCT89C52发生中断,然后纪录下来的,当中断了一千次时,就代表了出租车行驶了一公里,计价器上的价格就会更新跳动一次,金额等于当前每公里单价乘于行驶的公里数。
图3.4传感器电路图
3.4数据显示单元设计
在单片机设计中,有多种多样的信息显示器件,其中最为广泛应用的就是字符型液晶模块。
为了满足占体小,节能低耗,又得保证显示的内容足够丰富,我选用了1602型LCD显示模块。
这个显示模块能显示上下两行,每行8个字符,有D0~D7共计8位的数据总线。
这款模块还有RS,R/W,EN三个控制端口,在5V电压下可以正常工作,附带背光情况下使用,可以调节字符对比度的功能。
用于显示出租车运行中的相关信息。
接口信号说明:
1602型LCD的接口信号说明如表3.3所示。
表3.31602型LCD的接口信号说明
第1脚
VSS电源地
第9脚
D2双向数据线
第2脚
VDD+5V电源
第10脚
D3双向数据线
第3脚
VEE液晶显示偏压信号
第11脚
D4双向数据线
第4脚
RS数据/命令选择端
第12脚
D5双向数据线
第5脚
R/W读/写选择端
第13脚
D6双向数据线
第6脚
E使能端
第14脚
D7双向数据线
第7脚
D0双向数据线
第15脚
BLA背光源正极
第8脚
D1双向数据线
第16脚
BLK背光源负极
表3.41602型LCD的主要技术参数
显示容量
16×2个字符
芯片工作电压
4.5~5.5V
工作电流
2.0mA(5.0V)
模块最佳工作电压
5.0V
字符尺寸
2.95×4.35(WXH)mm
表3.5基本操作程序
指令
内容
输出
读状态
令RS=L,RW=L,E=H
D0~D7=状态字
读数据
令RS=H,RW=H,E=H
无
写指令
令RS=L,RW=L,D0~D7=指令码,E=高脉冲
D0~D7=数据
写数据
令RS=H,RW=L,D0~D7=数据,E=高脉冲
无
图3.5单片机与LCD1602的连接图
3.5时钟电路设计
美国TheDallasGroupofAmerica公司推出了一款名为DS1302的时钟芯片。
其特点是性能高、功耗低、工作时功率小于1mW。
内含一个31字节的静态RAM的实时时钟电路,这款芯片能在时分秒,年月日等单位进行计时,每月的天数和平润年区别都可以自定调整,芯片DS1302能在2.5V~5.5V间正常使用。
DS1302内部有两类与RAM相关的寄存器。
用于时钟电路的程序存储。
一类是由31个RAM单元,,独立组成的,每一个单元有8个字节的RAM寄存器,掉电丢失,用于暂时储放信息。
另一类突发方式寄存器能必要时候将多个字节的RAM数据和时钟信号通过CPU与三线接口同步通信的方式,一次传送出来。
作为一款升级版时钟芯片,DS1302不仅与前版本芯片兼容,而且采用了备用源VCC1、主电源VCC2双电源引脚,同时VCC1具备小电流充电能力。
通过串行接口进行数据传输。
振荡源接口出的外接处,连接32.768kHz的晶振。
3.5.1DS1302引脚说明
图3.6DS1302引脚
主电源引脚为VCC2,备用电源引脚为VCC1。
主电源正常工作时电容就处在充电状态,当主电源断开后,这个电容能短时间内继续给DS1032供能。
主流引脚比备用电源引脚高时,DS1302由主流引脚供电,反之,由备用引脚供电。
DS1302开始运行,直到主输入引脚大于两伏特前,引脚RST都必须保持低电平。
想要将RST置为高电平,只有在通信时钟引脚为低电平才行。
I/O引脚是连接单片机STCC52,负责数据串行数据双向传输的。
SCLK是单向输入引脚,为通信时钟的输入端。
具体的引脚说明如表3.6。
表3.6DS1302引脚功能说明
引脚号
名称
功能
1
VCC1
备份电源输入
2
X1
32.768KHZ输入
3
X2
32.768KHZ输出
4
GND
地
5
RST
控制移位寄存器/复位
6
I/O
数据输入/输出
7
SCLK
串行时钟
8
VCC2
主电源输入
3.5.2DS1302控制字和读写时序说明
这款时钟芯片采用串行外接设备接口的驱动方式,编程时须留意时钟芯片的读写时序。
它不仅可以通过控制字的写入来向寄存器输入信息,还能从正确的寄存器里获取到相应的数据信息。
只有熟悉并掌握了DS1302时钟芯片的控制字,才能发挥它的通信用途。
该时钟芯片的控制字的详细信息在表3.6处。
为了实现时钟芯片的不同时间类型的显示,需要将各种数据写入寄存器,想要传送不同的信息内容,制定其正确的工作方式,只需认真学习了解控制字就能实现。
因为数据的每次传输都从控制字开始。
1.DS1302的一条指令有0~7共计8位字节,第7位字节必须固定唯1,因为当它为0时,写进去DS1302的指令就是无效的。
2.第6位:
是RAM/CK。
当第六位是0时表示我们使用的是寻址内部寄存器CK功能,存取时钟数据,要使用寻址内部存储器RAM的功能则把第六位设为1。
表3.7DS1302的控制字节
1
RAM
CK
A4
A3
A2
A1
A0
RD
WR
第7位
第6位
第5位
第4位
第3位
第2位
第1位
第0位
3.A4、A3、A2、A1、A0分别表示第五位到第一位,都是负责定义RAM片内寄存器的地址。
当第6位为0时执行CK时钟功能时,定义一个时钟和其他数据寄存器的地址。
A4至A0=0至6,第二,分钟,小时,日期,月份,星期,寄存器顺序。
如果A4至A0=7,则写入芯片保护开关的地址。
当A4至A0=8时,选择慢充电参数的寄存器。
当A4至A0=31时,选择寄存器进行字节处理模式。
当第6位为1时,则执行寄存器RAM地址定义,A4至A0=0至30,根据每个子地址的RAM,该地址对应于用于多字节模式选择的31RAM模式。
4.第0位是最低位:
当最低位取0,DS1302可以进行写操作,当最低位取1,则行使读操作。
当数据需要进行交换传输时,信号CE引脚应该低到高,当CE被驱动到逻辑1状态时,逻辑0一定在SCLK,串行数据的输入出现在SCLK的上升沿,不管是读或写周期周期或传输系统是否是单字节或多字节,40字节的要被存取的必须由控制字来指定,在八个时钟周期命令字的开头(具有地址和控制的8位数据装配在移位寄存器后信息),在读操作中的时钟输出的附加数据,在输入数据的写入操作中,所有的数据更改时钟下降沿。
所有的读入和写出均无法直接操作,想要进行信息的传输交换,都是依靠发送字节命令的方式。
对于单字节操作,包括命令字节在内,各两个字节,需要16个时钟,多字节的操作的时钟/日历模式,每一个字节是7,它需要72个时钟,以及用于操作的多字节RAM模式,32每字节,最多256个时钟相比较,这里只单个字节序列,向其中操作类似的多字节模式,不同之处以及与具有多于一个字。
图3.8DS1302单字节读写时序
3.5.3DS1302片内寄存器说明
通过使用控制字对时钟芯片的选择工作区对应的寄存器,开始进行相应的指令操作时,须得了解芯片中各类寄存器的功能定义。
表3.9片内各寄存器各位的功能定义表
读寄存器
写寄存器
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
范围
81H
80H
CH
10秒
秒
00~59
83H
82H
10分
分
00~59
85H
84H
12/24
0
10
时
时
1~12
AM/PM
0~23
87H
86H
0
0
10日
日
1~31
89H
88H
0
0
10月
月
1~12
8BH
8AH
0
0
0
0
0
周日
1~7
8DH
8CH
10年
年
00~99
8FFH
8EH
WP
0
0
0
0
0
0
0
__
在这款时钟芯片十个功能的寄存器中,里面7个寄存器是与时钟/日历有关的,S1H/80H表示秒钟,83H/82H表示分钟,85H/84H表示小时(有12进制和24进制),87H/86H表示日期,89H/88H表示月份,8BH/8AH表示星期,8DH/8CH表示年份。
寄存器三85H/84H的最高位bit7决定了时钟芯片的小时是12进制还是24进制,当bit7为1是12小时制,bit7为0是24小时制。
在bit7=1(12小时制)时,第5位0表示上午am,1表示下午pm。
在bit7=0(24小时制)时,第位5是24个小时里的十位数,低4位是小时里的个位数。
图3.8单片机与时钟芯片DS1302连接图
这种硬件连接线路方式简洁明了,不容易受外界因素的影响。
如图,时钟芯片DS1302的RST端径直项链在单片机的p2.2引脚上,联通电源,单片机的引脚P2.2会为时钟芯片输出一个高电平。
串行时钟接口则连接单片机p2.0的引脚,时钟数据的I/O端口连接单片机引脚p2.1。
时钟芯片使用VCC1+VCC2主备供电,这么做的好处是保证了电源的稳定性。
平时由大电源供电,当大电源失效之后,由图中+3V的小电源对计价器输出电压。
连接时需额外注意X1和X2的的,前者接晶振的输入端,后者接输出端。
3.6键盘调整电路
按键部分采用7个独立按键
图3.9键盘调整按键电路
K1:
第一次按下开始计价,第二次按下停止计价,第三次按下计价数据清零,并返回时间显示页面。
K3:
暂停出租车(直流电机)的转动。
K4:
启动出租车(直流电机)的转动。
K5:
时间日期设置键。
K6:
里程单价和起步价的设置键。
K7:
在设置状态下,是增大键;在不设置的状态下按下显示当天的总价。
K8:
在设置状态下,是减小键;在显示当天总价的时候,按下使当天的总价清零。
3.7K24C02的电路设计
记忆存储模块我们选用EEPROM中的K24C02电可擦除可编程只读存储器,K24C02包含每个8位,共计256个的字节存储空间。
K24C02的工作电压为1.8—6.0伏特,可以在多种场景多种方式下应用。
时钟及数据传输:
数据传送通常取决于SCL端口所接的能发出串行时钟信号的主器件。
外围
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 出租车 计价器