在单片机常见应用中,单片机与LED的连接方式有并行与串行两种方式。但是由于单片机的接口较少,串行方式得到广泛应用。MAX7219与MAX7221常用于驱动LED,本设计采用MAX7221芯片,外部引脚功能如图10所示。
图10 MAX7221外部引脚
引脚功能说明如下。
DIN:串行数据输入端,CLK上升沿来临时数据被载入内部移位寄存器中。
CLK:串行时钟输入端,工作频率最高为10MHz。
CS:数据装载信号输入端,低电平时接收DIN端数据,高电平时锁存数据。
DIG0~DIG7:LED的位控制端。
A~DP:LED的段码控制端。
DOUT:串行数据输出端。
ISET:硬件亮度调整端,通常在该引脚与VCC之间连接一个电阻,此电阻大小也可以调节LED的亮度。
GND:接地。
3.5.1 LED显示电路硬件连接
本模块设计中,MAX7221驱动共阴极数码管。单片机P2.0~P2.2依次分别接MAX7221器件的DIN、CS、CLK。它与单片机的连接如图11所示。
图11 显示电路
3.5.2 工作原理
MAX7221和单片机连接有三条引线(DIN、CLK、CS),采用串行数据移位接收方式。单片机先将16位二进制数发送到DIN端,等待CLK上升沿到到来,CLK的上升沿将数据逐位移入MAX7221内移位寄存器,当16位数据移入完毕以后,在CS引脚信号上升沿到来时将16位数据存入MAX7221内,在内部动态扫描显示电路的作用下实现动态显示[8]。
3.6 存储模块
AT24C02是美国Atmel公司的低功耗CMOS串行E2PROM。E2PROM是电擦除可编程只读存储器[9]。AT24C02具有2K容量,内部有256个字节,该芯片被低功耗低电压电路设计中广泛应用。外部引脚功能如图12所示。
图12 AT24C02外围引脚
各引脚功能:(1)A0、A1、A2:芯片地址引脚,接固定电平,决定芯片地址。(2)WP:写保护端,接VCC时对芯片写保护;接地时允许执行一般读写操作。(3)SDA:串行数据I/O端。(4)SCL:串行时钟输入端。(5)VCC、GND:VCC接+5V电源;GND为电源地。
工作原理:AT24C02信息存取采用I2C总线,I2C总线是一种串行数据总线,只有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。在只有一个单片机主器件,其余都是外围器件的情况下,单片机可以用两根I/O口线来模拟I2C总线接口,这就是I2C总线虚拟技术[10,11]。原理图设计时两根信号线经过上拉电阻接电源。硬件连接图如图13所示。
图13 存储电路
4. 软件设计
本论文程序编写是在keil软件平台上实现运行和查错[12]。程序设计采用C51语言编写,在keil软件平台上运行查错,经编译成功后输出hex文件。然后在proteus平台上,将已经生成的hex文件添加到单片机内,点击运行,实现仿真。
4.1 主程序的软件设计
主程序流程图如图14所示。
图14 总程序流程图
程序初始化时,要先对DS1302及内部定时器T0进行初始化。启动程序后,单片机读取识别卡内部的64位ROM,并与已设定的64位码进行比较。如果64位码比较结果一致,系统将闭合继电器的常开触点,同时启动定时器T0。此时,数码管将会显示“一一一”。当用户取下识别卡后,会重新恢复为显示时间的状态。如果继电器常开触点闭合10s,系统将自动断开常开触点。如果两个码不同,系统直接调用显示时间的程序[13]。
4.2 定时器T0程序设计
当验证身份允许通过后,系统进入定时器T0中断服务子程序。首先需要对定时器初值进行重载,然后设定的计数量num,num开始减1判断是否已经减到0。若num不为0,则直接退出中断服务子程序;若num为0,说明定时10s时间已到, 此时定时器停止工作,同时重置num初值,为下次循环做准备。最后继电器断开,返回主程序。程序流程图如图15所示。 AT89C51单片机的出入管理控制系统设计+原理图+源程序(5):http://www.751com.cn/zidonghua/lunwen_967.html