带温度显示的万年历

带温度显示的万年历
带温度显示的万年历

带温度显示的万年历_数码管显示(附电路图和源代码)

设计报告 设计任务: 设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。并能准确计算闰年闰月的显示。设计要求: 通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示: 图3 仿真按键 4)温度采集部分: DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。独特的单线接口方式,DS18B20在与微处理器

连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示 : 程序如下: ReadOneChar(void) { unsigned char i=0;// 定义i用于循环 unsigned char dat = 0;// 读取的8位数据 for (i=8;i>0;i--)//8次循环 { DQ = 0;// 拉低DQ总线开始读时序 dat>>=1;// dat左移一位 DQ = 1; //释放DQ总线 if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据) //DQ=0,就跳过 dat|=0x80; Tdelay(4);// 延时以完成此次读时序,之后再读下一数据 } return(dat); 返回读取的dat } //写一个字节 WriteOneChar(unsigned char dat) { unsigned char i=0;// for (i=8; i>0; i--)// { DQ = 0;// DQ = dat&0x01;// Tdelay(5);//延时以完成此次读时序,之后再读下一数据

Excel中关于日期的计算公式的运用

Excel中关于日期的计算公式的运用 方法1:在A1单元格输入前面的日期,比如“2004-10-10”,在A2单元格输入后面的日期,如“2005-6-7”。接着单击A3单元格,输入公式 “=DATEDIF(A1,A2,"d")”。然后按下回车键,那么立刻就会得到两者的天数差“240”。 提示: 公式中的A1和A2分别代表前后两个日期,顺序是不可以颠倒的。此外,DATEDIF函数是Excel中一个隐藏函数,在函数向导中看不到它,但这并不影响我们的使用。 方法2:任意选择一个单元格,输入公式“="2004-10-10"-"2005-6-7"”,然后按下回车键,我们可以立即计算出结果。 计算工作时间——工龄—— 假如日期数据在D2单元格。 =DATEDIF(D2,TODAY(),"y")+1 注意: 工龄两头算,所以加“1”。 如果精确到“天”—— =DATEDIF(D2,TODAY(),"y")&"年"&DATEDIF(D2,TODAY(),"ym")&"月 "&DATEDIF(D2,TODAY(),"md")&"日" 二、计算2003-7-617:05到2006-7-713:50分之间相差了多少天、多少个小时多少分钟 假定原数据分别在A1和B1单元格,将计算结果分别放在C 1、"D1和E1单元格。

C1单元格公式如下: =ROUND(B1-A1,0) D1单元格公式如下: =(B1-A1)*24 E1单元格公式如下: =(B1-A1)*24*60 注意: A1和B1单元格格式要设为日期,C 1、"D1和E1单元格格式要设为常规. 三、计算生日,假设b2为生日 =datedif(B2,today(),"y") DATEDIF函数,除Excel2000中在帮助文档有描述外,其他版本的Excel在帮助文档中都没有说明,并且在所有版本的函数向导中也都找不到此函数。但该函数在电子表格中确实存在,并且用来计算两个日期之间的天数、月数或年数很方便。微软称,提供此函数是为了与Lotus1-2-3兼容。 该函数的用法为“DATEDIF(Start_date,End_date,Unit)”,其中Start_date为一个日期,它代表时间段内的第一个日期或起始日期。End_date为一个日期,它代表时间段内的最后一个日期或结束日期。Unit为所需信息的返回类型。 “Y”为时间段中的整年数,“M”为时间段中的整月数,“D”时间段中的天数。“MD”为Start_date与End_date日期中天数的差,可忽略日期中的月和年。“YM”为Start_date与End_date日期中月数的差,可忽略日期中的日和年。“YD”为Start_date与End_date日期中天数的差,可忽略日期中的年。比如,B2单元格中存放的是出生日期(输入____年__月__日时,用斜线或短横线隔开),在C2单元格中输入“=datedif(B2,today(),"y")”(C2单元格的格式为常规),按回车键

万年历(时钟芯片和液晶显示)

#include #include #include"zhuanhuan.h" #define uchar unsigned char #define uint unsigned int sbit SCK=P3^5; sbit SDA=P3^4; sbit RST=P3^3;// DS1302复位 sbit set=P1^0;//定义按键端口 sbit s1=P1^1; sbit s2=P1^2; sbit s3=P1^3; void keyscan1();void keyscan(); /************液晶口定义*******/ sbit RS=P2^0;//RS为数据/指令选择1/0 sbit RW=P2^1;//读写 sbit E=P2^2;//E为使能信号 bit flag;//是否读取时间的标志位 uchar setn=0;//复位键、增加键、减少键按下次数 uchar code time0[]="Date: - - "; uchar code time1[]="Time: : : "; uchar l_tmpdate[]={00,00,00,7,1,7,12};//秒分时日月周年// 可随时更改uchar code write_add[7]={0x80,0x82,0x84,0x86, 0x88,0x8a,0x8c}; //秒分时日月周年写的寄存器地址 uchar code read_add[7]={0x81,0x83,0x85,0x87, 0x89,0x8b,0x8d}; //秒分时日月周年读的寄存器地址 extern uchar data dis_buf2[16]; void delay(uint z) { while(--z); } void write_com(uchar com)//液晶写命令函数 { RS=0;//写命令使能 RW=0;//写 delay(5000); /****在高脉冲下命令输入*****/ E=0; P0=com; delay(500); E=1; delay(500); E=0; }

带温度计的万年历

设计课题题目: 带温度计的万年历 一、设计任务与要求 1. 显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日); 2. 可通过按键切换年、月、日及时、分、秒的显示状态; 3. 可随时可以调校年、月、日或时、分、秒; 4. 可每次增减一进行时间调节,也可快速增减进行时间调节; 5. 可显示环境温度。 二、系统设计方案 方案一、用主芯片为AT89C51的单片机控制实现,使用单片机内部的定时计数器实现时间的设定,使用按键进行时间的调整和定时,按键有蜂鸣器提示,温度传感器使用DALLAS 公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配处理器等优点。显示时间和温度使用数码管显示。 方案二、用主芯片为STC89C52的单片机控制实现,为了满足单片机系统的实时控制的需求,采用实时钟芯片DS1302,使用按键进行时间的调整和定时,温度传感器使用 DS18B20。显示时间和温度使用LCD1602显示。 方案一片内定时器会导致计时节拍的时间误差,当进行年、月、日的日历计时,定时中断误差扥积累就会很大。使用片内定时器进行计时的时候,单片机始终要处于工作状态。才能维持计时时间,一旦停机或进入待机状态,开机后,计时时间就需要重新设定。为了满足单片机系统的实时钟需求,本设计采用的是方案二,系统框图如图2-1所示。 图2-1 三、单元电路分析与设计 1. 原理分析 1.1主控制器 单片机STC89C52 具有低电压供电和体积小等特点,如图3-1所示。

