万年历单片机课程设计

万年历单片机课程设计
万年历单片机课程设计

课程设计任务书

学生姓名:专业班级:电信1104

指导教师:曾刚工作单位:信息工程学院题目:万年历显示模块设计

初始条件:

具备电子电路的设计知识和能力;具备单片机系统的设计方法;具备单片机软件编程技术;熟悉单片机常用软件的使用;

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1、了解并参与万年历电路的设计

2、对万年历显示部分进行计算机仿真

3、设计万年历显示电路

4、具备时间、日期及星期的切换显示功能

5、完成符合学校要求的设计说明书

时间安排:

设计时间2周,其中3天原理设计,3天仿真,3天电路调试,1天答辩

指导教师签名:年月日

系主任(或责任教师)签名:年月日

摘要

单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

本次课程设计包括AT89C51单片机最小系统包括复位和时钟电路及供电系统、LCD液晶显示电路。利用相关设计软件进行原理图设计即利用Keil软件编程以及Proteus软件仿真来巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。

关键字:单片机 AT89C51 DS1302

目录

1设计方案选择 (1)

1.1控制部分的方案选择 (1)

1.2 显示模块选择方案和论证 (1)

1.3时钟芯片的选择方案和论证 (1)

2系统的硬件设计与实现 (1)

2.1 电路设计框图 (1)

2.2 系统硬件概述 (2)

2. 3 主要单元电路的器件 (2)

2.3.1单片机主控制模块 (2)

2.3.2时钟电路模块的设计 (3)

2.3.3显示模块的设计 (5)

2.3.4 实时时钟电路设计 (5)

2.3.5 功能按钮设计 (6)

3 整体电路图 (7)

参考文献 (7)

附件 (10)

1设计方案选择

1. 1控制部分的方案选择

采用51系列的89C51单片机,89C51单片机有丰富的中断源和时基,方便本实验的设计。它的准确度相当高,并且C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口功能也比较强大,方便使用。用89C51单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。这些都方便对设计进行扩展,使设计更加完善。成本也相对低一些。

1.2 显示模块选择方案和论证

方案一:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形、显示多样,清晰可见,所以在此设计中采用LCD液晶显示屏。

所以采用了液晶显示屏作为显示。

1.3时钟芯片的选择方案和论证

方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。所以不采用此方案。

方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

综上各方案所述,对此次作品的方案选定:采用AT89C51作为主控制系统;DS1302提供时钟;液晶显示屏作为显示。

2系统的硬件设计与实现

2.1 电路设计框图

按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键盘接口模块共4个模块组成,电路系统构成框图如图3-1所示。主控芯片使用51系列AT89C51单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DSl302。采用DSl302作为主要计时芯片,可以做到计时准确。更重要的是,DSl302可以在很小电流的后备电源(2.5—5.5V 电源,在2.5V时耗电小于300 nA)下继续计时,并可编程选择多种充电电流来对

后备电源进行慢速充电,可以保证后备电源基本不耗电。 显示模块采用普通的液晶显示屏,键输入采用查询法实现调整功能。

2.2 系统硬件概述

本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V 超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V ~5.5V 。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM 数据。DS1302内部有一个31*8的用于临时性存放数据的RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部份由液晶显示屏对数字的显示。

2.3 主要单元电路的器件

2.3.1单片机主控制模块

AT89C51单片机为40引脚双列直插芯片,有四个I/O 口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O 口(P0、P1、P2、P3),每一条I/O 线都能独立地作输出或输入。

1. 内部结构

按功能分为8部分:CUP ,程序存储器,数据存储器,时钟电路,串行口,并行I/O 口,中断系统,定时/计数器。

2. 控制引脚

XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

RST/pd V :RST 是复位信号输入端,pd V 是备用电源输入端。当RST 输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。

图3-1 电路设计框图

当主电源CC V 发生故障而突然下降到一定低电压或断电时,第2功能pd V 将为片内RAM 提供电源以保护片内RAM 中的信息不丢失。

ALE/PROG :地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE 端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG 是对片内带有4K 字节EPROM 的8751固外程序时,作为编程脉冲输入端。

PSEN :程序存储器允许输出端。当片外程序存储器的读选通信号,低电平有

效。CPU 从外部程序存储器取指令时,PSEN 信号会自动产生负脉冲,作为外部程序存储器的选通信号。

EA /PP V :程序存储器地址允许输入端。当EA 为高电平时,CPU 执行片内程

序存储器指令,但当PC 中的值超过0FFFH 时,将自动转向执行片EA 外程序存储器指令;当EA /PP V 为低电平时,CPU 只执行片外程序存储器指令。

3. I/O 口引脚

P0.0~P0.7:P0口8位双向I/O 口; P1.0~P1.7:P1口8位准双向I/O 口; P2.0~P2.7:P2口8位准双向I/O 口; P3.0~P3.7:P3口8位准双向I/O 口。 4. 片外总线结构

