基于avr单片机的rtc实时时钟

基于avr单片机的rtc实时时钟

ID:3142141

大小:55.00 KB

页数:16页

时间:2017-11-19

基于avr单片机的rtc实时时钟_第1页
基于avr单片机的rtc实时时钟_第2页
基于avr单片机的rtc实时时钟_第3页
基于avr单片机的rtc实时时钟_第4页
基于avr单片机的rtc实时时钟_第5页
资源描述:

《基于avr单片机的rtc实时时钟》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于AVR单片机的RTC实时时钟引言:本次我们小组设计的是基于AVR单片机的RTC实时时钟,它能提供日历/时钟/秒表的功能,它走时准确,耗电低设计原理:该实时时钟使用了AVR单片机,主要利用其中的DS1302时钟芯片,1602液晶屏和CTC分频模式。一.日历时钟设计:1.芯片选择对于时钟设计我们直接使用了DS1302时钟芯片,该芯片利用了外加的12M的晶振进行计时,自带了万年历的功能,使用十分方便。本身有后备电源引脚,可以外接后备电源保持实时工作。内有年月日时分秒的寄存器,可直接写入读取,缺点是较难

2、起振,感觉会受温度影响2.液晶屏使用为了方便的显示时间,我们还采用了1602液晶屏.1602液晶屏功耗小,体积小,显示内容丰富,操作灵活,具有双行16字显示。3.时钟程序设计1)DS1302程序主要函数:DS1302Init()//初始化时钟芯片,DS1302_WriteB()//写入单字节数据DS1302_readB()//读取单字节数据,DS1302_setT()//时间设置DS1302_getT()//获取时间2)1602程序主要函数Init1602()//初始化1602,Gotoxy()//

3、显示位置设置Write1602()//在1602中显示数据3)其他常用程序Keycheck()//小键盘检查,Delay_ms()//延时函数BCD2ACSII()//编码转换,display()//显示16024.程序设计原理DS1302:通过拉高拉低RST电平进行片选,当时钟信号来临时,先向DS1302写入操作的地址信息,在第二个时钟信号进行数据操作,读取或写入,每次操作完注意进行写保护防止误写入数据导致时钟停止1602:通过RS,R/W,EN进行控制操作,通过D0~D7进行数据写入二.秒表设计

4、1.芯片选择直接使用ATMEga16本身的分频功能。2.定时器程序设计timer()//定时器驱动及1602显示,time()//中断执行的函数3.程序设计原理:利用定时器timer1中的256分频,先对TCCR1寄存器预存数据,存入的数据为(65525-12000000/256),当TCCR1累加到65535时,产生中断,然后进行中断操作,全局变量SECONG加1等。调试过程:单片机的调试是枯燥而又艰辛的,其中既有硬件上又软件上的调试。对于硬件调试,我们一开始就打定主意用液晶屏来显示,但是买来的液

5、晶屏屡试都还无反应,只用背光灯亮了,我们想了无数个办法都没有成功,在其中浪费了巨大的时间,后来发现竟然是因为电位器没有调好,调好后在改了一下代码的显示,总算是把1602调通了,实在是因为一开始没有经验完全不知道电位器要调整。我们遇上的第二个大麻烦就是1302竟然不能走钟,一开始还是从软件入手,测试了DS1302寄存器里的数据,改了很多小问题,最后变的可以读取和写入数据了,但是还是不能走,我用万用表测了管脚,感觉是因为晶振没有起振,换了同学的晶振,还是不能走动,愈发悲剧,百度谷歌了很长时间,有说电容问

6、题,甚至有说DS1302很多假冒的,后来某次突然二了,竟然有吹风筒去吹(看代码太久,神经错乱),更无语的是吹了一下后。。。。竟然时钟竟然动了,十分囧,遂感觉是因为天气潮湿导致晶振管脚短接,至今未能验证是否。后来这两天天气凉下来都能正常起振了最后是小键盘的调试,因为之前弄过,所以硬件上是没有问题的,只是软件上问题多多,比如会显示乱码之类的,大多是时序和键盘抖动的问题,慢慢调还是调好了。经验教训:最大的感慨是调试时一开始完全不知道是软件还是硬件的问题,只能慢慢猜测,不断尝试才能调好一块板子,而且同是AV

7、R单片机不同的焊接电路使用方法是完全不同的,写代码时一定要多用宏定义才方便改,遇到问题慢慢看DATASHEET。附带源码【主程序】#include"test.h"#include"time.h"#include"keycheck.h"#include"delay.h"#defineTIMER_KEY15#defineRTC_KEY14#defineSETTIME_KEY11ucharsettime[7]={0x20,0x04,0x12,0x26,0x09,0x06,0x10};voidWritewe

8、ek(ucharday){switch(day){case1:Write1602(1,'M');Write1602(1,'o');Write1602(1,'n');break;case2:Write1602(1,'T');Write1602(1,'u');Write1602(1,'e');break;case3:Write1602(1,'W');Write1602(1,'e');Write1602(1,'d');break;case4:Write1602(1,'T')

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。