万年历课程设计论文.docx

上传人:b****5 文档编号:5705351 上传时间:2022-12-31 格式:DOCX 页数:33 大小:658.07KB
下载 相关 举报
万年历课程设计论文.docx_第1页
第1页 / 共33页
万年历课程设计论文.docx_第2页
第2页 / 共33页
万年历课程设计论文.docx_第3页
第3页 / 共33页
万年历课程设计论文.docx_第4页
第4页 / 共33页
万年历课程设计论文.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

万年历课程设计论文.docx

《万年历课程设计论文.docx》由会员分享,可在线阅读,更多相关《万年历课程设计论文.docx(33页珍藏版)》请在冰豆网上搜索。

万年历课程设计论文.docx

万年历课程设计论文

 

单片机课程设计

 

题目名称:

电子万年历

姓名:

学号:

201130095031

系别:

电子信息工程系

班级:

电子信息工程

(1)班

指导老师:

完成时间:

2013年1月2日

 

目录

一、摘要****************************************************************3

二、设计要求和目的**************************************************3

三、课程设计任务*****************************************************3

四、DS1302模块******************************************************3-7

五、51单片机最小系统模块*****************************************7-9

六、显示器12864模块************************************9-14

七、电子万年历的电路图和PCB图********************************15

八、电子万年历的功能介绍*****************************************15-16

九、系统软件设计****************************************************16-21

十、个人感想**********************************************************21

一、摘要

随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。

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

该电子万年历主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。

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

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

关键词:

时钟电路;时钟芯片DS1302;LED动态扫描;单片机AT89C51;MAX7219;

二、设计要求和目的

要求:

利用51单片机芯片和DS1302芯片设计电子万年历

目的:

1.注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。

2.了解所选择的51单片机芯片各个引脚功能,按键识别的相关原理,并巩固学习单片机的相关内容知识。

3.通过软硬件设计实现利用51单片机芯片完成电子万年历的显示

三、课程设计任务

1.查阅相关文献资料,熟悉所选51单片机芯片;

2.总体设计方案规划,通过按键输入调整,在LCD液晶模块上能显示期、时、分、秒和阴历月、日,在显示农历时间时,能标明是否为闰年。

3.系统硬件设计,熟悉单片机最小系统构建,DS1302时钟芯片工作原理。

4.系统软件设计,用C语言编程实现年、月、日、星期、时、分、秒显示功能。

5.设计心得体会及总结。

四、DS1302模块

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可以自动调制,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:

复位(RST)、I/O数据线、串行时钟(SCLK)。

时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。

DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。

2、DS1302引脚分布及含义

图10-1DS1302引脚图

X1,X2:

32.768KHz晶振引脚。

GND:

共地端。

RST:

复位。

I/O:

数据输入/输出。

SCLK:

串行时钟。

VCC1:

电池引脚。

VCC2:

主电源引脚。

DS1302的内部结构如图所示,主要组成部分为:

移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。

虽然数据分为两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。

图10-2DS1302内部结构图

DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。

不过对我们目前而言,最需要熟悉的是和时钟相关的部分功能,对于其他参数请参阅数据手册。

3、DS1302工作原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

4、DS1302的寄存器和控制命令

对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

日历、时间寄存器及控制字如表所示。

表10-1日历、时钟寄存器与控制字对照表

寄存器名称

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

1

RAM/CK*

A4

A3

A2

A1

A0

RD/WR*

秒寄存器

1

0

0

0

0

0

0

X

分寄存器

1

0

0

0

0

0

1

X

小时寄存器

1

0

0

0

0

1

0

X

日寄存器

1

0

0

0

0

1

1

X

月寄存器

1

0

0

0

1

0

0

X

星期寄存器

1

0

0

0

1

0

1

X

年寄存器

1

0

0

0

1

1

0

X

写保护寄存器

1

0

0

0

1

1

1

X

慢充电寄存器

1

0

0

1

0

0

0

X

时钟突发寄存器

1

0

1