分为三部分:数据总线 Data Bus(DB ),地址总线 Address Bus (AB ),控制总线 Control Bus(CB)。

2.3.2时钟电路模块的设计

(1)时钟芯片DS1302引脚及功能特点

图3-2示出DS1302的引脚排列,其中1CC V 为后备电源,2CC V 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由1CC V 或2CC V 两者中

的较大者供电。当2CC V 大于1CC V +0.2V 时,2CC V 给DS1302供电。当2CC V 小于1

CC V 时,DS1302由1CC V 供电。X1和X2是振荡源,外接32.768KHz 晶振。RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有

的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电动行时,在CC V 大于等于2.5V 之前,RST 必须保持低电平。中有在SCLK 为低电平时,才能将RST 置为高电平,I/O 为串行数据输入端(双向)。SCLK 始终是输入端。 、

(2) 时钟芯片DS1302的工作原理:

DS1302在每次进行读、写程序前都必须初始化,先把SCLK 端置 “0”,接着把RST 端置“1”,最后才给予SCLK 脉冲。表3-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH ”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP ”是写保护位,在任何的对时钟和RAM 的写操作之前,WP 必须为0。当“WP ”为1时,写保护位防止对任一寄存器的写操作。

RAM RD 1 A4 A3 A2 A1 A0

/ CK /WR

(3) 数据输入输出(I/O )

在控制指令字输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

SCLK I/O

RST

图3-2 DS1302引脚排列

表3-1 DS1302的控制字格式

2. 3. 3显示模块的设计

方案一:采用8段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。

方案二:液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,比较简单,所以,最后选择液晶显示方案。显示电路图如图2.2所示。

图2.2 液晶显示电路

2.3.4 实时时钟电路设计

图2.3是DS1302与单片机的连接,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。

图2.3 DS1302时钟电路

2. 3. 5 功能按钮设计

当按钮被按下时,该按钮对应的I/O口被拉为低电平,松开时按钮对应的I/O 口由内部的上拉电阻将该I/O拉为高电平,如图2.5所示:

图2.5 键盘电路设计

3 整体电路图

4 心得体会

对于本次课程设计结合上学期所学习的单片机的基础知识,将硬件和软件的知识全都联系起来,硬件方面有电路的连接和芯片的选取,软件方面有程序的设计和编写。

本次课程设计是我遇到的较难的课程设计,是以前没有接触过如此复杂的硬件电路以及软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助才逐一克服了难题,学习到了不少的专业知识。

在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面,不过总的来说这次单片机课设还是让我学到非常多的东西,也增加了我的动手机会,,希望自己以后更加严格的要求自己,做到更好。

参考文献

[1] 谢自美. 电子线路设计实验测试(第三版).武汉:华中科技大学出版社

[2] 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,2008

[3] 刘教瑜. 单片机原理及应用.武汉理工大学出版社,2011

[4] 张东亮. 单片机原理与应用.人民邮电出版社,2009

[5] 郭天祥. 51单片机C语言教程.电子工业出版社

附件

万年历源程序

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

//*******LCD*******

sbit LCDRS=P2^0; //LCD数据/命令选择端

sbit LCDRW=P2^1;

sbit LCDEN=P2^2; //LCD使能新号端

sbit Q=P1^3;

//******DS1302******

sbit IO=P1^0;//1302数据线

sbit SCLK=P1^1; //1302时钟线

sbit RST=P1^2; //复位

uint num=0;

uchar *week[]={"SUN","***","MON","TUS","WEN","THU","FRI","SAT"}; uchar Date[]={"Date: 2000-00-00 "};

uchar Date1[16]={"SSS "};

uchar Time[]={"Time: *00:00-00* "};

uchar date_time[7]; //从ds1302读取的当前日期时间

//=======延时=======

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

//********向1302写数据*********

void write_ds1302(uchar dat)

{

uchar i;

for(i=0;i<8;i++)

{

IO=dat & 0x01; //保持最后一位为1,读状态

SCLK=1;

delay(1);

SCLK=0;

dat >>= 1;

}

}

//*********从1302读数据*********

uchar read_ds1302()

{

uchar i,b=0x00;

for(i=0;i<8;i++)

{

b |= _crol_((uchar)IO,i);

SCLK=1;

delay(1);

SCLK=0;

}

return b/16*10+b%16; //与BCD码转换

}

//*********从指定位置读数据********

uchar read_data(uchar addr)

{

uchar dat;

RST=0;

SCLK=0;

RST=1;

write_ds1302(addr);

dat=read_ds1302();

SCLK=1;

RST=0;

return dat;

}

//*********读取当前日期时间*********

void read_date_time()

{

uchar i,addr=0x81;

for(i=0;i<7;i++)

{

date_time[i]=read_data(addr);

addr+=2;

}

}

//----------LCD写指令----------

void lcd_write_com(uchar com)

{

LCDRS=0; //RS为0时,写指令,RS为1时,写数据P0=com;

delay(5);

LCDEN=1;

delay(5);

LCDEN=0;

}

