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

合集下载

基于单片机的万年历设计

基于单片机的万年历设计

基于单片机的万年历设计一、系统总体设计基于单片机的万年历系统主要由单片机控制模块、时钟模块、显示模块、按键模块和电源模块等组成。

单片机控制模块是整个系统的核心,负责处理和协调各个模块之间的数据传输和控制信号。

通常选用具有较高性能和稳定性的单片机,如 STC89C52 等。

时钟模块用于提供准确的时间信息,常见的有 DS1302 等芯片,能够实现年、月、日、时、分、秒的精确计时。

显示模块用于将时间等信息直观地展示给用户,可采用液晶显示屏(LCD)或数码管。

LCD 显示效果清晰、美观,但成本相对较高;数码管则价格低廉,显示简单明了。

按键模块用于用户对万年历进行设置和操作,如调整时间、设置闹钟等。

电源模块为整个系统提供稳定的电源供应,保证系统的正常运行。

二、硬件设计1、单片机最小系统单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振电路为单片机提供时钟信号,保证其正常工作;复位电路则用于在系统出现异常时将单片机恢复到初始状态。

2、时钟模块电路DS1302 时钟芯片通过串行方式与单片机进行通信,其引脚连接到单片机的相应 I/O 口。

通过对 DS1302 进行读写操作,可以获取和设置时间信息。

3、显示模块电路若采用 LCD1602 液晶显示屏,其数据线和控制线与单片机的 I/O 口相连。

通过编程控制单片机向 LCD 发送指令和数据,实现时间等信息的显示。

4、按键模块电路通常使用独立按键,将按键的一端接地,另一端连接到单片机的I/O 口,并通过上拉电阻保证在按键未按下时引脚处于高电平。

当按键按下时,引脚电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。

三、软件设计软件设计主要包括主程序、时钟模块驱动程序、显示模块驱动程序和按键处理程序等。

主程序负责初始化各个模块,并进行循环检测和处理。

在循环中,不断读取时钟模块的时间数据,然后通过显示模块进行显示,并检测按键是否有操作。

时钟模块驱动程序根据 DS1302 的通信协议,实现对时钟芯片的读写操作,从而获取和设置时间。

基于单片机的万年历设计

基于单片机的万年历设计

一、引言万年历是一种显示当前日期和时间的器件或软件。

随着科技的发展,电子产品普及率愈来愈高,基于单片机的万年历设计成为了一种非常受欢迎的设计方案。

本文将介绍一种基于单片机的万年历设计。

二、设计原理1.显示模块:采用液晶显示屏作为显示模块,可以显示日期、时间等信息。

2.时钟模块:基于RTC(实时时钟)模块,用于获取当前日期和时间。

3.按键模块:采用按键模块作为输入模块,用于设置日期和时间、切换显示模式等。

4.控制模块:基于单片机,用于控制各个模块的工作,并进行相关的计算和显示。

三、硬件设计1.单片机选择在本设计中,选择了一款常用的单片机,STM32F103C8T6、它具有低功耗、高性能的特点,并且具备丰富的外设接口,非常适合用来设计万年历。

2.RTC模块选择在本设计中,选择了一款常用的RTC模块,DS1302、它具有低功耗、稳定性好的特点,并且具备SPI接口,非常适合用来获取当前日期和时间。

3.液晶显示屏选择在本设计中,选择了一款常用的液晶显示屏,1602液晶显示屏。

它具有较大的屏幕尺寸、低功耗的特点,并且可以显示多行字符,非常适合用来显示日期、时间等信息。

4.按键模块选择在本设计中,选择了一款常用的按键模块,4x4按键模块。

它具备4行4列的按键布局,可以满足设置日期和时间、切换显示模式等功能的需求。

五、软件设计1.初始化设置在软件设计中,首先需要对各个硬件模块进行初始化设置。

2.获取当前日期和时间使用RTC模块获取当前日期和时间,并将其存储在相应的变量中。

3.显示日期和时间使用液晶显示屏将当前日期和时间显示出来。

4.设置日期和时间通过按键模块获取用户的输入,并将对应的日期和时间设置到RTC模块中。

5.切换显示模式通过按键模块获取用户的输入,并根据用户的选择切换不同的显示模式,例如切换到年模式、月模式、日模式等等。

六、总结通过以上的设计,基于单片机的万年历完成了日期和时间的获取、显示和设置等功能。

