万年历单片机原理

合集下载

单片机万年历文献综述

单片机万年历文献综述

基于单片机的时间核设计文献综述专业:电子信息工程班级:***班作者:*** 指导老师:***1、前言从古至今,时间一直是个被学者文人们所探索的永恒话题。

郭沫若先生曾说:时间就是生命,时间就是速度,时间就是力量。

马克·吐温曾说:生命是由时间组成的。

时间就像生命一样宝贵,在我们的日常工作、学习、生活中,时间概念也愈来发挥着重要作用。

在高度发达信息化的21世纪,人们总是那么忙碌。

生活工作中班车要准点,上班要准时,开会要有时间限制;工业生产中,每一道工序都要有严格的时间限制,这样才能做到井井有条;严谨的科技研究中,时间更是重中之重。

能够准确的了解并且实时性的知道时间,是我们学习、工作、生活中不可缺少的。

时间是人们生活中不可缺少的重要伴侣,如果没有时间的概念,社会将停滞不前。

为了描述时间,许多计时仪器就此诞生。

从古代的圭表、水漏,漏水水转浑天仪,到后来的机械钟表以及当今的电子钟,都充分显现出了人们对计时仪器的不断改进和创新。

机械式钟表虽然也可以告知人们时间,也可以定时,显示日历。

但是由于受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。

随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。

传统的时钟功能单一,已不能适应时代的发展!随着技术的发展,高精度、多功能、小体积、低功耗是现代时钟发展的趋势。

本人所述智能时间核心控制系统主要指具有时钟显示、万年历显示(阴历和阳历)、时间设置、闹铃及温度显示等功能的基于单片机设计而成的控制系统,具有非常现实的意义。

2、基于单片机的时间核为此设计,我复习以前学习过的很多课程,查阅的好多数据库和网络图书馆,如:中国学术期刊数据库,中文科技期刊数据库,万方数字化期刊,独秀知识库文献,超星数字图书馆,中国标准服务网等。

也在图书馆查阅了很多相关的书籍。

我主要通过标题与年期进行检索,还加上一些简单的检索式进行筛选文献。

基于单片机电子万年历的设计毕业论文

基于单片机电子万年历的设计毕业论文

基于单片机电子万年历-的设计毕业论文号:毕业设计(论文)说明书课题名称:基于单片机的电子万年历设计院(系):计算机工程系专业:通信工程班级:通信072班学生姓名:黄董学号: 200700402056指导教师:袁浩浩2011年 05月25日摘要电子万年历是一种应用非常广泛日常计时工具,对现代社会越来越重要。

此电子万年历在硬件方面主要采用STC89C52单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCD液晶显示屏显示。

STC89C52单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;对于数字电子万年历采用直观的数字显示,数字显示是采用的1602LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。

此外,该电子万年历还具有时间校准等功能。

在软件方面,主要包括日历程序、时间调整程序,显示程序等。

所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,烧写到单片机上进行测试。

此设计主要由时钟芯片DS1302和温度传感器DS18B20采集数据到单片机进行处理再通过LCD1602显示出来,本论文主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。

