基于单片机的万年历设计ppt

合集下载

基于单片机的万年历

基于单片机的万年历

基于单片机的万年历单片机课程设计题目基于单片机的万年历目录1 绪论 (1)1.1设计目的 (1)1.2 发展现状 (1)1.3 解决问题 (1)2基于单片机的万年历主要元器件介绍 (2)2.1本设计所需的主要元器件 (2)2.2 STC89C52RC单片机 (2)2.2.1单片机主要特性 (2)2.2.2单片机引脚说明 (4)2.3 DS1302时钟芯片 (4)2.4 LCD1602 (6)2.5独立按键 (7)3基于单片机的万年历的软件设计 (7)3.1 DS1302时钟芯片程序设计 (8)4 总结 (9)参考文献 (11)附录1:总体电路原理图 (12)附录2:总程序 (13)附录3:实物图 (25)1 绪论1.1设计目的培养和锻炼在学习完本课后综合运用所学理论知识,解决实际工程设计和应用问题的能力。

通过课程设计,要求熟悉和掌握仿真系统的软件设计方法、设计步骤,以及硬件的设计方法、设计步骤,得到仿真系统应用方面的初步练习。

本设计主要是采用51单片机来实现。

自己动手设计与制作可以对硬件的结构和功能有更深的认识,并与软件结合,以达到理论与实践更好的结合,进一步提高综合运用所学知识进行设计的能力。

这是对自己大学四年的学习的检验,具有重要的意义。

1.2 发展现状目前市场上的电子万年历并不是采用51单片机作为主控制器的,基于单片机的万年历一般是学生和单片机爱好者在进行设计,谈不上占有市场。

也许就是这样,研究单片机万年历的人不在少数,并且都在努力。

努力不是单方面的,单片机的功能也应该要提高,STC89C52单片机就是这样的例子,其功能虽然没有大幅度提高,但使用起来更方便了。

我相信,在不久的将来肯定会有功能更强大成本更低的单片机出现,给我们的设计带来更多的便利。

1.3 解决问题本课题主要通过单片机的功能和应用,利用Keil[1]编程软件和Proteus仿真软件进行设计,并制作实物。

设计要达到预期的效果要解决以下问题:(1)认真设计好万年历的逻辑原理图;(2) 熟练使用C语言,运用Keil编程软件进行软件设计;(3) 在Proteus仿真平台上,对程序进行编译仿真;(4) 认真仔细地对万年历进行组装焊接;2基于单片机的万年历主要元器件介绍2.1本设计所需的主要元器件(1)单片机:STC89C52RC;(2)时钟芯片:DS1302;(3)液晶:LCD1602;(4)按钮开关。

基于单片机的万年历设计

基于单片机的万年历设计

嵌入式系统概述题目:基于单片机的万年历设计班级:自动化1304班一、系统功能概述此设计以AT89C51为控制芯片,用RTC定时器实现万年历的控制与设计。

所进行控制的语句是通过C语言实现的,并且用串口助手显示能动态地显示当前时间信息,包括年、月、日、时、分、秒。

二、硬件设计原理图:1.万年历电路图设计如下:三、软件设计:1.设计思路:本设计主要由3大部分电路组成:单片机最小系统电路、时钟显示电路和参数修改电路。

其中单片机最小系统主要由复位电路和时钟电路组成。

设计中,当接收到修改参数的指令,将停止时钟的继续,转而进行指令程序,在指令结束后转回断点处继续进行计时。