//----------LCD写数据----------

void lcd_write_data(uchar dat)

{

LCDRS=1;

P0=dat;

delay(5);

LCDEN=1;

delay(5);

LCDEN=0;

}

//-------LCD初始化-------

void lcd_init()

{

LCDEN=0;

lcd_write_com(0x38); //LCD显示模式设置

lcd_write_com(0x0c); //LCD显示开/关及光标设置

lcd_write_com(0x06); //当写一个字符后地址指针加1,且光标加1 lcd_write_com(0x01); //显示清屏

}

//---------设置液晶显示位置-----------

void set_lcd_pos(uchar p)

{

lcd_write_com(p | 0x80);

}

//---------液晶显示程序----------

void lcd_print(uchar p,uchar *s)

{

set_lcd_pos(p);

for(num=0;num<16;num++)

{

lcd_write_data(s[num]);

delay(10);

}

}

//----------日期时间转换-----------

void format_datetime(uchar d,uchar *p)

{

p[0]=d/10+'0';

p[1]=d%10+'0';

}

//---------主程序----------

void main()

{

uint k=0;

LCDRW=0;

lcd_init();

read_date_time();

format_datetime(date_time[6],Date+8); //年月日format_datetime(date_time[4],Date+11);

format_datetime(date_time[3],Date+14);

strcpy(Date1,week[date_time[5]]);

format_datetime(date_time[2],Time+7); //时间转换format_datetime(date_time[1],Time+10);

format_datetime(date_time[0],Time+13);

lcd_print(0x00,Date);

while(1)

{

read_date_time();

format_datetime(date_time[6],Date+8); //年月日format_datetime(date_time[4],Date+11);

format_datetime(date_time[3],Date+14);

strcpy(Date1,week[date_time[5]]);

format_datetime(date_time[2],Time+7); //时间转换format_datetime(date_time[1],Time+10);

format_datetime(date_time[0],Time+13);

if ( Q==0)

{k=k+1;

switch(k%3)

{

case 0: lcd_print(0x00,Date); break;

case 1: lcd_print(0x00,Time); break;

case 2: lcd_print(0x00,Date1); break;

}

}

}

}

本科生课程设计成绩评定表

指导教师签字:

年月日

数字万年历毕业设计

数字万年历毕业设计 目录 第一章数字万年历需求分析 (1) §1-1万年历的概念 (1) §1-2需求分析 (1) 第二章系统的硬件设计与实现 (2) §2-1系统电路示意图 (2) §2-2驱动电路 (2) §2-3时钟控制电路 (3) §2-4所需主要器件 (4) §2-5系统硬件概述 (4) 第三章系统的软件设计 (17) §3-1程序流程框图 (17) §3-2程序设计 (19) 第四章安装与调试 (25) §4-1安装 (25) §4-2调试 (25) §4-3软、硬件测试 (26) 4-3-1硬件测试 (26) 4-3-2软件测试 (26) §4-4测试结果分析与结论 (27) 4-4-1测试结果分析 (27) 4-4-2测试结论 (27) 第五章总结 (27) 致谢 (28) 参考文献 (29)

第一章数字万年历需求分析 §1-1万年历的概念 万年历我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系。万年历只是一种象征,表示时间跨度大。 §1-2需求分析 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,没有更大程度上的满足人们的需求。因此在这里,我想能不能把一些辅助功能加入钟表中去。在此设计中所设计的钟表不但具有普通钟表的功能,它还能实现额外的功能:世界时间、农历显示。 改革开放30年来,中国电子万年历市场从无到有,从小到大、从总量快速扩张到结构明显升级,逐步形成了有中国特色的多样化、多层次的消费市场。电子万年历市场规模比改革初期扩大了几倍乃至几十倍,其发展成就令世人瞩目。 同时随着数字技术网络技术飞速发展,今天数字万年历也得到了迅猛的发展。万年历早超越了单纯的钟表只显视时间的结构,它已经了发展成为一套完整的系统。它在日常生活发挥着巨大的作用人们对它需求也越来越高。 本系统采用了以广泛使用的单片机技术为核心,软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LED显示电路、键盘电路,使人机交互简便易行,此外结合音乐闹铃电路、看门狗和供电电路。本方案设计出的万年历可以显示日期时间、世界时、农历,设置闹铃功能。

单片机万年历C语言程序完整

#include #include //#include "LCD1602.h" //#include "DS1302.h" #define uint unsigned int #define uchar unsigned char sbit DS1302_CLK = P1^7; //实时时钟时钟线引脚 sbit DS1302_IO = P1^6; //实时时钟数据线引脚 sbit DS1302_RST = P1^5; //实时时钟复位线引脚 sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数 sbit Set = P2^0; //模式切换键 sbit Up = P2^1; //加法按钮 sbit Down = P2^2; //减法按钮 sbit out = P2^3; //立刻跳出调整模式按钮 sbit DQ = P3^0; char done,count,temp,flag,up_flag,down_flag,t_value; uchar TempBuffer[5],week_value[2]; void show_time(); //液晶显示程序 /***********1602液晶显示部分子程序****************/ //Port Definitions********************************************************** sbit LcdRs = P2^5; sbit LcdRw = P2^6; sbit LcdEn = P2^7; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 //内部等待函数************************************************************** unsigned char LCD_Wait(void) { LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); LcdEn=0; return DBPort; } //向LCD写入命令或数据************************************** #define LCD_COMMAND 0 // Command

