基于51单片机的万年历设计_第1页
基于51单片机的万年历设计_第2页
基于51单片机的万年历设计_第3页
基于51单片机的万年历设计_第4页
基于51单片机的万年历设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51单片机的电子日历设计报告第五组2012.2.221、项目概述随着人们生活水平的提高,单片机控制无疑是人们追求的目标之一,方便和不可否认。为了为现代人工作、研究、生活、提供更好的便利设施,必须从单片机技术开始,向数字控制、智能控制的方向发展。该设计是数据收集和处理、键盘控制、显示系统和报警系统以及单片机的有效组合,是对在“单片机原理和应用”课堂中所学知识的综合应用,并查询数据,开发自学能力。引导另一种创新思维,将学到的知识应用到日常生活中。在设计过程中,通过不断的学习、思考和同学之间的相互讨论、科学地分析问题的方法解决所遇到的困难,掌握单片机系统的一般开发过程,学习一般问题的处理方法,积

2、累设计系统的经验,充分发挥教育与实践的结合。全能提高了个人系统开发的综合能力,开拓了思维能力,为以后在该岗位工作打下了坚实的基础。2、项目要求有年、月、日、周、时、分、秒等功能。温度计功能;年、月、日、周、诗、分、秒校准功能;3、系统设计1,图块设计AT89C51主模块Ds12864液晶显示器Ds1302时钟电路密钥扫描Ds18b20实时环境温度采集电路警告提示电路2、知识点(1)时钟芯片DS1302的工作原理:DS1302必须在每次读取和写入之前初始化,将SCLK端点设置为“0”,将RST端点设置为“1”,然后给SCLK脉冲。读/写定时如下图4所示。图5是DS1302的控制词,该控制词的位7

3、必须设置为1,如果为0,则无法读取和写入DS1302。对于位6,读/写RAM=1;对于读/写,CK=0。位1到位5表示业务实体的地址。位0是读/写操作位,在读取操作中,此位为1。如果此位为零,则执行写入操作。控制字节始终从最低位开始输入/输出。表6是DS1302的日历、时间寄存器内容。“CH”是时钟暂停标志位,如果该位为1,则时钟振荡器停止,DS1302是低功耗状态。如果该位为零,时钟开始运行。“WP”是写保护位,WP必须在写入时钟和RAM之前为零。当WP为1时,写保护位防止写入所有寄存器。(2) DS1302的控制字节DS1302的控制词列在表-1中。控制字节的高有效位(位7)必须为逻辑1,

4、如果为0,则不能将数据写入DS1302,如果为位6,则访问日历时钟数据,如果为1,则访问RAM数据。位5到位1表示业务实体的地址。最低有效位(位0)为0时执行写入操作,1时执行读取操作,控制字节始终从最低位开始输出拉姆齐1 A4 A3 A2 A1 A0/CK /WR表-1 DS1302中的控制词格式(3)数据I/O如果在命令输入后控制下一个SCLK时钟的上升,则数据将写入DS1302,数据输入将从子瞬时0开始。同样,在8位控制命令后,下一个SCLK脉冲向下读取DS1302的数据,从低0位读取到高7位。如下图-4所示图-4 DS1302读/写时序图(4) DS1302寄存器DS1302具有7个与

5、日历、时钟相关的寄存器和12个寄存器,其中包含以BCD代码形式显示日历、时间寄存器和控制单词的数据位。表-2 DS1302日历,时间寄存器DS1302还具有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器和与RAM相关的寄存器。时钟突发寄存器可以一次顺序读取和写入除充电寄存器以外的所有寄存器内容。DS1302 RAM特定的寄存器分为两类:一个类是单个RAM单元,总共31个,每个单元由8位字节组成,其命令控制单词为C0H到FDH。其中奇数是读操作,偶数是写操作。其他类是突发RAM寄存器,可以一次读取和写入所有RAM的31个字节,命令控制单词为FEH(写入)、FFH(读取)。4、硬件设计该电路是