基于单片机万年历设计

基于单片机万年历设计

引言:单片机是集成电路上的一种微处理器。

它具有微处理器的核心功能,如运算逻辑单元,控制单元和寄存器,同时还包含其他外设和接口,如存储器,计数器/定时器等。

在现代科技的不断发展下,单片机已经在许多不同的领域得到广泛应用。

其中之一就是在万年历方面的设计。

万年历在生活中扮演着重要的角色,因此基于单片机设计一个功能强大的万年历具有很大的实用价值。

概述:本文将介绍基于单片机的万年历设计,该设计旨在实现更精确的日期和时间显示,同时提供基本的日历功能和其他实用功能。

文中将详细介绍设计的硬件和软件部分,并讨论其中的各种功能和特点。

正文:1.硬件设计1.1主控芯片选择1.2外设接口设计1.3屏幕选择和显示控制1.4时钟电路设计2.软件设计2.1系统架构设计2.2日期和时间计算算法2.3用户界面设计2.4日历功能实现2.5其他实用功能的实现3.功能和特点3.1准确的日期和时间显示3.2自动切换夏令时3.3多种日期和时间格式支持3.4节假日提醒功能3.5闹钟功能4.应用领域4.1家用4.2办公场所4.3学校4.4研究机构4.5工业领域5.前景和挑战5.1市场需求5.2技术挑战5.3发展趋势5.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();}五、运行结果:。

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

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

基于51单片机的万年历设计一、系统设计方案本万年历系统主要由 51 单片机、时钟芯片、液晶显示屏、按键等部分组成。

51 单片机作为核心控制器,负责整个系统的运行和数据处理。

时钟芯片用于提供精确的时间信息,液晶显示屏用于显示万年历的相关内容,按键则用于设置时间和功能切换。

二、硬件设计1、单片机选型选用常见的 51 单片机,如 STC89C52 单片机,它具有性能稳定、价格低廉、易于编程等优点。

2、时钟芯片选择 DS1302 时钟芯片,该芯片能够提供高精度的实时时钟,具有闰年补偿功能,并且可以通过串行接口与单片机进行通信。

3、液晶显示屏采用 1602 液晶显示屏,能够清晰地显示字符和数字,满足万年历的显示需求。

4、按键电路设计四个按键,分别用于时间设置、功能切换、加和减操作。

三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、时钟芯片初始化、液晶显示屏初始化等。

然后读取时钟芯片中的时间数据,并在液晶显示屏上显示出来。

接着进入循环,不断检测按键状态,根据按键操作执行相应的功能,如时间设置、功能切换等。

2、时钟芯片驱动程序通过单片机的串行接口向 DS1302 发送命令和数据,实现对时钟芯片的读写操作,获取准确的时间信息。

3、液晶显示屏驱动程序编写相应的函数,实现对1602 液晶显示屏的字符和数字显示控制。

4、按键处理程序采用扫描方式检测按键状态,当检测到按键按下时,执行相应的按键处理函数,实现时间设置和功能切换等操作。

四、时间设置功能通过按键操作进入时间设置模式,可以分别设置年、月、日、时、分、秒等信息。

在设置过程中,液晶显示屏会显示当前设置的项目和数值,并通过加、减按键进行调整。

设置完成后,将新的时间数据保存到时钟芯片中。

五、显示功能万年历的显示内容包括年、月、日、星期、时、分、秒等信息。

通过合理的排版和显示控制,使这些信息在液晶显示屏上清晰、直观地呈现给用户。

六、系统调试在完成硬件和软件设计后,需要对系统进行调试。

单片机的数字万年历设计说明

单片机的数字万年历设计说明

基于AT89S51单片机的数字万年历设计摘要:本设计以数字集成电路技术为基础,单片机技术为核心。

软件设计采用模块化结构,汇编语言编程。

系统通过LCD显示数据,可以显示公历日期(年、月、日、时、分、秒)以及星期。

在容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细的阐述了程序的各个模块和实现过程。