单片机万年历文献综述

基于单片机的时间核设计文献综述 专业:电子信息工程班级:***班作者:*** 指导老师:*** 1、前言 从古至今,时间一直是个被学者文人们所探索的永恒话题。郭沫若先生曾说:时间就是生命,时间就是速度,时间就是力量。马克·吐温曾说:生命是由时间组成的。时间就像生命一样宝贵,在我们的日常工作、学习、生活中,时间概念也愈来发挥着重要作用。在高度发达信息化的21世纪,人们总是那么忙碌。生活工作中班车要准点,上班要准时,开会要有时间限制;工业生产中,每一道工序都要有严格的时间限制,这样才能做到井井有条;严谨的科技研究中,时间更是重中之重。能够准确的了解并且实时性的知道时间,是我们学习、工作、生活中不可缺少的。时间是人们生活中不可缺少的重要伴侣,如果没有时间的概念,社会将停滞不前。 为了描述时间,许多计时仪器就此诞生。从古代的圭表、水漏,漏水水转浑天仪,到后来的机械钟表以及当今的电子钟,都充分显现出了人们对计时仪器的不断改进和创新。机械式钟表虽然也可以告知人们时间,也可以定时,显示日历。但是由于受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。 随着电子技术产业结构调整,生产工艺的飞速发展,人们生活水平的不断提高,家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。传统的时钟功能单一,已不能适应时代的发展!随着技术的发展,高精度、多功能、小体积、低功耗是现代时钟发展的趋势。本人所述智能时间核心控制系统主要指具有时钟显示、万年历显示(阴历和阳历)、时间设置、闹铃及温度显示等功能的基于单片机设计而成的控制系统,具有非常现实的意义。 2、基于单片机的时间核 为此设计,我复习以前学习过的很多课程,查阅的好多数据库和网络图书馆,如:中国学术期刊数据库,中文科技期刊数据库,万方数字化期刊,独秀知识库文献,超星数字图书馆,中国标准服务网等。也在图书馆查阅了很多相关的书籍。 我主要通过标题与年期进行检索,还加上一些简单的检索式进行筛选文献。此外,

带语音报时功能的万年历的设计毕业设计

毕业设计(论文) 带语音报时功能的的万年历的设计

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

基于单片机电子万年历的毕业设计说明

单片机课程设计报告 电子万年历设计 姓名:建强 学号: 专业班级: 08电气(2)班指导老师:吴永 所在学院:科技学院 2011年6月30日

摘要 随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。 具体实现功能: (1)显示年月日时分秒及星期信息 (2)具有可调整日期和时间功能 (3)与即时时间同步

目录 1方案论证 (3) 1.1单片机芯片的选择方案和论证 (3) 1.2显示模块选择方案和论证 (3) 1.3时钟芯片的选择方案和论证 (4) 1.4电路设计最终方案决定 (4) 2系统的硬件设计与实现 (5) 2.1电路设计框图 (5) 2.2系统硬件概述 (5) 2.3主要单元电路的设计 (5) 2.3.1单片机主控制模块的设计 (5) 2.3.2时钟电路模块的设计 (6) 2.3.3电路原理及说明 (7) 2.3.4显示模块的设计 (8) 3系统的软件设计 (9) 3.1程序流程框图 (9) 4测试与结果分析 (11) 4.1硬件测试 (10) 4.2软件测试 (10) 4.3测试结果分析与结论 (10) 4.3.1 测试结果分析 (10) 4.3.2 测试结论 (10) 5prodeus软件仿真........................................ ..........错误!未定义书签。 5.1Proteus ISIS简介 (12) 5.2Proteus运行流程 (13) 5.3Proteus功能仿真 (13) 6课程设计总结与体会.......................................... .....错误!未定义书签。 参考文献...........................................................错误!未定义书签。 附录一:系统电路图.................................................错误!未定义书签。 附录二:系统程序...................................................错误!未定义书签。

单片机_文献综述

XX大学 本科毕业设计(论文)文献综述 课题名称: 学院(系): 年级专业: 学生姓名: 指导教师: 完成日期:

