第3章 硬件电路设计3.1 控制模块设计AT89C51在此设计中起到非常重要的作用,它就像一个人的大脑,控制着整个设计的所有系统。此设计的控制模块由单片机、复位电路、时钟电路组成的。
3.1.1 单片机AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPER-OM-Flash Programmable and Erasable Read Only Memory)的低电压。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种商效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图3-1 AT89C51引脚图
AT89C51单片机引脚分布如图3-1所示。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P3.0(RXD):串行输入口
P3.1(TXD):串行输出口
3.1.2 单片机时钟电路复位电路介绍1.时钟电路模块
单片机的时钟信号用来为单片机芯片内部的各种操作提供时间基准。
时钟电路为单片机产生时钟脉冲序列,作为单片机工作的时间基准,典型的晶体管振荡频率为12MHz。
AT89C51单片机内有时钟振荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体和微调电容,就构成了自激振荡器并在单片机内部产生时钟脉冲信号,具体电路设计如图3-2所示。图中电容C1和C2的作用是稳定频率和快速起振,其值为5~30pF,在此选择30pF;晶振X1的振荡频率范围在1.2~12MHz之间选择。
图3-2 单片机时钟、复位电路
2.复位电路模块
复位电路使单片机或系统中的其他部件处于某种确定的状态。
当在单片机的RST引脚处引入高电平并保持2个机器周期,单片机内部就执行复位操作。实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是按键复位。在单片机运行期间,可以利用此按键完成复位操作。具体电路设计如上图3-2所示。
3.2 打铃模块电铃工作在交流电220V下,单片机工作电压为直流电+5V,所以单片机引脚不能直接控制电铃工作,因此我们使用单片机控制电铃工作电路的通断。由于单片机驱动能力有限,因而需要硬件将单片机输出的高、低电平变成控制电铃通断的电路,能够具体实现该功能的电路有多种。常见的方式是采用将单片机输出信号放大后驱动继电器,用继电器的触头控制电铃电路的接通和断开,如图3-3所示。
三极管在电路当中起开关作用,管型为PNP型。单片机的P1.7通过三极管驱动继电器,当P1.7脚输出高电平时,给三极管基极送入高电压。此时,三极管呈截止状态,继电器不吸合电铃停止打铃;当P1.7脚输出低电平时,给三极管基极送入的是低电压。此时,三极管呈导通状态,促使继电器吸合,电铃打铃。
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。当输入量达到规定值时,使被控制的输出电路导通或断开的电器。继电器线圈在断电时会产生一个很大的反感生电动势,这个电压会损失继电器或者电路中的元件,在继电器线圈上反向并联一个二极管,可将产生的反感生电动势通过二极管回路释放掉、保护继电器线圈和电路中的电子元件不受高压损坏。
图3-3 声音控制电路图
3.3 存储模块3.3.1 实时时钟DS1302简介 它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
1.引脚功能及结构
图3-4 DS1302引脚图
如图3-4所示,DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过RST输入高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK始终是输入端。
2.实时时钟DS1302的控制字节
DS1302的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
3.数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
4.实时时钟DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
5.引脚连接图
图3-5 DS1302引脚连接图
在学校正常上课中,不可能保证学校随时都有电,为了不影响学校的正常运转,同学们能够正常的上、下课。所以就采用能在学校停电时借助电池也能工作的芯片,而DS1302能够在学校掉电时,Vcc2无法给实时时钟DS1302供电,只有通过干电池B1给实时时钟DS1302的Vcc1提供电量让DS1302继续工作,系统能够继续计时。而这时的其它电路停止工作,但存储器中的打铃时间不会因为没有电而丢失。其与单片机连接方式如上图3-5所示。
3.3.2 存储器24C02C要保证设置的打铃时间数据在掉电时也不会丢失,同时实现在系统运行时能够修改打铃时间,在本系统中采用I2C总线的串行存储器24C02C存储打铃数据。
1.存储器24C02C的引脚介绍
考虑到串口线、稳定性等方面,本系统采用串行数据传输存储器。其容量计算如下:若以打铃次数较多的校园为例,每天按12节课计算,每节课打铃2次,再加上起床和熄灯的次数,打铃大约在20次左右。这样每个信息单元占8个字节,存储时均按照非压缩型BCD码存储,则需要存储空间大约在160个字节左右,选用256字节的存储器就能够满足容量的要求,可以采用ATMEL公司的24C02C。根据硬件电路的设计可得24C02C的I2C硬件地址为:0A2H/0A3H。
(1)行数据(SDA)引脚
串行数据引脚为双向引脚,用于把地址和数据输入/输出期间。该引脚为漏极开路。因此,SDA总线要求在该引脚与VCC之间接入上拉电阻(通常频率为100KHz时该电阻阻值为10K,频率为400KHz和1MHz时,阻值为2K)。
对于正常的数据传输,只允许在SCL为低电平期间改变SDA电平。而SDA电平在SCL高电平期间若发生变化,表明起始和停止条件产生。
(2)写保护(WP)引脚
该引脚必须连接到VSS或者VCC。如果连接到VSS,写操作使能。如果连接到VCC,写操作被禁止,但读操作不受影响
2.引脚连接方法
引脚采用I2C总线连接方法,这种方法能够节约I/O输出端口。它主要的特点有:
(1)总线只有两根线,即串行时钟线和串行数据线,这在设计中大大简化了硬件接口;
(2)每个连接到总线上的器件地址同时由芯片内部硬件电路和外部地址引脚决定,避免了片选线的线连接方法,并建立简单的主从关系,主器件既可以作为发送器,又可作为接收器;
(3)它是一个真正的多主总线,带有竞争监测和仲裁电路,多个主机可以任意发送而不破坏总线上的数据;
(4)同步时钟可以作为停止或重新启动串行口发送的握手方式;
(5)连接到同一总线的集成电路数量只受400pF最大总线电容的限制。
学校设定的系统时间和打铃时间存储在24C02C中。24C02C的三个地址端口A0、A1、A2都接地,因而其存储地址为A000H-A6FFH,共1KB的存储空间。其中,WP是24C02C的写保护控制引脚,WP为低电平时,串行存储器可以正常地读/写;WP为高电平时,对串行存储器内部的数据进行写保护。在系统掉电时不会丢失其中的内容,保证了设置的打铃时间不会因系统掉电而需要重新设置。如图3-6所示。
图3-6 24C02C引脚连接图
3.4 键控模块键盘是一组按键的组合,它是各种仪表中最常用的输入设备。操作人员可通过键盘输入数据或命令,实现简单的人机对话。在单片机应用系统中,有的是单个按键,有的是矩阵式的按键,即行列式按键。按键是一种常开型按钮开关,常态时按键的两个触点处于断开状态,按下键时它们才闭合。根据本设计本的要求,我们选用独立式键盘实现整个功能。
3.4.1 独立式键盘介绍
图3-7 独立式按键结构
独立式键盘的按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他按键的工作状态。这种按键软件程序简单,但占用I/O口线较多(一根口线只能接一个键),适用于键盘应用数量较少的系统中。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。独立式按键结构图如图3-7所示。
3.4.2 键盘接口及键位的功能介绍按键功能介绍:
模式按键:它的主要功能就是选择时钟芯片里的年、月、日、时、分、秒,当按下模式这个键时,它从年到月依次往后的选中,这时按调节按钮就能从当前的时间往上调。
调节按键:它的主要功能就是想改变当前的系统时间首先要按模式键,选中要修改的时间,再按调节键就能控制当前系统时间递增。
存入按键:它的主要功能就是把系统不正确的时间修改后按下存入键,系统的时间就为按下那瞬间的时间。
清空按键:它的主要功能就是当学校要重新输入打铃时间的时候,就先按下清空键,再输入新的时间。
通过上述每个按键的功能介绍,实现对打铃系统的打铃时间设置。与单片机具体链接图,如图3-8所示。
图3-8 键盘的接口连接
3.5 显示模块在本系统中因为要显示年、月、日、星期、时、分、秒,如果用发光二极管不能具体的显示出来,所以采用了七段数码显示管来作为显示元件。
3.5.1 数码管的组成及工作原理数码管由8个发光二极管构成,可以用来显示数字、字符等它在家电及工业控制中有着很广泛的应用。数码管实际上是由7个发光管组成“8”字形构成的,加上小数点就是8个。这些段分别由字母a、b、c、d、e、f、g、dp来表示。数码管的引脚结构如图3-9 所示,其中COM引脚为公共端,用来控制数码管显示的打开或关闭,既起到“使能”作用。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样。
根据公共端接法方式的不同,数码管又分为共阴极和共阳极两种结构的二极管,分别如下:
共阳极就是将8个LED的阳极连接到一起组成公共端COM,接到正极,当相应字段为低电平“0”时,可以点亮该字段;但相应字段为高电平“1”时,该字段不亮。
共阴极就是将8个LED的阴极连接到一起组成公共端COM,接负极,当相应字段为高电平“1”时,可以点亮该字段;当相应字段为低电平“0”时,该字段不亮。
图3-9 LED数码管引脚
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。
3.5.2 数码管的显示数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
图3-10 数码管动态显示电路
动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f、g、dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。数码管动态显示连接,如图3-10所示。