第一范文网 - 专业文章范例文档资料分享平台

AVR实验mega16多功能电子钟

来源:用户分享 时间:2025/8/8 20:08:39 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

AVR课程设计 数字时钟

物联网专业

一、 课程目的

通过课程设计,充分利用所学知识,将知识整合,实现最基本的数字时钟。

二、 课程要求

1、 时间显示、日历、并且显示屏可以切换 2、 秒表,可以记录多个时间,可以加入时间 3、 叫醒闹钟设置,闹钟等 4、 温度显示 5、 记事提醒

子模块:液晶,按键,DS1302时钟,温度传感器,其他等

三、 功能设计

1、 时间显示:通过调用ds1302时间函数,实现时间的显示。通过按键二的控

制,显示四行数据,第二行显示时间,其余三行可自由添加;按键零实现调制时间的分钟数和时钟数,按键一为加一控制,按键二为减一控制,按键七为跳回主界面控制。

2、 日历设置:同样是通过调用ds1302日历函数,实现日历的显示。通过按键

二的控制,跳入日历显示界面,第二行显示日历,其余三行可自由发挥;按键零实现调制天、月和年,按键一为加一控制,按键二为减一控制,按键七为跳回主界面。 3、 闹钟显示:实现蜂鸣器和时间函数的同时调用,在当前时间等于闹钟时间时,

可以自行跳出闹钟界面,按键七可返回之前界面;在主菜单项,可以通过按键三实现闹钟界面显示,按键零可实现闹钟时间的小时和分钟的调制,按键一为加一,按键二为减一,按键七跳回主界面。闹钟自动跳出提醒,按键七可以退出闹钟响应。

4、 显示屏显示:整个显示屏的显示直接调用DS12864显示,菜单六栏,分别

为时钟显示,日历显示,闹钟显示,温度显示,记事本及秒表,通过按键控制相应的区域。

四、 课程器材 AVR实验箱一台 五、 课程连线

1、 按键JP37接PB口,实现按键控制

2、 ds12864的D口,接PD口,实现显示屏显示 3、 RS,RW,E分别接PA5,PA6,PA7

4、 ds1302的SCK,I/C,RST口分别接PA0,PA1,PA2,实现时钟显示 5、 ds1820的JP39接PA3,实现温度传感器 6、 ds1820的JP16接PA4,实现蜂鸣器

六、 课程代码

DS1302

#include #define PA0 0 #define PA1 1 #define PA2 2

/*复位脚*/

#define RST_CLR PORTA &= ~(1 << PA2)/*电平置低*/ #define RST_SET PORTA |= (1 << PA2)/*电平置高*/ #define RST_IN DDRA &= ~(1 << PA2)/*方向输入*/ #define RST_OUT DDRA |= (1 << PA2)/*方向输出*/ /*双向数据*/

#define IO_CLR PORTA &= ~(1 << PA1)/*电平置低*/ #define IO_SET PORTA |= (1 << PA1)/*电平置高*/ #define IO_R PINA & (1 << PA1)/*电平读取*/ #define IO_IN DDRA &= ~(1 << PA1)/*方向输入*/ #define IO_OUT DDRA |= (1 << PA1)/*方向输出*/ /*时钟信号*/

#define SCK_CLR PORTA &= ~(1 << PA0)/*时钟信号*/ #define SCK_SET PORTA |= (1 << PA0)/*电平置高*/ #define SCK_IN DDRA &= ~(1 << PA0)/*方向输入*/ #define SCK_OUT DDRA |= (1 << PA0)/*方向输出*/

#define ds1302_sec_add 0x80 //秒数据地址 #define ds1302_min_add 0x82 //分数据地址 #define ds1302_hr_add 0x84 //时数据地址 #define ds1302_date_add 0x86 //日数据地址 #define ds1302_month_add 0x88 //月数据地址 #define ds1302_day_add 0x8a //星期数据地址 #define ds1302_year_add 0x8c //年数据地址 #define ds1302_control_add 0x8e //控制数据地址 #define ds1302_charger_add 0x90 #define ds1302_clkburst_add 0xbe

unsigned char time_buf[8] = {0x20,0x14,0x05,0x14,0x23,0x59,0x00,0x02};

/*向DS1302写入一字节数据*/

void ds1302_write_byte(unsigned char addr, unsigned char d) { unsigned char i; RST_SET; /*启动DS1302总线*/ /*写入目标地址:addr*/ IO_OUT;

addr = addr & 0xFE;/*最低位置零*/ for (i = 0; i < 8; i ++) { if (addr & 0x01) { IO_SET; } else { IO_CLR; } SCK_SET; SCK_CLR; addr = addr >> 1; } /*写入数据:d*/ IO_OUT; for (i = 0; i < 8; i ++) { if (d & 0x01) { IO_SET; } else { IO_CLR; } SCK_SET; SCK_CLR; d = d >> 1; } RST_CLR; /*停止DS1302总线*/ }

/*从DS1302读出一字节数据*/

unsigned char ds1302_read_byte(unsigned char addr) { unsigned char i; unsigned char temp; RST_SET; /*启动DS1302总线*/ /*写入目标地址:addr*/ IO_OUT; addr = addr | 0x01;/*最低位置高*/ for (i = 0; i < 8; i ++) { if (addr & 0x01) { IO_SET; } else {

搜索更多关于: AVR实验mega16多功能电子钟 的文档
AVR实验mega16多功能电子钟.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1ymhu2o6l22cg5g8iu6m_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top