- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课题名称:多功能电子万年历
小组成员:骆云龙 寇 丽
王 振
指导老师:王绍源
任务与要求
1、任务
设计一个具有多种功能的电子万年历。
2、基本要求
(1)能显示阳历年、月、日、星期、小时、分、秒
(2)显示模块采用LCD液晶显示,要求能用按键调整时间。
(3)能显示阴历月、日,在显示阴历时间时能标明是否为闰年。
(4)具有定时报警功能,能够进行整点和半点语音报时。
3、发挥部分(语音,温度,掉电存储)
(1)掉电存储功能,可存储掉电前用户定时设置。
(2)具有日程管理,可以设定指定日期的日程,可以设置日程的提醒时间,并可用语音进行提示。
(3)可以保存30个日程设定,每个日程的提醒采用音乐提醒,至少有5首歌曲进行选择播放,提示音乐具有重复播放功能。
方案分析与比较
硬件设计
因实验室器材没有蜂鸣器,所以报警改为LED灯闪。
利用所焊TM4C123G最小系统板,安装LCD模块。
软件设计
农历函数、整点报时函数整合为data.h头文件,汉字显示模块整合为zimo.h头文件,加入学长写的按键、LCD模块的头文件KB_module.h、LCD_module.h,调用系统头文件stdint.h、Stdbool.h、inc/tm4c123gh6pm.h、inc/hw_memmap.h、
inc/hw_types.h、driverlib/sysctl.h、driverlib/interrupt.hdriverlib/gpio.h、driverlib/timer.h、
driverlib/eeprom.h。主函数main()里通过while(1){ }完成按键功能。
系统测试与结果分析
6.1 测试仪器和测试条件6.2 测试结果记录及结果分析
J-link接入单片机,打开CCS点击Debug下载程序。LCD显示正常,但整点时LED灯没有按预期闪烁。可能为没有中断无法进入整点报时程序。
6.3 测试结论
除整点报时外,整体达到要求,误差在允许范围内。
附件1:使用说明书
本多功能万年历显示模块采用LCD液晶显示,能显示阳历年、月、日、星期、小时、分、秒,能显示阴历月、日,并标明是否为闰年。
键盘从左到右,从上到下,一次为1~16号按键,按一号键为分钟+1,二号按键为小时+1,五号按键为天数+1,六号按键为天数-1,九号按键为月份+1,十三号按键为年份+1。
附件2:详细电路原理图
J-link下载接口
LCD接口(1)
LCD接口(2)
附件3:软件清单
主函数 main.c
#include stdint.h
#include stdbool.h
#include inc/tm4c123gh6pm.h
#include inc/hw_memmap.h
#include inc/hw_types.h
#include driverlib/sysctl.h
#include driverlib/interrupt.h
#include driverlib/gpio.h
#include driverlib/timer.h
#include KB_module.h
#include LCD_module.h
#include zimo.h
#include driverlib/eeprom.h
#include nongli.h
int LunarCalendar(int year,int month,int day);
int pingrun();
void display_week();
int pingrun();
void timerset();
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
timerset();
LCD_pin_init();
LCD_initialization();
LCD_clear_screen();
LCD_char_16x16(1,1,ri);
LCD_char_16x16(1,2,Qi);
LCD_char_16x16(2,1,Shi);
LCD_char_16x16(2,2,jian);
LCD_char_16x16(1,3,mao);
LCD_char_16x16(2,3,mao);
LCD_char_16x16(4,8,nian);
LCD_num_16x8(1,6,0,year);
LCD_num_16x8(1,11,0,mon);
LCD_num_16x8(1,14,0,day);
LCD_num_16x8(2,6,0,hour
文档评论(0)