电子日历设计与总结报告

合集下载

数字万年历实训报告电气

数字万年历实训报告电气

一、实训目的随着科技的不断发展,电子产品的应用越来越广泛。

数字万年历作为一种常见的电子设备,具有显示日期、星期、农历、节假日等多种功能,给人们的生活带来了极大的便利。

为了更好地掌握电子产品的设计原理和制作方法,提高自身的实践能力,本次实训旨在通过设计和制作数字万年历,使学生对电子技术、电路设计、编程等方面有一个全面的认识和掌握。

二、实训内容1. 数字万年历的设计(1)功能需求分析根据用户需求,数字万年历应具备以下功能:1)显示日期、星期、农历、节假日等信息;2)具有闹钟功能,可设定闹钟时间、闹钟音量等;3)具有定时关机功能,可根据用户需求设定关机时间;4)具备背光功能,便于夜间使用;5)具有定时更新功能,可自动更新农历、节假日等信息。

(2)硬件设计1)主控芯片:选用STM32F103系列单片机,具有丰富的片上资源,易于编程和控制。

2)显示模块:采用TFT LCD显示屏,显示效果清晰,支持触摸操作。

3)按键模块:采用独立按键,实现功能选择、闹钟设置、关机等操作。

4)时钟模块:采用DS3231实时时钟模块,提供高精度的时间测量和闹钟功能。

5)背光模块:采用LED背光,可调节亮度,满足不同环境需求。

6)电源模块:采用DC-DC转换器,将5V输入电压转换为3.3V输出电压,为电路提供稳定电源。

(3)软件设计1)系统初始化:初始化各个模块,包括显示模块、按键模块、时钟模块等。

2)主循环:根据用户操作,实现功能切换、闹钟设置、关机等功能。

3)闹钟功能:实现闹钟时间设置、闹钟音量调节、闹钟提醒等功能。

4)定时关机功能:根据用户设置,实现定时关机功能。

5)背光功能:实现背光亮度调节,满足不同环境需求。

6)定时更新功能:自动更新农历、节假日等信息。

2. 数字万年历的制作(1)焊接电路板:按照电路图,焊接各个模块,确保电路连接正确。

(2)编程:使用Keil uVision5开发环境,编写STM32F103单片机程序,实现数字万年历的功能。

多功能电子万年历实训报告

多功能电子万年历实训报告

一、引言随着科技的发展,电子产品在我们的日常生活中扮演着越来越重要的角色。

作为电子信息专业的一名学生,我深知理论与实践相结合的重要性。

为了提高自己的动手能力和解决实际问题的能力,我参加了本次多功能电子万年历的实训项目。

通过本次实训,我不仅掌握了单片机的基本原理和编程方法,还学会了如何将理论知识应用于实际项目中。

二、实训目的1. 熟悉单片机的硬件结构和编程方法。

2. 掌握电子万年历的设计原理和实现方法。

3. 提高动手能力和解决实际问题的能力。

4. 培养团队协作和沟通能力。

三、实训内容本次实训主要围绕多功能电子万年历的设计与实现展开,主要包括以下几个方面:1. 硬件设计:选择合适的单片机作为核心控制单元,设计电路图,并焊接电路板。

2. 软件设计:编写程序,实现万年历的基本功能,如显示日期、时间、星期、闰年判断、闹钟等。

3. 温度采集:使用DS18B20温度传感器采集环境温度,并在LCD1602显示屏上显示。

4. 按键控制:设计按键电路,实现时间校准、闹钟设置、温度显示等功能。

四、实训过程1. 硬件设计:- 选择AT89C52单片机作为核心控制单元,因为它具有低功耗、高性能的特点。

- 设计电路图,包括晶振电路、复位电路、时钟电路、按键电路、LCD1602显示电路、温度传感器电路等。

- 焊接电路板,确保电路连接正确。

2. 软件设计:- 使用Keil软件编写程序,实现万年历的基本功能。

- 编写时间显示、闹钟、温度显示等模块的程序。

- 编写按键扫描程序,实现时间校准、闹钟设置、温度显示等功能。

3. 温度采集:- 使用DS18B20温度传感器采集环境温度。

- 将温度数据转换为数字信号,并在LCD1602显示屏上显示。

4. 按键控制:- 设计按键电路,实现时间校准、闹钟设置、温度显示等功能。

- 编写按键扫描程序,检测按键状态,并执行相应的操作。

五、实训结果经过努力,我成功完成了多功能电子万年历的设计与实现。

该万年历具有以下功能:1. 显示年、月、日、星期、时、分、秒。

数字日历实验报告总结(3篇)

数字日历实验报告总结(3篇)

第1篇一、实验目的本次实验旨在通过编程实现一个数字日历系统,提高对日期管理的效率,同时加深对Java编程语言中字符输入输出流、缓冲输入输出流以及文件操作等知识点的理解。

通过实验,培养学生独立思考、编程解决问题的能力。

二、实验原理本实验主要运用Java编程语言,通过使用RandomAccessFile类实现日历的显示和操作,以及使用字符输入输出流和缓冲输入输出流进行数据的读写。

具体原理如下:1. RandomAccessFile类:用于对文件进行随机访问,支持读写操作。

在本实验中,用于读取和写入日期信息。

2. 字符输入输出流:用于对字符进行输入输出操作,包括BufferedReader和BufferedWriter。

在本实验中,用于读取用户输入的年份和月份,以及将日志信息写入文件。

3. 缓冲输入输出流:用于提高数据读写效率,包括BufferedReader和BufferedWriter。

在本实验中,用于读取和写入日志信息。

三、实验内容1. 界面设计:使用Java Swing库设计日历界面,包括年份、月份、日期显示区域以及记事本编辑区域。

2. 日期显示:通过读取文件中的日期信息,实现日历的显示。

用户可以通过输入年份和月份设置日期,或通过点击“上一年”和“下一年”按钮切换年份,点击“上一个月”和“下一个月”按钮切换月份。

3. 日志编辑:用户可以通过点击日历上的日期进入记事本编辑区域,编辑和保存相关日志信息。

保存时,将日志信息写入以当前日期命名的文件中。

4. 日志管理:用户可以读取、删除和添加日志信息。

在读取、删除和添加日志时,会弹出一个确认对话框,以确保操作的正确性。

四、实验步骤1. 创建项目:在Java开发环境中创建一个新项目,命名为“数字日历”。

2. 设计界面:使用Java Swing库设计日历界面,包括年份、月份、日期显示区域以及记事本编辑区域。

3. 读取文件:使用RandomAccessFile类读取文件中的日期信息,实现日历的显示。

电子日历实习报告

电子日历实习报告