2.流程图:四、基于单片机万年历的源代码:#include <reg52.h>#include <intrins.h>#include <string.h>#define uint unsigned int#define uchar unsigned charsbit IO = P1^0;sbit SCLK = P1^1;sbit RST = P1^2;sbit RS = P2^0;sbit RW = P2^1;sbit EN = P2^2;sbit KEY1=P3^4;sbit KEY2=P3^5;sbit KEY3=P3^6;uchar*WEEK[]={"SUN","***","MON","TUS","WEN"," THU","FRI","SAT"};uchar LCD_DSY_BUFFER1[]={"DATE 00-00-00 "};uchar LCD_DSY_BUFFER2[]={"TIME 00:00:00 "};uchar DateTime[7]; //秒,分,时,日,月,周,年ucharflag,flag_1,i,miao,fen,shi,ri,yue,zhou,nian; void DelayMS(uint ms){uchar i;while(ms--){for(i=0;i<120;i++);}}/*********************************************** ******/ //函数名称:Write_A_Byte_TO_DS1302(uchar x)//函数功能: 向1302写入一个字节//入口参数: x//出口参数: 无//调用子程序: 无/*********************************************** ******/void Write_A_Byte_TO_DS1302(uchar x){uchar i;for(i=0;i<8;i++){IO=x&0x01;SCLK=1;SCLK=0;x>>=1;}}void Write_DS1302(uchar add,uchar num) {SCLK=0;RST=0;RST=1;Write_A_Byte_TO_DS1302(add);Write_A_Byte_TO_DS1302(num);RST=0;SCLK=1;}/*********************************************** ******///函数名称:Get_A_Byte_FROM_DS1302()//函数功能: 从1302读一个字节//入口参数: 无//出口参数: b/16*10+b%16 //调用子程序: 无/*********************************************** ******/uchar Get_A_Byte_FROM_DS1302(){uchar i,b=0x00;for(i=0;i<8;i++){b |= _crol_((uchar)IO,i);SCLK=1;SCLK=0;}return b/16*10+b%16;}/*********************************************** ******///函数名称: Read_Data(uchar addr)//函数功能: 指定位置读数据//入口参数: addr//出口参数: dat//调用子程序: Write_Abyte_1302(addr) /*********************************************** ******/uchar Read_Data(uchar addr){uchar dat;RST = 0;SCLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);dat = Get_A_Byte_FROM_DS1302();SCLK=1;RST=0;return dat;}/*********************************************** ******///函数名称: GetTime()//函数功能: 读取时间//入口参数: 无//出口参数: 无//调用子程序: 无/*********************************************** ******/void GetTime(){uchar i,addr = 0x81;for(i=0;i<7;i++){DateTime[i]=Read_Data(addr);addr+=2; }}uchar Read_LCD_State(){uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN = 0;DelayMS(1);return state;}void LCD_Busy_Wait(){while((Read_LCD_State()&0x80)==0x80); DelayMS(5);}void Write_LCD_Data(uchar dat) //写数据到1602{LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1); EN=0;}void Write_LCD_Command(uchar cmd) //写命令{LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1); EN=0;}void Init_LCD() //1602 初始化{Write_LCD_Command(0x38);DelayMS(1);Write_LCD_Command(0x01);DelayMS(1);Write_LCD_Command(0x06);DelayMS(1);Write_LCD_Command(0x0c);DelayMS(1);}void Set_LCD_POS(uchar p){Write_LCD_Command(p|0x80);}void Display_LCD_String(uchar p,uchar *s) //1602显示{uchar i;Set_LCD_POS(p);for(i=0;i<16;i++){Write_LCD_Data(s[i]);DelayMS(1);}}void write_com(uchar com){RS=0;P0=com;DelayMS(5);EN=1;DelayMS(5);EN=0;}void write_date(uchar date){RS=1;P0=date;DelayMS(5);EN=1;DelayMS(5);EN=0;}void display(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void display1(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);}void Format_DateTime(uchar d,uchar *a) {a[0]=d/10+'0';a[1]=d%10+'0';}uchar ZH(uchar dat){uchar tmp;tmp=dat/10;dat=dat%10;dat=dat+tmp*16;return dat;}void Keyscan(){flag_1=1;while(flag_1){if(KEY1==0){DelayMS(5);while(!KEY1);flag=(flag+1)%8;switch(flag){case(1): Write_LCD_Command(0x0f);Write_LCD_Command(0x80+0x40+11);break;case(2):Write_LCD_Command(0x80+0x40+8);break;case(3):Write_LCD_Command(0x80+0x40+5);break;case(4):Write_LCD_Command(0x80+13);break;case(5):Write_LCD_Command(0x80+11);break;case(6):Write_LCD_Command(0x80+8);break;case(7):Write_LCD_Command(0x80+5);break;case(0): flag_1=0;Write_LCD_Command(0x0c);//miaoWrite_DS1302(0x8e,0x00);Write_DS1302(0x80,ZH(DateTime[0]));Write_DS1302(0x8e,0x80);//fenWrite_DS1302(0x8e,0x00);Write_DS1302(0x82,ZH(DateTime[1]));Write_DS1302(0x8e,0x80);//shiWrite_DS1302(0x8e,0x00);Write_DS1302(0x84,ZH(DateTime[2]));Write_DS1302(0x8e,0x80);//riWrite_DS1302(0x8e,0x00);Write_DS1302(0x86,ZH(DateTime[3]));Write_DS1302(0x8e,0x80);// yueWrite_DS1302(0x8e,0x00);Write_DS1302(0x88,ZH(DateTime[4]));Write_DS1302(0x8e,0x80);//nianWrite_DS1302(0x8e,0x00);Write_DS1302(0x8c,ZH(DateTime[6]));Write_DS1302(0x8e,0x80);break;}}if(flag!=0){if(KEY2==0){DelayMS(5);if(KEY2==0)while(!KEY2);if(flag==1) //miao{DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);}if(flag==2) //fen{DateTime[1]++;if(DateTime[1]==60)DateTime[1]=0;write_com(0x80+0x40+8);display(8,DateTime[1]);}if(flag==3) //shi{DateTime[2]++;if(DateTime[2]==24)DateTime[2]=0;write_com(0x80+0x40+5);display(5,DateTime[2]);}/* if(flag==4) //zhou {DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);} */if(flag==5) // ri{DateTime[3]++;if(DateTime[3]==30)DateTime[3]=0;write_com(0x80+11);display1(11,DateTime[3]); }if(flag==6) //yue{DateTime[4]++;if(DateTime[4]==13)DateTime[4]=0;write_com(0x80+8);display1(8,DateTime[4]);}if(flag==7) //nian{DateTime[6]++;if(DateTime[6]==100)DateTime[6]=0;write_com(0x80+5);display1(5,DateTime[6]);}}}if(flag!=0){if(KEY3==0){DelayMS(5);if(KEY3==0)while(!KEY3);if(flag==1) //miao{DateTime[0]--;if(DateTime[0]==-1)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);}if(flag==2) //fen{DateTime[1]--;if(DateTime[1]==-1)DateTime[1]=0;write_com(0x80+0x40+8);display(8,DateTime[1]);}if(flag==3) //shi{DateTime[2]--;if(DateTime[2]==-1)DateTime[2]=0;write_com(0x80+0x40+5);display(5,DateTime[2]);}/* if(flag==4) //zhou {DateTime[0]++;if(DateTime[0]==60)DateTime[0]=0;write_com(0x80+0x40+11);display(11,DateTime[0]);} */if(flag==5) // ri{DateTime[3]--;if(DateTime[3]==-1)DateTime[3]=0;write_com(0x80+11);display1(11,DateTime[3]); }if(flag==6) //yue{DateTime[4]--;if(DateTime[4]==-1)DateTime[4]=0;write_com(0x80+8);display1(8,DateTime[4]);}if(flag==7) //nian{DateTime[6]--;if(DateTime[6]==-1)DateTime[6]=0;write_com(0x80+5);display1(5,DateTime[6]);}}}}}void main() {Init_LCD(); while(1) {EA=1;EX0=1;GetTime();Format_DateTime(DateTime[6],LCD_DSY_BUF FER1+5); //年Format_DateTime(DateTime[4],LCD_DSY_BUF FER1+8); //月Format_DateTime(DateTime[3],LCD_DSY_BUF FER1+11); //日strcpy(LCD_DSY_BUFFER1+13,WEEK[DateTim e[5]]); //周Format_DateTime(DateTime[2],LCD_DSY_BUF FER2+5); //时Format_DateTime(DateTime[1],LCD_DSY_BUF FER2+8); //分Format_DateTime(DateTime[0],LCD_DSY_BUF FER2+11); //秒Display_LCD_String(0x00,LCD_DSY_BUFFER1);Display_LCD_String(0x40,LCD_DSY_BUFFER2); }}void int0() interrupt 0{Keyscan();}五、运行结果:。