6、在联机编程功能、低功耗、3V超低电压下工作的AT89S51单片机控制核心。DS1302提供的时钟电路是实时时钟电路,具有高性能、低功耗RAM,工作电压为2.5V至5.5V,年、月、日、星期日、小时、分钟、秒、闰年。三线接口允许与CPU同时通信,同时以突发方式传输多个字节的时钟信号或RAM数据。DS1302内部有31*8的RAM寄存器,用于临时存储数据。年、月、日、日、星期日、小时、分钟、秒、长寿命、高准确度、低功耗,并具有自动断电存储功能。温度收集由DS18B20组成。1,电路线路图2、元件清单名字型号数量微控制器89 sc511液晶显示器JHD12864F1电阻10k(1/4瓦)5电阻1k5

7、电阻200欧姆5电阻4.7k5电阻4.7k5电位器10k1电容器10u/16V1电容器30p4晶体管90131按按钮小(大小66mm5.5)4蜂鸣器5 V1晶振12米(小尺寸)1低音八只脚1低音40发1发光二极管红色1发光二极管绿色1时钟芯片DS13021纽扣电池和支架3V(大)1液晶屏插槽20个孔1单针三行120杜邦线和杜邦头一缕40电路板小AOA515、软件设计该系统的软件系统主要分为主程序、液晶程序、时钟程序。1.流程图开始初始化中读取、写入日期、时间和温度分离日期时间温度指示值显示子程序修改日期,时间子程序回来主方块图设定流程图2.进程列表(1)主程序:#include#include

8、# include“ds 1302 . h”# include“ds 18 b20 . h”# include“LCD 12864 . h”/键定义sbit key 0=P2 3;/设定sbit key 3=P2 4;/退出sbit key 1=P2 5;/减去sbit key 2=P2 6;/加sbit led 1=P3 0;sbit led 2=P3 1;sbit led 3=P3 2;unsigned char w=0;/计时标志位/要用于键盘函数的变量unsigned char key _ operate=0;/设置模式unsigned char timer=0;Unsigned ch

9、ar key _ flagunsigned int counter=0;unsigned char Lcd _ t=0;/液晶屏刷新时间间隔Unsigned char ss/全局变量Unsigned int v、getdata、getdataastatic unsigned char menu=0;/定义静态时间更新的数据变量static unsigned char keys=0;/定义静态时间更新的数据变量static unsigned char time count=0;/定义静态软件计数器变量unsigned int flag=0;/flag定义和初始化Unsigned char DS=

10、10/DS定义和初始化unsigned char DSS=1;/DSS定义和初始化unsigned char flag 1=0;unsigned char flag 2=0;unsigned char flag 3=0;unsigned char flag 4=0;void LCD _ disp wendu(void);/函数声明/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *建立void init timer 0(void)/10毫秒间隔TMOD=(t mod0

11、x F0)|0x 01;/计时器0在模式16Bit计时器模式下运行TH0=(65536-8000)/256;TL0=(65536-8000)% 6;TR0=1;ET0=1;/打开计时器和中断EA=1;/开始完全封锁Void INIT_Clock(void) /初始化日历init LCD();/初始12864clear screen(0);/清除屏幕set start line(0);/显示起始行initial _ ds 1302();/初始化ds1302init _ ds 18 b20();/初始化ds18b20init timer 0();/转至10毫秒计时器中断函数/* * * * * *

12、 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Void DelayMM(unsigned int a)/延迟函数1毫秒/辅助while(a-);/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */Displayen(2,0,0*8,t1);/Displayen(1,0,63*8,3);/(1右半屏幕,0行1 ,63 63列*8 数字,3第三个数字)/Disp

13、lay (2,1,1*16,1);/(2左半屏幕,1 行2 ,1列2 *16汉字,1第一个汉字)/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */*-时间显示- */void LCD _ disp time(system time * time)Unsigned char s1、s2、f1、f2、m1、m2;/时间映射定义局部变量(专用寄存器)时间序列(If)!=ss)确定是否需要更新ss=Time-Second;/更新数据If(flag!=0) ds-;if(DS=0)DSS=2;if(DSS=2) flag-;else flag=0;DS=10DSS=1;flag 4=flag/600% 6;/10位数数据flag 3=flag/60;/位数据flag 2=flag/10% 6;/秒10位数据Flag1=flag/秒位数据LCD _ dispwendu();/显示温度S1=Time-Hour/10;S2=time-hour;f1=Time-Minute/10;F2=time-minute;m1=Time-Second/10;m2=time-second;显示器en (2,2,0 * 8,S1);显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论