新闻中心

EEPW首页>电源与新能源>设计应用> 基于AT89C51的密码电源开关设计

基于AT89C51的密码电源开关设计

作者: 时间:2011-05-25 来源:网络 收藏

随着现代技术的发展,电与我们生活的关系越来越密切,从工业生产到居家生活的每一个细节都离不开电。但令人头疼的是却有许多人在偷电漏电,盗用别人的使用,给别人造成了经济上的损失。现在,在同一间办公室办公的情况越来越普遍了,为了使非法用户在不知道的情况下,无法使用,笔者在这里了一个,它是微控制芯片A T89C51 的一项新的具有实用价值的系统。这个系统结构简单,保密性好,可以同时控制多路电源,具有输入错误告警,输入正确密码开、关电源,用电器关电后自动启动保护延时等功能。

本文引用地址://m.amcfsurvey.com/article/179086.htm

工作原理及硬件结构

利用89C51的密码电源原理如图1所示,系统以89C51 为核心,89C51 是Intel 公司的一款集CPU 、RAM、ROM、I/ O 接口、定时器/ 计数器、中断系统为一体的单片机, 片上带有4 K 的ROM 和128 ×8 位的RAM。系统中按键采用查询方法与单片机连接,可以实现输入正确密码开电源,输入正确密码关电源,修改密码,修改延时等功能。8 路继电器全部连接在P0口,通过P0口的电平变化来控制继电器,进而控制电源的,为了节省端口,L ED 显示连在普通口,因为要在关电后保证密码不丢失,利用I2C 技术在单片机外部扩展了一个E2 PROM(A T24C02) ,来存储正确的密码。

单片机最小系统

如图2 所示,89C51 的外部通过18 ,19 脚连接一个晶振和两个电容,构成振荡电路,可以为单片机提供时钟频率。9 脚通过一个10kΩ 电阻和一个10μF 的电容构成了一个简单的复位电路, EA 接高电平,AL E、PSEN 信号不用,这样就构成了一个单片机最小系统。这个最小系统未设复位键,系统加电时自动复位。

继电器电路

本系统中要实现用弱电去控制强电,所以我们使用了继电器,用以对电源通断的控制,如图3 所示,继电器通过一个三极管直接连接到P0 口,当P0口为高电平时,继电器导通,接通外部电源,反之,断开外部电源。

外部存储器的扩展

为了把修改后的正确密码保存起来,不至于在断电后密码丢失,所以在中通过I2C 技术扩展了一个外部存储器。I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA ,另一根是时钟线SCL 。如图4 所示,因为89C51 没有直接的I2C 接口,所以使用模拟I2C 技术,SDA 连接在P2. 3 口,SCL 连接在P2. 2 口,用软件程序控制数据的输入输出。

在I2C 总线上传送的一个数据字节由8 位组成。总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位。数据传送首先传送最高位(MSB) ,首先由主机发出启动信号“S”(SDA 在SCL高电平期间由高电平跳变为低电平) ,然后由主机发送一个字节的数据。启动信号后的第一个字节数据具有特殊含义:高7 位是从机的地址,第8 位是传送方向位,0 表示主机发送数据(写) ,1 表示主机接收数据(读) 。被寻址到的从机设备按传送方向位设置为对应工作方式。标准I2C 总线的设备都有一个七位地址,所有连接在I2 C 总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第9 位应答时钟脉冲时向SDA 线送出低电平作为应答。除了第一字节是通用呼叫地址或十位从机地址之外,第二字节开始即数据字节。数据传送完毕,由主机发出停止信号“P”( SDA 在SCL 高电平期间由低电平跳变为高电平) 。A T24CX 系列串行E2 PROM 具有I2 C 总线接口功能,功耗小,宽电源电压(根据不同型号2. 5V~6. 0V) ,工作电流约为3mA ,静态电流随电源电压不同为30μA~110μA ,所以在本系统中使用A T24C02 作为外部存储器。

其他硬件电路

本系统中的使用到的按键较少,只有4 个,分别是通道选择,功能切换,数字切换/ 修改延时,确认/修改密码。为了简化电路结构,节省成本,在系统中未使用扫描键盘的连接思路,而是采用了图5 的连接方法。

按键一端接P3 口,一端接地,当有按键按下时,相应口的电平就会被拉低。然后用软件程序就可以检查出是哪个键按下,随后执行相应的功能。因为P3 口全做了I/ O 口使用,所以在连接硬件的时候,每一个口上都接了一个上拉电阻。L ED 显示部分通过模拟串行口来进行显示,时钟线和数据线连接到单片机的普通口。电源电路使用典型的电源电路,一个整流桥加一个稳压管,就可以构成一个电源电路。为了增加系统的可操作性,特加了三个L ED 指示灯,分别是修改延时指示灯、修改密码指示灯、告警灯,都直接连接在P1 口,用程序控制。

控制软件设计