自己制作的单片机万年历程序+原理图

自己制作的单片机万年历程序+原理图

自己制作的单片机万年历程序+原理图单片机万年历仿真原理图如下仿真Altium Designer画的万年历原理图和PCB图如下:PCB原理图基于51单片机,可以完成时钟显示、公历显示、农历显示、温度显示、闹钟报警定时的LCD时钟PPT内容预览:本设计使用AT89C51来做主控芯片,其强大的功能足够实现我们设计的所有功能。

使用LCD1602的液晶显示器来进行显示。

使用Keil uVision5进行编程。

通过Proteus8.6来进行仿真。

点击一次K1进入时钟设置页面,通过点击K2切换时、秒、分、星期、年、月、日,通过K3与K4实现加减来完成时钟的设置点击两次K1进入闹钟设置页面,通过点击K2切换开关、时、秒、分,通过K3与K4实现加减完成闹钟的设置。

单片机源程序如下注释是很全的#include //调用单片机头文件#define uchar unsigned char //无符号字符型宏定义变量范围0~255#define uint unsigned int //无符号整型宏定义变量范围0~65535#include "eeprom52.h"#include "nongli.h"#include "intrins.h"bit flag_200ms ;bit flag_100ms ;sbit beep = P3^7; //蜂鸣器定义bit flag_beep_en;uint clock_value; //用作闹钟用的sbit dq = P3^1; //18b20 IO口的定义uint temperature ; //温度变量uchar flag_nl; //农历阳历显示标志位uchar menu_1,menu_2;uchar key_time,flag_value; //用做连加的中间变量bit key_500ms ;uchar n_nian,n_yue,n_ri; //农历显示的函数#include "ds1302.h"#include "lcd1602.h"/******************把数据保存到单片机内部eeprom中******************/void write_eeprom(){SectorErase(0x2000);byte_write(0x2000, fen1);byte_write(0x2001, shi1);byte_write(0x2002, open1);byte_write(0x2058, a_a);}/******************把数据从单片机内部eeprom中读出来*****************/void read_eeprom(){fen1 = byte_read(0x2000);shi1 = byte_read(0x2001);open1 = byte_read(0x2002);a_a = byte_read(0x2058);}/**************开机自检eeprom初始化*****************/void init_eeprom(){read_eeprom(); //先读if(a_a != 1) //新的单片机初始单片机内问eeprom{fen1 = 3;shi1 = 8;a_a = 1;write_eeprom(); //保存数据}}/***********************18b20初始化函数*****************************/void init_18b20(){bit q;dq = 1; //把总线拿高delay_uint(1); //15usdq = 0; //给复位脉冲delay_uint(80); //750usdq = 1; //把总线拿高等待delay_uint(10); //110usq = dq; //读取18b20初始化信号delay_uint(20); //200usdq = 1; //把总线拿高释放总线}/*************写18b20内的数据***************/void write_18b20(uchar dat){uchar i;for(i=0;i<8;i++){ //写数据是低位开始dq = 0; //把总线拿低写时间隙开始dq = dat & 0x01; //向18b20总线写数据了delay_uint(5); // 60usdq = 1; //释放总线}}/*************读取18b20内的数据***************/uchar read_18b20(){uchar i,value;for(i=0;i<8;i++){dq = 0; //把总线拿低读时间隙开始value >>= 1; //读数据是低位开始dq = 1; //释放总线if(dq == 1) //开始读写数据value |= 0x80;delay_uint(5); //60us 读一个时间隙最少要保持60us 的时间}return value; //返回数据}/*************读取温度的值读出来的是小数***************/uint read_temp(){uint value;uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50); //500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe); //发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low; //把读出的温度低位放到value的低八位中value *= 0.625; //转换到温度值小数return value; //返回读出的温度带小数}/******************1ms 延时函数*******************/void delay_1ms(uint q){uint i,j;for(i=0;i<>< p=""><>for(j=0;j<120;j++);}/******************写星期函数*******************/void write_week(uchar hang,uchar add,uchar week)//写星期函数{if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);。