重庆科技学院学生实习(实训)总结报告学院:_电气与信息工程学院__ 专业班级:__ ___ _学生姓名:_ 百里潇湘__________学号:__201344XXXX_ _ 实习(实训)地点:_I512___________ ____________ __报告题目:_ 关于多功能电子日历的实习报告_____________报告日期: 2015 年 07 月 10 日指导教师评语: ____________ ___________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________ _____成绩(五级记分制):______ _______指导教师(签字):_____________________目录一、实验目的意义和任务 (1)1.1 设计目的意义 (1)1.2任务 (1)二、实习任务的方案 (2)2.1 单片机芯片的选择方案 (2)2.2 显示模块选择方案 (2)2.3 时钟芯片的选择方案 (2)2.4电路设计最终方案决定 (2)三、系统硬件设计 (3)3.1 电路设计框图 (3)3.2 系统硬件概述 (3)3.3 单片机的最小系统 (3)3.4 时钟电路 DS1302 (4)3.5 显示电路的设计 (6)四、系统软件设计 (9)4.1 主程序流程图 (9)4.2 DS132程序 (10)五、调试及性能分析 (13)5.1 调试步骤 (13)5.2性能分析 (13)六、心得体会 (13)参考文献 (14)附录 1 系统总程序 (15)附录2 系统电路图 (21)一、实验目的意义和任务1.1 设计目的意义万年历是我国古代传说中最古老的一部太阳历。

制作日历活动设计总结报告

制作日历活动设计总结报告

制作日历活动设计总结报告1. 引言本报告总结了我们团队制作日历活动的设计过程和结果。

本活动是为了向用户展示即将到来的活动,并鼓励用户参与其中。

本报告将分析我们的设计过程、结果和改进建议。

2. 设计过程我们的设计过程包括以下几个步骤:2.1 需求分析我们首先与客户进行了沟通,了解他们的需求。

客户希望我们设计一个功能丰富、易于使用的日历活动,以吸引用户关注并参与其中。

根据客户的要求,我们确定了以下关键功能:活动列表、活动详情、报名、分享等。

2.2 界面设计接下来,我们进行了界面设计。

我们希望通过简洁、直观的界面设计,使用户能够轻松找到自己感兴趣的活动。

我们采用了现代风格的设计,并优化了用户交互体验。

2.3 功能实现在功能实现方面,我们采用了现代的前端技术,并结合了后端开发。

我们使用了HTML、CSS和JavaScript来创建用户界面,并使用了数据库存储和管理活动信息。

2.4 测试和优化最后,我们进行了测试和优化。

我们通过测试用户界面的各个方面,修复了一些bug,并优化了一些功能,以提高用户体验。

3. 设计结果我们团队成功地完成了这个日历活动的设计。

我们的设计得到了客户的一致好评,并成功地吸引了大量用户参与其中。

以下是我们取得的主要成果:3.1 用户数量增加我们的设计使得用户能够方便地找到感兴趣的活动,并且参与其中。

因此,我们成功地吸引了大量新用户加入。

3.2 用户满意度提高我们的设计对用户的操作流程进行了简化,并提供了丰富的功能。

用户反馈显示,他们对我们的设计非常满意,认为界面友好、功能齐全。

3.3 活动参与度提升我们的设计使得活动信息更加直观,用户可以清楚地了解活动详情并进行报名。

由于我们的设计,活动的参与度大幅提升。

4. 改进建议虽然我们的设计已经取得了很大的成就,但我们也发现了一些可以改进的地方。

以下是我们的一些建议:4.1 增加定制化功能我们建议增加定制化功能,使用户能够根据自己的兴趣和偏好来筛选活动。

电子万年历实验报告

电子万年历实验报告

实验报告电子万年历:一、需求分析:电子万年历系统主要实现以下单个查询功能:1、查询某一年的日历。

要求从键盘输入年份,输出该年12个月份的日历2、查询某一天某一个月的日历。

要求从键盘输入年份和月份,输出该月的日历。

3、查询某一天是星期几。

要求从键盘输入年、月、日,输出这一天是星期几。

二、总体设计:1、功能模块图计算模块:用于计算天数,判断闰年输出模块:用于菜单输出和日历输出查询模块:实现查询某一年的日历。

查询某一天某一个月的日历。

查询某一天是星期几。

三、详细设计:1、计算模块:计算模块主要包含3个函数:LeapYear()、CountYearDays()、CountMonthDays函数CountYearDays()功能是计算从公元元年1月1日到某年12月31日一共有多少天。

CountYearDays()功能是几双当年1月1日到输入日期的前一个月的天数2、输出模块包含2个函数:Menu()和ListMonth()函数。

Menu()函数用来输出系统提供的功能选项。

ListMonth()函数用来按规定格式输出一个月的日历。

3、查询模块针对系统要实现三个查询功能定义了3个函数:Search1()、 Search2()和 Search3()函数。

函数Search1()用来显示一年12个月的日历,输入年份后,计算该年1月1日是星期几,然后从1月份开始一次输出每个月的日历,其中调用了函数LeapYear()、CountYearDays()和CountMonthDays()。

函数Search2()用来显示某年某月的日历,输入年份和月份后,计算出该年该月1日是星期几,然后输出这个月的日历,其中调用了函数LeapYear()和CountYearDays()、CountMonthDays()和ListMonth()。

函数Search3()用来显示某天是星期几,通过调用函数LeapYear()、CountYearDays()和CountMonthDays()计算出从公元元年1月1日到这一天总共过去了多少天,用这个总天数除以7得到的余数即为答案。

电子日历课程设计报告

电子日历课程设计报告

《电子日历》程序设计基础课程设计报告专业:班级:姓名:学号:指导教师:年月日目录1、课程设计的目的、课程设计题目、题目要求 (3)1.1课程设计的目的 (3)1.2课程设计的题目 (3)1.3题目要求 (3)2课程设计的实验报告内容: (3)3课程设计的原程序代码: (5)4运行结果 (5)5. 课程设计总结 (11)6参考书目 (13)1课程设计的目的1.1课程设计的目的:通过以前的学习以及查看相关资料,按着题目要求编写程序,进一步加强对编程的训练,使得自己掌握一些将书本知识转化为实际应用当中.在整个程序中,主要应用的是链表,但是也运用了类.通过两种方法解决现有问题.1.2课程设计的题目:用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。

1.3题目要求:1、利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。