1

1

1

1

X

表10-2内部主要寄存器分布表

最后一位RD/WR*为“0”时表示进行写操作,为“1”时表示读操作。

DS1302内部寄存器列表如下表所示。

DS1302内部的RAM分为两类:

一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)和FFH(读)。

接下来讨论如何通过外部接口来访问控制寄存器和RAM。

单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表10-1所示,最高位Bit7固定为1,Bit6决定操作是针对RAM还是时钟寄存器,接着的5个Bit是RAM或时钟寄存器在DS1302的内部地址,最后一个Bit表示这次操作是读操作或是写操作。

物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。

其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O口是数据线。

具体的读写时序参考图10-3,注意的是,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般输入写入有效是在上升沿,读出有效是在下降沿(DS1302也是如此),如果不是特别确定,则把程序设计成如下:

平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。

图10-3单个字节的读写时序图

DS1302的连接电路图如下图

五、51单片机最小系统模块

电路图如下图

下面着重介绍时钟电路和复位电路。

1)时钟电路

单片机工作时,从取指令到译码再进行微操作,必须在时钟信号控制下才能有序地

进行,时钟电路就是为单片机工作提供基本时钟的。

单片机的时钟信号通常有两种产生方式:

内部时钟方式和外部时钟方式。

在单片机XTAL1和XTAL2引脚上跨接上一个晶振和两个

稳频电容,可以与单片机片内的电路构成一个稳定的自激振荡器。

晶振的取值范围一般为

0~24MHz,常用的晶振频率有6MHz、12MHz、11.0592MHz、24MHz等。

一些新型的

单片机还可以选择更高的频率。

外接电容的作用是对振荡器进行频率微调,使振荡信号频率

与晶振频率一致,同时起到稳定频率的作用,一般选用20~30pF的瓷片电容。

外部时钟方式则是在单片机XTAL1引脚上外接一个稳定的时钟信号源,它一般适

用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。

时序是单片机在执行指令时CPU发出的控制信号在时间上的先后顺序。

AT89C51单片机的时序概念有4个,可用定时单位来说明,包括振荡周期、时钟周期、机器周期和指令周期。

振荡周期:

是片内振荡电路或片外为单片机提供的脉冲信号的周期。

时序中1个振荡周期定义为1个节拍,用P表示。

时钟周期:

振荡脉冲送入内部时钟电路,由时钟电路对其二分频后输出的时钟脉冲周期称为时钟周期。

时钟周期为振荡周期的2倍。

时序中1个时钟周期定义为1个状态,用S表示。

每个状态包括2个节拍,用P1、P2表示。

机器周期:

机器周期是单片机完成一个基本操作所需要的时间。

一条指令的执行需要一个或几个机器周期。

一个机器周期固定的由6个状态S1~S6组成。

指令周期:

执行一条指令所需要的时间称为指令周期。

一般用指令执行所需机器周期数表示。

AT89C51单片机多数指令的执行需要1个或2个机器周期,只有乘除两条指令的执行需要4个机器周期。

了解了以上几个时序的概念后,我们就可以很快的计算出执行一条指令所需要的时间。

例如:

若单片机使用12MHz的晶振频率,则振荡周期=1/(12MHz)=1/12us,时钟周期=1/6us,机器周期=1us,执行一条单周期指令只需要1us,执行一条双周期指令则需要2us。

2)复位电路

无论是在单片机刚开始接上电源时,还是运行过程中发生故障都需要复位。

复位电

路用于将单片机内部各电路的状态恢复到一个确定的初始值,并从这个状态开始工作。

单片机的复位条件:

必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。

电复位电路中,利用电容充电来实现复位。

在电源接通瞬间,RST引脚上的电位是高电平

(Vcc),电源接通后对电容进行快速充电,随着充电的进行,RST引脚上的电位也会逐渐

下降为低电平。

只要保证RST引脚上高电平出现的时间大于两个机器周期,便可以实现正

常复位。