一、课题国内外现状 当今社会,应用单片机的产品已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等,这些都离不开单片机。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。学习单片机是社会发展的必然需求,也是大学期间的必修课。 在国内单片机学习呈上升趋势,但是很多人学习时没有头绪,不知道从何下手。面对种类繁多的各类开发板,仿真器,让初学者无所事从,不但多花钱还多走不少弯路,学生学习单片机没有大的资金投入,能够做到少花钱多办事才是最好的。 Intel8051系列是我们在大学课堂中学习的。因此本课题围绕8051系列单片机设计,从电路图绘制,PCB板设计,硬件焊接,程序设计,在线仿真到各项功能实现,目的在于让学生将课堂上学来的理论知识与实践相结合,提高对单片机的认识,学习专业软件的操作,熟悉制作过程,掌握一门技能,加强专业知识的掌握。也增加学生的实践经历,为学生就业提供一个可选方向,拓展就业渠道。 二、研究主要成果 在目前的国内外市场中,主要单片机学习教学电路中,仿真器与开发板是分开的,且仿真器造价高,使用中仿真头易损坏。开发板种类多,不系统,应用中两者接合投资太高,学校投入太大。因仿真器与学习板是分开的,学生学习东西也少,板子做完后,学生只能留有学习板,想在课余再学习,终究因没有仿真器而受限止,实用性小,不能达到预期目的。 三、发展趋势 现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。 微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片

基于单片机的万年历时钟设计【文献综述】

毕业设计开题报告 测控技术与仪器 基于单片机的万年历时钟设计 1前言部分 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,需要一款灵活、稳定而又功能强大的自动定时控制系统,以规范本单位的作息时间或定时控制一些设备。目前,市面上出现的一些时控设备或功能单一,或使用烦琐,或价格昂贵,总有一些不尽如人意的地方[1]。我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,17 世纪中叶, 由荷兰人C. Huygens来发明的第一个钟摆与以前任何计时装置相比, 摆钟的精确度提高了上百倍,而他随后发明的螺旋平衡弹簧,又进一步提高精度、减小体积, 导致了怀表的出现。然而再好的摆钟,其精度也只能达到每年误差不超过一秒[2]。1939年出现了利用石英晶体振动计时的石英钟, 每天误差只有千分之二秒, 到二次大战后精度提高到30 年才差一秒。很快, 测年的技术又推进到原子层面, 1948 年出现第一台原子钟, 1955年又发明了铯原子钟, 利用Cs133原子的共振频率计时,现在精度已经高达每天只差十亿分之一秒[2]。 从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,无法更大程度上的满足人们的需求。发展到现在人们广泛使用的万年历。万年历在家庭居室、学校、车站和广场使用越来越广泛,给人们的生活、学习、工作带来极大的方便[3]。电子万年历具有信息量大、直观清晰、经济实用等优点,正成为家庭、商场、公共场所等新的消费热点,具有重要的开发价值[4]。随着科技的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,,功能也越来越齐全,除了公历年月、日、时分秒、星期显示及闹铃外,又增加了农历、温度、24节气及l2生肖等显示。甚至还有语音报时等独特功能。再加上造型新颖别致,附带立体动感画面,

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

单片机课程实训SCM PRACTICAL TRAINING

目录 第一部分课程设计任务书 (1) 一、课程设计题目 (1) 二、课程设计时间 (1) 三、实训提交方式 (1) 四、设计要求 (1) 第二部分课程设计报告 (2) 一、单片机发展概况 (2) 二、MCS-51单片机系统简介 (2) 三、设计思想 (3) 四、硬件电路设计 (3) 1. 总体设计 (3) 2. 晶振电路 (4) 3. 复位电路 (4) 4. DS1302时钟电路 (5) 5. 温度采集系统电路 (5) 6. 按键调整电路 (6) 7. 闹钟提示电路 (6) 五、软件设计框图 (7) 六、程序源代码 (8) 1. 主程序 (8) 2. 温度控制程序 (11) 3. 日历设置程序 (13) 4. 时钟控制程序 (18) 5. 显示设置程序 (20) 七、结束语 (23) 八、课程设计小组分工 (23) 九、参考文献 (23)

第一部分课程设计任务书 一、课程设计题目 用中小规模集成芯片设计制作万年历。 二、课程设计时间 五天 三、实训提交方式 提交实训设计报告电子版与纸质版 四、设计要求 (1)显示年、月、日、时、分、秒和星期,并有相应的农历显示。(2)可通过键盘自动调整时间。 (3)具有闹钟功能。 (4)能够显示环境温度,误差小于±1℃ (5)计时精度:月误差小于20秒。

第二部分课程设计报告 一、单片机发展概况 单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段: 第一阶段(1976-1978):初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。 第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB。 第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。 二、MCS-51单片机系统简介 MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。MCS-51单片机由CPU 、RAM 、ROM 、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。8051单片机的基本性能有: ◆8位CPU; ◆布尔代数处理器,具有位寻址能力; ◆128B内部RAM,21个专用寄存器; ◆4KB内部掩膜ROM; ◆2个16位可编程二进制加1定时器/计数器; ◆32个(4×8位)双向可独立寻址的I/O口; ◆1个全双工UART(异步串行通信口); ◆5个中断源,两级中断结构; ◆片内振荡器及时钟电路,晶振频率为1.2MHz~12MHz; ◆外部程序/数据存储器寻址空间均为64KB; ◆111条指令,大部分为单字节指令; ◆单一+5V电源供电,双列直插40引脚DIP封装。

