基于单片机的语音报价电子称的设计 下载本文

3.1.1 单片机STC89C52主要特性

单片机是一个设计的核心,是主控模块,起着协调各模块之间工作的作用,下面是本设计所采用的单片机STC89C52的一些参数介绍。

(1)一个8位的微处理器(CPU)。

(2)片内数据寄存器RAM(128B),即SFR,是一个用来存放计算过程中产生的各种可以读写数据的容器。

(3)四个可以双向使用即既可以做输入口也可以做输出口的8位并行I/O接口P0-P3。

(4)两个定时器/计数器,每个定时器/计数器既可以在对外部事件进行统计计数时设置成计数模式,也可以在被用来定时的时候设置成定时模式,在需要时还可以根据以上结果实现对计算机的控制[12]。

(5)五个中断源的中断控制系统。如今有的单片机已经发展到九个中断源了。

芯片引脚图如下图3-2所示

STC89C521234567891011121314151617181920P1.0VCC40P1.1P0.039P1.2P0.138P1.3P0.237P1.4P0.336P1.5P0.435P1.6P0.534P1.7P0.633RESETP0.732P3.0EA'31P3.1ALE30P3.2PSEN'29P3.3P2.728P3.4P2.627P3.5P2.526P3.6P2.425P3.7P2.324XTAL2P2.223XTAL1P2.122VSSP2.021 图3-2 STC89C52单片机引脚图

部分引脚说明:

(1)时钟电路引脚XTAL1 和XTAL2:

XTAL1(19脚):19脚被接在微调电容和外部晶体的一端;值得注意的是在外部时钟模式下XTAL1必须可靠的与大地相连接。

XTAL2(18脚):被接在微调电容和外部晶体的另一端;振荡电路有一个固有的振荡频率,实际上就是晶体的固有振荡频率。该引脚输入脉冲为外部时钟脉冲时一般用来接外部时钟电路。

一般情况下需要检查振荡电路是否是在正常工作模式下,办法是用示波器查

看XTAL2端是否有脉冲信号输出。 (2)控制信号引脚RST

RST/VPP(9脚):RST是高电平有效的复位信号的输入端。根据这个特点可以做输入端保持备用电源的输入端。一旦主电源VCC不能正常工作电平比规定值低,若想回归正常时,在此引脚上触发两个机器周期的高电平就可以了。 (3)输入/输出端口

P0、P1、P2口各文献均有详细的描述,在这里就不再累述。下面着重介绍P3口,P3口的特点是它的每个口都有第二功能,详细介绍如下。

P3.0:(RXD)串行数据接收。 P3.1:(RXD)串行数据发送。 P3.2:(INT0#)外部中断0输入。 P3.3:(INT1#)外部中断1输入。

P3.4:(T0)定时/计数器0的外部计数输入。 P3.5:(T1)定时/计数器1的外部计数输入。 P3.6:(WR#)外部数据存储器写选通。 P3.7:(RD#)外部数据存储器读选通。

3.1.2 单片机STC89C52的中断系统

STC89C52有两个优先级。CPU是否做出响应中断请求的决定是由片内SFR中的中断允许寄存器IE控制的;由中断优先级寄存器IP安排各中断源的优先级;当处在同一个优先级上的多个不同的中断源挤在同一时间内发出中断请求的情况下,中断请求的响应顺序就是一个问题,但这对于STC89C52来说是比较容易处理的,就交给其内部的查询逻辑来决定哪个中断请求先来处理。在包含有单片机的系统中,常常对时间的控制会有一些特殊的要求。比如要求单片机在某一段时间内去输出,有些情况下还需要按一定时间去检测一些数据,按一定的时间去扫描等。也常常用来对外部事件进行统计计数。T0和T1就是实现上述具体功能的。

3.1.3 单片机最小系统设计

图3-3为单片机最小系统电路图。本设计的时间基于12MHZ的时钟电路提供的的晶振时钟,通常执行完一条基本指令所需要的时间被称之为一个机器周期。在本设计中的复位电路中,按下复位按键之后便可以使单片机回到刚上电的起始状态,即初始化。图中P0口还需要外接1个10K的上拉电阻,这是因为P0口的结构比较特殊是漏极开路的只有加上拉电阻才能正常工作。

图3-3 单片机最小系统电路图

3.2 液晶显示器LCD简介

在本设计中,由于考虑了设计的本身需求以及设计成本,因此选用了LCD1602做显示屏幕。

3.2.1 液晶原理介绍

Liquid Crystal Display就是通常所说的液晶显示器(LCD)的英文全称,其基本原理是通过控制液晶材料的透光性来实现对色彩的控制[13]。在正常情况下色彩不会发生改变,也就意味着液晶同样保持不变,这样刷新率带来的麻烦就被无形的解决了。LCD显示器和CRT显示器相比有很多优点,比如LCD的辐射值近乎为零,控制过程功耗很低,因此发热也很小,还有一个就是在解码之后图像还原很逼真。字符的显示也显得很锐利。

屏幕上的每一个显示单元和显示区的每一个显示RAM的1024个字节相对应,每一个字节中所保存的数据对应着屏幕上相应位置的亮和暗,通过内带字符发生器的控制器来找到所需要点亮的字符在屏幕上的位置,将需要点亮的位置置为“1”,将不需要点亮的位置置为“0”,这样通过很多个这样的“1”和“0”,某个字符就会被点亮了。

3.2.2 液晶模块简介

LCD1602液晶模块采用了独特的HD44780内部字符发生器控制器,hd44780内部具有功能丰富且易懂的指令集,可以让字符以闪烁的方式显示,也可以让字符用移动的方式显示。LCD1602与单片机接口的通讯方式为并行传输,有4位并行传输和8位并行传输两种。液晶模块LCD1602的引脚图如下图3-4所示。

LCD160212345678910111213141516VSSVCCVEERSRWENDB0DB1DB2DB3DB4DB5DB6DB7AK 图3-4 LCD1602引脚图

液晶寄存器选择控制如表3-1。

表3-1寄存器选择控制 RS 0 0 1 1 R/W 0 1 0 1 操作说明 将数据写入指令寄存器(清除屏等) 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 写入数据寄存器(显示各字型等) 从数据寄存器读取数据 3.2.3 液晶显示部分与STC89C52的接口

如图3-5所示。用STC89C52的P0口作为数据线,用P1.2、P1.1、P1.0分别作为LCD的R/W、EN、RS。本模块设计需要注意的几个方面是:显示模块