结合设计的要求和电路要实现的功能,系统的主要程序流程如下:

主程序

这个程序采用了数枝状的结构,这样比较适合于此硬件电路,也容易实现系统的功能。在主程序中,反复查询与按键相连的端口,一但发现有按键按下,迅速判断出来是哪个按键按下,然后调用相应的子程序,并执行功能,待执行完后,又返回主程序等待。

输入数字子程序

输入数字键可以实现两个功能,一个是单纯的输入数字,从0 到9 循环,每修改一次,数字都要保存到显示缓冲区中,以便打开电源,关闭电源,修改密码时使用。输入数字键一般是和确认键配合使用的,因为在这个系统中采用的是串行显示,所以每次只能显示一位,共有四位数字,从低位到高位显示的时候,当每一位上的数字选好后,都要确认一下,才能移到下一位显示。如图7 所示在每一次输入完数字以后,都要查询一下是否有修改延时的要求,如果有,那么就要执行修改延时的功能,在本系统中,最大延时取了5 分钟,这个值到实际中是可以修该的。修改后的延时值存在一个特定的存储区中,以备触发定时器时使用。本系统中采用延时的功能主要是为了保护用电器,例如冰箱之类的大功率用电器,它要求在每次关电和开电之间应该有一定的延时,以保护用电器,延长寿命。而这个设计就恰恰满足了这种要求,它可以在你关闭电源时自动启动定时器延时,如果定时时间未结束,即使密码输入正确,也无法开机。

选路子程序

选路子程序比较简单,通过反复循环来实现路数的选择,选好的路数存到特定的存储单元中,作为判断条件供其他程序使用。

确认子程序

确认程序主要实现对输入数字的确认及判断系统是否有延时要求。

修改延时/ 修改密码子程序

程序主要作用就是实现修改密码和修改延时,可以通过外部按键来切换,在外部各有一个指示灯,来显示现在处于什么状态。修改延时时只要修改延时灯点亮,就可以通过输入数字键来修改延时。当修改密码指示灯亮时,就可以修改密码。修改好的密码通过特定的端口送到外部存储器AT24C02 保存起来。

比较子程序

比较子程序主要实现对输入的密码和原始密码进行比较的作用,可以实现对继电器的开与关的控制及控制延时的打开的控制。延时的关闭是在定时器里完成的,在这里就不再过多的阐述了。

部分程序如下:

MAIN :

MOV SP , # 60H

MOV TMOD , # 01H ;设置定时器T0

MOV TH0 , # 3CH

MOV TL0 , # 0B0H ;100 毫秒初值

SETB EA

MOV DINGSHI_CZ , # 01H ;存计数次数

MOV XGMM_PASS , # 00H ;修改密码允许标志清0

MOV 0CH , # 0C8H ;循环200 次

MOV 0DH , # 0C8H ;循环200 次

MOV 0EH , # 0C8H ;循环200 次

 ; ....................

MOV 4AH , # 00H

MOV 4BH , # 00H

MOV 4CH , # 00H

MOV 4DH , # 00H ;清显示屏的代码

LCALL CL EAR ;清显示器

MOV A , # 00H

MOV P0 ,A

MOV R4 , # 08H ;控制路数的次数

  MOV R3 , # 00H ;控制路数,默认第1 路

MOV R0 , # 30H ;密码缓存首地址

MOV R5 , # 00H

MOV R7 , # 05H ;控制定时次数,最大5 分钟

MOV A , # 01H

MOV 38H ,A

MOV OPEN_SHU T1 , # 00H ;控制各路的开与关

MOV OPEN_SHU T2 , # 00H

MOV OPEN_SHU T3 , # 00H

MOV OPEN_SHU T4 , # 00H

MOV OPEN_SHU T5 , # 00H

MOV OPEN_SHU T6 , # 00H

MOV OPEN_SHU T7 , # 00H

MOV OPEN_SHU T8 , # 00H

MOV YANSHI , # 00H ;关延时标志位

; ........查询是否有键按下........

START :

SETB P3. 2

SETB P3. 3

SETB P3. 4

SETB P3. 5

LCALL DL10_MS

MOV A ,P3

JNB ACC. 2 ,FUN0

JNB ACC. 3 ,FUN1

JNB ACC. 4 ,FUN2

JNB ACC. 5 ,FUN3

LCALL DL10_MS

LJMP START         ;查询是否有键按下

FUN0 : LJMP XUANLU ;调用选路子程序

FUN1 : LJMP INPU T_SZ ;调用输入数字子程序

FUN2 : LJMP YES_MOVE ;调用确认子程序

FUN3 : LJMP GNQH ;调用功能切换子程序

结束语

本文较为详细地介绍了以单片机为核心的密码电源开关的设计,使51 系列单片机充分应用在了控制系统中。该系统实现简单,结构灵活(按键部分也可以采用中断的连接方法) ,开发经济,具有一定的市场前景。



评论


相关推荐

技术专区

关闭