关键词:单片机;DS1302;DS18B20;LCD1602AbstractElectronic calendar is a widely used tool for the daily time, more and more important in modern society. The electronic calendar in terms of hardware as the main control mainly STC89C52 microcontroller core, provided by the DS1302 clock chip clock, 1602LCD LCD display. STC89C52 microcontroller by Atmel introduced, the power consumption, voltage can be selected 4 ~ 6V voltage power supply; DS1302 clock chip introduced in the United States DALLAS low-power real time clock chip, which can be year, month, day, week, hours, minutes and seconds time, but also has leap-year compensation, and other functions, and the DS1302's long life, small error; for digital electronic calendar using an intuitive digital display, digital display is used 1602LED LCD screen to display, you can also shows year, month, day, week, hours, minutes, seconds and other information. In addition, the electronic calendar is also a time calibration and other functions. In terms of software, including calendar, time to adjust procedures, display procedures. All programming is completed, the Keil software debugging, make sure that no problem, programmed into the microcontroller for testing.This design mainly by the clock chip DS1302 temperature sensor to the microcontroller DS18B20 collect data for processing and then through the LCD1602 display, this thesis, the liquid crystal display LCD and clock chip DS1302, temperature sensor and microcontroller DS18B20 interconnection and communication between the hardware on Several hardware connection scheme for a detailed comparison of algorithms in software on the calendar have also been discussed.Key words: SCM; DS1302; DS18B20; LCD1602目录摘要 (I)Abstract (II)第 1 章绪论 (1)1.1课题背景 (1)1.2 课题意义 (1)1.3国内外现状及水平 (1)第2章基于单片机万年历的方案研究 (2)2.1 系统基本方案选择和论证 (2)2.1.1 单片机芯片的选择 (2)2.1.2 显示模块选择方案和论证 (3)2.1.3 时钟芯片的选择方案和论证 (3)2.1.4 温度传感器的选择方案与论证 (3)2.2 电路设计最终方案决定 (4)2.3 DS1302,DS18B20和LCD1602的原理及说明42.3.1 LCD1602工作原理及说明 (4)2.3.2 DS1302原理及说明 (5)2.3.3 DS18B20工作原理及说明 (6)第3章系统的硬件设计与实现 (7)3.1电路设计框图 (7)3.2系统硬件概述 (7)3.3 主要模块电路的设计 (8)3.3.1 STC89C52单片机主控制模块的设计. 83.3.2时钟电路模块的设计 (10)3.3.3温度采集模块设计 (11)3.3.4 显示模块的设计 (11)3.4各模块电路原理图 (12)3.4.1电源电路 (12)3.4.2复位电路 (12)3.4.3振荡电路 (13)3.4.4温度采集电路 (13)3.4.5通信电路 (14)3.4.6显示电路 (15)3.4.7键盘电路 (15)第4章系统的软件设计 (16)4.1 程序流程框图: (16)第5章系统测试 (19)5.1 硬件测试 (19)5.2 软件测试 (19)结束语 (20)致谢 (21)参考文献 (22)附录1:程序 (24)第 1 章绪论1.1课题背景在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响,随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。

51单片机12864万年历(图片+主要程序C语言)

51单片机12864万年历(图片+主要程序C语言)