关键词:单片机;万年历;DS1302;LCM1602Design of digital calendar based on MCU AT89S51Bai YangSchool of physics and electronic information Grade 2005 Instructor: Tang Zheng-mingAbstract: The design is based on digital integrate circuit, microcontroller technology is the core of the system. The software design uses module structure and adapts microcontroller assemble language. The system can display calendar date, including year, month, week, hour, minute, second and week. The work principle of the system is discussed in this paper, hardware interface and module function are reported primarily in the system. Every module of program is described explicitly.Keywords: MCU ; Calendar; DS1302; LCM1602基于AT89S51单片机的数字万年历设计摘要 (1)1 设计要求 (2)2 方案论证与设计 (2)2.1 用可编程逻辑器件设计 (2)2.1.1控制器部分 (3)2.2 显示部分的方案选择 (3)2.3 系统设计 (3)2.3.1 晶体振荡器电路 (3)2.3.2 分频器电路 (3)2.3.3 时间计数器电路 (3)2.3.4 时钟电路 (4)2.3.5 复位电路 (4)2.3.6复位电路的可靠性设计 (4)2.3.7 按键部分 (5)2.3.8蜂鸣器电路 (5)3.3.9 根据各模块的功能互相连接成电子万年历的控制电路 (5)3各硬件介绍 (6)3.1 AT89S51的引脚说明 (7)3.2 发光二极管指示电路设计 (8)3.3 蜂鸣器电路设计 (8)3.3.1 蜂鸣器的介绍 (9)3.3.2 蜂鸣器的结构原理 (9)3.4 LCM1602简介 (9)3.5 DS1302 简介 (10)4 系统硬件设计所需的器材 (11)5 系统软件总体设计 (11)6 系统功能介绍 (12)6.1 按键介绍 (13)6.2星期计算 (13)7 主程序流程图 (14)8 安装制作 (14)15前言电子万年历是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。

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

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

万年历是一种可以显示年、月、日、星期的电子设备,广泛应用于日常生活和办公场所。

本文将介绍一个基于STM32单片机的万年历的设计思路和实现过程。

首先,我们需要明确设计目标。

在这个项目中,我们的目标是使用STM32单片机开发一个功能齐全、易于操作的万年历。

具体地说,这个万年历应该能够显示当前的年、月、日和星期,并且能够进行日期的加减操作,同时应该具备一些辅助功能如闹钟设置、倒计时等。

接下来,我们需要进行硬件设计。

首先需要选择适当的显示屏,比如常见的LCD或OLED屏幕。

然后,我们需要选择合适的按键和外部触发器,用于用户的交互输入。

同时,还需要添加一些必要的接口,如USB接口用于数据传输和维护。

在软件设计方面,我们需要定义合适的数据结构来存储日期、时间、闹钟等信息。

同时,需要编写相应的程序来实现日期的显示和更新、日期的加减、闹钟的设置等功能。

在实现倒计时功能时,我们可以使用定时器中断来实现精确的计时。

此外,为了提高用户体验,我们可以添加一些额外的功能。

比如,我们可以为万年历设计一个简洁美观的用户界面,考虑使用图形库绘制用户界面元素。

同时,可以添加一些实用的功能如温湿度监测、天气预报等。

最后,在整个开发流程结束后,我们需要进行集成测试和调试,确保万年历的各项功能正常运行。

并且,我们还可以考虑为万年历添加一些优化和改进措施,如增加存储容量、优化节能技术等。

综上所述,基于STM32单片机的万年历设计主要涉及硬件设计和软件设计两个方面。

通过精心的设计和合理的实现,我们可以开发出一款功能丰富、易于使用的万年历产品,满足用户的各种需求。

基于单片机万年历设计

基于单片机万年历设计

基于单片机万年历设计基于单片机的万年历设计二、实验要求设计一个万年历,将时钟显示在LCD1602的显示屏上并且可以进行年、月、日以及时、分、秒的设置。

此外还可以通过按键进行闹钟设置以及事件提醒功能,用蜂鸣器进行闹铃提醒。

最后附加一个温湿度检测的功能,用温湿度传感器检测室内的温湿度并将温湿度数据在显示屏上显示出来。

三、实验设备和仪器1.用STC89C52芯片作为系统板的主控芯片2.DHT11温湿度传感器3.DS1302时钟芯片4.LCD1602显示屏四、实验各模块原理介绍4.1STC89C52单片机STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flah存储器。

STC89C52使用经典的MCS-51内核,具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flah,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机) 3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

8.具有EEPROM功能9.共3个16位定时器/计数器。

即定时器T0、T1、T2。

10.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。

11.通用异步串行口(UART),还可用定时器软件实现多个UART。