基于单片机的万年历设计

基于单片机的万年历设计

题目:基于单片机的电子万年历设计带温度显示可调闹钟万年历摘要本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。

系统最大的特点是体现了较强的人机交互和独立的模块化程序设计。

温度采集选用DS18B20芯片,数据显示采用1602A液晶显示模块,在第一行显示年月日、星期以及当前的状态,第二行显示温度和时间,合理的利用液晶显示区域。

51主芯片利用定时中断产生时间,控制着液晶的显示更新、温度的实时变化以及按键的读取处理,而对于闹钟,实际上就是时间里的一个嵌套程序。

时间和闹钟的值由按键调整设置,采用通用的二十四小时制。

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

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

关键字:万年历;温度计;闹钟;液晶显示一、方案设计与论证根据要求,系统分为四个基于单片机的万年历设计摘要随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

目前,单片机技术的应用产品已经走进了千家万户。

电子万年历的出现给人们的生活带来了诸多方便。

本设计是一个基于AT89S52单片机的日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还提供了农历信息,具有调整时间,温度采集,闹钟及个性化的闹铃等功能。

系统所用的时钟日历芯片DS1302具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。

采用AT89S52单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。

此系统计时精确,价格低廉,可以广泛应用在生活,学习和工作等任何领域,并且起到重要作用。

关键词:万年历;单片机;时钟芯片;温度芯片;公历转农历The Design of Electronic Calendar clock Based on Single-chipMicrocomputerAbstractAlong with the technical fast development, time passing, to from the view sun, the pendulum clock to the present electron clock, the humanity studies unceasingly, innovates unceasingly the record. At present, the monolithic integrated circuit technology's application product already entered everyone. The electronic ten thousand calendar's appearances have brought conveniently many for people's life.This design is one based on AT89S52 single-chip microcomputer calendar display system,it can demonstrate years, the month, the date of the Gregorian calendar, and hour, minute, second, temperature, week and so on. Moreover it has also provided the lunar calendar information, adjustable time pattern, temperature sample, alarm system, individual quarter-bell and so on. The system clock calendar DS1302 with high performance, low power consumption and simple interface features Circuit enable the system to streamline programming convenience, but also highly functional. The problems of inaccurate, unreliable, and the uniform inferior can be come up when you use the analogous circuit. However, it can be improved when you use the clock system based on AT89S52 single-chip microcomputer. The system time accurate, low cost and can be widely applied to the life, study and work in any field, and has played an important role.Key words:The Electronic Calendar Clock;Single-chip Microcomputer;The Time Calendar Clock;Temperature Chip;The Lunar Calendar Convert To The Gregorian Calendar目录摘要 (I)Abstract (I)第一章引言 (1)1.1 概述 (1)1.2 单片机的简介 (1)第二章方案设计与论证 (4)2.1 单片机芯片设计与论证 (4)2.2 电源模块设计与论证 (5)2.4 时钟模块设计与论证 (5)2.5 温度采集模块设计与论证 (5)2.6 显示模块模块设计与论证 (6)第三章系统的硬件设计 (7)3.1 主控芯片AT89S52与最小外围系统 (7)3.1.1 AT89S52的概述 (7)3.1.2 AT89S52最小系统的设计 (10)3.2 时钟芯片DS1302接口设计与性能分析 (11)3.2.1 DS1302性能简介 (11)3.2.2 DS1302接口电路设计 (12)3.3 温度芯片DS18B20接口设计与性能分析 (14)3.3.1 DS18B20性能简介 (14)3.3.2 DS18B20接口电路设计 (15)3.3.3 DS18B20的工作时序 (16)3.4 闹钟模块接口设计与性能分析 (17)3.4.1 AT24C02器件使用 (17)3.4.2 接口电路设计 (19)3.5 LCD显示模块 (19)3.5.1 LCM1602的特性及使用说明 (19)3.5.2 LCM1602与MCU的接口电路 (21)3.6 按键模块设计 (21)第四章软件设计 (23)4.2 LCD驱动及液晶显示 (24)4.3 按键识别及处理 (25)4.4 温度数据采集 (26)4.5 时间数据采集 (27)4.6 闹钟程序 (28)4.7 公历转农历的实现 (28)第五章系统的调试 (30)总结 (31)参考文献 (32)附录A 设计原理图 (33)附录B 源程序 (34)附录C 公历对应的农历数据表 (55)致谢 (58)第一章引言1.1 概述随着电子技术的发展,人类不断研究,不断创新纪录。

基于单片机的万年历设计

基于单片机的万年历设计

