图1单片机控制方案
3 系统硬件设计与实现
3.1
主控芯片AT89S51
在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。它是一款低功耗,AT89S51就是一款广泛应用的,高性能CMOS 8位单片机,由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 AT89S51芯片内含有8 B的 E2PROM ,无需外扩存储器,电路简单可靠,其时钟频率为 0~24 MHz,并且价格低廉,批量价在 10元以内。AT89S51是一款功能强大的微型计算机,它可为许多嵌入式控制应用系统提供高性价比。
单片机的最小系统是由复位电路、时钟电路和电源组成。复位操作有上电自动复位、按键复位和外部脉冲复位3种方法。本文采用的是上电复位它是通过系统外部的复位电路来实现的。根据电路原理可知电容两极板间的电压不能突变当单片机电源接通电源的瞬间单片机的9管脚会产生一个阶跃信号,所以RTS端维持高电平由于这个充电时间远远大于1ms,一般就可以实现对单片机的上电自动复位,即接通电源就完成了系统的初始化。
初始化是为了让单片机从地址0000H开始执行, 除此之外单片机要想正常工作还必须有时钟电路,时钟电路是产生时序的基础,单片机每执行一条指令都是建立在时序电路上的,为了能保证单片机执行指令的同步,电路就要在唯一的时钟信号控制下按时序的先后进行工作。它分为内部时钟电路和外部时钟电路。本文采用的是内部时钟电路,在MCS—51单片机的内部有一个高增益的反向放大器,其输入端为引脚XTAL1,输出端为XTAL2,只要在外部接上两个电容和一个晶振,就能够成一个稳定的自激振荡器。
这里主要看一下电容和晶振的选择,晶振的大小与单片机的振荡频率有关,电容的大小影响着振荡器振荡的稳定性和起振的快速性,通常选择10~30pF的瓷片电容。本系统电容选择为33pF,晶振为12MHz之所以选择这一频率的晶振是为了在进行单片机与电脑进行串口通信时容易产生和电脑时钟同步的波特率,另外在设计电路时,晶振和电容应尽可能的靠近芯片,这样可以提高系统的抗干扰能力,电源部分,电源与地之间可以接一个0.1uF的电容,它用来滤除电源的纹波,使单片机稳定工作,单片机最小系统如图3-1所示。
图3-1 单片机最小系统
单片机引脚说明:
VCC:电源电压输入端。 GND:电源地。
P0口:P0口是一个8位漏极开路双向I/O端口,每个引脚可以吸收8TTL门电流。P0口当作数据输出时需要加上拉电阻,当P0口的I/O口被写“1”后,被定义为高阻抗输入状态。P0可以用于外部程序数据存储器,P0口可以是地址的低八位以及数据输出口。
P1口:P1口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P1口缓冲器可接收的4TTL栅极电流输出。P1口的I/O口被写 “1”后,内部上拉的是高的,可以作为输入,P1口外部下拉低时输出电流,这是因为有内部上拉的缘故。
P2口:P2口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P2口缓冲器可接收的4TTL栅极电流输出。当P2口的I/O口被写“1”后,内部上拉的是高的,可以作为输入,P2口外部下拉低时输出电流,这是因为有内部上拉的缘故。当P2口用于外部程序存储器或外部数据存储器时P2口是地址高八位输出。
P3口:P3口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P3口缓冲器可接收的4TTL栅极电流输出。P3口的I/O口被写“1”后,内部上拉的是高的,可以作为输入,P3口外部下拉低时输出电流,这是因为有内部上拉的缘故。P3口除了普通I/O口功能,还有其第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1)
P3.4 T0(T0定时器的外部计数输入) P3.5 T1(T1定时器的外部计数输入) P3.6 /WR(外部数据存储器的写选通) P3.7 /RD(外部数据存储器的读选通)
RST:复位引脚高电平时MCU复位,复位信号输入端口,当MCU要复位时,给与此引脚高电平,高电平持续时间是不少于两个机器周期的时间。
ALE/PROG:地址锁存使能以及编程脉冲信号端口。当单片机访问外部的存储器时,地址锁存使能锁存地址低八位。通常情况下,ALE引脚输出单片机外部振荡器的频率的1/6的频率输出。应该注意到的是:当用于单片机扩展外部的数据存储器时,它会少一个ALE脉冲。如果你想禁止ALE输出可以设置为0在SFR8EH地址。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。此外,ALE引脚倍稍微拉高。如果微处理器在外部执行状态ALE的禁令,设置无效。
PSEN:程序存储器允许输出控制端,在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作。
EA/VPP:外部程序存储器访问允许。当/EA接高电平时,单片机读取内部程序序存储器,当扩展有外部ROM时,当读完内部ROM后自动读取外部ROM,当/EA接低电平时,单片机直接读取外部程序存储器。 XTAL1:片内振荡器反相放大器和时钟发生器的输入端。 XTAL2:片内振荡器反相放大器的输出端。 3.2
存储模块AT24C02
存储模块的设计是把WP引脚接到GND上因为要让器件进行正常的读/写操作,把SDA串行数据/地址与单片机的P3.7引脚使AT24C02与单片机进行所有数据的发送或接收,把SCK串行时钟引脚与单片机的P3.6引脚相连接,让单片机产生一个AT24C02工作的时钟,使其正常的工作。存储模块电路如图3-2所示。
图3-2存储模块 AT24C02硬件结构
AT24C02的特点:数据线看门狗定时器;可编程复位门级;高数据传输速率400kHz速率和I2C总线;2.7V至7V电压;低功耗CMOS工艺兼容;16 bespate写缓冲区;反撇写保护芯片;高低电平复位信号输出;100万擦除周期;保存长达100年。
定义如下的总线状态,见图3-3。
图3-3 总线时序
1.
总线空闲(状态A) 起始信号(状态B) 停止信号(状态C) 数据有效(状态D)
数据线和时钟线都保持高电平状态。
1.
时钟线保持高电平期间,数据线从高电平到低电平的跳变作为I2C总线的起始信号。所有操作都必须以起始信号为前提。
1.
时钟线保持高电平期间,数据线从低电平到高电平的跳变作为I2C总线的停止信号。所有操作都必须以停止信号结尾。
1.
起始信号之后,在时钟信号保持高电平期间,数据线传送的数据有效。
数据线上的数据必须在时钟信号为低电平时改变,以传输下一字节的数据。每传输一字节的数据,就会有一个时钟信号的暂停。 数据传输都必须以起始信号开头,以停止信号结尾。在起始信号和停止信号期间传输数据的总量大小由主器件决定,理论上是没有限制的。但是在写状态下只有最后16个周期传送的数据会被写入。如果待写入的数据超出了这个限制,会根据先入先出的原则覆盖掉前面的数据。