51单片机做的12864万年历这是我花了一个星期时间做的万年历;一开始是一些图片,后面是这个制作的C语言源程序;希望大家稀饭:Main.c#include "reg52.h"#include "macroconst.h"#include "keyscan.h"#include "screen.h"#include "18b20.h"#include "ds1302.h"#include "atao_12864.h"#include "24c02.h"idata unsigned char state1[1];unsigned char screennum=1;//屏幕号#define time_task_sec 200 //节拍200Hz#define clock 24000000 //晶振#define max_task 4 //最大任务数idata unsigned char task_delay[4];#define task_delay0 time_task_sec/1 //2赫兹18b20 #define task_delay1 time_task_sec/5 //10赫兹屏幕#define task_delay2 time_task_sec/3 //4赫兹1302 #define task_delay3 time_task_sec/20 //20赫兹键盘void init(){unsigned char i;init18b20();ds1302_init();initina1(); //---------------------------LCD字库初始化程序RdFromROM(state1,8,1);state[0]=state1[0]; //-------界面RdFromROM(state1,15,1);state[1]=state1[0];//------- 闹钟RdFromROM(state1,11,1);key_sound=state1[0];//-------按键音// state[2]=state1[2];// state[3]=state1[3];screennum=1;//------默认一号屏for(i=0;i<max_task;i++)//清除任务延时{task_delay[i]=0;}TMOD=0x11;EA=1;TH0=255-clock/time_task_sec/12/526;TL0=255-clock/time_task_sec/12%526;ET0=1;TR0=1;}void main(){init();while(1){ if(task_delay[0]==0){readtemp(); task_delay[0]=task_delay0;} if(task_delay[3]==0){MenuCheckKey();task_delay[3]=task_delay1;}if(task_delay[1]==0){screen_select(screennum);task_delay[1]=task_delay1;} if(task_delay[2]==0){ds1302_read_time(); task_delay[2]=task_delay0;} }}void timer0() interrupt 1{uchar i=0;TH0=255-clock/time_task_sec/12/526;TH1=255-clock/time_task_sec/12%526;for(i=0;i<max_task;i++)if(task_delay[i]) task_delay[i]--; // miao=21,fen=33,xiaomiao=94;if(ma_start==1){tt++;if(tt==8){tt=0;xiaomiao++;if(xiaomiao==99){xiaomiao=0;miao++;if(miao==60){miao=0;fen++;if(fen==99){fen=0;}}}}}}Screen.c:#include "reg52.h"#include "macroconst.h"#include "delay.h"#include "18b20.h"#include "atao_12864.h"#include "ds1302.h"#include "24c02.h"#include "festival.h"#include "keyscan.h"idata unsigned char miao=0,fen=78,xiaomiao=0,tt=0;idata unsigned char bai,shi,ge,shinian,genian,shiyue,geyue,shiri,geri,shishi,geshi,shifen,gefen,shimi ao,gemiao;idata unsigned char Number[4];unsigned char code mainmenu[]={" 主菜单""3.查询 4.温度""1.调时 2.秒表""5.设置 6.返回"};unsigned char code setmenu[]={" 设置""3.查温 4.按键""1.界面 2.闹铃""5.报时 6.返回"};void gettime(){shinian=(time_buf1[1]%100)/10;genian=(time_buf1[1]%100)%10;shiyue=(time_buf1[2])/10;geyue=(time_buf1[2])%10;shiri=(time_buf1[3])/10;geri=(time_buf1[3])%10;shishi=(time_buf1[4])/10;geshi=(time_buf1[4])%10;shifen=(time_buf1[5])/10;gefen=(time_buf1[5])%10;shimiao=(time_buf1[6])/10;gemiao=(time_buf1[6])%10;}void screen_select(uchar num){// initina1();gettime() ;if(num==1) //----------主界面{Lcd_Set_Post(1,0);TransferData(shinian+48,1);//----------------------年TransferData(genian+48,1);TransferData('/',1);TransferData(shiyue+48,1);//----------------------月TransferData(geyue+48,1);TransferData('/',1);TransferData(shiri+48,1);//----------------------日TransferData(geri+48,1);Lcd_Set_Post(1,4);if(state[1]==1)//----------------闹铃的状态图标{TransferData(' ',1);TransferData(14,1);}Lcd_Set_Post(1,5);if(key_sound==1){TransferData(13,1);}if(state[0]==0){Lcd_Set_Post(1,7); //----------------农历年nian(0);Lcd_Set_Post(2,0);//----------------------- 农历日月LCD_WRITE_CHAR("农历");Conversion(0,time_buf[1],time_buf[2],time_buf[3]);TransferData(month_moon/16+'0',1);TransferData(month_moon%16+'0',1);TransferData('/',1);TransferData(day_moon/16+'0',1);TransferData(day_moon%16+'0',1);}if(state[0]==1){Lcd_Set_Post(3,5);}else {Lcd_Set_Post(2,5);}LCD_WRITE_CHAR("星期");//----------------------星期if(time_buf1[7]==7) {LCD_WRITE_CHAR("日");}if(time_buf1[7]==6) {LCD_WRITE_CHAR("六");}if(time_buf1[7]==5) {LCD_WRITE_CHAR("五");}if(time_buf1[7]==4) {LCD_WRITE_CHAR("四");}if(time_buf1[7]==3) {LCD_WRITE_CHAR("三");}if(time_buf1[7]==2) {LCD_WRITE_CHAR("二");}if(time_buf1[7]==1) {LCD_WRITE_CHAR("一");}Lcd_Set_Post(3,0);TransferData(shishi+48,1);//----------------------时TransferData(geshi+48,1);TransferData(58,1);TransferData(shifen+48,1);//----------------------分TransferData(gefen+48,1);TransferData(58,1);TransferData(shimiao+48,1);//----------------------秒TransferData(gemiao+48,1);if(state[0]==0){bai=(temph/100); //---------------------------------温度shi=(temph%100)/10;ge=(temph%100)%10;Lcd_Set_Post(3,4);if(zerotemp==0){TransferData(' ',1);TransferData(' ',1);} Lcd_Set_Post(3,5);TransferData(shi+48,1);TransferData(ge+48,1);TransferData('.',1);TransferData(templ+48,1);TransferData(0xa1,1);TransferData(0xe6,1);Lcd_Set_Post(4,0);festival(time_buf[2],time_buf[3],time_buf[4]);//农历}}if(num==3)//----------主菜单{Lcd_Set_Post(1,0);//--------设置显示位置LCD_WRITE_CHAR(mainmenu);}if(num==4)//----------设置菜单{Lcd_Set_Post(1,0);//--------设置显示位置LCD_WRITE_CHAR(setmenu);}if(num==5)//----------时间设置{Lcd_Set_Post(1,2);//--------设置显示位置LCD_WRITE_CHAR("时间设置");Lcd_Set_Post(2,1);TransferData(shinian+48,1);//----------------------年TransferData(genian+48,1);LCD_WRITE_CHAR("年");TransferData(shiyue+48,1);//----------------------月TransferData(geyue+48,1);LCD_WRITE_CHAR("月");TransferData(shiri+48,1);//----------------------日TransferData(geri+48,1);LCD_WRITE_CHAR("日");TransferData(time_buf1[7]+48,1);//---------------星期Lcd_Set_Post(3,2);TransferData(shishi+48,1);//--------------------时TransferData(geshi+48,1);LCD_WRITE_CHAR("时");TransferData(shifen+48,1);//---------------------分TransferData(gefen+48,1);LCD_WRITE_CHAR("分");TransferData(shimiao+48,1);//--------------------秒TransferData(gemiao+48,1);}if(num==6)//----------秒表{uchar shi1,shi2,shi3,ge1,ge2,ge3;Lcd_Set_Post(1,3);//--------设置显示位置LCD_WRITE_CHAR("秒表");Lcd_Set_Post(3,2);shi1=fen/10;ge1=fen%10;TransferData(shi1+48,1);TransferData(ge1+48,1);TransferData(':',1);shi2=miao/10;ge2=miao%10;TransferData(shi2+48,1);TransferData(ge2+48,1);TransferData(':',1);shi3=xiaomiao/10;ge3=xiaomiao%10;TransferData(shi3+48,1);TransferData(ge3+48,1);}if(num==8){Lcd_Set_Post(1,2);//--------农历查询LCD_WRITE_CHAR("温度查询");Lcd_Set_Post(3,0);//--------农历查询LCD_WRITE_CHAR("最高温度"); TransferData(':',1);RdFromROM(Number,0,4);if(Number[3]==0){TransferData('-',1);}Lcd_Set_Post(3,5);TransferData(Number[0]+48,1); TransferData(Number[1]+48,1); TransferData('.',1);TransferData(Number[2]+48,1); TransferData(0xa1,1);TransferData(0xe6,1); Lcd_Set_Post(4,0);//--------农历查询LCD_WRITE_CHAR("最低温度"); TransferData(':',1);RdFromROM(Number,4,4);if(Number[3]==0){TransferData('-',1);}Lcd_Set_Post(4,5);TransferData(Number[0]+48,1); TransferData(Number[1]+48,1); TransferData('.',1);TransferData(Number[2]+48,1); TransferData(0xa1,1);TransferData(0xe6,1); }if(num==9)//----------界面菜单{Lcd_Set_Post(1,2);//--------设置显示位置LCD_WRITE_CHAR("界面选择");Lcd_Set_Post(2,0);TransferData(1+48,1);TransferData('.',1);LCD_WRITE_CHAR("多功能界面");Lcd_Set_Post(3,0);TransferData(2+48,1);TransferData('.',1);LCD_WRITE_CHAR("简洁界面");}。

