配合SDA的高低转换来进行启动和停止控制,然后发送从器件地址信息,从器件送回应答信号后,主机开始进行对从器件的读或写,这里用来做密码锁,所以对从器件的操作就是给相应的存储单元写密码(修改新密码),或者对某个存储单元读密码,然后与按键的值进行对比,验证密码是否正确。 2.3.2 硬件设计
图(14)系统连接图
2.3.3 软件设计
主程序流程图:
图(15)主程序流程图
修改密码流程图:
1 1
图(16)修改密码流程图
2.4 调试与结果
图(17)第一次进入密码锁
1 2
图(18)修改密码并显示
图(19)确定修改成功,屏幕显示“modified!”
1 3
图(20)再次用新密码进入密码锁
第三章 基于DS1302电子日历的设计
3.1 系统功能
?在LCD上显示当前的时间信息,即年、月、日、星期、时、分、秒 ?具有时间的调校功能 ?显示当前调节对象 ?日期时间加调整与保存。 3.2 系统组成
图(21)系统组成图
本设计由STC89C52单片机的主芯时钟日历DS1302芯片以及显示液晶LCD。
1 4
DS1302与单片机之间可简单地采用SPI串行方式进行通讯,仅用到三根信号线:RST(复位),I/O(数据线),SCLK(同步串行时钟)。实时时钟具有计算2100年之前的秒,分,时,日,月,星期,年的能力,还具有闰年调整能力。LCD第一行用于显示年月日及星期,第二行显示时分秒。 3.3 系统设计 3.3.1 总体设计
DS1302与51单片机的连接只需要利用单片机的三个I/O引脚对DS1302的SCLK、I/O、和RST进行控制,根据系统功能要求,基于DS1302的电子日历原理图如图3-3所示,51单片机的P2.0,P2.1和P2.4分别与DS1302 的SCLK,I/O和RST相连,DS1302的主电源VCC2与系统电源VCC相连,DS1302的晶振选用32.768KHz,LCD用于显示当前的时间信息,按键S4,S8,S12用于时间的调整。DS1302共有10个寄存器,其中要控制操作的有年、月、日、星期、时、分、秒寄存器,通过对DS1302单字节读/写操作或者多字节读/写操作,可对其内部的时钟日历寄存器,控制寄存器,RAM存储器进行访问,数据是以BCD码的格式存放。 ? DS1302读写时序:
(1)初始化:先把SCLK置0,接着把RST端置1,最后才能输出SCLK脉冲 (2)读:DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读
写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。第二个字节就是要读或写的数据了。单字节读:只有在SCLK为低电平时,才能将CE置为高电平。所以在进行操作之前先将SCLK置低电平,然后将CE置为高电平,接着开始在IO上面放入要传送的电平信号,然后跳变SCLK。数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上
图(22)单字节读
(3)写:DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读
写两个字节,第一个字节是控制字节,就是一个命令,高速DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。第二个字节就是要读或写的数据了。单字节写:只有在SCLK为低电平时,才能将RST置为高电平。说以在进行操作之前先将SCLK置低电平,然后将RST
1 5