文献综述(电子类)

养鸡场控制系统设计概述 摘要 在现在日常的价格敏感的消费电子产品中,单片机可以说是具有极强的优势,其中应用最广,并且需求量巨大的当属电子万年历,电子万年历在家庭、学校、车站等方面使用范围越来越广泛,给人们的生活学习工作都都带来了很大的便利,同时也由于电子芯片发展速度迅猛,工艺逐渐成熟,稳定性好,价格便宜,准确度能够满足人们的日常使用,所以正成为我们日常生活中新的消费热点,对于基于单片机控制的电子万年历的研究是有价值的。 本文经过查看多平相关论文之后,寻求到一种最优秀的解决方案,使用ATM89C51单片机作为主控芯片,并且使用美国DALLAS公司开发的时钟芯片DS1302作为时间控制芯片,显示器部分是由HD61202液晶显示控制驱动器和HD61203液晶显示器组成的,通过上面这几个主要部件再加上外围电路的铺设,实现电子万年历的设计,使LCD液晶显示器显示年、月、日、星期、小时、分钟、秒等功能,具有温度测量功能,具备年、月、日、星期、时、分、秒校准功能,同时还具有自动调节闰年功能。我抛弃了以前使用模拟电路的传统方法,采用这种芯片集成的方法,使得整个产品稳定性更高,出错率更低,适应性更广,使用起来更加简便。 关键词:单片机,528电子万年历,ATM89C51,DS1302

引言 从二十世纪到二十一世纪的今天,虽然相对于传统行业这段时间并不长,但是对于电子行业来说已经发生了翻天覆地的变化,根据摩尔定律,每当十年左右电子行业技术生产力将会翻一番,这个预言已经被证实,时钟日历作为计时的重要工具很早以前已经被大家所熟识,自从发明开始一直到现在人们不断地在改造,期待它的准确性和性价比方面的平衡,从早期的人们使用天上的星辰来计算时间,后来用日晷来计算时间,再到后来就逐渐有了钟表,当然那时的钟表准确性和便携性都比较差,随着电子技术的发展,新的解决方案出现了,利用单片机制作的万年历自己可以显示日期又可以显示每天的时间,功能多样化而且准确率比较高,开发成本较低,推广性很好,可以在民众之间进行大范围的推广,人们都有了自己的计时工具,为生活和工作提供了极大的便利。 单片机作为高度集成到微型计算机的一个重要分支,在现在社会中发挥着巨大的作用,随着社会的发展,越来越多的地方需要时间,从火车到站要准点,飞机航班要准点,上班的时候要准时,工业生产的过程中每一道工序都有时间要求,这样的例子不胜枚举,这就要求我们需要比较可靠的时间记录设备,它要有比较高的精度,也要有比较低廉的价格,还要可以适应多种不同情况的场所。单片机责无旁贷地成为了首选,首先它的价格低廉,贵的一般也就是四五块钱一个,便宜的甚至一块钱一个,成本上有无可比拟的优势;其次,单片机的工艺技术已经相当成熟,生产厂家众多,功能也在不断的增加,可以满足人们日常的大部分的需求使用。基于单片机的万年历设计,就是结合以上的优点,再加上广阔的市场需求,所以对于这个问题的探讨是十分迫切及其有必要的。 1 电子万年历核心部件 1.1 微处理芯片AT89C52 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

基于51单片机温湿度检测+电子万年历的毕业设计论文

毕业设计论文 基于51单片机温湿度检测+电子万年历的设计

[摘要]:温湿度检测是生活生产中的重要的参数。本设计为基于51单片机的温湿度检测与控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器SHT10主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52RC进行数据的分析和处理,为显示提供信号,显示部分采用LCD1602液晶显示所测温湿度值。系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。 [关键字]:STC89C52RC SHT10 LCD1602 按键指示灯蜂鸣器电子万年历Based on 51 single chip microcomputer temperature and humidity detection + electronic calendar design Abstract:Temperature and humidity detection is important parameters in the production of life. This design is based on 51 single chip microcomputer temperature and humidity detection and control system, adopting modular, hierarchical design. With new type of intelligent temperature and humidity sensor SHT10 main realization about the detection of temperature, humidity, temperature humidity signal acquisition is converted into digital signals through the sensor signal, using SCM STC89C52RC for data analysis and processing, provides the signal for display, display part adopts LCD1602 LCD display the measured temperature and humidity values. Simple circuit, high integration, work stability, convenient debugging, high detection precision, has certain practical value. Key words:STC89C52RC SHT10 LCD1602 key indicator light buzzer The electronic calendar

万年历_开题报告

xxxxx 毕业论文(设计) 开题报告 题目基于年历设计 学院电气工程学院 年级 xxx级 专业电子信息工程 姓名宋飞 学号 2011588693 指导教师欧阳飞 教务处制表 2012年12月10日