按键复位电路中,当按键没有按下时,电路同上电复位电路。

如在单片机运行过程中,按下

RESET键,已经充好电的电容会快速通过1KΩ电阻的回路放电,从而使得RST引脚上的

电位快速变为高电平,此高电平会维持到按键释放,从而满足单片机复位的条件实现按键复

位。

单片机复位后各特殊功能寄存器的复位值见下表

单片机特殊功能寄存器复位值

寄存器复位值寄存器复位值寄存器复位值

PC0000HSBUF不确定TMOD00H

B00HSCON00HTCON00H

ACC00HTH100HPCON0***0000B

PSW00HTH000HDPTR0000H

IP***00000BTL100HSP07H

IE0**00000BTL000HP0~P3FFH

注:

*表示无关位。

六、显示器12864模块

管脚号

管脚名称

电平

管脚功能描述

1

GND

0V

电源地

2

VCC

3.0+5V

电源正

3

V0

-

对比度(亮度)调整

4

RS(CS)

H/L

RS=“H”,表示DB7——DB0为显示数据

RS=“L”,表示DB7——DB0为显示指令数据

5

R/W(SID)

H/L

R/W=“H”,E=“H”,数据被读到DB7——DB0

R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR

6

E(SCLK)

H/L

使能信号

7

DB0

H/L

三态数据线

8

DB1

H/L

三态数据线

9

DB2

H/L

三态数据线

10

DB3

H/L

三态数据线

11

DB4

H/L

三态数据线

12

DB5

H/L

三态数据线

13

DB6

H/L

三态数据线

14

DB7

H/L

三态数据线

15

PSB

H/L

H:

8位或4位并口方式,L:

串口方式(见注释1)

16

NC

-

空脚

17

/RESET

H/L

复位端,低电平有效(见注释2)

18

VOUT

-

LCD驱动电压输出端

19

BLA

VDD

背光源正端(+5V)(见注释3)

20

BLKK

VSS

背光源负端(见注释3)

*注释1:

如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。

*注释2:

模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:

如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。

指令说明:

模块控制芯片提供两套控制命令,基本指令和扩充指令如下:

指令表1:

(RE=0:

基本指令)

指令码

功能

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

 

清除

显示

 

0

0

0

0

0

0

0

0

0

1

将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"

地址

归位

0

0

0

0

0

0

0

0

1

X

设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM的内容

显示状态开/关

0

0

0

0

0

0

1

D

C

B

D=1:

整体显示ON

C=1:

游标ON

B=1:

游标位置反白允许

进入点

设定

0

0

0

0

0

0

0

1

I/D

S

指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位

游标或显示移位控制

0

0

0

0

0

1

S/C

R/L

X

X

设定游标的移动与显示的移位控制位;这个指令不改变DDRAM的内容

功能

设定

0

0

0

0

1

DL

X

RE

X

X

DL=0/1:

4/8位数据

RE=1:

扩充指令操作

RE=0:

基本指令操作

设定CGRAM

地址

0

0

0

1

AC5

AC4

AC3

AC2

AC1

AC0

设定CGRAM地址

设定DDRAM

地址

0

0

1

0

AC5

AC4

AC3

AC2

AC1

AC0

设定DDRAM地址(显示位址)

第一行:

80H-87H

第二行:

90H-97H

读取忙标志和地址

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值

写数据到RAM

1

0

数据

将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)

读出RAM的值

1

1

数据

从内部RAM读取数据D7——D0

(DDRAM/CGRAM/IRAM/GRAM)

指令表2:

(RE=1:

扩充指令)

指令码

功能

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

 

待命

模式

 

0

0

0

0

0

0

0

0

0

1

进入待命模式,执行其他指令都棵终止

待命模式

卷动地址开关开启

0

0

0

0

0

0

0

0

1

SR

SR=1:

允许输入垂直卷动地址

SR=0:

允许输入IRAM和CGRAM地址

反白

选择

0

0

0

0

0

0

0

1

R1

R0