电子万年历的电路原理与设计

电子万年历的电路原理与设计

湖南信息科学职业学院毕业论文(设计)电子万年历电路原理与设计学生姓名:刘文明学号:08120126年级专业:二00八级计算机控制技术专业指导老师:凌双明湖南·长沙提交日期:2011年5月目录摘要 (3)1前言 (3)2设计要求与方案论证 (3)2.1设计要求 (4)2.2系统基本方案选择和论证 (4)2.2.1 显示模块选择方案和论证 (4)2.2.2单片机串口通信的选择方案和论证 (4)3 系统的硬件设计与实现 (5)3.1 电路设计框图 (5)3.1.1万年历显示设计框图 (5)3.1.2液晶显示设计框图 (5)3.1.3单片机之间、电脑单片机联机设计图 (5)3.2 系统硬件概述 (6)3.3主要单元电路的设计 (6)3.3.1万年历单片机主控制模块的设计 (7)3.3.2光控开关模块的设计 (7)3.3.3万年历显示模块的设计 (7)3.3.4温度感应模块的设计 (8)3.3.5串口通信模块的设计 (9)4结束语 (9)参考文献 (10)附录 (10)附录1系统使用说明书 (11)附录2万年历实物图 (12)电子万年历的电路原理与设计作者:刘文明指导老师:凌双明(湖南信息科学职业学院电子信息系2008级计算机控制技术专业,长沙410128)摘要:随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活当中。

