首页 I2C类 DS1307芯片做时钟实验程序

I2C类 DS1307芯片做时钟实验程序

举报
开通vip

I2C类 DS1307芯片做时钟实验程序I2C类 DS1307芯片做时钟实验程序 I2C DS1307 DS1307是DALLAS公司的 一款时钟/日历芯片,采用I2C协议与单片机通讯,是 单片机制作时钟/日历的常用芯片。DS1307为8脚封装的芯片,只需外接一个 32.768KHz的晶振即可工作。本实验将时间信息通过串口显示在PC机上。 关键词:DS1307芯片,时钟程序,实时时钟程序,RTC DS1307 DS1307串行实时时钟(RTC)是一款低功耗,全BCD码,带56字节非易失SRAM的时钟/日历芯片。地址与数据经I2C双向总线串行传输...

I2C类 DS1307芯片做时钟实验程序
I2C类 DS1307芯片做时钟实验程序 I2C DS1307 DS1307是DALLAS公司的 一款时钟/日历芯片,采用I2C协议与单片机通讯,是 单片机制作时钟/日历的常用芯片。DS1307为8脚封装的芯片,只需外接一个 32.768KHz的晶振即可工作。本实验将时间信息通过串口显示在PC机上。 关键词:DS1307芯片,时钟程序,实时时钟程序,RTC DS1307 DS1307串行实时时钟(RTC)是一款低功耗,全BCD码,带56字节非易失SRAM的时钟/日历芯片。地址与数据经I2C双向总线串行传输。该时钟/日历芯片提供秒、分、时、星期、日、月和年等信息,并能自动调整少于31天包括闰年月份的最后一天。时钟可以工作在24小时模式或是12小时带AM/PM模式。DS1307内部嵌入电源传感电路,可探测电源故障并自动转用备用电池供电。在备用电池 供电情况下计时功能继续工作。 本实验硬件非常简单,DS1307外接一个32.768KHz的晶振即可。相应SDA管脚SCL管脚用条线连Atmega48单片机的端口PORTD.7和PORTD.6。通过串口将单片机与PC机连接,用BASCOM自带模拟终端显示时间。 '------------DS1307芯片做时钟BASIC程序-------------------------------- $regfile = "m48def.dat" ' 使用Atmega48单片机 $crystal = 8000000 ' 8MHz $baud = 19200 ' 串口波特律19200 $lib "mcsbyte.lbx" ' 用字节库节约存储空间 Config Date = Ymd , Separator = - ' 设置日期 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 为年-月-日,分隔符为"-" Config Sda = Portd.7 ' 配置SDA Config Scl = Portd.6 ' 配置SCL Const Ds1307w = &HD0 ' Ds1307地址 Const Ds1307r = &HD1 ' Config Clock = User ' 该语句自动定义系统时间变量 Dim Weekday As Byte , Strweekday As String * 10 ' 定义其他变量 Dim I As Byte ' Weekday = 6 ' 初始化星期变量 Time$ = "23:59:50" ' 初始化Time$变量将调用SetTime子程 Date$ = "09-02-28" ' 初始化Date$变量将调用SetDate子程 Do ' I = Weekday - 1 ' Strweekday = Lookupstr(i , Weekdays) ' Print "日期:" ; Date$ ; " " ; Strweekday ; " 时间:" ; Time$ ' Wait 1 ' Loop ' End ' Getdatetime: ' I2cstart ' 启动开始 I2cwbyte Ds1307w ' 发写地址 I2cwbyte 0 ' 1307地址0 I2cstart ' 启动开始 I2cwbyte Ds1307r ' 发送读地址 I2crbyte _sec , Ack ' 秒 I2crbyte _min , Ack ' 分 I2crbyte _hour , Ack ' 时 I2crbyte Weekday , Ack ' 星期 I2crbyte _day , Ack ' 日期 I2crbyte _month , Ack ' 月份 I2crbyte _year , Nack ' 年 I2cstop ' _sec = Makedec(_sec) ' BCD转十进制 _min = Makedec(_min) ' _hour = Makedec(_hour) ' _day = Makedec(_day) ' _month = Makedec(_month) ' _year = Makedec(_year) ' Return ' Setdate: ' _day = Makebcd(_day) ' 十进制转BCD _month = Makebcd(_month) ' _year = Makebcd(_year) ' I2cstart ' 启动开始 I2cwbyte Ds1307w ' 发送写地址 I2cwbyte 3 ' 从DS1307地址4开始写 I2cwbyte Weekday ' 星期 I2cwbyte _day ' 日期 I2cwbyte _month ' 月份 I2cwbyte _year ' 年 I2cstop ' Return ' Settime: ' _sec = Makebcd(_sec) ' 十进制转BCD _min = Makebcd(_min) ' _hour = Makebcd(_hour) ' I2cstart ' 启动开始 I2cwbyte Ds1307w ' 发送写地址 I2cwbyte 0 ' 从DS1307地址0开始写 I2cwbyte _sec ' 秒 I2cwbyte _min ' 分 I2cwbyte _hour ' 时 I2cstop ' Return ' Weekdays: ' Data "星期一" , "星期二" , "星期三" , "星期四" ' Data "星期五" , "星期六" , "星期日" ' 程序通过I2C协议与时钟芯片DS1307通讯获取时间数据。时间信息用PRINT语句在BASCOM的模拟终端显示。程序中使用了CONFIG CLOCK=USER 语句,使得编译器自动定义除“星期”外的时间变量,程序员可直接引用这些变量。DS1307内部有星期的存储位置,初始化后自动随日期的变更而变,很方便。 注意几个子程序的写法,这些子程序是在引用或赋值DATE$、TIME$变量时系统自动调用的。与普通子程序的写法不同,开头没有SUB,结尾用RETURN而不用END SUB,也不用DECLARE声明。 可参照51的实验例程。
本文档为【I2C类 DS1307芯片做时钟实验程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:113KB
软件:Word
页数:5
分类:互联网
上传时间:2017-09-27
浏览量:34