目录1.引言 (1)1.1背景 (1)1.2应用价值 (1)1.3设计目的 (2)2.设计方案 (3)2.1设计任务 (3)2.2设计内容 (3)3.总体设计及核心部件简介 (3)3.1总体设计框图 (3)3.2硬件设计 (5)3.3软件设计 (6)3.3.1主程序: (6)3.3.2LCD12864显示 (27)3.3.3DS18B20程序段 (32)3.3.4DS1302程序段 (35)3.4时钟芯片DS1302 (40)3.4.1 DS1302芯片相关知识 (40)3.5温度传感器DS18B20 (43)3.5.1DS18B20芯片相关知识 (43)3.6显示LCD12864 (45)3.6.1LCD12864的基本知识 (45)4.仿真与调试 (48)6.参考文献 (50)附录1.电路硬件仿真图 (50)附录2.元器件清单 (50)1.引言1.1背景1946年2月15日,第一台电子数字计算机ENIAC问世,这标志着计算机时代的到来。

计算机的发展,经历了电子计算机、晶体管计算机、集成电路计算机、大规模集成电路计算机和超大规模集成电路计算机五个时代。

微处理器、存储器和I/O接口电路构成微型计算机,从应用形态上,微型计算机可以分为三种:多板机(系统机)、单板机和单片机。

在一片集成电路芯片上集成微处理器、存储器和I/O接口电路,从而构成了单芯片微型计算机,即单片机。

单片机体积小、控制功能强,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势!单片机技术发展十分迅速,产品种类以琳琅满目,其发展经过三个阶段:其一:单片机形成阶段。

1976年,Intel公司提出了MCS-48系列单片机。

主要特点:在单个芯片内完成了CPU、存储器和I/O接口等部件的集成;但存储器容量较小,寻址范围小(不大于4K),无串行接口,指令系统功能不强。

其二:单片机结构成熟阶段。

1980年,1976年,Intel公司提出MCS-51系列单片机。

基于单片机控制的电子万年历设计

基于单片机控制的电子万年历设计

基于单片机控制的电子万年历设计1设计要求功能:电子万年历能显示阳历、时间、室温,并能表明是否是闰年,通过按键实现切换。

本课题以单片机为核心,设计并制作出智能LCD电子钟,具有以下基本功能:计时、秒、分、时、天、周、月、年;能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并显示。

扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键切换轮流显示时间、年份、日期、星期。

2方案论证与对比2.1液晶显示器控制方式选择采用LCD液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,LCD可分为被动矩阵式LCD及主动矩阵式LCD两种。

可根据不同需要采用不同的方式。

方案一被动矩阵式LCD被动矩阵式LCD在亮度及可视角方面受到较大的限制,反应速度也较慢。

由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。

方案二主动矩阵式LCD目前应用比较广泛的主动矩阵式LCD,也称TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)。

TFT液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。

与CRT显示器相比,LCD显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但CRT技术较为稳定成熟。

相比之下,本设计当中选用方案二主动矩阵式LCD方式。

2.2 并行接口动态显示电路选择可以采取串行接口动态显示电路或者并行接口动态显示电路,比较如下:方案一串行接口动态显示电路利用8051系列单片机内部的串行接口,也可以实现动态显示及键盘处理。

这样不但可以节省8051的并行I/O接口,而且在大多数不用单行口的情况下,可免于扩展接口。

在这种方法中,串行口工作在方式0状态,相当于一个移位寄存器,其输入/输出通过RXD引脚,移位脉冲则由TXD输出。

每次输入或输出8位数据(一个字节)。

基于51单片机的万年历设计

基于51单片机的万年历设计

单片机课程设计题目基于51 单片机的万年历设计学生姓名专业班级学号院(系)指导教师完成时间目录1课程设计的目的1..2课程设计的任务与要求....................... 1.2.1设计任务1..2.2设计要求.............................................. 1. .3单片机发展概况1..4设计原理与功能说明4..4.1设计思想4..4.2总体电路图5..4.3时钟模块5..4.4液晶显示模块6..4.5按键模块7..5系统测试7...5.1硬件测试.............................................. 7. .5.2软件测试8..6总结8...参考文献.............................................. 1.0 .附录一:总体电路原理图....................... 1.1附录二:主程序.............................................. 1.. 2附录三:元器件清单........................... 2.7附录四:实物图 (2)..81课程设计的目的1.通过制作万年历,可以对单片机这门课程更好的认识。

2.理论与实践结合,提高自己的动手能力。

3.学会与合作者更好的交流学习,共同进步和提高。

4.能够增长查阅资料的能力,视野更加开阔。

5.拓展其他学科的联系,全面发展。

6.培养自我发现问题,解决问题的能力。

2课程设计的任务与要求2.1设计任务1.可以去学校图书馆或者网上,搜集整理相关的资料,做好前期理论准备,为以后设计电路,看懂电路图做理论支持。

2.构想万年历电路图,并且具有可行性,画出电路图。

3.列举电路所需的电子元件,仔细对比所需的元件的参数,通过去电子元件经销商或者网购购买。

2.2设计要求1.显示年、月、日、时、分、秒。

毕业设计---基于单片机的多功能电子万年历的设计

毕业设计---基于单片机的多功能电子万年历的设计

基于单片机的多功能电子万年历的设计摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。

本系统的硬件部分主要由A VR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。