2、能在屏幕上输出月份日历.2课程设计的实验报告内容:整个程序采用类与链表相结合的编程方法一共完成了8个功能.在每个功能输入时,若未按所给的提示信息操作便会给出相应的报错信息.这样使整个程序运行起来更加完整.程序中有class Client//会员类以及class Chain_belt//链表类在会员类class Client中设有void input_1(Client *haid)//手动录入函数和int input()//自动录入函数,进行对会员的录入,它包含有辨别功能,如果所输入的编号已经存在便会给出相应的信息,录入通过插入形式录入直接将顺序排好..在friend void save(Client *haid)保存功能内定义了static ifstream ofile;输入流静态成员,保证每次调用input()时,指针地址不会改变.链表类class Chain_belt//中包含了Client *set_array()//建立初级链表, Client *cut_in(Client &b,Client *haid1)//插入void amend(Client *haid,int n,int i)//修改链表编号函数void amend_name(Client *haid,char b[20])//根据姓名查询Client *delete1(Client *haid,int n)删除,统计void total_age(Client *haid)//统计不同年龄段的人数void total_month(Client *haid)//统计不同时间段的资金情况,输出功能的函数,这些功能都是通过链表实现的,而在主函数主要运用了goto语句进行循环.运用if语句设置不同的功能条件,进行不同的功能实现.3课程设计的原程序代码:#include<stdio.h>void main(){int n,x,y,a[32],i,j,k;n=x=y=i=-1;while(n<0){printf("请输入年份:");scanf("%d",&n);}while(x>7||x<1){printf("请输入星期(1-7数字):");scanf("%d",&x);}while(y<0||y>12){printf("请输入月份:");scanf("%d",&y);}while(i<31)a[++i] = i;n%400==0?k=1:n%4==0&&n%100!=0?k=1:k=0;//是否为闰年n=0;//初始化天数switch(y-1)//某月末至1月1日有多少天{case 11:n+=334;i=0;break;case 10:n+=304;i=1;break;case 9:n+= 273;i=0;break;case 8:n+= 243;i=0;break;case 7:n+= 212;i=1;break;case 6:n+= 181;i=0;break;case 5:n+= 151;i=1;break;case 4:n+= 120;i=0;break;case 3:n+= 90;i=1;break;case 2:n+= 59;i=0;break;case 1:n+= 31;i=3;break;case 0:i=0;break;}if(y>2)//2月以后{n=(n+k+x)%7;//求要输出的空格个数}else n=(n+x)%7;if(y==2&&k==1)//闰月i = 4;for(y=0;n>0;n--){printf(" ");y++;}for(j=1;j<=31-i;j++){if(y%7==0)putchar('\n');printf("%4d ",a[j]);y++;}printf("\n");}4运行结果:4.2,录入的功能1)输入年份2)输入星期3)输入月份4)显示当月日历:5. 课程设计总结通过这次课程设计,我又收获到很多,平时的在做作业时,因为题形与结构都是很简单的,并且每一章的内容都是有相应的例题可以参考,所以在做题时没有遇到过很麻烦的问题,而这次不同了,一个课题拿到手时,给我的感觉是无从下手,而且要求很多,使得题目要求更大了.我将整个程序分块完成的.将整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多.在编写程序是我参考了《C++程序设计》里面的信息,语句,大大简读了里面的很多程序,了解某些循环是如何实现的,怎样在实现目的的同时不影响其他的功能.6参考书目:[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.。

制作电子万年历实训报告

制作电子万年历实训报告

一、引言随着科技的飞速发展,电子产品的普及和应用越来越广泛。

电子万年历作为一种常见的电子设备,不仅可以显示年、月、日、星期、时、分等信息,还可以实现闹钟、定时显示等功能。

为了提高我们的实践能力和创新能力,本次实训我们选择制作一款基于单片机的电子万年历。

二、实训目的1. 掌握电子万年历的基本原理和设计方法。

2. 熟悉单片机的编程和应用。

3. 培养团队协作能力和动手实践能力。

