基于单片机的IC卡智能水表控制系统设计附程序+图 联系客服

发布时间 : 星期六 文章基于单片机的IC卡智能水表控制系统设计附程序+图更新完毕开始阅读6dd0da7804a1b0717fd5ddc6

因此,此开关往往是用来判断是否插IC卡的传感器件[2]。

VCCRSTSCLTGNDNCSDAP

图3.13 IC卡示意图

3.7.2 IC卡的接口电路的设计

24系列为低功耗COMS E2PROM 器件,使用单+5v电源,电源电压范围为2.5~6V, 内有高压泵电路,写入、擦除操作由内部定时器自动完成,具有擦除/写入周期10万次寿命和数据安全保存100年的有效期,二线串行接口,和各类微处理器接口十分简单等特点。本设计的AT89C205l单片机与IC卡240X接口如图3.14所示。图中IC-CARD为标准IC卡座,其T、P端用作到位检测开关,将T端连接89C2051的外中断输入脚P3.3(INT1)。由

1于引脚T,P为微动开关的两触点,所以,当有IC卡插入时,微动开关闭合,P1.5脚电平被拉低,单片机通过判读P1.5脚,做好读卡准备,无卡时,P1.5脚为高。P1.6、P1.7用作数据线(SDA)和时钟线(SCL),用软件模拟时序的方法来实现对IC卡的读写。当有IC卡插入时,P1.5脚电平被拉低,单片机通过判读P1.5脚,做好读卡准备,无卡时,P1.5脚为高。R19、R20、R21为限流电阻[2] [10]。 VCC23R19R20R2120K20K5.1KIC_SDA(P1.7)IC_SCL(P1.6)SW_T(P1.5)R2251R2351U131234VCCRSTSDANCSCLGNDTPIC-CARDC60.1uF8765 图3.14 IC卡接口电路

3.8 人机交互接口的设计

人机互交接口包括了报警电路与显示电路的设计。下面具体给出了在本设计中采用的报警电路和显示电路,并分析了它们的工作原理。另外,还对显示电路在本系统中应用的显示原理进行了详细的分析。

3.8.1 报警电路的设计

根据系统需要,我们设计了一个报警电路。当剩余水量不足、电池欠压等情况下,

1都需要报警。本报警电路很简单,我们采用1个NPN型三级管,1个蜂鸣器和1个电阻23组成。如下图3.15所示,当P1.4输出一个高电平时,NPN型三级管Q4导通,蜂鸣器马上得电发声,产生报警[11]。 VCCLS1R18100SPEAKERSPK(P1.4)R1710KQ4NPN 图3.15 报警电路 3.8.2 显示电路的设计 显示电路作为水表的输出接口,显示剩余水量、用水总量等信息。它们的有效工作时间都比较短。用户看完后,没有必要让它一直显示;为此,可水表上装一个开关按钮提供信号。即按一下按钮时,水表开始显示剩余水量;再次按下按钮时,水表显示用水总量;再次按下按钮时,水表显示关闭。如显示10s后,按钮没有动作,亦使它们停止工作,从而达到节电的目的。 在小型的控制系统中,通常用LED数码管作为显示器件。LED数码管的显示方式通 TitleSizeA4Date:File:2345 常可分为2种:静态方式和动态方式。静态显示方式的优点是亮度高、没有闪动、稳定,缺点是功耗大、占PCB面积大、成本高。为了在人机对话设计中降低硬件成本,节约单片机的I/O口资源,我们采用将通过串行动态扫描,即位码和段码交替发送的方式设计了一种新颖的显示模块,经调试,效果良好。 WM6WM5WM4WM3WM2U112ABQ0Q1Q2Q3Q4Q5Q6Q7345610111213WM1WM2WM3WM4WM5WM6U289WM1CLKMR74HC164U3DM1DM2DM3DM4DM5DM6DM7345610111213Q0Q1Q2Q3Q4Q5Q6Q774HC164AB12DYP-6gfedcbaR1R2R3R4R5R6R7220220220220220220220DM7DM6DM5DM4DM3DM2DM1CLKMR89DATE(P3.0)CLK(P3.1) 图3.16 串口显示电路图 显示电路的具体电路如图3.16所示。它由单片机AT89C2051,2片74HC164,6个LED数码管,6个220欧姆左右的限流电阻组成。74HC164是8位串入并出移位寄存器。它的每一个输出管脚具有+/-20mA的驱动能力。对于小型LED数码管,还要串联200~360Ω的限流电阻。本设计提出的动态显示电路采用2片74HC164,可以驱动1~8只共阴极数码管,这里我们采用6位显示。其中一片U3作为段码驱动,另一片U1作为位码驱动。2片74HC164采用级联方式连接,只占用单片机AT89C2051的2个I/O端口。位码驱动U1的数据输入端口、时钟输入端口分别连接AT89C2051的RXD和TXD端口。段码驱动U3的数据输入端口、时钟输入端口分别连接位码驱动U1的Q7和AT89C2051的TXD端口。选择AT89C2051的串行口方式为0方式,即移位寄存器方式。如果要求在6位LED数码管的最低位显示一个字符时,首先从DMbufer中取出要显示的数,通过译码表译出这个字符的段码值并将段码值写入U3中。根据这个字符在LED、显示器的位置(这里为最低位)。确定它的位码值是FEH(1111 1110)将位码值写入WMbuffer中(注意:段码驱动U3为高电2345TitleSizeBDate:File:平有效、位码驱动U1为低电平有效)。在显示程序中,首先将位码值写入串行数据寄存器(SBUF)。在AT89C2051TXD端口的时钟作用下,AT89C2051RXD端口送出这个字符的位码值到段码驱动U3。当AT89C2051送完一个字节的位码值后,发送中断标志位TI