关键词:单片机;液晶技术;万年历;时钟芯片Design of Multifunctional digital Perpetual Calendar Based on MCUAbstractWith the development of technology,Since the concept of the sun, Baizhong, andnow the electronic bell,human beings continue to study and constant innovation record。

This paper-based Microcontroller Development of Intelligent electronic calendar, The calendar can display real-time in the calendar year, month, day, hours, minutes and seconds,a nd the correspond ing date of the Lunar New Year, 24 Solar Terms,at the same time also to real-time measurement from the ambient temperature,In addition to the user through the keyboard input years of history,for the correspond ing period of the Lunar.The system hardware from some of the major A VR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design and implementation of hardware and related circuit;Software contains some of the major Lunar calendar to the algorithm design module,dynamic digital display modules,time to read,temperature detection module,Press enter the scanning module.In this paper, the system software modules and flow chart of the list of software programs,Finally, the realization of the overall system design, simulation and debugging process, the next step is the improvement programmes.Keywords:MCU;crystal technology;Calendar;Clock chip目录引言 (1)第1章绪论 (2)1.1课题的背景与意义 (2)1.2 数字万年历的现状与发展 (2)1.3 论文的主要工作及章节安排 (3)1.4 本章小结 (3)第2章方案论证比较.............................................................................. (4)2.1 多功能数字万年历系统概述 (4)2.2计时方案 (4)2.3温度检测方案 (5)2.4显示方案 (5)2.5本章小结 (5)第3章系统硬件设计 (6)3.1 主控制器ATmega16 单片机介绍 (6)3.2 时钟电路DS1302 (6)3.3 温度检测DS18B20 (7)3.4 动态显示 (8)3.5 键盘接口 (8)3.6 语音闹铃模块 (8)3.7 电源设计 (9)3.8本章小结 (11)第4章系统软件设计 (12)4.1 公历计算显示程序设计 (13)4.1.1 DS1302 内部寄存器 (13)4.1.2 时间读取程序设计 (15)4.2 农历转换程序设计 (16)4.2.1 公历转农历算法研究 (16)4.2.2 干支纪年简介 (18)4.2.3 公历转农历程序 (18)4.3 温度测量程序设计 (20)4.3.1 DS18B20 的测温原理 (20)4.3.2 温度程序 (21)4.4 二十四节气算法研究 (23)4.5系统仿真 (24)4.6本章小结 (25)结论与展望 (26)致谢 (27)参考文献 (28)附录 A 电子万年历原理图 (29)附录 B 外文文献与译文 (30)英文原文: (30)中文译文: (33)附录 C 参考文献题录及摘要 (35)附录 D 电子万年历源程序 (37)插图清单图2-1 数字万年历系统框图 (4)图3-1 DS1302与ATmega16连接图 (7)图3-2 DS18B20与AtMEGA16连接图 (8)图3-3 报时电路 (9)图3-4 稳压电源原理图 (10)图3-5 电源电路 (10)图4-1 系统程序流程图 (13)图4-2 公历程序流程图 (14)图4-3 DS18B20测温原理 (21)表格清单表3-1 LCD12864显示内容 (8)表4-1 DS1302的寄存器及其控制字 (14)表4-2 RS位配置 (15)引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时间。

单片机ppt万年历

单片机ppt万年历

原理分析
带温度显示的万年历
2.4 LCD显示电路
(2)广脚介绍 D0—D7数据传送引脚, VSS为接地线, VDD为电源线,
RS为寄存器选择信号,高电平 选择数据寄存器,低电平选择 指令寄存器。
RW为读写控制信号,高电平读 ,低电平写。
E使能信号,读状态下高电平 有效,写状态下下降沿有效。
原理分析
使用软件消抖,加10k的上拉电阻用来提高抗干
扰能力。如图所示。
s2键: 在正常显示时间状态下每按一次S2键,
依次修改秒、分、时、星期、日、月。
S3键:当S2键按下后,按下S3键时,对所
校对的数字加一。
S4键:当S3键按下后,按下S4键时,对所校对的
数字减一。
S5键:按下S5键后,跳出矫正模式,时间正常运
显示。
带温度显示的万年历
二.原理分析 2.1主控制器 2.2晶振电路 2.3复位电路
1.7按键模块
2.4 LCD显示电路 2.5温度感应电路 2.6按键模块
原理分析
带温度显示的万年历
2.1主控制器
单片机STC89C52 具有低电压供电和体积小等特 点,如图所示。
原理分析
带温度显示的万年历
2.2晶振电路
行。 接口:P3^0,P3^1,P3^2,P3^3
原理分析
带温度显示的万年历
程序:
原理分析
AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容 C1、C2按图所示方式连接。 晶振、电容C1/C2及片内与非门(作为反馈、放 大元件)构成了电容三点式振荡器,振荡信号频 率与晶振频率及电容C1、C2的容量有关,但主要 由晶振频率决定,范围在0~33MHz之间,电容C1 、C2取值范围在5~30pF之间。 根据实际情况,本设计晶振选择频率为12MHZ (好像只有11.059MHz)。

基于单片机的万年历设计

基于单片机的万年历设计

摘要电子万年历是一种十分广泛的普遍计时用具,它不但可以对时间技术,还可以对日期、湿度等进行显示,所以在现代社会受到普遍应用。