日历是人们不可或缺的日常用品。

但一般日历都为纸制用品,使用不便,寿命不长。

电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。

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

关键词:单片机89C52,串口通信,控制模块,显示模块,发声模块, 12864LCD 液晶1.前言万年历可以显示年、月、日、时、分、秒、星期等,具有日期和时间校准、闰年补偿、温度显示、闹钟、光控开关,秒表等多种功能,万年历串口通信具有电脑一键校准时间,利用电脑联机,设置心情语悟,增加名片等功能。

万年历 AT89S52 课程设计

万年历    AT89S52   课程设计

制作单片机AT89S52的万年历摘要:电子万年历是一种应用非常广泛的日常计时工具,本设计利用美国DALLAS 公司推出的具有涓细电流充电的低功耗实时时钟电路DS1320,研制了一种多功能电子万年历,主要功能包括:电子万年历要求能显示的阳历/阴历、年、月、日、星期、小时、分、秒,除此之外还有显示润年,记忆时间。

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

对于数字电子万年历采用它,具有较准的计时。

关键词:AT89S52 DS1302 74LS164 万年历The production of the calendar with the single-chipAT89S52Abstract:Electronic calendar application is a kind of tool ,which is widely used in our daily life.The design using the United States with DALLAS small trickle charge current of the low-power real-time clock circuit DS1320, developed a multi-function electronic calendar.The main features include E-calendar requirements which are shown in the solar calendar / lunar calendar, year, month, day, weeks, hours, minutes and seconds, in addition to indicate Leap year, the memory of the time. DS1302 can remember year, month, day, weekdays, hours, minutes, seconds for time,which also has the function of a leap year compensation, and long life of the DS1320, the error small. The use of digital electronic calendar for it has a quasi-time.Keywords: AT89S52 DS1302 74LS164 calendar目录第一章绪论 (3)1.1 课题背景 (3)1.2 电子万年历的目的和意义 (3)第二章系统硬件电路设计 (4)2.1 硬件设计框图 (4)2.2 AT89S52原理 (4)2.374LS164电路原理 (5)2.4 DS1302电路原理 (5)2.5 电源原理 (7)2.6 数码管原理 (8)第三章系统软件实现 (9)3.1显示及调整时间子程序流程 (9)3.2调整时间子程序流程 (9)3.3显示闰年子程序流程 (10)3.4显示星期的子程序流程 (11)3.5阳历日期推算阴历日期流程图 (11)总结 (12)致谢 (13)参考文献 (14)附录1.元件清单 (15)附录2.电路原理图 (16)附录3.程序 (17)第一章绪论1.1课题背景在生活中,我们经常能看到各种各样的制作精美的万年历,万年历大有取代常规钟表的趋势.随着人们生活水平的提高,智能产品越来越受到人们的欢迎.而单片机,传感器各种集成电路起到关键作用.希望通过本设计能够对未来的趋势有所把握,从而适应社会需要.1.2 电子万年历的目的和意义电子万年历是一种应用非常广泛的日常计时工具,液晶显示的万年历已经越来越普及,特别是适合在家庭居室、办公室、大厅、会议室和广场使用。