置位。检测到TI=1后,清零TI,接着将段码写入SBUF,AT89C2051再送段码值到段码驱动B,同时段码驱动U3的位码值被送入位码驱动U1中,延时2ms,即可显示这个字符了。如果要求在低二位显示第2个字符,则WMbufer(1111 1110)不带进位位左移一位(1111 1101)并送WMbufer。再通过译码表取得第2个字符的段码值送入U3,重复上述过程即可。以上过程循环N次,即可完成1~6位字符的显示工作。在主程序中循环调用显示程序,反复扫描LED数码管,使之达到近似静态的显示效果[5][12][13]。

3.9 电源的设计

电源是电路部分的动力源,象是飞机的发动机,人的心脏。电源的质量如何直接决定电路是否能正常工作。在本设计中,我们采用的是外接3节5号电池供电。为了保证系统的正常工作及其安全性,我们设计了一套可行的电池能量检测方案和备用电源方案。下面进行了详细的介绍。

3.9.1 电池能量的检测

如果想要做出合理的电源管理方案,就需要单片机能够随时检测电路中电池的能量(具体表现是实际的电压值)。但是在本设计中,单片机判别电池的能量,由于不用象手机那样随时显示电池的容量,根据水表的特殊性,只要检测到一个固定值,给用户一个报警提示就可以了,这个电量值的选择需要满足一个量,即让用户再有三天的余量,加上关阀电量就可以了。

低电压检测对单片机系统来讲是个十分重要的问题,它在某种程度上起到了保障系统可靠运行,避免数据出错的作用,智能水表的设计中同样如此。具体地讲,应该在系统掉电到一个门限电压(该门限电压应高于CPU的最低运行电压)时,通过相应的电压检测电路把信号传递给CPU,CPU及时对系统进行软件复位。电压检测器可以选用合泰公司的HT70XX系列产品,此产品价位较低,而且规格十分齐全。在这里我们选用芯片HT7039来监视系统供电电平Vcc,它对电压变化十分敏感,在Vcc大于3.9V时,芯片输出高电平,当Vcc低于3.9V时,芯片输出马上变为低电平,从而可以迅速的判断系统是否掉电。系统除了有灵敏的电源监控之外,还可以采用3.6V的锂电池作为后备电源来支持阀的动作,在正常工作时,锂电池不参与供电,仅在掉电后提供阀工作的