三、实训内容1. 硬件设计本实训所使用的硬件主要包括以下部分:- 单片机:AT89C52- 时钟模块:DS1302- 显示模块:LCD1602- 遥控模块:1838V- 按键模块:S1(设置键)、S2(上调键)、S3(下调键)、S4(复位键)硬件电路图如下:![电子万年历电路图](https:///5Q6zQ8Q.png)2. 软件设计本实训所使用的软件主要包括以下部分:- 单片机编程:C语言- 显示程序:LCD1602驱动程序- 遥控程序:1838V遥控接收程序软件流程图如下:![电子万年历软件流程图](https:///0Q7y8yJ.png)3. 功能实现本实训所实现的电子万年历具有以下功能:- 显示年、月、日、星期、时、分等信息。

- 遥控操作:设置时间、星期、日期等。

- 定时显示:定时显示当前时间。

- 停电自动计时:采用DS1302时钟模块,停电后可继续计时。

四、实训过程1. 硬件搭建首先,我们根据电路图搭建了电子万年历的硬件电路。

在搭建过程中,我们注意了以下几点:- 确保电路连接正确,避免短路或开路。

- 选择合适的元器件,确保电路性能稳定。

- 对电路进行测试,确保电路正常工作。

2. 软件编程接下来,我们使用C语言对单片机进行编程。

在编程过程中,我们遵循以下步骤:- 分析功能需求,确定程序结构。

- 编写程序代码,实现各项功能。

- 调试程序,确保程序运行正常。

3. 测试与优化在完成软件编程后,我们对电子万年历进行测试。

在测试过程中,我们发现以下问题:- 遥控操作不稳定。

电子万年历设计报告

电子万年历设计报告

电子万年历设计报告The document was prepared on January 2, 2021电子万年历设计报告专业电气工程及其自动化班级电气2班姓名马志欣学号小组第22组指导教师王松林电子万年历概述电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎.LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命.第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表.第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级.第三次革命就是单片机数码计时技术的应用电子万年历,使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求因此,电子万年历的出现带来了钟表计时业界跨跃性的进步.随着科学技术的快速发展,不断研究创新,对于电子万年历采用直观的数字显示,可以同时显示年,月,日,时,分,温度等信息,还具有时间校准等功能,该电路采用AT89C51单片机作为核心,电压可选用3-5V电压供电.一、内容摘要本设计利用数量较少的芯片制作了一个运用简单的电子万年历.以单片机作为本设计的核心,实现时钟日历的显示:用八段LED数码管分别显示年、月、日、星期、时、分、秒,用DS1302作为该设计的实时时钟芯片,用74LS164寄存器来驱动数码管的各段码,用三极管来驱动数码管的各位码.并且通过AT89C51单片机读取数字温度芯片的内部数据,进行处理后送到数码管显示其温度功能,通过按键实现调试功能.二、设计要求1设计电子万年历,实现时钟日历的显示,或显示年、月、日或时、分、秒,用DS1302作为设计的实时时钟芯片.2温度记录仪电路设计:功能:1、记录温度并保存,每10分钟记录一次温度数据.2、可显示时间、温度数据3、可查询温度数据4、可由上位机电脑读取温度数据.三、设计方案1、显示时钟功能1单片机芯片的选择采用AT89C51芯片作为硬件核心,并且与MCS-51系列单片机完全兼容.2显示模块的选择采用LED数码管,更注重于显示多位数字.3时钟芯片的选择采用DS1302时钟芯片实现时钟,且精度高,可自动对时、分、秒进行计数,工作电压在范围内.2、温度显示功能1单片机芯片的选择AT89C51芯片2显示模块的选择采用LED数码管来显示温度3温度传感器的选择采用温度传感器DS18B20,传感器DS1302四、系统硬件框图1单片机模块引脚功能:AT89C51单片机有40个引脚.Vcc:电源电压+5VGND:接地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口.作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用.P1口:P1口是一个带内部上拉电阻的8位双向I/O,P1的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路.对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流.P2口:P2口是一个带内部上拉电阻的8位双向I/O,P2的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路.对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流.P3口:P3口是一组带内部上拉电阻的8位双向I/O,P3的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路.对P3口写入“1”时,它们被内部的上拉电阻拉高并可作为输入端口.作输入端时,被外部拉低的P3口将用上拉电阻输出电流.P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,见表3-1所示:RST:复位输入.ALE/PROG:当访问外部程序存储器或数据存储器时,ALE地址锁存器允许输出脉冲用于锁存地址的低8位字节XTAL1:振荡器反相放大器及内部时钟发生器的输入端.XTAL2:振荡器反相放大器的输出端.定时/计数器:AT89C51单片机内含有2个16位的定时器/计数器.中断系统:AT89C51单片机有6个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成.2按键电路3数码管显示4热敏电阻5DS1302系统精确时钟DS1302的控制字节的最高有效位位7必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出.DS1302 引脚图6蜂鸣器7拨动开关五、万年历软件系统的流程当接通电源开始工作后,单片机中的程序开始运行,将对DS18B20进行初始化,以便和单片机芯片达成通信协议.完成初始化后,由于本系统只有一个测温元件,单片机会向其发出跳过RAM 指令,接下来便可向其发送操作指令,启动测温程序,测温过程完成后,发出温度转换指令,从而便可将温度转化成数字模式进行显示读取;同时DS1302将读取时分秒及年月日寄存器后通过LED数码管显示时间日期,键盘电路中按键可对实时时钟进行调整.六、各单元元器件内容介绍1、温度信息采集通过DS18B20单线总线的所有执行处理都从一哥舒适化序列开始,初始化序列包括一个由总线控制器发出复位脉冲和随后由从机发出的存在脉冲.1复位2存在脉冲3控制器发送ROM指令4控制器发送存储器操作指令5执行或数据读写2、时钟的读取1DS1302控制字节2DS1302数据的输入和输出在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始.在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7.3温度的显示控制先对LED数码管进行初始化,当所测温度从DS18B20输送到单片机上之后,在LED数码管上显示出来.4按键模块使用按键可调整LED数码管上显示的数值.七、相关的电路图和实物图电子万年历实物图电子万年历封装图八、调试与软件仿真1、软件的仿真与调试1打开KEIL,输入所编写的源程序进行编译,在软件的帮助下检查其中的错误并进行修改,直到编译正确后运行.2绘制单片机电子万年历运行电路图.3检查所画电路运行图,确保没错误后,在PROTEUS下对原理图进行加载KEIL下的源程序.4加载完成后,进行仿真,观察LED数码管情况,程序调试完成后2、硬件调试与连接1检测AT89C51运行是否正常2LED数码管显示是否正常3各元件是否正常4将程序下载完调试完后用仿真软件主机与从机连接主机与从机连接后的电路板情况九、问题分析与总结出现的问题:1、在焊接电路板时,有些元件出现假焊,致使LED数码管不能正常显示.2、在接芯片时引脚弄错,致使与电路图不能相互符合.3、在调试完成后,LED数码管不能正常显示或出现乱码,检查后发现是接触不良造成的.总结在制作过程中一直不断出现很多常见的错误,导致结果都不理想,之后通过与老师与同学之间的交流后每个问题都得到了解决,这让我们更加加深印象.虽然出现很多问题但也学到了许多常识性的知识,这使我们的能力也得到锻炼和提高,也使对设计的整体流程有了更清楚的认识,小组成员们也一直在不断的努力,在经过老师与同学的帮助后最终有了成果使我们信心上得到了很大的支持.。

电子日历课程设计实训报告

电子日历课程设计实训报告

广东技术师范学院设计说明书电子日历设计学生姓名学号班级成绩指导教师电子与信息学院2011年12月30日目录1 课题描述 (1)2 设计过程 (2)2.1硬件电路原理 (2)2.2.1.软件设计思想 (3)2.2.2 程序设计模块 (3)2.2.3汇编源程序 (7)3 总结....................................错误!未定义书签。

1 课题描述随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。

该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。

在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。

在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。

具体实现功能:(1)显示年月日时分秒及星期信息(2)具有可调整日期和时间功能(3)与即时时间同步。

2 设计过程2.1硬件电路原理2.1.2 电路原理设计电路原理图2.2 软件设计思想及流程图2.2.1.软件设计思想程序的设计主要有T0中断服务程序,动态显示程序,数字分离程序,键盘扫描程序,键处理程序,设置时间,设置年月日初值,判闰年程序,清除显示缓冲区程序这几个功能模块。

电子日历设计与总结报告

电子日历设计与总结报告

电子日历设计与总结报告队名:*********************队员:***********************学院:***********************学号:***********************手机:***********************邮箱:***********************目录摘要 (1)1方案设计与论证 (1)2硬件电路设计 (3)2.1硬件框图 (3)2.2主要硬件电路 (4)3软件设计 (6)3.1基本原理 (6)3.2流程图 (7)3.3源程序 (8)4附录 (54)摘要公历是现在国际通用的历法,又称格列历,通称阳历。

“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

中国从辛亥革命后即自民国元年采用阳历,故又名曰“国历”。

为与中国旧有之历相对称,故又名曰“新历”。

1949年正式规定公元纪年。

农历是中国长期采用的一种传统历法,它以朔望的周期来定月,用置闰的办法使年平均长度接近太阳回归年,因这种历法安排了二十四节气以指导农业生产活动,故称农历,又叫中历、夏历,俗称阴历。

农历是中国目前与格里历(即公历)并行使用的一种历法,人们习称“阴历”,但其实是阴阳历的一种,即夏历,并非真正的“阴历”。

农历,又称夏历、阴历、旧历、汉历,是东亚传统历法之一。

农历属于一种阴阳历,平均历月等于一个朔望月,但设置闰月以使平均历年为一个回归年,设置二十四节气以反映季节(太阳直射点的周年运动)的变化特征,所以又有阳历的成分。

至今几乎全世界所有华人及朝鲜、韩国和越南及早期的日本等国家,仍使用农历来推算传统节日如春节、中秋节、端午节等节日。

因为这种历法相传创始于夏代,完善于汉代,加之主要是汉族人使用,所以中国其他民族包括清朝刚建立时都把此历称为汉历。

到辛亥义举后,因使用西历,此历称为旧历或夏历。

现在应恢复称呼汉历。

汉历既符合了月(朔望月),又符合了年(回归年),可以说是人类历史上最科学的历法之一。

制作日历实践报告

制作日历实践报告

制作日历实践报告1. 引言本报告旨在介绍制作日历的实践过程,并总结实践中遇到的问题以及解决方法。

制作日历的实践主要包括设计、开发和测试三个阶段,通过对每个阶段的详细描述,本报告旨在提供一个全面的制作日历的实践经验。

2. 设计阶段在设计阶段,我们明确了日历的主题、布局和功能。

首先,我们决定以简洁、清晰的风格设计日历,以确保用户能够方便地使用。

其次,我们构思了日历的布局,包括日期、月份、星期几等信息的排列方式,以及事件提醒和备忘录功能的位置和样式。

最后,我们确定了日历的功能需求,包括添加、编辑和删除事件、设置提醒和备忘录等。

3. 开发阶段在开发阶段,我们使用了HTML、CSS和JavaScript等技术来实现日历。

首先,我们使用HTML创建了日历的基本结构,包括日期、月份、星期几等元素的标签和样式。

然后,我们使用CSS对日历进行美化,使其具有符合设计要求的外观。

最后,我们使用JavaScript编写了日历的交互功能,包括事件的添加、编辑和删除,提醒和备忘录的设置等。

在开发过程中,我们遇到了一些问题。

其中一个主要的问题是如何实现事件的添加和编辑功能。

我们通过使用表单来收集用户输入的数据,并使用JavaScript将其保存到本地存储中。

另一个问题是如何设置事件的提醒功能。

我们使用了定时器来实现事件提醒的功能,当事件的时间到达时,会弹出提醒窗口。

通过不断地调试和优化,我们成功地解决了这些问题。

4. 测试阶段在测试阶段,我们对日历的各项功能进行了测试,以确保其能够正常运行。

我们使用了单元测试和集成测试来检查日历的各个功能是否符合要求。

在单元测试中,我们逐个测试了事件的添加、编辑和删除功能,以及提醒和备忘录的设置功能。

在集成测试中,我们对整个日历进行了综合测试,以确保日历的各个功能之间能够正常协作。

在测试过程中,我们发现了一些问题,并进行了调整和修复。

其中一个问题是在某些情况下,事件的时间设置不准确。

我们通过仔细检查代码并进行调试,最终找到了问题的根源,并解决了这个问题。

多功能电子万年历的设计与实现

多功能电子万年历的设计与实现

多功能电子万年历的设计与实现
随着科技的不断发展,电子产品的功能也越来越丰富,电子万年历也不例外。

在这篇文章中,我将介绍一款多功能电子万年历的设计与实现。

首先,我们需要确定这款电子万年历的主要功能,包括日期显示、时间显示、闹钟、倒计时器、计时器、温度计、天气预报等功能。

在确定主要功能后,我们需要选择合适的电子元件,并进行电路设计。

电路设计完成后,我们需要进行电路布局,并将电路板进行制造。

制造完成后,我们需要将电子元件焊接到电路板上,并进行测试,确保电子万年历的各项功能正常运行。

接下来,我们需要对电子万年历进行外壳设计。

在外壳设计中,我们需要考虑到电子万年历的外观、材质、尺寸等因素。

我建议选择轻质、坚固的材料制作外壳,并在外部加上透明塑料保护层,以防止碰撞和刮伤。

另外,我们还可以在外壳上添加按钮、开关等控制元素,使电子万年历更加易于使用。

最后,我们需要对电子万年历进行软件设计。

在软件设计中,我们需要实现日期、时间的显示,以及闹钟、倒计时器、计时器、温度计、天气预报等功能。

在软件设计中,我们需要考虑到用户的使用习惯,设计出简单易用、功能强大的界面,并加入音乐、提示等元素,以方便用户使用电子万年历。

总的来说,多功能电子万年历的设计与实现需要进行电路设计、外壳设计、软件设计等多个环节,并需要选择合适的电子元件、
材料等。

在设计过程中,我们需要不断地优化和改进,以满足用户的需求和期望。

最终,我们将获得一款外观精美、功能强大的多功能电子万年历。

数字万年历制作实习报告

数字万年历制作实习报告

一、实习背景随着科技的发展,电子产品的普及,人们对生活品质的要求也越来越高。

为了培养自己的动手能力,提高综合素质,我在本次实习中选择了数字万年历的制作。

数字万年历是一种结合了电子技术、编程和艺术设计的产品,它能够显示日期、星期、农历等信息,方便人们的生活和工作。

通过本次实习,我对数字万年历的制作过程有了更加深入的了解,也锻炼了自己的实际操作能力。

二、实习目的1. 学习数字万年历的制作原理,掌握电子元器件的选用和焊接技术。

2. 熟悉编程软件的使用,掌握单片机编程的基本方法。

3. 提高自己的动手能力和团队合作精神。

4. 培养自己的创新意识和解决问题的能力。

三、实习内容1. 硬件部分(1)元器件选型:根据数字万年历的功能需求,选择了以下元器件:STC89C52单片机、LCD显示屏、DS1302时钟芯片、按键模块、电阻、电容、二极管等。

(2)电路设计:根据元器件的特性和功能,设计了数字万年历的电路图。

电路图主要包括单片机、时钟芯片、显示屏、按键模块等部分。

(3)焊接:按照电路图进行元器件的焊接,确保电路连接正确。

2. 软件部分(1)编程环境:使用Keil uVision4软件进行编程。

(2)编程方法:根据数字万年历的功能需求,编写了以下程序:a. 初始化程序:设置单片机的工作模式、时钟频率、端口初始化等。

b. 时钟程序:读取DS1302时钟芯片的时间信息,显示在LCD显示屏上。

c. 显示程序:根据日期、星期、农历等信息,在LCD显示屏上显示相应的信息。

d. 按键扫描程序:扫描按键状态,实现日期、星期、农历等信息的切换。

3. 系统调试(1)硬件调试:检查电路连接是否正确,元器件是否损坏。

(2)软件调试:在Keil uVision4软件中编译程序,下载到单片机中,观察LCD显示屏的显示效果。

四、实习成果通过本次实习,我成功制作了一款数字万年历。

该万年历能够显示日期、星期、农历等信息,具有以下特点:1. 操作简便:用户可以通过按键切换日期、星期、农历等信息。

数字万年历实训报告总结

数字万年历实训报告总结

一、实训背景随着科技的飞速发展,电子产品的普及,人们对信息获取和展示的需求日益增长。

数字万年历作为一种实用性强的电子设备,其设计制作在当今社会具有重要意义。

为了提高自身动手能力、设计能力和创新思维,我参加了本次数字万年历实训课程。

二、实训目的1. 熟悉数字万年历的设计原理和制作流程;2. 掌握电子元器件的选择和电路设计;3. 提高编程能力和嵌入式系统应用能力;4. 培养团队合作精神和创新能力。

三、实训内容1. 硬件设计:根据数字万年历的功能需求,选择合适的电子元器件,如单片机、显示屏、按键等,并设计相应的电路图。

2. 软件设计:编写单片机程序,实现万年历的功能,包括日期显示、星期显示、闰年判断、节假日提醒等。

3. 系统集成:将硬件和软件进行集成,调试并测试系统功能。

4. 优化与改进:针对实际运行中存在的问题,对系统进行优化和改进。

四、实训过程1. 硬件设计阶段:在老师的指导下,我了解了数字万年历的基本硬件结构,并学会了如何选择合适的电子元器件。

根据功能需求,我选择了AT89C52单片机作为核心控制单元,并选择了1602液晶显示屏和按键作为输入输出设备。

通过查阅相关资料,我完成了电路图的设计。

2. 软件设计阶段:我学习了C语言编程,并掌握了单片机程序设计的基本方法。

在编写程序时,我实现了以下功能:(1)初始化:设置单片机的工作状态,初始化LCD显示和按键扫描。

(2)日期显示:读取实时日期,并在LCD上显示年、月、日。

(3)星期显示:根据日期计算出星期,并在LCD上显示。

(4)闰年判断:根据年份判断是否为闰年。

(5)节假日提醒:根据预设的节假日信息,在LCD上显示提醒信息。

3. 系统集成阶段:将硬件和软件进行集成,调试并测试系统功能。

在调试过程中,我发现了以下问题:(1)按键响应不及时:经过检查,发现按键扫描程序存在bug,导致按键响应不及时。

经过修改程序,问题得到解决。

(2)LCD显示不清晰:发现LCD显示模块的背光亮度不足,导致显示不清晰。

设计日历实践活动报告范文

设计日历实践活动报告范文

设计日历实践活动报告范文本次日历实践活动于xx年xx月xx日在xx地举行,活动内容包括了日历的设计、制作和使用。

活动旨在通过实践操作,让参与者深入了解日历的制作流程,提高他们的实际操作能力。

在活动开始前,我们就准备了足够的材料和工具,并邀请了专业的设计师和老师为我们进行讲解和指导。

首先,设计师向大家介绍了日历的设计原则和注意事项,教大家如何运用色彩、字体和排版来设计出吸引人的日历版面。

接着,老师为大家讲解了日历的制作工艺和步骤,从材料的选择到工具的使用,都一一进行了详细的说明。

在教学环节结束后,参与者们开始动手制作他们自己的日历。

有的人选择了水彩画的方式设计日历的页面,有的人则用剪纸和贴纸制作出精美的效果。

制作过程中,大家互相交流经验,相互帮助,气氛非常融洽。

制作完毕后,设计师和老师针对每位参与者的作品进行了指导和点评,提出了一些建设性的意见和建议,让大家都受益匪浅。

活动最后,我们还举行了一个小型的评选活动,评选出了最具创意和实用性的日历作品,为获奖者颁发了奖品。

通过这次活动,参与者们不仅加深了对日历设计和制作的认识,还锻炼了他们的动手能力和创造力。

同时,活动还提高了大家对时间的管理和规划能力,让他们更加重视日历在生活中的作用。

这次活动取得了圆满的成功,受到了参与者们的一致好评。

希望今后还能举办更多类似的实践活动,让更多的人受益。

此次活动不仅仅是一个日历设计和制作的实践过程,更是一个促进交流、激发创意、培养团队合作精神的机会。

在活动中,参与者们积极思考和讨论,分享彼此对日历设计的理解与见解,从中获得了灵感和启发。

通过相互观摩和交流,大家不仅从他人的作品中学习到了更多的设计技巧,还拓展了自己的视野,激发了更多的创意想法。

此外,活动还培养了参与者的团队合作意识。

在制作日历的过程中,大家互相帮助、分工合作,共同讨论解决问题,形成了良好的合作氛围。

这种团队合作的经验不仅对于日历制作活动来说非常重要,更对参与者将来的工作和生活中具有指导意义。

电子万年历制作实习报告

电子万年历制作实习报告

实习报告:电子万年历制作实习时间:2023年2月24日至2023年3月10日实习单位:XX科技有限公司实习内容:电子万年历制作一、实习目的本次实习的主要目的是通过制作电子万年历,使我能够更好地理解和掌握电子技术的基本知识和技能,提高我的实际操作能力和创新能力。

二、实习内容1. 学习电子万年历的基本原理和工作原理。

2. 学习电子万年历的主要组成部分,包括单片机、时钟芯片、液晶显示屏等。

3. 学习如何使用相关工具和设备进行电子万年历的制作。

4. 完成电子万年历的制作,并进行测试和调试。

三、实习过程1. 学习阶段:在这个阶段,我通过阅读相关资料和向工程师请教,了解了电子万年历的基本原理和工作原理,以及其主要组成部分。

2. 制作阶段:根据所学知识,我开始进行电子万年历的制作。

首先,我进行了电路的设计,然后进行了PCB板的焊接,最后进行了电路的调试。

3. 测试阶段:制作完成后,我对电子万年历进行了测试。

测试内容包括日期的显示、时间的显示、星期的一周循环、闹钟功能等。

四、实习收获通过这次实习,我不仅学到了关于电子万年历的相关知识,还提高了我的实际操作能力和创新能力。

在制作过程中,我学会了如何使用相关工具和设备,掌握了电子万年历的制作技巧。

在测试过程中,我学会了如何对电子万年历进行调试和故障排除。

此外,我还学会了如何与团队成员合作,共同完成任务。

在制作过程中,我与团队成员积极沟通,共同解决问题,取得了良好的团队合作效果。

五、实习反思虽然我完成了电子万年历的制作,但在制作过程中还存在一些问题。

首先,我的电路设计能力还有待提高,有时会出现一些不必要的错误。

其次,我的焊接技术还不够熟练,有时会出现焊接不良的情况。

最后,我在调试过程中有时会忽略一些细节,导致调试效果不理想。

为了提高我的电子技术能力,我决定加强学习和实践。

一方面,我将深入学习电子技术的相关知识,提高我的理论水平。

另一方面,我将多参加实践项目,提高我的实际操作能力。

电子日历实训报告

电子日历实训报告

一、实训时间:2023年10月15日至2023年10月22日二、实训地点:XX职业学院电子实验室三、指导老师:张老师、刘老师四、实训目的:通过本次电子日历实训,旨在提升我的电子设计能力,加深对电子电路原理的理解,并锻炼实际操作技能。

通过设计并制作一个功能完整的电子日历,我期望能够掌握以下技能和知识:1. 掌握电子日历的基本设计原理。

2. 熟悉电子时钟电路的设计与搭建。

3. 学会使用LCD显示屏显示日期和时间。

4. 提高编程能力,使用单片机实现日历功能的控制。

5. 增强故障排除和调试能力。

五、实训内容:1. 电路设计:- 设计了基于单片机的电子日历电路,主要包括单片机核心模块、时钟模块、显示模块和电源模块。

- 选择合适的电子元件,如单片机、晶体振荡器、LCD显示屏、按键等。

- 设计电路图,确保电路连接正确,元件布局合理。

2. 程序编写:- 使用C语言编写单片机程序,实现日历的基本功能,包括时间的读取、显示、调整以及日期的更新。

- 编写按键扫描程序,以便用户可以调整时间。

- 编写LCD显示程序,将日期和时间信息清晰显示在LCD屏幕上。

3. 电路搭建:- 按照电路图进行元件焊接,确保焊接质量。

- 连接LCD显示屏,调试显示效果。

- 连接按键,测试按键响应功能。

4. 测试与调试:- 对电子日历进行功能测试,确保所有功能正常运行。

- 调试程序,解决显示错误、按键响应不及时等问题。

- 优化电路设计,提高电子日历的稳定性和可靠性。

六、实训过程及心得:在实训过程中,我遇到了不少挑战,以下是我的一些心得体会:- 理论学习与实践操作的结合:在设计电路和编写程序的过程中,我深刻体会到理论知识与实践操作的结合的重要性。

只有将所学知识应用到实际操作中,才能真正掌握电子设计技能。

- 耐心与细致:在电路搭建和调试过程中,我学会了耐心和细致。

每一个细节的疏忽都可能导致整个电路无法正常工作。

- 团队合作:在实训过程中,我与同学们相互学习、相互帮助,共同完成了电子日历的设计与制作。

毕业设计论文多功能电子日历的设计和开发

毕业设计论文多功能电子日历的设计和开发

毕业设计论文多功能电子日历的设计和开发摘要:本文主要研究了多功能电子日历的设计和开发。

首先分析了目前市场上存在的一些电子日历的不足之处,然后提出了设计和开发多功能电子日历的方案。

通过使用嵌入式系统和互联网技术,实现了日历功能、天气信息、闹钟、备忘录等多种功能的集成。

最后进行了实验验证,结果表明多功能电子日历能够满足用户需求。

关键词:多功能电子日历、嵌入式系统、互联网技术、日历功能、天气信息、闹钟、备忘录1.引言随着科技的发展,电子产品在人们日常生活中的应用越来越广泛。

而日历作为人们安排时间和记录重要事件的工具,也逐渐从传统的纸质日历转变为电子日历。

然而,目前市场上的电子日历功能单一,无法满足人们的多种需求。

2.多功能电子日历的设计要求在设计多功能电子日历时,首先需要考虑用户的需求和使用习惯。

根据市场调研结果,多功能电子日历主要应具备以下功能:日历功能(年、月、日显示和日期选择)、天气信息(实时显示当地天气情况)、闹钟(设定多个闹钟提醒)、备忘录(记录重要事件和事项)、互联网同步(与云端日历同步数据)。

3.多功能电子日历的系统框架设计多功能电子日历的系统框架主要由硬件和软件两部分组成。

硬件部分包括显示屏、控制器、传感器等;软件部分包括嵌入式系统、应用程序等。

其中,嵌入式系统起到整合和管理各功能模块的作用。

4.多功能电子日历的开发流程多功能电子日历的开发流程分为需求分析、系统设计、软件开发、硬件实现和测试等阶段。

在需求分析阶段,明确用户需求,并确定技术可行性。

在系统设计和软件开发阶段,根据需求设计系统框架和开发相应的软件功能。

在硬件实现和测试阶段,搭建硬件平台并进行全面测试。

最后进行系统集成和上线发布。

5.实验验证和结果分析通过实验验证,多功能电子日历能够准确显示日期、时间和天气信息,并能通过设置闹钟和备忘录实现提醒和记录功能。

同时,通过与云端日历同步数据,多功能电子日历实现了互联网功能。

6.总结本文设计和开发了一种多功能电子日历,通过使用嵌入式系统和互联网技术,实现了日历功能、天气信息、闹钟、备忘录等多种功能的集成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子日历设计与总结报告队名:*********************队员:***********************学院:***********************学号:***********************手机:***********************邮箱:***********************目录摘要 (1)1方案设计与论证 (1)2硬件电路设计 (3)2.1硬件框图 (3)2.2主要硬件电路 (4)3软件设计 (6)3.1基本原理 (6)3.2流程图 (7)3.3源程序 (8)4附录 (54)摘要公历是现在国际通用的历法,又称格列历,通称阳历。

“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

中国从辛亥革命后即自民国元年采用阳历,故又名曰“国历”。

为与中国旧有之历相对称,故又名曰“新历”。

1949年正式规定公元纪年。

农历是中国长期采用的一种传统历法,它以朔望的周期来定月,用置闰的办法使年平均长度接近太阳回归年,因这种历法安排了二十四节气以指导农业生产活动,故称农历,又叫中历、夏历,俗称阴历。

农历是中国目前与格里历(即公历)并行使用的一种历法,人们习称“阴历”,但其实是阴阳历的一种,即夏历,并非真正的“阴历”。

农历,又称夏历、阴历、旧历、汉历,是东亚传统历法之一。

农历属于一种阴阳历,平均历月等于一个朔望月,但设置闰月以使平均历年为一个回归年,设置二十四节气以反映季节(太阳直射点的周年运动)的变化特征,所以又有阳历的成分。

至今几乎全世界所有华人及朝鲜、韩国和越南及早期的日本等国家,仍使用农历来推算传统节日如春节、中秋节、端午节等节日。

因为这种历法相传创始于夏代,完善于汉代,加之主要是汉族人使用,所以中国其他民族包括清朝刚建立时都把此历称为汉历。

到辛亥义举后,因使用西历,此历称为旧历或夏历。

现在应恢复称呼汉历。

汉历既符合了月(朔望月),又符合了年(回归年),可以说是人类历史上最科学的历法之一。

但是由于单个公历历年(365或366日)比汉历历年(平年354或355日,闰年383或384日)更接近于回归(365.2422日),所以从具体日期反映季节的角度看,则公历比汉历更加准确。

历法的复杂程度本质上是由其参照物的选择决定的。

农历选取阴阳二体为时间参照,由此决定了其内容相对地复杂又丰富,符合我国传统的哲学观。

一:方案设计与论证方案一:采用STC89C52芯片作为硬件核心,1602液晶作为显示部分,同时采用DS1302时钟芯片实现时钟方案二:采用STC89C52芯片作为硬件核心,1602液晶作为显示部分,同时采用DS12C887时钟芯片实现时钟方案论证:DS1302概述DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作.1可通过AM/PM指示决定采用24或12小时格式.DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:1RES复位,2I/O数据线,3SCLK串行时钟.时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信.DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW.DS1302是由DS1202改进而来,增加了以下的特性.双电源管脚用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器.它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域.DS1302特性:·实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力;·318位暂存数据存储RAM;·串行I/O口方式使得管脚数量最少;·宽范围工作电压2.0 5.5V;·工作电流2.0V时,小于300nA;·读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式;·8脚DIP封装或可选的8脚SOIC封装根据表面装配;·简单3线接口;·与TTL兼容Vcc=5V;·可选工业级温度范围-40+85;·与DS1202兼容;·在DS1202基础上增加的特性;·对Vcc1有可选的涓流充电能力;·双电源管用于主电源和备份电源供应;·备份电源管脚可由电池或大容量电容输入;·附加的7字节暂存存储器;DS12C887概述DS12C887实时时钟(RTC)可用来直接替代DS1287。

DS12C887提供一个实时时钟/日历、定时闹钟、三个可屏蔽中断(共用一个中断输出)、可编程方波输出和113字节RAM。

DS12887在24引脚模块DIP封装内集成了晶体和锂电池。

DS12C887在地址32h内增加了世纪字节。

对于少于31天的月份,所有器件的日期能够在月末自动调整,带有闰年补偿。

DS12C887可配置为24小时或12小时格式,带AM/PM指示。

精确的温度补偿电路用于监视VCC状态。

一旦检测到主电源失效,器件可自动切换到备用电源。

DS12C887通过一个复用的、字节宽度接口访问,支持Intel和Motorola模式。

DS12C887特性•直接替代IBM AT计算机时钟/日历•RTC计算秒、分、时、星期、日、月、年信息,具有润年补偿,有效期至2099年2•用二进制或BCD表示时间•具有AM、PM标示的12小时模式或24小时模式•夏时制选择•可选择Intel或Motorola总线时序•接口配合软件可寻址128RAM•14字节时钟与控制寄存器•113字节通用、电池备份RAM3•三路中断可分别通过软件屏蔽与检测•闹钟可设置为每秒一次至每星期一次•周期可设置在122μs至500ms•时钟终止刷新周期标志•可编程的方波输出信号•自动电源失效检测和切换电路•可选则集成了晶体和电池的DIP模块(EDIP)封装•可选的工业级温度范围•通过美国保险商实验室协会(UL)认证对比可知,用DS12C887的电路更简单,操作更简便,适合初学者使用,所以选用DS12C887时钟芯片二:电路设计2.1硬件框图32.2主要硬件电路45三:软件设计3.1基本原理由于可直接从DS12C887芯片中直接读取公历信息,所以功能实现的关键是把公历信息转换为农历信息。

实现公历与农历的转换一般采用查表法,按日查表是速度最快的方法,但51单片机寻址能力有限不可能采用按日查表的方法。

除按日查外我们可以通过按月查表和按年查表的方法,再通过适当的计算来确定公历日所对应的农历日期,按年查表法最大限度地减少表格所占的程序空间。

对于农历月来说,大月为30天,小月为29天,这是固定不变的,这样我们就可用1个BIT位来表示大小月信息。

农历一年如有闰月为13个月,否则是12个月,所以一年需要用13个BIT。

闰月在农历年中所在的月份并不固定,所以要表示闰月的信息至少要4BIT,在这里用4BIT的值来表示闰月的月份,值为0表示本年没有闰月。

选用农历正月初一所对应的公历日期作参照日,公历日最大为31日,需要5BIT来表示。

而春节所在的月份不是1月就是2月,用2BIT来表示春节月,2BIT的值直接表示月份。

这样一年的农历信息只用3个字节。

计算公历日对应的农历日期的方法:先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月和闰月信息即可推算出公历日所对应的农历日期。

63.2流程图73.3源程序文件<define.h>#define uchar unsigned char#define uint unsigned intsbit LCDRS=P2^7;sbit LCDEN=P2^6;sbit T_CS=P2^0;sbit T_AS=P2^1;sbit T_RW=P2^2;sbit T_DS=P2^3;sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;sbit beep=P3^2;sbit INT_=P3^3;uchar key;char f=1;uchar num=0;uchar code tab[]="0123456789";uchar code tab2[7][3]={"MON","TUE","WED","THU","FRI","STA","SUN"};uchar code tab3[]="ALARM SETTING";//14uchar year1,year2,month,week,day,shi,fen,miao;//公历时间uchar ashi,afen,amiao;//闹钟时间uchar nyear,nmonth,nday;//农历时间uchar rmonth,daxiao[13],sprmonth,sprday;//闰月,每月大小,春节月,春节日char tmp,tmp1,tmp2,tmp3;//作临时量uchar x;//作循环变量uint gap;//离春节的天数uchar alarm[12];//设置闹钟uchar alnum=0;//闹钟编号/*2000年到2099年的农历数据*/uchar code nongli[100][3]={{0x0C,0x96,0x45},//2000{0x4d,0x4A,0xB8},//2001{0x0d,0x4A,0x4C},//2002{0x0d,0xA5,0x41},//2003{0x25,0xAA,0xB6},//20048代码写的有点乱,就不贴了~~~~代码写的有点乱,就不贴了if(alnum==3){w_time(5,alarm[0]);w_time(3,alarm[1]);w_time(1,alarm[2]);}alnum++;if(alnum==4)alnum=1;if(alarm[tmp]==1)beepx();}附录:1.参考书籍:《C程序设计》——谭浩强清华大学出版社《新概念51单片机C语言教程》——郭天祥电子工业出版社2.实物照片:整体效果54主面板显示农历及闹钟显示55调节时间调节闹钟56设置单个闹钟开关57。

相关文档
最新文档