一、选题依据 课题来源、选题依据和背景情况;课题研究目的、学术价值或实际应用价值时间对人们来说总是那么宝贵,工作的忙碌和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己和他人带来很大的麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间:火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的。 想知道时间,手表当然是一个很好的选择,但是,在忙碌当中,我们还需要个“助理”及时的给我们提醒时间。所以,计时器最好能够拥有个定时系统,随时提醒容易忘记时间的人。最早能够定时、报时的时钟属于机械式钟农,但这种时钟受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。 电子万年历是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必须品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时报警、按时自动打铃、定时广播、自动启闭灯箱、通断动力设备、甚至各种定时电气的自动启动等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。在国内:单片机的学习呈上升趋势,但很多人学习是无头绪,不知道从何入手,行业发展迅速,国内生产技术不断提升。国内企业为了获得更大的投资收益,在生产规模和产品质量上不断提升,开发单片机呈必然趋势。我国生产的电子万年历有很多,总体上来说是研究多功能电子万年历为主,使万年历除了具有原来的时间、日期等基本功能外,还具有闹钟,报警等功能,商家生产的电子万年历更从质量、价格、实用上考虑不断改变电子万年历的设计,使其更有市场。在科技发达的今天,智能化必将是以后的发展趋势,所以开发活和学习单片机是社会发展的必然需求。

51单片机万年历毕业设计论文

专科毕业设计(论文) 题目51单片机电子万年历论文 51单片机电子万年历论文 摘要: 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。在编写程序过程中发现

以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成 了程序部分的编写。 万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。 关键词: 时钟电钟;DS1302;DS18B20;动态扫描;单片机 Abstract E-calendar day time is a very wide range of tools, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time, but also has a leap year compensation to a variety of functions, and the DS1302's long life, small error. For the digital electronic calendar using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and temperature and other information, but also a time-calibration and other functions. The circuit uses AT89S52 microcontroller as the core, power consumption, low-voltage work in 3V, the voltage can choose 3 ~ 5V voltage supply. The design is based on 51 series of microcontrollers to the design of electronic calendar, you can display date information on when the minutes and seconds, and weeks, with adjustable date and time functions. At the same time in the design of the theoretical basis of the MCU and peripheral expansion of knowledge of the more comprehensive preparation. The hardware and software design, there is no good basic knowledge and practical experience will be greatly limited, each feature is required to achieve the kind of hardware, procedures, how to write, how to implement such algorithms, there is no certain foundation can not be good implementation. Found during the preparation process to the existing knowledge to complete the preparation of the task alone difficult, In the help of teachers and students to complete the program part of the preparation. Calendar of the design process in hardware and software to synchronize the design. Hardware mainly by the AT89C52 microcontroller, LED display circuit, and the tune composed of the circuit when the button. In the SCM choice I used the AT89C52 microcontroller, which is suitable for many of the more complex control applications. Monitor the use of two 7SEG-MPX8-CA and a 7SEG-MPX4-CA. 7SEG-MPX8-CA is a total

单片机万年历程序..

单片机万年历程序 #include //调用单片机头文件 #define uchar unsigned char //无符号字符型宏定义变量范围0~255 #define uint unsigned int //无符号整型宏定义变量范围0~65535 #include "eeprom52.h" #include "nongli.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;

电子万年历的毕业设计

毕业设计(论文) 论文题目:基于AT89S51的电子万年历 所属系部: 专业: 学生姓名:班级 指导老师: 二零一一年五月二十七日

电子万年历 摘要:本设计以数字集成电路技术为基础,单片机技术为核心。软件设计采用模块化结构,汇编语言编程。系统通过LED显示数据,可以显示公历日期(年、月、日、时、分、秒)。在内容安排上首先描述系统硬件工作原理,着重介绍了各硬件接口技术和各个接口模块的功能;其次,详细的阐述了程序的各个模块和实现过程。 关键词:单片机;万年历 Electronic calendar LIU TAO Xian aviation technology college Abstract: 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. 目录 前言……………………………………………………………………………………...II

51单片机实现万年历程序文件

51单片机实现万年历 利用AT89S52单片机的P0口来和另外几个口来控制1602液晶的显示和P1口还有其它口来控制ds12887时钟芯片。设置四个按键,1个定义为时间设置功能键,一个定义为闹钟设置功能键,另外两个用来调节时间的增减。 原理图: pcb图:

源程序: #include #define uint unsigned int #define uchar unsigned char sbit beep=P2^0;//蜂鸣器控制口 sbit timeadd=P2^1;//调节时间加 sbit timesub=P2^2;//调节时间减 sbit timeclk=P2^3;//闹钟设定键 sbit timefun=P2^4;//时间设定键 sbit lcdrs=P2^5;//液晶的命令和数据控制口 sbit ledrw=P2^6;//液晶的写数据口 sbit lcden=P2^7;//液晶显示模块的使能端 sbit timeds=P3^3;//时钟芯片地址闸 sbit timerw=P3^4;//时钟芯片读写 sbit timeas=P3^5;//时钟芯片地址闸 sbit timeen=P3^6;//时钟芯片片选 uchar code table[]="20 - - week "; uchar code table1[]=" : : ";//要显示的字符串 char num,shi,fen,miao,nian=2000,yue,ri,week,numfun,anumfun,flag,flag1; uchar leap;

