作息闹铃控制器设计
偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可以一次性读写所有RAM的31个字节,命令控制字地址写操作时为FEH,读操作时为FFH。
图2 DS1320命令控制字
图3 DS1320时钟、日历寄存器及控制字
系统软件实现
主程序流程
本系统主程序在考虑可设置每天最多40个打铃时间点,而时间点精确的分钟,因此每个时间点信息包括时、分两个字节存储,共需80字节作为打铃时间点存储缓冲区,此缓冲区在AT89C52内存中采用数组的形式定义,同时当打铃时间点设置好时,将此数据保存到CAT24WC02串行芯片中以防止掉电丢失,在下次启动首先从CAT24WC02芯片中读取数据保存到对应数据缓冲区中。运行主程序是首先读取时钟芯片时间数据并在数码管显示相关信息,随后将当前时间与各打铃时间点相比较看是否需要打铃,最后进行键盘信息处理,分别完成时间设定和打铃时间点设定等相关操作,具体流程如图4所示。
图4 主程序流程图
闹铃时间设置程序设计
本设计中共采用8个按键,其中时间设置按键和闹铃设置按键为复用键,由图4可知当运行主程序时,按下相应键则程序进入时间设置或闹铃时间设置程序处理中,在闹铃时间设置程序中,此二键亦分别用于添加闹铃和删除闹铃设置,当6位数码管显示信息均处于闪烁状态时,此时按下添加键,则表示新添加一闹铃时间点,按下删除键则表示删除对应闹铃时间点,如6位数码管显示信息不全闪烁,则此二键不起作用。左移和右移按键则分别用来选择所要设置数据位(时或分),选择对应位后相应数据进入闪烁状态,此时操作增加或减小键进入相应数值设置,当仅闹铃时间序号闪烁时,增加和减小键同时有依次进行查询所有闹铃时间点的功能。信息设置完后当按下确认键则表示信息设置完成,此时所设置闹铃信息会统一进行从小到大排序(用于查询时从小到大显示),然后分别保存到单片机相应内存和CAT24WC02串行EEPROM中以防掉电丢失。如按下取消键,则表示放弃所设置信息,此时重新从CAT24WC02串行EEPROM中读取原闹铃时间信息到单片机相应内存相应缓冲区。具体流程图如图5所示。
图5 主程序流程图
闹铃时间信息显示程序则由显示程序void Display专门负责,闹铃设置时的数据分别放在临时显示缓冲区,结合其闪烁状态值一起传递给显示程序进一步处理,从而决定哪位数码管显示信息进行闪烁,闪烁状态值FlagBit共有5个取值参数,分别为0、1、2、3、4,其中0表示不闪烁, 1表示闹铃时间分值闪烁,2表示闹铃时间时值闪烁,3表示闹铃时间序号闪烁,4表示全部显示数值一起闪烁。具体闪烁控制则由定时中断服务程序里对闪烁标志不断取反,显示程序里根据此标志位的变化进行闪烁控制。
时间设置处理程序则主要是通过按键设置好时间后对DS1302进行数据更新, 具体过程与闹铃设置程序类似,篇幅原因不在多述。
结语
实验初期本设计主要通过仿真软件完成,由于受实验条件影响,数码管显示部分采用静态显示方法完成, 如考虑节约成本,在实际电路中本设计亦可采用动态显示电路或串行显示电路完成。
- 基于双AT89C52单片机的CAN总线中继器设计(08-07)
- 基于AT89C52的超声波测距倒车防撞报警系统设计(08-28)
- 单片机控制的多参数实时采集与处理系统设计(10-15)