12.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)13.PDIP封装1、STC89C52单片机引脚图图4.1STC89C52单片机引脚图①主电源引脚(2根) VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根) 某TAL1(Pin19):片内振荡电路的输入端某TAL2(Pin20):片内振荡电路的输出端③控制引脚(4根) RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

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

论文题目:基于单片机的数字万年历设计完成日期:指导教师签字:答辩小组成员签字:摘要现代工业革命代表性特征就是计算机产品出现和应用,而随着计算机技术的不断深入创新和发展,基于计算机核心技术思维模式的电子类产品,已经逐步作为人类社会生活的密不可分的重要组成部分,较为典型代表就是:有效记录时间电子类产品。

本次毕业设计选题定为:基于单片机的数字万年历设计,选择AT89S52作为数字万年历的核心控制处理器,系统以串行DS1302芯片记录日历时间,AT89S52作为数字万年历的核心控制处理器,可以进行闰年补偿并且可以进行精确的计,本文所设计数字万年历的,能够满足用户对于温度的检测功能,芯片上选择具有应用广泛和功能强大的芯片,同时选择具有较强抗干扰能力的液晶显示板,作为数字万年历的用户交互界面。

这种万年历具有数据读取十分方便、功能丰富、电路看起来十分的简单明了并且制作成本并不是太高等各方面的优点。

因此,会有十分良好的市场前景。

它可通过设计一个基于单片机的数字万年历的设计,有效解决了现在现有的产品中存在的问题,因此在推向市场的时候会具有很好的应用价值。

关键词:单片机;万年历;AT89S52;DS1302;DS18B20;ABSTRACTModern Industrial Revolution represents the characteristic is the computer products and applications, and along with the computer technology the deepening of innovation and development, based on computer the thinking patterns of the core technology of electronic products has gradually as inseparable and important component of human social life, the typical representative is: effective recording time electronics products. The graduation design topic is: Design of digital calendar based on MCU, using AT89S52 as the core of digital calendar control processor system with serial chip DS1302 calendar to record time AT89S52 as the core of digital calendar control processor can leap year compensation and accurate. In this paper, the design digital calendar, can meet the user for temperature detection function, chip selection is widely used and powerful chip, and a liquid crystal display panel having strong anti-interference ability, as the interface of the digital calendar. This calendar with data read is very convenient, feature rich, the circuit looks very simple and the manufacturing cost is not too high and the advantages. Therefore, there will be a very good market prospects. It can be through the design of a design based on single chip digital calendar, an effective solution to the problems existing in the existing product. Therefore, in pushing the market has a good application value.Key Words:SCM;calendar; DS1302;DS18B20;目录1前言 (2)1.1课题背景及研究的意义 (2)1.2 解决的问题及主要内容 (3)2系统的方案设计与论证 (5)2.1单片机芯片设计与论证..................... 错误!未定义书签。

2.2按键控制模块设计与论证 (7)2.3时钟模块设计与论证 (7)2.4温度采集模块设计与论证 (7)2.5显示模块模块设计与论证 (8)3 硬件设计 (9)3.1单片机最小系统 (9)3.2 时钟芯片电路 (11)3.3 DS18B20电路 (13)3.4 显示电路 (16)3.5 按键模块设计 (16)4软件设计及仿真 (17)4.1主程序流程图的设计 (17)4.2仿真 (18)致谢 (19)参考文献 (21)附录一:原理图 (22)附录二:部分程序 (23)1前言时间作为人类生产和生活的重要组成部分,其作用特殊性,已经获得了广泛的熟知和认可,人类历史文明发展的长河中,对于时间测量和计算有着很多种方式,例如中国的日晷和西方的沙漏。

而随着工业革命影响人类生活进程的不断延伸和发展,科技与测量和记录时间的方式,获得进一步融合,造成人们对于时间的感知方式,也在不间断发生着变化,这也就经历了一个从最初观察太阳确定时间发展,到通过人类发展的科技工业产品来确定和记录时间过程,在这一历程中人类不断的研究和创造一个又一个奇迹。

工业革命的一个重要表现形式,就是智能化控制器取代传统的机械和继电器控制模式,而单片机作为工业时代智能控制器的典型代表,已经逐步开走进家家户户,来到我们身边。