void delay(uint x){ uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void didi() { beep=0; delay(1000); beep=1; delay(1000); } void write_(uchar ){ lcdrs=0; P0=; delay(5); lcden=1; delay(20); lcden=0; } void write_date(uchar date){ lcdrs=1; P0=date; delay(5); lcden=1; delay(20); lcden=0; } void write_sfm(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_nyr(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10;

万年历毕业设计

常州轻工职业技术学院 电子制作论文(设计) 题目:基于51单片机的电子万年历的制作专业:电子信息工程 作者: 指导教师(职称): (副教授)二0一0年五月二十六日

基于51单片机的电子万年历制作 电子信息工程专业 【关键词】单片机万年历温度传感器DS18B20 时钟芯片DS1302 【绪论】万年历,就是记录一定时间范围内(比如100年或更多)的具体阳历与阴历的日期的年历,方便有需要的人查询使用。万年只是一种象征,表示时间跨度大。这次设计通过对万年历系统的设计,详细介绍了51 单片机应用中的按键处理、液晶、定时中断、温度传感器DS18B20原理。该系统能够显示年、月、日、小时、分钟、秒、星期、农历、温度,通过按键可以修改时间和设定闹钟等功能。此系统结构简单、功能齐全,具有一定的推广价值。 1.系统说明 1.1方案选择 ●方案一:采用日历时钟芯片DS1302来产生时间,数据经单片机处理后送到液晶显示。DS1302 内部有晶体振荡器、振荡电路、充电电路和可充电锂电池。此外,片内有114B的RAM。 ●方案二:采用纯单片机制作。 方案一中因为有了日历时钟芯片,这就使得单片机的软件部分简单很多。但是考虑到制作简单,因此采用方案一。 1.2 系统方框图: 如图1-1所示: 1.3 说明 系统由51系列单片机stc89c52、按键、温度采集、液晶显示、闹钟报时,电源等部分构成。单片机部分包括时钟电路、复位电路;按键部分能够实现对时间的调整和定时时间的设定。四个按键的功能分

别为:退出、闹钟、设置、修改。温度采集部分包括温度传感器。传感器采样进来的信号经自身A/D转换后送给单片机,经软件处理后送至液晶1602管显示。 2.电路模块说明 2.1 单片机电路 2.1.1 时钟电路 时钟系统是单片机的心脏,在本次设计中,包括中央处理器在内的所有单片机都是时钟系统所提供的节拍工作的。 时钟电路由外接谐振器的时钟振荡器、时钟发生器及关断控制信号等组成。时钟振荡器是单片机的时钟源,时钟发生器对振荡器的输出信号进行二分频。 CPU的时钟振荡信号有两个来源:一是采用内部振荡器,此时需要在XTAL1和XTAL2脚连接一只频率范围为0—33MHZ的晶体振荡或陶瓷振荡器及两只30pf电容。二是采用外部振荡,此时应将外部振荡器的输出信号接至XTAL1脚,将XTAL2脚浮空。 利用单片机内部的定时功能来实现时钟的走时,通过编程实现每50毫秒产生一次中断,中断20 次后,秒单元加1,秒单元加到60时,跳回到零再继续加,同时分单元加1。以次类推,从而实现秒、分、小时、年的走时。 本次设计中采用的是内部振荡器,频率为12MHZ的晶体振荡器及30pf的瓷片电容。如图2-1所示。 图2-1时钟电路 2.1.2复位电路 复位是指在规定的条件下,单片机自动将CPU以及与程序运行相关的主要功能部件、I/O口等设置为确定初始状态的过程。如果电路参数不符合规定的条件或干扰导致单片机不能正确的复位,系统将无法进行正常的工作,因此,复位电路除了要符合厂家规定的参数外,还要滤除可能的干扰。 AT89S52单片机内部有一个由施密特触发器等组成的复位电路。复位信号是从其9脚,即RST脚输入的。AT89S52单片机规定,当其处于正常工作状态,且振荡器工作稳定后,在RST端有从高电平到低电平,且高电平时间大于两个机器周期的复位信号时,CPU将完成对系统的复位。有两点需要注意:一、复位信号是高电平有效,二、高电平的保持时间必须大于两个机器周期,可见高电平保持时间与振荡频率有关。本次设计中采用上电复位电路,上电复位是指在系统上电时,RST端自动产生复位所需要的信号将单片机复位,本次设计中的上电复位电路如图所示。上电时,RST端高电平的维持时间取决于R(1k)和C(22uF)的值。要使单片机可靠的复位,设计中使其维持的时间足够长。如图2-2所示。

相关文档
最新文档