选择2行中的任一行作反白显示,并可决定反白与否。

初始值R1R0=00,第一次设定为反白显示,再次设定变回正常

睡眠

模式

0

0

0

0

0

0

1

SL

X

X

SL=0:

进入睡眠模式

SL=1:

脱离睡眠模式

扩充

功能

设定

0

0

0

0

1

CL

X

RE

G

0

CL=0/1:

4/8位数据

RE=1:

扩充指令操作

RE=0:

基本指令操作

G=1/0:

绘图开关

设定绘图RAM

地址

0

0

1

0

AC6

0

AC5

0

AC4

AC3

AC3

AC2

AC2

AC1

AC1

AC0

AC0

设定绘图RAM

先设定垂直(列)地址AC6AC5…AC0

再设定水平(行)地址AC3AC2AC1AC0

将以上16位地址连续写入即可

备注;当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。

 

读写时序图

数据传输过程

8位和4位数据线的传输过程

串口数据线模式数据传输过程

时序图

MPU写资料到ST7920(8位数据线模式)

MPU从ST7920读资料(8位数据线模式)

串口读写时序:

七、电子万年历的电路图和PCB图

电路图如下图:

PCB图如下图

八、电子万年历的功能介绍

电子万年历的功能主要是由51单片机和DS1302芯片实现的,并且在显示屏12864上显示。

同时,万年历的年、月、日、星期、时、分、秒还有农历,而且,还具有闹钟提醒、整点报时的功能,同时,它还能通过按键调整年、月、日、星期、时、分、秒,起到调整的作用,给我们带来了极大地方便。

如上图

K1键:

是设置按键,主要是用来选择需要调节的年、月、日、星期、时、分、秒

K2键:

是确认和返回键。

K3键:

是加键,用来调节年、月、日、星期、时、分、秒

K4键:

是减键,用来调整年、月、日、星期、时、分、秒

K5键:

是闹钟的开启和关闭键。

九、系统软件设计

时间控制流程图

主要的部分代码介绍:

#include

#include

#include"LCD12864.h"

#include"DS1302.h"

#include"nongli.h"

#include"displaytime.h"

#include"bell.h"

#include"delay.h"

#defineuintunsignedint

#defineucharunsignedchar

/*--------------------定义按键-----------------------------------------------*/

sbitK1=P1^0;//K1-设置

sbitK2=P1^1;//K2-确认、返回

sbitK3=P1^2;//K3-加

sbitK4=P1^3;//K4-减

sbitK5=P1^5;//按键K5-闹钟的打开与关闭

sbitled=P2^0;//led灯

//K5=P1^4,K5-控制闹钟的打开与关闭,在"hw.h"中定义

/*---------------------函数声明------------------------------*/

voidds_w0(void);

voidds_w(void);

voidConver_week(bitc,ucharyear,ucharmonth,ucharday);

/*-----------------------------定义全局变量------------------------------*/

bitw=0;//调时标志位

unsignedcharyy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moontemp2;//定义时间映射全局变量(专用寄存器)

signedcharaddress,item,item0,max,mini;

unsignedcharclk_ala[2]={0x00,0x00};//闹钟数据存放初,始值为00:

00

unsignedcharhour,minute,time;//用于闹铃的设置

/*-----------------------------日期、时间设置函数-----------------------------*/

voidtiaozheng(void){

yy=read_clock(0x8d);//调用1302时钟数据中的年数据,从地址0x8d中

mo=read_clock(0x89);//调用1302时钟数据中的月数据,从地址0x89中

dd=read_clock(0x87);//从1302芯片中读取日数据,从地址0x87中

week=read_clock(0x8b);//从1302芯片中读取星期数据,从地址0x8b中

//----------------------------------

lcm_w_test(0,0x80);

lcm_w_word("20");//显示内容字符20

lcm_w_test(1,(yy/16)+0x30);//函数参数1,代表本行写数据,YY/16+0X30得出年十位数字的显示码地址,送显示

lcm_w_test(1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1