随着现代科学技术的飞速发展,基于单片机的应用技术,在整个国民生产经济领域中,表现出前所未有的适用性和较高的广泛度,单片机以其占用空间少,功能种类丰富等优点,被应用到工业化进程的各个领域,主要应用范围是智能化医疗设备、功能需要化的家居用品、迈向和探索太空的航天领域、汽车可靠性被动安全的气囊保护、办公自动化等。

同时,基于以单片机为核心控制器的各种应用控制系统开发,已经是有关专业的技术人员必须掌握的应用技术。

单片机的芯片占用空间小并且制造成本不高,可以随意的应用到家用仪表,机器系统,汽车仪器等的各种人们日常的产品制造之中。

基于单片机应用技术的常用的家庭数字万年历也就因此而出现在我们的日常生活之中。

这种万年历的设计是将把这些技术融合在一起,并且拓展出更多的功能。

1.1课题背景及研究的意义现代工业革命代表性特征就是计算机产品出现和应用,而随着计算机技术的不断深入创新和发展,基于计算机核心技术思维模式的电子类产品,已经逐步作为人类社会生活的密不可分的重要组成部分,较为典型代表就是:有效记录时间的电子类产品。

这类电子类产品的一个共性,就是可靠性、稳定性和性价比高,同时,又具备多方面电子类产品设计的基础性知识和其他学科融合的特点,能够较好检查大学生,在整个大学学习生命周期的成果,基于上述两个方面的考虑,本次毕业设计选题定为:基于单片机的数字万年历设计。

STC51系列单片机,应用上具有较为明显智能化可编程、通用性和扩展性,AT89S52是STC51系列单片机中比较典型的应用控制芯片,因此本文选择:AT89S52作为数字万年历的核心控制处理器,系统以串行DS1302芯片记录日历时间,AT89S52作为数字万年历的核心控制处理器,可以进行闰年补偿并且可以进行精确的计,本文所设计的数字万年历的,能够满足用户对于温度的检测功能,芯片上选择具有应用广泛和功能强大的DS1202芯片,同时选择了具有较强抗干扰能力的液晶显示板1602A,作为数字万年历的用户交互界面。

本文设计的数字万年历,可以通过万年历上的数字观察到从年往下的各个等级的精确的时间。

并且同时还具有十分精确的校准时间的功能。

以功能消耗小和性价比较高的AT89S52单片机做电路核心控制部件,可以有效的降低整体系统运行的能量,为用户节约能源,所以可以选择低压进行供电。

本文所设计的数字万年历具有数据读取十分方便、功能丰富、电路看起来十分的简单明,并且制作成本并不高等各方面的优点,综上所述,本文选择基于AT89S52单片机的数字万年历作为毕业设计的题目,主要意义具有两个方面,一是,对于个人能力全面发展角度,能够较为有效的进行,检查和提升大学所学基本方法、基本理论和基础实验动手能力,为进一步踏入社会和工作,提供一定的实践经验积累;二是,产生社会生产价值方面,本文所设计的基于AT89S52单片机的数字万年历,有效解决现在现有固有产品中所存在的问题,例如:产品功能单一,在推向市场的时候会具有很好的应用价值。

1.2 课题主要研究内容大学毕业设计主要目的和原则,就是检查学生在整个大学学习过程,理论和实践相互融合的能力,而单片机作为现代工业应用领域的一个主要控制部件,已经作为社会经济发展工业设计方面应用的主流,因此,本课题所研究的电子万年历是单片机控制技术一个具体应用,具有较强的体现出理论和实际的融合,本文主要研究内容包括包括以下几个方面:1、系统方案的设计和论证。

这确定设计题目后,一个突出问题就是,在确定完成数字万年历设计基本内容后,如何更好的实现各个功能紧密配合和协同,这就需要对于数字万年历的系统方案进行设计和论证。

主要集中在以下内容:一是、核心控制部件的设计和选型,二是、按键模块设计和选型,三是、时钟模块设计与论证,四是、温度采集模块设计与论证,五是、显示模块设计与论证;2、AT89S52单片机的数字万年历的硬件电路设计,主要包括的内容如下,一是、关于数字万年历的最小系统设计,二是、时钟芯片电路,三、DS18B20电路设计,四是、显示电路设计,五是,案件模块设计。

3、数字万年历AT89S52核心单片机控制的各项功能是在程序控制下实现的,该系统软件设计方法与硬件设计相对应,按整体功能分成多个不同的程序模块,分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。

这样有利于程序修改和调试,增强程序的可移植性。

相关文档
最新文档