单片机的工作原理是什么?

单片机的工作原理是什么?

单片机的工作原理是什么?一、单片机程序执行过程单片机的工作过程实质就是执行程序的过程,也就是我们常说的逐条执行指令的过程。

单片机每执行一条指令均可分为三个阶段:取出指令、分析(译码)指令、执行指令。

大多数8位单片机的取指、译码、执行这三步都是按照串行顺序依次进行的。

32位单片机的这三步也是必不可少的,但是它是采用预取指令的流水线方式操作,并采用精简指令集,每条指令都是单周期指令,所以它允许指令并行操作。

例如再取出第一条指令后,开始对这条指令译码的同时,取出第二条指令;在第一条指令执行时,第二条指令开始译码,然后取出第三条指令,第二条指令同时执行。

如此循环。

从而使CPU在同一时间对不同指令实现不同操作,这样就实现了指令的并行处理,大大加快指令的执行速度。

二、单片机执行指令的三个阶段下面分别说说单片机执行指令的三个阶段。

1、取指令阶段根据程序计数器PC的值,从程序存储器读出当前要执行的指令,并将该指令送到指令寄存器。

2、指令译码阶段取出指令寄存器中的指令操作码进行译码,解析出指令要实现那种操作。

(例如是执行数据传送还是进行数据的加减运算)3、执行指令阶段执行指令规定的操作。

(例如对于带操作数的指令,先取出操作码,再取出操作数,然后按照操作码的类型对操作数进行操作)三、单片机工作过程单片机采用“存储程序”的工作方式,即事先把程序加载到单片机的存储器中,当启动运行后,计算机便自动进行工作。

1、单片机的模型机指令表下表是单片机的模型机指令表,我们以LDA 23这条指令为例,来说明单片机的指令执行过程。

2、执行一条指令的顺序单片机执行程序是一条指令一条指令执行的,执行一条指令的过程可分为两个阶段。

在单片机中,“存储程序”第一条指令的第一个字节一定是操作码。

这样,CPU首先进入取指阶段,从存储器中取出指令,并通过CPU译码后,转入执行指令阶段,在这期间,CPU执行指令指定的操作。

取指阶段是由一系列相同的操作组成的,因此,取指阶段的时间总是相同的。

智能时钟万年历(详细电路图)

智能时钟万年历(详细电路图)

《嵌入式课程设计》讲义项目1 智能数字万年历一.项目指标分析项目指标要求如下:1. 显示年、月、日、时、分、秒和星期。

2. 实时显示温度。

3. 可手动调整时间。

4. 采用LCD显示。

基于以上要求,核心控制芯片选用STC89C51;时钟芯片选用DS1302;温度传感器选用DS18B20;液晶屏选用LCD1602;设置按键,以便于调整时间。

二.电路原理系统电路功能图如图1所示:图1 智能数字万年历电路功能图由图1可知,P2口控制LCD的数据端;P3.5、P3.6和P3.7控制着LCD的片选、读/写和寄存器选择信号;可调电阻RP2用于调节屏的显示对比度。

P3.4是温度传感器DS18B20的1-wire接口,即片选、时钟和数据信号均由P3.4口控制。

P0.5、P0.6和P0.7是时钟芯片DS1302的SPI接口,为使信号控制更稳定,这三个接口上都上拉了10KΩ电阻;为获得精准的时钟信号,选用频率为32.768KHz的外部晶振对DS1302提供振荡信号。

