基于MCS-51单片机的智能电子钟

实验六: 基于MCS-51单片机的智能电子钟
实验日期:2020年 12月 22日
一、实验目的
1.理解实时时钟芯片PCF8563结构及工作原理。
2.掌握PCF8563实时时钟芯片接口电路及时序编程。
3.对典型的串行同步通讯协议具有较好的认知。
4.掌握IIC串行同步通讯协议及对应时序。
5.掌握开发系统的使用和单片机程序设计,具有模块化编程的综合能力。
二、实验内容
1.利用PCF8563串行实时时钟芯片作一个数字钟,编制程序,在数码管上显示从设置的时间开始计时的时钟。
2.当单脉冲按钮按下时,数码管改为显示今天的日期,再次按下则显示实时时间。
三、实验电路原理图及分析
基于MCS-51单片机的智能电子钟_第1张图片图6-1实验电路原理图
图6-1为本实验的原理图,本实验中的电路主要由89C51单片机最小电路,PCF8563和脉冲消抖电路组成,目的是利用PCF8563串行实时时钟芯片作一个数字钟。左下角的是PCF8563芯片,它是带I2C总线的芯片,其中SCL引脚接单片机的P3.0RXD,SDA引脚接单片机的P3.1TXD。左上角是一个而单脉冲发生装置,一个脉冲发生器,再加上一个硬件消抖电路,防止一次按下按钮被多次检测,从单片机的P1.0口低电平输入。
关于PCF8563芯片,其OSCI引脚代表振荡器输入,OSCO代表振荡器输出,INT为中断输出(低电平有效),VSS接地,VDD为正电源,CLKOUT时始终输出,SCL是串行的时钟输入口,SDA是串行数据的I/O口。
四、编程思路及C51源程序
基于MCS-51单片机的智能电子钟_第2张图片
基于MCS-51单片机的智能电子钟_第3张图片
基于MCS-51单片机的智能电子钟_第4张图片

图6-2实验程序流程图
图6-3 主函数截图
主函数中,先给数码管中的第2和第5位赋值,让其显示-,然后设置初始值并将其写入到PCF8563芯片中,从0x00开始存储,共9位。大循环中,利用do-while语句,当P1.0为1时一直执行显示程序,直到P1.0变化则跳出循环,当P1.0变化回去的时候,即脉冲结束之时进入另外一个循环,即达到按下一下按钮,更换工作功能的效果。
日期显示函数中,单片机的数据从PCF8563中读取,器件地址即宏定义PCF8563的结果,片内地址取0x05,从存储单元0x05开始读,一共读4位。单片机接收到的数据存储在MRD指针数组中,分别取出各个元素高低4位的结果,在数码管中进行逐个显示。时间显示函数中,器件地址与日期显示函数相同,片内地址取0x02,从存储单元0x02开始读,一共读3位,分别是秒、分和时。单片机接收到的数据存储在MRD指针数组中,分别取出秒、分和时对应的元素高低4位的结果,在数码管中进行逐个显示,秒显示在数码管最低位0和1,时在最高位6和7。

五、实验结果及讨论
开启单片机电源,下载程序后,,试验箱8279区域数码管显示14 20 00并开始不断计时,按下单脉冲开关后,数码管改为显示日期,即20 12 22,再次按下单脉冲开关,则返回时间显示的功能模块。
基于MCS-51单片机的智能电子钟_第5张图片

图6-4 实验效果图

六、体会与收获
1.本次实验利用的PCF8591是一种低功耗的实时时钟/日历芯片,它的功能是提供一个可编程的时钟和日期输出。由软件给时钟芯片写入初值,再用单片机将其实时的运算结果读出来并进行显示,本次实验是单片机利用I2C总线进行读写的又一次实践。

你可能感兴趣的:(单片机)