董胜斌:基于单片机的出租车计价器的设计
2. 系统总体设计 2.1硬件设计
硬件由以下五个部件组成硬件设计主要包括单片机STC89C52、存储单元的设计、振荡电路、复位电路、显示电路、按键电路以及供电电路等。在硬件设计过程中,首先要弄清楚各部件的功能,各个引脚的作用,以及如何将各硬件连接组合到一起。充分利用各部件的功能,实现多功能的出租车计价器设计。
2.2软件设计
在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、路程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程、计时和计价等不同的操作启动计价,将根据里程寄存器中的内容计算和判断出行驶路程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。当到达目的地的时候,由于霍尔开关没有送来脉冲信号,停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。
8
董胜斌:基于单片机的出租车计价器的设计
3. 硬件设计
3.1 STC89C52单片机介绍
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52有更加优越的性能。
3.2 单片机各引脚功能说明
图3-2 STC89C52引脚图
下面对STC89C52各引脚的功能进行较为详细的介绍: 1)电源引脚
VCC(40脚):电源端为+5V GND(20脚):接地端。 2)时钟电路引脚XTAL1和XTAL2
XTAL2(18脚):接外部晶体和微调电容的一端。在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时针电路时,该引脚输入外时钟脉冲。要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信
9
董胜斌:基于单片机的出租车计价器的设计
号输出。
XTAL1(19脚):接外部晶体和微调电容的另一端。在片内,它是振荡电路反向放大器的输入端。在采用外部时钟时,该引脚必须接地。 3)控制信号脚 RST ALE PSEN 和EA。 RST(9脚):RST是复位信号输入端,高电平有效。在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE/PROG(30引脚):地址锁存允许信号端。当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。如果你想看一下STC89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则STC89C52基本上是好的。ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。
PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接ERROM的OE端。PSEN端有效,即允许读出ERROM/ROM中的指令码。CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。要检查一个STC89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。如有,说明基本上工作正常。
EA/VPP(31脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。如果使用有片内ROM的STC89C52,外扩ERROM也是可以的,但也要使EA接地。
4)I/O(输入/输出端口,P0,P1,P2,P3)
P0口:P0口是一个漏极开路的8位准双向I/O端口。 P1口:8位准双向I/O端口。
10
董胜斌:基于单片机的出租车计价器的设计
P2口:即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。 P3口:双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。见表1
表1 P3口的第二功能表
引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
第二功能
RXD (串行输入口) TXD (串行输出口) INT0(外部中断0) INT1(外部中断1) T0(定时器0外部中断) T1(定时器1外部中断) WR(外部存储器写选通) RD(外部存储器读写通)
3.3 振荡电路设计
单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取20pF)。这样就构成一个稳定的自激振荡器。 振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。振荡电路如图3-3所示:
图3-3振荡电路
11