本设计是一个基于51AT单片机的多功能日历显示系统,本设计能显示89C公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有日期调整、时间校准以及温度采集等功能。

系统所用的时钟日历芯片DS1302和数字式温度传感器DS18B20具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。

采用51AT单片机的万年历系统可以很好的改89C善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。

本文设计是用单片机为主控制,通过电路仿真而实现的。

在Proteus7软件绘制硬件电路原理图,用Keil软件进行编程与调试,最终生成hex文件,载入单片机,从而实现仿真效果。

本文设计经过最终调试,能够正确显示年、月、日、周、时、分、秒以及温度等所需信息,并能正常使用对日期与时间的调整与校正功能。

系统使用12864LCD液晶屏显示信息,界面简洁、直观、易于操作。

关键词:万年历、单片机、51AT、DS1302、DS18B2089C1 引言人类的日常生活离不开时间,任何具有周期变化的自然现象都可用来测量时间。

而现在人们日常生活中广泛使用的是机械表、电子表、电子钟等。

随着科技的发展,电子技术和计算机应用领域不断扩大,特别是单片机的出现,是近代计算机技术发展史上的一个重要里程碑。

基于单片机的万年历结合了时钟和日历的功能,将其二者融为一体,在现实时间的同时还能显示日期和年月,它主要通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。

本系统的万年历除了显示年月日外还能准确显示温度它所处环境的温度。

本设计采用的测温元件是美国DALLAS半导体公司生产的一种智能温度传感器DS18B21,测温范围为-55~125C,最高分辨率达到0.0625C。

1.1研究的目的和意义随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的变化,尤其是单片机技术的应用产品已经走进了千家万户。

基于单片机的数字万年历设计

基于单片机的数字万年历设计

基于单片机的数字万年历设计引言本文设计的电子万年历属于小型智能家用电子产品。

利用单片机进行控制,实时时钟芯片进行记时,外加掉电存储电路和显示电路,可实现时间的调整和显示。

电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业等相关行业的大厅,以及单位会议室、门卫等场所。

因而,此设计具有相当重要的现实意义和实用价值。

系统概述本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。

人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。

软件控制程序实现所有的功能。

整机电路使用+5V稳压电源,可稳定工作。

系统框图如下图所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。

系统框图系统硬件电路的设计按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、存储模块、键盘接口模块、显示模块和闹铃模块共6个模块组成,电路系统构成框图如下图所示。

主控芯片使用52系列AT89S52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302,存储模块采用美国ATMEL公司生产的低功耗CMOS串行EEPROM存储芯片AT24C02。

DS1302作为主要计时芯片,可以做到计时准确。