1.2晶振电路 AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C1、C2按图3-2所示方式连接。晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz 之间,电容C1、C2取值范围在5~30pF 之间。 根据实际情况,本设计晶振选择频率为12MHZ ,电容选择30pF 如图3-2。经计算得单片机工作的机器周期为:12×(1÷12M )=1us 。振荡器的振荡信号从XTAL2端输入到片内的时钟发生器上。时钟发生器是个二分频的触发器,它将振荡器的信号频率fosc 除以2,向CPU 提供两相时的时钟号。 1.3复位电路 时钟电路工作后, 芯片内部开始进行初始复位,如图3-3 。 1.4 LCD 显示电路 显示器是单片机常用的功能单元之一,显示器的工作是由单片机通过显示接口驱动的。本设计采用的是LCD1602显示电路图如图3-4所示。

一个计算万年历的简单程序

一个计算万年历的简单程序 通常我们只知道生活当天的前后几天是星期几,即便是翻日历,也只能知道有限日期的星期数。那么有没有一种方法可以让我们知道任何一天是星期几呢?有,下面我将向大家介绍一种方法,用以编写万年历的程序。 首先我们必须约定一些法则,我们用Y、M、D分别表示年、月、日,用数字0-6分别表示星期日-星期六,这样我们就可以开始推导我们的公式了。 我们知道2002年9月1号为星期日,如果我们要想知道2002年9月10号为星期几,可以这样算:(0+(10-1))%7=(0+9)%7=2,即星期二。同样可算得2002年9月20号为:(0+(20-1))%7=(0+19)%7=5,即星期五。但是这样算需要把日期减1,不太方便,为了解决这个问题,我们可以假设每个月有一个0号,由于2002年9月1号为星期日,那么2002年9月0号为星期六,这样算9月10号,只需代入10既(6+10)%7=2。事实上,9月0号也就是8月31号,每个月0号的星期数实际上就是每个月1号的前一天的星期数。我把这个星期数称之为每个月的代码。有了这个代码,要算这个月任一天的星期数都好办了。 以上讨论的是一年中每个月的代码,事实上对于每年也有一个代码,这个代码就是每年1月0号(即1月1号的前一天)的星期数,也就是一月份的代码。如果我们能够找到每年的代码之间的关系,那么要计算万年历就易如反掌了。 (一)推算年的代码公式 我们都知道,平年一年有365天,即52周多1天。闰年为366天即52周多2天。我们先只考虑平年的情况。 假设第N年的代码为W,则第N+1年的代码为(W+1)%7,而第N+K年的代码则为(W+K)%7。这是因为从第N年到第N+K年共经过了K年,每过一年也就是过了52周余1天,经过K年也就是过了52*K周余K天,将多余的天数K加上第N年的代码W再对7取模,所得也就是第N+K年的代码了。 下面我们把闰年也考虑进来。判断闰年的规则是,能被4整除,并能被100和400同时整除的年份就是闰年。所以从第N年到第N+K年间共有K/4 -K/100+K/400个闰年,而每个闰年有52周余2天,要比平年多余了1天,即共多余了K/4-K/100+K/400天。我们应该把这些天也加进去,所以第N+K年的代码应为(W+K+K/4-K/100+K/400)%7。 这样子是不是就考虑完全了呢?并非如此,我们还有两点没考虑到。第一点是第N年是不是闰年。如果第N年是闰年的话,它本身就是52周余2天,而我们在上面却是把它当作平年来计算的,少算了1天,应加上。所以在第N年为闰年的时候上式应为 (W+(K+1)+K/4-K/100+K/400)%7。第二点是第N+K年是不是闰年。如果第N+K年是闰年,虽然它有52周余2天,但只有在算第N+(K+1)年的时候,才需要多加它那一天,而在算第N+K年的时候不需要多加这1天,因此我们必须将上式改为 (W+(K+1)+(K-1)/4-(K-1)/100+(K-1)/400)%7(注意千万不能改为 (W+(K+1)+(K/4-K/100+K/400-1))%7=(W+K+K/4-K/100+K/400)%7)。 由此我们可以得出当第N年为闰年时,第N+K年的代码计算式为: A=(W+(K+1)+(K-1)/4-(K-1)/100+(K-1)/400)%7 为了方便计算,我们可以取N为0,也就是假设公元元年的代码为W。因为公元元年也是闰年,符合上式,那么当我们输入的年份为Y时,此时就有K=Y,也就是说第Y年的代码为 A=(W+(Y+1)+(Y-1)/4-(Y-1)/100+(Y-1)/400)%7