P0.0-P0.3控制着四个按键,以便于调整时间。

三.程序设计基于这个项目,程序的设计可分成各芯片驱动程序设计和控制算法程序两部分。

1.各芯片的驱动程序设计在写驱动程序时,首先通读芯片手册,以掌握主要技术指标;然后可按照以下3个步骤进行:(1)分清楚各芯片的通信属于哪种接口方式,例如:时钟芯片DS1302按照SPI 接口进行通信;温度传感器DS18B20按照1-wire接口进行通信;液晶屏LCD1602采用常规的并行数据传输方式。

(2)仔细分析芯片时序图,弄清楚片选信号是高电平有效还是低电平有效;数据是在时钟信号的上升沿还是下降沿时打入;数据前还是时钟前等。

(3)将功能程序函数化、驱动程序模块化。

2.控制算法程序设计这里的算法主要集中在如何设置按键识别程序,即便于调整时间,又不影响液晶屏的显示。

这里,提供两种思想以便参考。

(1)循环扫描方式流程图图2 循环扫描方式流程图(2图3 状态机方式流程图将图2和图3比较起来看,两种方式的最大差别在于“10ms消抖时间如何度过?”。

51单片机课程设计——电子万年历

51单片机课程设计——电子万年历

电子万年历的设计学院计算机与控制工程学院专业班级自动化学生姓名指导教师2010年6月25日引言随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。

为了在观测时间的同时,能够了解其它与人类密切相关的信息,比如温度、星期、日期等,电子万年历诞生了,它集时间、日期、星期和温度功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

本设计主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、LED 动态扫描显示屏显示。

AT89C51单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。

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

万年历单片机原理
万年历单片机原理是基于单片机技术的一种应用,用于实现日期、时钟等功能。

单片机是一种集成了处理器、存储器、输入输出和定时器等功能的集成电路。

万年历单片机是通过编程控制单片机的各个功能模块完成日期和时钟的计算和显示。

万年历单片机的原理主要包括以下几个方面:时钟模块、存储器模块、输入输出模块和编程控制模块。

时钟模块是实现精确时间的关键模块,它通常由一个晶振和相应的电路组成。

晶振会产生一个固定频率的震荡信号,通过计数器和分频器等电路将震荡信号转换为与实际时间相关的时钟信号。

时钟信号提供给其他功能模块,用于同步各个模块的工作。

存储器模块用于保存日期、时间等信息。

其中,时间的存储通常使用寄存器或者变量来保存时、分、秒等数据。

日期的存储则需要考虑年、月、日等信息,可以使用寄存器、RAM等储存器进行保存。

输入输出模块用于与外部设备进行数据的输入和输出。

通常,万年历单片机的输入可以通过按键、触摸屏等方式实现,而输出可以通过液晶显示器、LED数码管等方式显示日期、时间等信息。

编程控制模块是实现万年历功能的核心部分,通过对单片机的编程控制,可以实现日期、时间的计算、显示以及闹钟、定时器等特殊功能的实现。

编程控制模块通常包括中断控制、定时器控制、显示控制等子模块。

在编程控制模块中,中断控制用于实现按键输入的响应,当按下按键时,中断控制模块会检测到中断信号,然后调用相应的处理函数进行处理。

定时器控制则可以实现循环计时、闹钟、定时器等功能。

显示控制则负责将计算出来的日期、时间格式化并输出到显示屏上。

万年历单片机的工作流程通常是:通过输入设备获取外部输入的日期、时间等信息,然后通过编程控制模块进行相应的计算和处理,最后再通过输出设备将结果显示出来。

总结来说,万年历单片机通过时钟模块提供准确的时钟信号,通过存储器模块保存日期、时间等信息,通过输入输出模块与外部设备交互,通过编程控制模块实现日期、时间的计算和显示。

通过这些模块的协同工作,实现了万年历单片机的功能。

相关文档
最新文档