更重要的是,DS1302可以在很小电流的后备(2.5~5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。

电子万年历电路系统构成框图系统程序的设计阳历程序的设计因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、[小]时、分、秒等数据,再处理即可。

单片机课程设计--基于51单片机的万年历

单片机课程设计--基于51单片机的万年历

单片机课程设计报告万年历的设计基于51单片机的万年历摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,使用寿命长,误差小。

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

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

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

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

万年历的设计过程在硬件与软件方面进行同步设计。

硬件部分主要由AT89C52单片机,LCD显示电路,以及调时按键电路等组成。

在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。

显示器使用了1602液晶显示,并且使用蜂鸣器实现了整点报警的功能,温度测试的功能实现使用了DS18B20,并实现了温度过高或过低时的温度报警。

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

程序采用C语言编写。

所有程序编写完成后,在KeilC51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真,并最终实现基本要求。

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

一、设计要求基本要求:1,8 个数码管上显示,显示时间的格式为(假如当前时间是19:32:20)“19-32-20”;2,具有日历功能;③时间可以通过按键调整。

发挥部分:④具有闹钟功能(可以设定多个)。

二:总体设计电路设计框图系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由单片机定时功能提供;温度的采集由DS18B20构成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,使用时不需要额外的外围电路。

基于单片机的万年历设计

基于单片机的万年历设计

目录1 前言 (1)1.1开发背景 (1)1.2设计目标 (1)1.3设计思路 (2)2 系统硬件简介 (4)2.1AT89C51单片机的介绍 (4)2.1.1 AT89C51单片机的概述 (4)2.1.2 AT89C51单片机引脚及其功能 (5)2.2DS1302时钟芯片的结构及工作原理 (8)2.3半导体数码管和七段字形译码器 (12)3 总体电路设计 (15)3.1功能要求 (15)3.2系统总体设计 (15)3.3硬件设计电路图 (16)3.3.1 电子万年历的电路图 (16)3.3.2 输入/输出端口模块 (17)3.3.3 时钟模块和按键模块 (19)4 系统的软件设计 (20)4.1流程图的设计 (20)4.2程序设计 (20)5 程序的调试与软件仿真 (24)5.1程序的调试 (24)5.1.1 Keil μVision软件简介 (24)5.1.2 万年历的Keil程序调试 (25)5.2软件仿真 (28)5.2.1 Proteus软件简介 (28)5.2.2 万年历的Proteus电路图 (29)5.2.3 万年历的Proteus软件仿真 (33)结束语 (36)致谢 (37)参考文献 (38)附录I: (40)1 前言1.1 开发背景随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑。

本文通过对一个基于单片机的设计研究,以实现世界时间及公历电子万年历,可以说,电子万年历的出现是人类社会发展史上的又一个伟大转折点。

万年历是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。

基于单片机的多功能万年历设计35页PPT

基于单片机的多功能万年历设计35页PPT
基于单片机的多功能万年历 设计
26、机遇对于有准备的头脑有特别的 亲和力 。 27、自信是人格的核心。
28、目标的坚定是没有 它,天 才也会 在矛盾 无定的 迷径中 ,徒劳 无功。- -查士 德斐尔 爵士。 29、困难就是机遇。--温斯顿.丘吉 尔。 30、我奋斗,所以我快乐。--格林斯 潘。
END
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃

万年历(单片机)

万年历(单片机)

单片机万年历设计报告题目:基于51单片机万年历设计院(系):机械与电子工程学院班级: 09应用电子技术2班学生名:指导老师:时间:2011-5-4目录摘要 (1)第一章绪论 (3)第二章设计要求与方案论证 (4)2.1 设计要求 (4)2.1.1 基本要求 (4)2.1.2发挥部分 (4)2.2 系统基本方案选择和论证 (5)2.2.1 芯片的选择 (5)2.2.2 显示模块选择方案和论证 (5)2.2.3 时钟信号的选择方案和论证 (6)2.3 电路设计最终方案决定 (6)第三章系统的硬件设计与实现 (7)3.1 万年历电路设计框图 (7)3.2 系统硬件概述 (7)3.3 硬件电路结构的设计 (8)3.3.1 单片机主控制模块的设计 (8)3.3.2 显示模块的设计 (8)3.3.3时间调整电路的设计 (10)3.3.4 主控芯片原理及其说明 (10)3.3.5 复位电路的选择 (13)第四章系统的软件设计 (14)第五章系统调试 (16)5.1软件调试 (16)5.2硬件调试 (16)5.3实物调试 (16)结论 (17)设备选择 (18)参考文献 (18)附录 (19)摘要万年历是对年、月、日、周、时、分、秒,数字显示及到时提醒的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得万年历的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。

最常见的数字钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

本次设计就是通过用单片机为主控制,通过电路仿真而实现。

首先使用Proteus 7 Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生成hex文件,传入单片机内部,从而实现仿真效果。

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



• •
在世界钟表业界的第三次革命中,随着单片机数码计时技术的 应用,使 计时产品的走时日差达到六百万分之一秒。如今,万年历已经 发展到夜 光数字显示方式,看起来直观明了而且增加了其他日常附属信 息的显示 功能。
硬 件 电 路 设 计 框 图
由NordriDesign提供

由NordriDesign提供

实物连接图
最后由以上五部分链接输入程序后,得到万年历的实物图, 如下图所示。
由NordriDesign提供

程序流程框图
开始
初始化
显示温度和日期
是否与当 前日期相 同

按功能键调整日期 与时间
基于单片机的万年历设计
由NordriDesign提供

1.电子万年历发展状况 2. 系统的硬件设计与实现 3. 系统的软件设计 4. 测试结果与结论ຫໍສະໝຸດ 由NordriDesign提供

1.万年历的发展和意义
• • • • 电子万年历是利用单片机进行控制,实时时钟芯片进行计时, 外加掉电 存储电路和显示电路,实现时钟的调整和显示。目前由于数字 集成电路 的发展和石英晶体振荡器的广泛应用,使得万年历的精度,远 远超过老 式钟表。
由NordriDesign提供

显示模块:LCD1602型液晶显示屏。它采用的是16引脚, 其内部的字符发生器已经存储了160个不同的点字符:其 中包括阿拉伯数字、应为字母大小写等。
由NordriDesign提供

时钟模块:DS1302时钟芯片。DS1302在每次进行读、写的 程序前必须初始化,先把SCLK端置“0”,接着把RST端置 “1”,最后给予SCLK脉冲。
由NordriDesign提供

温度采集模块:DS18B20。它是体积小、更经济、更灵活 的数字是温度传感器,具有测量精度高,电路连接简单的 特点。
由NordriDesign提供

红外接收模块:红外接收头将红外接收管与放大电路集成 在一体,体积小,密封性好,灵敏度高。
是 是 是否设定 闹铃时间 调整闹铃时间
否 返回
由NordriDesign提供

测试结果与分析
在测试中遇到发光二极管、LCD数码管为不显示时,首先 使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或 者元件损坏 LCD 数码管显示不正常,还有亮度不够,首先使用试测仪 对电路进行测试,观察电路是否存在短路现象。查看烧写 的程序是否正确无误,对程序进行认真修改。 经过多次的反复测试与分析,可以对电路的原理及功能更加熟 悉,同时提高了设计能力与及对电路的分析能力.同时在软件 的编程方面得到更到的提高,对编程能力得到加强.同时对所 学的知识得到很大的提高与巩固。
由NordriDesign提供

请各位老师指正
由NordriDesign提供




电路设计框图
LCD1602液晶 消失模块
红外模块 AT89S52 电源 主控制模块
DS1302时钟芯片
温度采集模块
感谢您的关注

主控制模块:· AT89S52。它是一种低功耗、高性能的8位微 控制器,在芯片上拥有8K字节的FLASH,256RAM,32位I/O 口线,看门狗定时器。
相关文档
最新文档