基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度)

1 课设所需软件简介 1.1 Keil uVision4的简要介绍 2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。 Keil C51开发系统基本知识Keil C51开发系统基本知识 1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

电子表格日期公式

竭诚为您提供优质文档/双击可除 电子表格日期公式 篇一:excel中几个时间计算公式 假设b2为生日 =datedif(b2,today(),"y") datediF函数,除excel2000中在帮助文档有描述外,其他版本的excel在帮助文档中都没有说明,并且在所有版本的函数向导中也都找不到此函数。但该函数在电子表格中确实存在,并且用来计算两个日期之间的天数、月数或年数很方便。微软称,提供此函数是为了与lotus1-2-3兼容。 该函数的用法为 “datediF(start_date,end_date,unit)”,其中start_date 为一个日期,它代表时间段内的第一个日期或起始日期。end_date为一个日期,它代表时间段内的最后一个日期或结束日期。unit为所需信息的返回类型。 “y”为时间段中的整年数,“m”为时间段中的整月数,“d”时间段中的天数。“md”为start_date与end_date日期中天数的差,可忽略日期中的月和年。“ym”为start_date 与end_date日期中月数的差,可忽略日期中的日和年。“yd”

为start_date与end_date日期中天数的差,可忽略日期中的年。比如,b2单元格中存放的是出生日期(输入年月日时,用斜线或短横线隔开),在c2单元格中输入 “=datedif(b2,today(),"y")”(c2单元格的格式为常规),按回车键后,c2单元格中的数值就是计算后的年龄。此函数在计算时,只有在两日期相差满12个月,才算为一年,假如生日是20xx年2月27日,今天是20xx年2月28日,用此函数计算的年龄则为0岁,这样算出的年龄其实是最公平的。 身份证号提取年龄 =datediF(--text((len(a1)=15)*19”即可获得当时的日期时间; 2、使用公式:用=now()而非=date(),=date()只有日期,然后进行菜单“工具->选项”,选择“重新计算”页,选中“人工重算”,勾不勾选“保存前自动重算”看自己的需要和想法了,如果勾选了,那日期时间那总是最后一次保存的日期时间,不勾选的话,如果你的表格中有公式记得准备存前按F9 篇二:excel函数--时间和日期函数 时间和日期函数 1.date 用途:返回代表特定日期的序列号。

液晶显示万年历设计

湄洲湾职业技术学院 液晶显示万年历设计 系别:自动化工程系 年级:10 级专业:电气自动化 姓名:陈承隆学号:1001020212 导师姓名:许振龙职称:讲师 2013年 5 月27日

目录 1.前言 (1) 2.系统设计参数要求 (2) 3.系统设计 (3) 3.1系统设计总体框图 (3) 3.2 各模块原理说明 (4) 3.2.1 AT89C52单片机最小系统模块 (4) 3.2.2 液晶显示模块 (5) 3.2.3 机给蜂鸣器模块 (5) 3.2.4 独立键盘模块 (5) 3.3 系统总原理图说明 (6) 3.4系统印刷电路板的制作图 (6) 3.5系统的操作说明 (6) 3.6 系统操作注意事项 (6) 参考文献 (7) 致谢词 (8) 附录 (9) 附录1:电路总原理图 (10) 附录2:印刷电路板 (11) 附录3:原件清单 (12)

1.前言 随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。目前,单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来了诸多方便。随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。 单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具,于是基于单片机的醒目而时尚的电子版万年历顺应而生。基于单片机的电子万年历结合了时钟和日历的功能,将其二者融为一体,在显示时间的同时还能显示日期和年、月,它主要是通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。

万年历阴历星期温度

#include #include #include #define uchar unsigned char #define uint unsigned int sbit CLK=P1^1; //DS1302时钟线 sbit SDA=P1^0; // DS1302数据线 sbit RST=P1^2; //DS1302复位线 sbit RS=P2^0;//数据/指令选择端口 sbit RW=P2^1;//读写端口 sbit EN=P2^2;//使能端口 sbit K1=P3^4; // 选择 sbit K2=P3^5; // 加 sbit K3=P3^6; // 减 sbit K4=P3^7; // 确定 uchar tCount=0;//一年中每个月的天数,2月的天数由年份决定 uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; uchar *WEEK[]={"sun","mon","tus","wen","thu","fri","sat"};//周日,周一到周六 uchar LCD_DSY_BUFFER1[]={"Date 00-00-00 "}; //LCD显示缓冲 uchar LCD_DSY_BUFFER2[]={"Time 00-00-00 "}; uchar DateTime[7]; //所读取的日期时间 char Adjust_Index=-1; //当前调节的时间:秒,分,时,日, uchar Change_Flag[]="-MHDM-Y"; uchar Read_LCD_State();//读LCD状态 void LCD_Busy_Wait();//判忙 void Write_LCD_Data(uchar dat);//写数据 void Write_LCD_Command(uchar cmd);//写命令 void Init_LCD();//LCD初始化 void Set_LCD_POS(uchar p);//设置显示位置 void Display_LCD_String(uchar p,uchar *s);//写字符串 void DelayMS(uint x)//延时 { uchar i; while(x--) for(i=0;i<120;i++); } uchar Read_LCD_State()//读LCD状态 { uchar state;

基于液晶显示的万年历-毕设论文

毕业设计(论文)报告题目基于液晶显示的万年历 系别 专业 班级 学生姓名 学号

指导教师 2013年4 月

基于液晶显示的万年历 摘要: 本设计应用AT89S52芯片作为核心,采用C语言进行编程,实现以下功能:小时、分、秒、年、月、日、星期的显示和实时温度检测。该设计的电子时钟系统由时钟电路、LCD显示电路、按键调整电路和温度检测电路四部分组成。使用时钟芯片DS1302完成时钟日期的功能,以LCD1602为显示器,同时利用温度传感器DS18B20测量周围环境温度,并且可以依靠按键随时对日期时间进行调整。我们共设计四个按键,一个模式键,也就是我们用来选定被修改的数字的,两个调整键,一个“加”键和一个“减”键,当按下模式键,选定要调整的数字的时候,“加”、“减”可以帮我们调到所需的状态,还有一个复位键,显示精度为1秒。设计还提供三位实时温度检测并显示,其显示精度为0.1℃。 关键词: AT89S52、时钟日历芯片DS1302、温度传感器DS18B20、LCD1602

目录 前言 (1) 第一章方案选择与万年历研究情况 (2) 1.1 方案选择 (2) 1.1.1时钟芯片选择 (2) 1.1.2键盘选择 (3) 1.1.3显示模块选择 (3) 1.2电子万年历的研究情况 (4) 第二章主要硬件描述 (5) 2.1 AT89S52 (5) 2.1.1主要性能 (5) 2.1.2引脚说明 (5) 2.2 LCM1602 (8) 2.2.1工作原理 (8) 2.2.2端口引脚第二功能 (9) 2.2.3管脚功能 (10) 2.3 芯片DS1302 (11) 2.3.1工作原理 (11) 2.3.2引脚功能及结构 (12) 2.4 数字温度传感器DS18B20 (12) 2.4.1DS18B20工作原理 (12) 2.4.2DS18B20 引脚定义 (13) 第三章硬件设计与实现 (14) 3.1 单片机最小系统的设计 (14) 3.2 时钟电路的设计 (15) 3.3 温度采集模块的设计 (15) 3.4 LCDM1602显示模块设计 (16) 第四章系统软件设计与实现 (17)

lcd数显温度万年历电波钟

外观尺寸:29cm(宽)*18.5cm(高) 可挂可摆,背面有挂孔,可挂在墙上,也可以安装随机配送的支架摆放在台面上。 电子说明书地址:https://www.360docs.net/doc/6e16169368.html,/item.htm?spm=a1z09.5.0.4 0&id=16362908718 功能特点: 1、时间显示:时:分:秒,12/24小时制可选 2、日历显示:日/月 3、星期显示:英文简写 4、温度显示:摄氏或华摄,范围:0℃-50℃(32℉-122℉),分辨率:0.1℃。 5、闹铃功能:可设置1个闹铃时间。 6、特殊日期提醒功能:可设置三个特殊日期提醒。 使用电源:两节AA电池(不配送电池),超省电,两节电池可使用一年以上。 使用说明: 一、信号自动同步: 当时钟正确装上电池后,稍等几秒,自动开始接收日本发射的无线电校时信号,接收过程中屏幕右上角显示一个闪动的信号接收塔标识。当接收到正确的时间信号后,接收塔标识停止闪动并自动同步时间和日历信息,时钟每天会定时进行接收,无须人工干预。如果接收不成功,时钟仍可以作为一个高精度石英钟使用。 时钟在接收信号的过程(接收塔标识闪动)中无法进行其他功能的操作,如果需要进行其它设置或取消接收,须按下‘+’键退出接收状态。为了达到最好的接收效果,应将时钟远离其它用电器至少在1-2米以上,并可以适当转动时钟位置以获取最佳接收效果。 二、信号手动同步: 在正常的时钟显示模式,长按‘+’键,强制进入信号接收状态,此时收塔标识闪动,接收过程与自动同步一样。 三、手动设定时钟、日历: 在正常的时钟显示模式,长按‘CLK/CAL’键,进入时间日历设置界面,当前设置项目闪动,通过短按‘+,-’键调整数值,再短按‘CLK/CAL’确认并进入下一设置项目。设置项目顺序:12/24时制—小时—分钟—年—月—日—时区。 四、每日闹钟设置: 在正常的时钟显示模式,长按‘ALARM’键,进入闹铃设置界面,通过短按按‘+,-’键输入每天的闹铃时间,最后按‘ALARM’键确认。 在正常的时钟显示模式,短按‘-’键可以开启和关闭闹铃功能,当闹铃响时,按任意键都可以关闭闹铃。 五、特殊日期提醒设置:

基于单片机的液晶显示“万年历”

宁波大红鹰学院 《单片机原理及应用》课程设计报告 课题名称:单片机液晶显示“万年历” 分院:机械与电气工程学院 教研室:电气工程及其自动化 班级: 09电自3 姓名:徐卡达 学号:0 指导教师:杨会保 二○一二年五月

单片机液晶显示“万年历” 一、设计任务 利用STC89C52RC单片机设计一个具有如下功能的电子万年历: (一)、能够显示年、月、日、时、分、秒、星期 (二)、能正确显示闰年日期 (三)、用独立键盘进行校时 二、硬件设计 1、系统框图 按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、蜂鸣器电路、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。主控模块采用STC89C52RC单片机,按键模块用5个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。 图1 基于AT89C52RC单片机的电子万年历系统框图 2、原理图 基于STC89C52RC单片机的电子万年历硬件仿真电路图如图10所示,系统由STC89C52RC单片机、按键扫描电路、显示电路、时钟电路、晶振电路、复位电路、蜂鸣器电路组成。

图2 电子万年历仿真图 3、各部分介绍 (1)、主控模块 控制芯片使用STC89C52,控制系统如下图: 图3 STC89C52RC主控模块 主控制芯片采用STC89C52,系统包括晶振电路、复位电路、下载接口。

(2)、时钟芯片 时钟芯片使用DS1302,该模块电路原理图如下图: 图4 DS1302时钟电路 时钟电路采用的是ds1302芯片,DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为~。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。工作电压与单片机的输入电压比较适合。上面是它的一些基本的应用介绍。下面是它的引脚的描述: 图5 DS1302引脚 下面是DS1302的时钟寄存器。我们要读取的时间数据就是从下面这些数据寄存器中读取出来的。当我们要想调整时间时,可以把时间数据写入到相应的寄存器中就可以了。 图6 DS1302的时钟寄存器 DS1302和单片机的连接很简单。只需一根复位线,一根时钟线,一根数据

基于51单片机带温度显示的液晶万年历

摘要 在寒假期间我用一周时间完成了这个液晶万年历,它可以显示年月日、时分秒、以及温度(可上下限报警),可以对时间进行加一或减一调整,并加入了闰、平年时间调整,方便可行,已经调试成功。考虑到成本和方便,本作品采用了STC89c52和DS18B20,计时用的是51单片机自带的十六位定时器/计数器T0,尽管对时间进行了误差调整但是还是有一定的误差,考虑到学校后改用DS1302时钟芯片,进一步减小误差。温度显示精度达到0.1摄氏度。 关键词:单片机 DS18B20 万年历温度 1.硬件工作介绍 (1)上电自动复位及手动复位电路 STC89c52单片机的RST端外部复位有两种操作方式:上电自动复位和按键手动复位。本设计用上电自动复位以及手动复位下结合的方式外接电路(见附图)。 (2)时钟振荡电路 作品中采用12M晶振,其连接方法如图所示,其中电容的值都为22pF。(3)1602液晶显示接口 1602采用标准的16脚接口(见附图),其中: 第1脚:GND为地电源 第2脚:VCC接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。 第15脚:VCC 第16:GND (4)键盘 键盘是通过S3(P3.2),S4(p3.3),S5(p3.4)对时钟进行调整,其S3选择要调整的对象如时,分,日,月等等,并在液晶屏上显示所选的对象。S4对所选中

基于STC89C52液晶显示数字万年历设计报告

西安邮电学院 开放实验设计报告 系部名称电子与信息工程系学生姓名 专业名称电子与信息工程班级 实习时间

基于STC89C52液晶显示数字万年历 1.引言 在51单片机应用系统中,常常需要记录实时的时间信息。比如,在数据采集时,对默写重要的事件常常需要记录下准确的发生事件;又比如在银行营业大厅中使用的利率或汇率显示屏,上面除了显示利率或者汇率等数据外,还需要显示实时的时间信息,其中包括年,月,日,星期,时间等。 下面我们利用STC89C52和液晶显示器LCD1602和实时时钟芯片DS1302来实现实时时钟并利用液晶显示器进行显示。 1. 单片机STC89C52 STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器8K字节在系统可编程Flash。 2. 实时时钟芯片DS1302 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。带有IIC总线接口,便于同单片机进行通信。外接32.768KHZ晶振,可实现年误差小于2分钟。 3.液晶显示模块LCD 1602 LCD1602液晶显示模块是由字符型液晶显示屏(LCD),控制驱动主电路HD44780及其扩展驱动电路HD44100或与其兼容的IC,少量阻,容元件,结构件等装配在PCB板上而成。它可以显示2行字符,每行16个字符。 2.所用硬件和软件系统的介绍,实施方案 数字时钟芯片DS1302 1. 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 2. DS1302的控制字节

可以显示温度的万年历程序(已在PD1000开发板上运行)

//1602+18b20+ds1302程序 // 程序名称:1602+18b20+ds1302程序 // 实验目的:综合应用lcd1602,ds18b20,ds1302 // 连接方法:将LCD1602液晶屏插到J9端子上引脚朝下 // JP8与JP5 用8p排线连接 // 描述:液晶显示当前时间(可调整),温度(精度可调) // K1设置键 K2递增键 K3递减键 // 版本:PD1000开发板 // 作者:青岛普爱特 // 日期:2011.02.28 //注:(1):主芯片STC89C52RD 使用12M晶振 // (2):Keil uV3 3.30编译运行通过 // (3):本例程在 PD1000 开发板平台上成功运行通过 // (4):青岛普爱特版权所有,只供学习参考,不得应用于商业用途. // (5):公司网站:https://www.360docs.net/doc/6e16169368.html, 淘宝网店:https://www.360docs.net/doc/6e16169368.html, #include #include #include #define uchar unsigned char //功能引脚定义 sbit set= P1^0; //设置调整按键 sbit up = P1^1; //加键 sbit down =P1^2; //减键 sbit LCM_RS= P2^5; //l602定义引脚 sbit LCM_RW= P2^6; sbit LCM_E =P2^7; #define LCM_Data P0

#define Busy 0x80 //用于检测LCM状态字中的Busy标识 uchar id,timecount,dipsmodid; bit lmcinit_or_not; //是否需要清屏标志位“1”为需要“0”为不需要 bit flag,sflag; //flag是时钟冒号闪烁标志,sflag是温度负号显示标志void Disp_line1(void); //显示屏幕第一行 void Disp_line2(void); //显示屏幕第二行 void id_case1_key(); void Disp_mod0(void); //*********** DS1302 时间显示定义部分 sbit T_IO =P3^4; sbit T_RST=P3^5; sbit T_CLK=P3^6; sbit ACC0=ACC^0; sbit ACC7=ACC^7; void Set(uchar,uchar); //根据选择调整相应项目 void RTInputByte(uchar); /* 输入 1Byte */ uchar RTOutputByte(void); /* 输出 1Byte */ void W1302(uchar, uchar); // 向DS1302写入一个字节 uchar R1302(uchar); // 从DS1302读出一个字节 void Set1302(unsigned char * ); // 设置时间 bit sec,min,hour,year,mon,day,weekk; //闪烁标志位 //初始化后设置为:11年02月28日星期1 08点11分59秒 unsigned char inittime[7]={0x59,0x11,0x08,0x28,0x02,0x11,0x01}; // 秒分钟小时日月年星期 //***** 18B20温度显示定义部 sbit DQ=P3^7; //18B20 接P3.7口 typedef unsigned char byte; typedef unsigned int word; Read_Temperature(char,char); void mychar(void); byte ow_reset(void); byte read_byte(void); void write_byte(char val); void adjust_res(char res); //res 分别等于 0x1f, 0x3f, 0x5f 温度读数分辨率分别对应 // 0.5, 0.25, 0.125

电子万年历

河北科技师范学院课程设计说明书 题目: 学院(系): 年级专业: 学号: 学生姓名: 指导教师:

摘要 本设计是电子万年历。具备三个功能:能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。 我选用的是单片机8052来实现电子万年历的功能。该电子万年历能够成功实现时钟运行,调整,显示年月日时分秒及星期,温度等信息。 该电子万年历使用12MHZ晶振与单片机8052相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。所以在该设计与制作中我选用了单片机8052,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, 单片机8052的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。 因此,采用单片机8052原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。

根据公历日期计算星期的公式

根据公历日期计算星期的公式 蔡勒(Zeller)公式:是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几。 公式如下: W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1 公式中的符号含义如下: w:星期;(w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六) c:世纪(前两位数) y:年(后两位数) m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算) d:日 [ ]代表取整,即只要整数部分。 下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1 =49+[12.25]+5-40+[28.6] =49+12+5-40+28 =54 (除以7余5) 即2049年10月1日(100周年国庆)是星期五。 再比如计算2006年4月4日,过程如下: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =6+[6/4]+[20/4]-2*20+[26*(4+1)/10]+4-1 =-12 (除以7余2,注意对负数的取模运算!) 不过,以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。 后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。 若要计算1582年10月4日及之前的日期是星期几,则公式为:

相关文档
最新文档