电子日历时钟设计

电子日历时钟设计
电子日历时钟设计

目录

1题目设计的要求 (1)

2 系统硬件设计 (1)

2.1设计原理 (1)

2.2器件的功能与作用 (1)

2.2.1 MCS51单片机AT89C51 (1)

2.2.2 串行时钟日历片DS1302 (2)

2.2.3 液晶显示LCD1602 (3)

3 系统软件设计 (4)

3.1程序流程 (4)

3.2程序代码 (5)

4 系统仿真调试 (12)

4.1仿真原理图设计 (12)

4.2仿真运行过程 (12)

4.3仿真运行结果 (13)

5 总结 (13)

6 参考文献 (13)

1题目设计的要求

通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。要求LCD上显示的日期和时间与当前系统时间保持一致。

2 系统硬件设计

2.1 设计原理

图3.1 电路原理图

2.2 器件的功能与作用

2.2.1 MCS51单片机AT89C51

XX AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件

采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2.2.2 串行时钟日历片DS1302

系统的组成与工作原理:

系统由单片机AT89C52,串行日历时钟片DS1302,液晶显示模组LCD1602。

DS1302的CLOCK与AT89C52的P1.6相连,RST与P1.5相连,IO与P1.7相连。

LCD1602的D0~D7与AT89C51的P0.0~P.7相连,并接上拉电阻,RS与P2.0相连,RW与P2.1相连,E与P2.2相连。

DS1302是DALLAS公司拖出的涓流充电时钟芯片,内含有一个实时时钟/日历和31个季节静态RAM,通过简单地串行接口与单片机进行通信,实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式,DS1302与单片机之间能简单地采用同步串行方式进行通信,仅需用到RES复位、I/O 数据线、SCLK串行时钟3个口线。对时钟、RAM的读/写,可以改用单字节方式或多达31个字节的字符组方式。DS1302工作时功耗很低,保持数据和时钟信息是功率小于1mW。DS1302广泛应用于电话传真、便携式仪器及电池供电的仪器仪表等产品领域中。

RT-1602 字符型液晶模块是以两行16个子的5*7点阵吐信来显示字符的液晶显示器。

DS1302有8个引脚:

X1、X2:32.768kHz晶振介入引脚。

GND:地。

RST:复位引脚,低电平有效。

I/O:数据输入/输出引脚,具有三态功能。

SCLK:串行时钟输入引脚。

Vcc1:工作电源引脚。

Vcc2:备用电源引脚。

DS1302有一个控制寄存器,12个日历,时钟寄存器和31个RAM。

控制寄存器

控制寄存器用于存放DS1302的控制命令字,DS1302的RST引脚回到高电平后写入的第一个字就为控制命令。它用于对DS1302读写过程进行控制,它的格式如下:

表2.1 控制寄存器的格式

各项功能说明如下。

D7:固定为1

D6:RAM/CK位,片内RAM或日历、时钟寄存器选择位,当RAM/CK=1时,对片内RAM进行读写,当RAM/CK=0时,对日历、时钟寄存器进行读写。

D5~D1:地址位,用于选择进行读写的日历、时钟寄存器或片内RAM。对日历、时钟寄存器或片内RAM的选择。

D0:读写位,当RD/W=1时,对日历、时钟寄存器或片内RAM进行读操作,当RD/W=0时,对日历、时钟寄存器或片内RAM进行写操作。

日历、时钟寄存器

DS1302共有12个寄存器,其中有7个与日历、时钟相关,存放的数据为BCD码形式。日历、时钟寄存器的格式。

说明:

数据都以BCD码形式表示。

小时寄存器的D7位为12小时制/24小时制的选择位,当为1时选择12小时制,当为0时选24小时制。当12小时制时,D5位为1是上午,D5位为0是下午,D4位小时的十位。当24小时制时,D5、D4位为小时的十位。

秒寄存器中的CH位为时钟暂停位,当为1时,时钟暂停,为0时,时钟开始启动。

写保护寄存器中的WP为写保护位,WP=1时,写保护,当WP=0时,未写保护,当对日历、时钟寄存器或片内RAM进行写时,WP应清零,当对日历、时钟寄存器或片内RAM进行读时,WP一般置1.

慢充电寄存器的TCS位为控制慢充电的选择,当它为1010时才能是慢充电工作。DS为二极管选择位。DS为01选择一个二极管,DS为10选择两个二极管,DS为11或00充电器被禁止,与TCS 无关。RS用于选择连接在Vcc2与Vcc1之间的电阻,RS为00,充电器被禁止,与TCS无关。

2.2.3 液晶显示LCD1602

RT-1602采用表中的16 脚接口:

第一脚:Vss,电源地。

第二脚:VDD,+5V电源。

第三脚:VL,液晶显示偏压信号。

第四脚:RS,数据/命令选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。

第五脚:R/W,读/写选择端。

第六脚:E,使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第七~14脚:D0~D7,为8位双向数据线。

第15脚:BLA,背光源正极。

第16脚:BLK,背光源负极。

3 系统软件设计

3.1 程序流程

图4.1 程序流程图

3.2 程序代码

#include //包含单片机寄存器的头文件

#include //包含_nop_()函数定义的头文件

/*********************************************************************** 以下是DS1302芯片的操作程序

************************************************************************/ unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字

sbit DATA=P1^7; //位定义1302芯片的接口,数据输出端定义在P1.7引脚

sbit RST=P1^5; //位定义1302芯片的接口,复位端口定义在P1.5引脚

sbit SCLK=P1^6; //位定义1302芯片的接口,时钟输出端口定义在P1.6引脚

/*****************************************************

函数功能:延时若干微秒

入口参数:n

***************************************************/

void delaynus(unsigned char n)

{

unsigned char i;

for(i=0;i

;

}

/*****************************************************

函数功能:向1302写一个字节数据

入口参数:x

***************************************************/

void Write1302(unsigned char dat)

{

unsigned char i;

SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备

delaynus(2); //稍微等待,使硬件做好准备

for(i=0;i<8;i++) //连续写8个二进制位数据

{

DATA=dat&0x01; //取出dat的第0位数据写入1302

delaynus(2); //稍微等待,使硬件做好准备

SCLK=1; //上升沿写入数据

delaynus(2); //稍微等待,使硬件做好准备

SCLK=0; //重新拉低SCLK,形成脉冲

dat>>=1; //将dat的各数据位右移1位,准备写入下一个数据位

}

}

/*****************************************************

函数功能:根据命令字,向1302写一个字节数据

入口参数:Cmd,储存命令字;dat,储存待写的数据

***************************************************/

void WriteSet1302(unsigned char Cmd,unsigned char dat)

{

RST=0; //禁止数据传递

SCLK=0; //确保写数居前SCLK被拉低

RST=1; //启动数据传输

delaynus(2); //稍微等待,使硬件做好准备

Write1302(Cmd); //写入命令字

Write1302(dat); //写数据

SCLK=1; //将时钟电平置于已知状态

RST=0; //禁止数据传递

}

/*****************************************************

函数功能:从1302读一个字节数据

入口参数:x

***************************************************/ unsigned char Read1302(void)

{

unsigned char i,dat;

delaynus(2); //稍微等待,使硬件做好准备

for(i=0;i<8;i++) //连续读8个二进制位数据

{

dat>>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位if(DATA==1) //如果读出的数据是1

dat|=0x80; //将1取出,写在dat的最高位

SCLK=1; //将SCLK置于高电平,为下降沿读出

delaynus(2); //稍微等待

SCLK=0; //拉低SCLK,形成脉冲下降沿

delaynus(2); //稍微等待

}

return dat; //将读出的数据返回

}

/*****************************************************

函数功能:根据命令字,从1302读取一个字节数据

入口参数:Cmd

***************************************************/ unsigned char ReadSet1302(unsigned char Cmd)

{

unsigned char dat;

RST=0; //拉低RST

SCLK=0; //确保写数居前SCLK被拉低

RST=1; //启动数据传输

Write1302(Cmd); //写入命令字

dat=Read1302(); //读出数据

SCLK=1; //将时钟电平置于已知状态

RST=0; //禁止数据传递

return dat; //将读出的数据返回

}

/******************************************************************************* 以下是对液晶模块的操作程序

*******************************************************************************/ sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚

sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚

sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚

sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚

/*****************************************************

函数功能:延时1ms

(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒

***************************************************/

void delay1ms()

{

unsigned char i,j;

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

for(j=0;j<33;j++)

;

}

/*****************************************************

函数功能:延时若干毫秒

入口参数:n

***************************************************/

void delaynms(unsigned char n)

{

unsigned char i;

for(i=0;i

delay1ms();

}

/*****************************************************

函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/

bit BusyTest(void)

{

bit result;

RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态

RW=1;

E=1; //E=1,才允许读写

_nop_(); //空操作

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

result=BF; //将忙碌标志电平赋给result

E=0; //将E恢复低电平

return result;

}

/*****************************************************

函数功能:将模式设置指令或显示地址写入液晶模块

入口参数:dictate

***************************************************/

void WriteInstruction (unsigned char dictate)

{

while(BusyTest()==1); //如果忙就等待

RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令

RW=0;

E=0; //E置低电平

// 就是让E从0到1发生正跳变,所以应先置"0"

_nop_();

_nop_(); //空操作两个机器周期,给硬件反应时间

P0=dictate; //将数据送入P0口,即写入指令或地址

_nop_();

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=1; //E置高电平

_nop_();

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令

}

/*****************************************************

函数功能:指定字符显示的实际地址

入口参数:x

***************************************************/

void WriteAddress(unsigned char x)

{

WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x" }

/*****************************************************

函数功能:将数据(字符的标准ASCII码)写入液晶模块

入口参数:y(为字符常量)

***************************************************/

void WriteData(unsigned char y)

{

while(BusyTest()==1);

RS=1; //RS为高电平,RW为低电平时,可以写入数据

RW=0;

E=0;

// 就是让E从0到1发生正跳变,所以应先置"0"

P0=y; //将数据送入P0口,即将数据写入液晶模块

_nop_();

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=1; //E置高电平

_nop_();

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令

}

/*****************************************************

函数功能:对LCD的显示模式进行初始化设置

***************************************************/

void LcdInitiate(void)

{

delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5); //延时5ms,给硬件一点反应时间

WriteInstruction(0x38);

delaynms(5); //延时5ms,给硬件一点反应时间

WriteInstruction(0x38); //连续三次,确保初始化成功

delaynms(5); //延时5ms,给硬件一点反应时间

WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁delaynms(5); //延时5ms,给硬件一点反应时间

WriteInstruction(0x06); //显示模式设置:光标右移,字符不移

delaynms(5); //延时5ms,给硬件一点反应时间

WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除

delaynms(5); //延时5ms,给硬件一点反应时间

}

/**************************************************************

以下是1302数据的显示程序

**************************************************************/

void Display(unsigned char x,unsigned char y)

{

unsigned char i,j;

i=x/10;

j=x%10;

WriteAddress(y);

WriteData(digit[i]);

WriteData(digit[j]);

delaynms(50); //延时1ms给硬件一点反应时间

}

/*****************************************************

函数功能:主函数

***************************************************/

void main(void)

{

unsigned char second,minute,hour,day,month,year; //分别储存秒、分、小时,日,月,年unsigned char ReadValue; //储存从1302读取的数据

LcdInitiate(); //将液晶初始化

WriteAddress(0x00); //写Date的显示地址,将在第1行第1列开始显示

WriteData('D'); //将字符常量写入LCD

WriteAddress(0x01);

WriteData('a'); //将字符常量写入LCD

WriteAddress(0x02);

WriteData('t'); //将字符常量写入LCD

WriteAddress(0x03);

WriteData('e'); //将字符常量写入LCD

WriteAddress(0x04);

WriteData(':'); //将字符常量写入LCD

WriteAddress(0x08); //写年月分隔符的显示地址,显示在第1行第9列

WriteData('-'); //将字符常量写入LCD

WriteAddress(0x0b); //写月日分隔符的显示地址,显示在第1行第12列

WriteData('-'); //将字符常量写入LCD

WriteAddress(0x40);

WriteData('T');

WriteAddress(0x41);

WriteData('i');

WriteAddress(0x42);

WriteData('m');

WriteAddress(0x43);

WriteData('e');

WriteAddress(0x44);

WriteData(':');

WriteAddress(0x48);

WriteData(':'); //将字符常量写入LCD

WriteAddress(0x4b);

WriteData(':'); //将字符常量写入LCD

while(1)

{

ReadValue = ReadSet1302(0x81); //从秒寄存器读数据

second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);//将读出数据转化Display(second,0x4c); //显示秒

ReadValue = ReadSet1302(0x83); //从分寄存器读

minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //将读出数据转化Display(minute,0x49); //显示分

ReadValue = ReadSet1302(0x85); //从小时寄存器读

hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //将读出数据转化Display(hour,0x46); //显示小时

ReadValue = ReadSet1302(0x87); //从分寄存器读

day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //将读出数据转化Display(day,0x0c); //显示日

ReadValue = ReadSet1302(0x89); //从分寄存器读

month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); //将读出数据转化Display(month,0x09); //显示月

ReadValue = ReadSet1302(0x8d); //从分寄存器读

year=((ReadValue&0xf0)>>4)*10 + (ReadValue&0x0F); //将读出数据转化Display(year,0x06); //显示年

}

}

4 系统仿真调试

4.1 仿真原理图设计

图4.1 仿真原理图

4.2 仿真运行过程

在Keil下,将所编制的C语言程序编译后,生成9.HEX文件;再在PROTEUS环境下,将.HEX 文件加到编制的仿真原理图中进行仿真调试,从而生成正确的日期和时间,该日期和时间与当前系统的日期和时间相符。

4.3 仿真运行结果

图4.2 仿真运行结果图

5 总结

回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在几天里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

6 参考文献

1.单片机原理与应用及C51程序设计谢维成、杨加国主编

基于单片机的电子日历时钟设计

#include #define uchar unsigned char #define uint unsigned int //----端口定义--- sbit ACC_7=ACC^7; sbit RST1=P2^5; sbit IO=P2^6; sbit SCLK=P2^7; sbit k1=P3^2; sbit k2=P3^3; sbit k3=P2^2; sbit k4=P2^3; //uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 数码的位选,左到右 uchar tab_1302[7]={45,50,11,19,1,1,15}; uchar tab_time[8]={0,0,10,0,0,10,0,0}; //时间 uchar tab_day[8]={0,0,10,0,0,10,0,0,}; //年月日 uchar tab_num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //0 1 2 3 4 5 6 7 8 9 - {"0123456789-"} ////////////=============函数声明============//////////////// void display_time(); void delayms(uint); void display_day(); void ds1302(); //获取DS1302的时间 void ds1302_init(); //DS1302的初始化 void write1302(uchar,uchar); //指定地址向DS1302写数据 uchar read1302(uchar); //指定地址向DS1302读数据 void ds1302(); void int0_init(); /////////=======中断初始化=======/////////// void int0_init() { EX0=1;

lcd实时日历时钟评测报告

lcd实时日历时钟评测报告 部门: xxx 时间: xxx 制作人:xxx 整理范文,仅供参考,可下载自行修改

课程设计说明书 课程名称:单片机原理及应用 设计题目: LCD日历 院系: 学生姓名: 学号: 专业班级: 2018年3月 1日

目录摘要4 一.设计任务和要求4 二.方案论证4 三.核心元件的性能4 1.AT89C514 1.1 功能特性概括:5 1.2 管脚说明:5 2.DS13027 2.1DS1302引脚功能7 2.2DS1302的控制字8 2.3 DS1302的寄存器9

2.4 DS1302的数据输入输出10 四.理论分析与计算11 五.电路与程序设计11 1.系统硬件设计11 1.1系统总原理图11 1.2主控部分(单片机MCS-51>11 1.3 计时部分<实时时钟芯片DS1302)12 1.4Proteus仿真图12 2.系统软件设计13 2.1程序流程图12 2.2程序源代码12

六.结果分析23七.设计体会总结24参考文献25

摘要 此次课程设计的要求是通过LCD与单片机的连接模块能够显示数字<如时间)、字符<如英文)和图形等,这就需要专门的时钟芯片-----DS1302。DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到LM044L上显示。程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示。同时,进行循环赋值,使LCD 动态显示当前的时间。b5E2RGbCAP 关键字:AT89C51、DS1302,LM044L显示器 朗读显示对应的拉丁字符的拼音字典 - 查看字典详细内容 一.设计任务和要求 1. 利用DS1302实现年月日时分秒,并用LCD显示。 2.通过LCD模块与单片机的接口,能显示数字<如时间)、字符<如英文)。 3. 硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;p1EanqFDPw 4. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;DXDiTa9E3d 5.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单。

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

实时日历/时钟系统的实现

山东科技大学信电学院07级大神的课程设计代码,实时日历/时钟的设计及实现825982538255仅供学弟学妹参考,课程设计还要自己做。 .386 Init macro op1,op2,op3,op4,op5,op6 mov cx,00h mov dh,op1 mov dl,op2 op6:mov ah,02h mov bh,00h int 10h push cx mov ah,0ah mov al,op3 mov bh,00h mov cx,01h int 10h pop cx inc cx inc op4 cmp cx,op5 jne op6 endm data segment shijian db 10 dup(':') ;存放时间 riqi db 20 dup(' ') ;存放日期 str1 db ' Welcome to use this clock ',0ah,0dh db '* show time--t ',0ah,0dh db '* set time--s ',0ah,0dh,'$' str2 db ' _ _ ',0ah,0dh db ' ( ) ( )',0ah,0dh db ' | |_| | ',0ah,0dh db ' | _ | /^_` )( ^_`\ ( ^_`\ ( ) ( ) ',0ah,0dh db ' | | | |( (_| || (_) )| (_) )| (_) | ',0ah,0dh db ' (_) (_)`\__,_)| ,__/^| ,__/^`\__, | ',0ah,0dh db ' | | | | ( )_| | ',0ah,0dh db ' (_) (_) `\___/^ ',0ah,0dh db ' _ _ _ _ ',0ah,0dh db ' ( ) ( ) ( ) ( ) ',0ah,0dh db ' | `\| | __ _ _ _ `\`\_/^/^__ _ _ _ __ ',0ah,0dh db ' | , ` | /^__`\( ) ( ) ( ) `\ /^/^__`\ /^_` )( ^__) ',0ah,0dh db ' |`\ | ( ___/| \_/ \_/ | | |( ___/( (_| || | ',0ah,0dh

时钟日历

Protues 图 ;程序清单: ;设置变量缓冲区 SEC EQU 30H MIN EQU 31H HOUR EQU 32H DAY EQU 33H MON EQU 34H YEAR EQU 35H ;************************************************************************* ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0030H MAIN: LCALL CHUSHI MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H MOV IE,#82H SETB TR0 ;开启定时器T0 MOV 50h,#00H ;启用定时器T0的初始值 MOV 37H,#0 ;显示日期和时间的标志

MOV 38H,#0 ;12进制和24进制的标志 MOV 39H,#23 ;默认时间为24进制 CLR F0 ;日历定时0和1的标志 LOOP: MOV A,37H JZ SHIJIAN MOV R1,#33H LJMP BEGIN1 SHIJIAN:MOV R1,#30H ;初始化显示 BEGIN1: MOV A,38H JZ JZ24 MOV 39H,#11 LJMP BEGIN2 JZ24: M OV 39H,#23 BEGIN2: LCALL DISPLAY LCALL KEY ;扫描键盘 CJNE A,#05H,DINGS ;判断键值是否为5号键 LCALL DY1MS ;若是,则实现调整LCALL TIAOT LCALL TIAOT LCALL DISPLAY LJMP DOWN DINGS: CJNE A,#06H,QIEH ;判断键值是否为6号键,定时 LCALL DY1MS ;若是,则实现调整 CPL F0 JNB F0,DI0 ;F0=0,定时器0 LCALL DISHI1 ;F0=1,定时器1 LCALL DISPLAY LJMP DOWN DI0: LCALL DISHI0 LCALL DISPLAY LJMP DOWN QIEH: CJNE A,#07H,BIANH ;判断键值是否为7号键,切换 LCALL DY1MS ;若是,则切换显示,年月日与时分秒切换 LCALL DISPLAY MOV A,37H CPL A MOV 37H,A LJMP DOWN BIANH: CJNE A,#08H,DOWN ;判断是否为八号键,变换进制 LCALL DY1MS LCALL DISPLAY MOV A,38H CPL A MOV 38H,A DOWN: LJMP loop

电子时钟单片机【完整版】

烟台南山学院 单片机课程设计题目电子时钟 姓名: 所在学院 所学专业: 班级: 学号: 指导教师: 完成时间:

随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。 由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。 在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。 本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。本系统为多功能数字钟的系统。本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。 关键词:单片机 AT89S52 电子时钟汇编语言

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

摘要 本课题通过MCS-51单片机来设计电子时钟,采用汇编语言进行编程,可以实现以下一些功能:小时,分,秒和年,月,日的显示。本次设计的电子时钟系统由时钟电路,LED显示电路三部分组成。51单片机通过软件编程,在LED数码管上实现小时,分,秒和年,月,日的显示;利用时钟芯片DS1302来实现计时。本文详细介绍了DS1302 芯片的基本工作原理及其软件设计过程,运用PROTEUS软件进行电路连接和仿真,同时还介绍了74LS164,通过它来实现I|O口的扩展。 关键词:时钟芯片,仿真软件,74LS164 目录 前言 0.1设计思路 (8) 0.2研究意义 (8)

一、时钟芯片 1.1 了解时钟芯片……………………………………………….8-9 1.2 掌握时钟芯片的工作原理………………………………….10-11二、74LS164 2.1 了解74LS164........................................................11-12 2.2 掌握的74LS164工作原理. (12) 三、数码管 3.1 熟悉常用的LED数码管...........................................12-13 3.2 了解动态显示与静态显示. (13) 四、程序设计 4.0 程序流程图 (14) 4.1 DS1392的驱动.......................................................15-16 4.2 PROTUES实现电路连接. (17) 4.3 数码管的显示:小时;分;秒 (18) 4.4 数码管显示:年;月;日 (19) 五、总结…………………………………………………………………..20-21 六、附页程序………………………………………………………………22-31前言

电子日历时钟程序

#include typedef unsigned char BYTE; //自定义字节类型 #define Set_Bit(BIT) (BIT = 1) //定义置1函数 #define Clear_Bit(BIT) (BIT = 0) //定义清0函数 /*7279指令*/ #define HD7279_TEST 0xbf //测试 #define HD7279_RLC 0xa3 //循环左移 #define HD7279_RRC 0xa2 //循环右移 #define HD7279_RL 0xa1 //左移 #define HD7279_RR 0xa0 //右移 #define DECODE0 0x80 //译码方式0 #define HD7279_DECODE1 0xc8 //译码方式1 #define UNDECODE 0x90 //译码方式2: 不译码 #define HD7279_HIDE 0x98 //消隐 #define HD7279_FLASH 0x88 //闪烁 #define HD7279_SEGON 0xe0 //段亮 #define HD7279_SEGOFF 0xc0 //段灭 #define CMD_READ 0x15 //读键盘指令 /*函数定义*/ void write7279(BYTE,BYTE); //定义HD7279写函数 BYTE read7279(BYTE); //定义HD7279读函数 void Send_Byte(BYTE); //定义HD7279发送字节函数 BYTE Receive_Byte(void); //定义HD7279接收字节函数 void Short_Delay(void); //定义短延时函数 void Long_Delay(void); //定义长延时函数 void Mcu_Init(void); //定义MCU初始化函数 void distime(void); //显示时间 void discalendar(void); //显示日历 void HD7279key(void); //按键控制 BYTE Key_number; //定义键值变量 unsigned char second=0,minute=40,hour=9,F; //秒、分、时变量 unsigned int day=10,month=6,year=2014,mark=0,i,j,clock,wait=0;//年月日等变量 sbit key=P1^4; //定义HD7279中断硬件连接--->INT1 sbit HD7279_Clk=P1^2; //定义HD7279时钟硬件连接 sbit HD7279_Data=P1^3; //定义HD7279数据硬件连接 sbit HD7279_CS=P1^1; //片选 /*主函数*/ void main(void) { Mcu_Init(); F=1; while(1) { while(!key) { HD7279key();}

基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度)

1 课设所需软件简介 1.1 Keil uVision4的简要介绍 2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。 Keil C51开发系统基本知识Keil C51开发系统基本知识 1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

lcd实时日历时钟报告

课程设计说明书 课程名称:单片机原理及应用 设计题目:LCD日历 院系: 学生姓名: 学号: 专业班级: 2011年3月1日

目录 摘要 (4) 一.设计任务和要求 (4) 二.方案论证 (4) 三.核心元件的性能 (4) 1.AT89C51 (4) 1.1 功能特性概括: (5) 1.2 管脚说明: (5) 2.DS1302 (7) 2.1 DS1302引脚功能 (7) 2.2 DS1302的控制字 (8) 2.3 DS1302的寄存器 (9) 2.4 DS1302的数据输入输出 (10) 四.理论分析与计算 (12) 五.电路与程序设计 (12) 1.系统硬件设计 (12) 1.1系统总原理图 (12) 1.2 主控部分(单片机MCS-51) (12) 1.3 计时部分(实时时钟芯片DS1302) (13) 1.4 Proteus仿真图 (13) 2.系统软件设计 (14) 2.1 程序流程图 (13)

2.2 程序源代码 (13) 六.结果分析 (23) 七.设计体会总结 (24) 参考文献 (25) 摘要

此次课程设计的要求是通过LCD与单片机的连接模块能够显示数字(如时间)、字符(如英文)和图形等,这就需要专门的时钟芯片-----DS1302。 DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到LM044L上显示。程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示。同时,进行循环赋值,使LCD 动态显示当前的时间。 关键字:AT89C51、DS1302,LM044L显示器 一.设计任务和要求 1.利用DS1302实现年月日时分秒,并用LCD显示。 2.通过LCD模块与单片机的接口,能显示数字(如时间)、字符(如英文)。 3. 硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程; 4. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单; 5.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单。 6计算说明书部分包括方案论证报告打印版或手写版,程序流程图具体程序等 7. 图纸部分包括具体电路原理图打印版 8. 设计要求还包括利用一天时间进行资料查阅与学习讨论,利用5天时间在实验室进行分散设计,最后三天编写报告。最后一天进行成果验收。 二.方案论证 实现数字电子钟的设计有以下两种基本方案,现就两种基本方案的优劣进行具体论证,

最新毕业设计:基于单片机的电子日历时钟

一课程设计题目:电子日历时钟 二实现的功能: 基本功能: (1)显示北京时间,并且能够校准时间; (2)程序使用汇编语言; (3)显示的时、分、秒之间以及年、月、日间以小数点分隔;(4)显示公历日期,并且能够校准日期; 发挥功能: (5)运动秒表; (6)闹钟功能; (7)自动整点报时。 三课程设计的目的: 课程标志性内容的设计理解和综合运用,对所学内容进行一次实操,学以致用。 四、设计方案说明 1、硬件部分 (1)采用6位LED数码管显示日期或者时间。 (2)显示器的驱动采用“动态扫描驱动”,且采用“一键多用”的设计方案,系统电路大为简化。使用小数点表示闹 钟设置状态; (3)电路连接使用PCB,使电路连接简洁美观

2、软件部分 (1)“时钟”基准时间由单片机内部的定时中断提供,考虑因素:定时时间是“秒”的整除数,且长短适宜。最长不 能超过16位定时器的最长定时时间;最短不能少于中断服 务程序的执行时间。基准时间越短,越有利于提高时钟的 运行精确度。基准时间定为0.05秒。 (2)用一个计数器对定时中断的次数进行计数,由基准时间为0.05秒知计数值为20即可实现实现“秒”定时,同理 进行“分”﹑“时”定时,以及“日”﹑“月”﹑“年” 定时。 (3)LED 数码管显示器采用“动态扫描驱动”考虑问题:驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间 短),而驱动信号的间歇时间必须小于“余辉时间”(电流 大余辉时间长),但驱动电流大小受硬件电路能力和LED 数码管极限功耗的制约。 (4)动态扫描显示方式在更新显示内容时,考虑到因LED数码管余辉的存在可能会造成显示字符的模糊,所以新内容 写入显示器之前将所有的LED数码管熄灭。 (5)关于自动识别“月大﹑月小”和“平年﹑润年”问题的考虑 a)月大和月小 2月另外计算;

基于单片机及时钟芯片DS1302的电子时钟设计

目录 摘要 一、引言 (1) 二、硬件电路设计 (2) 2.1 主要芯片 (2) 2.1.1 微处理器 (2) 2.1.2 DS1302简介 (4) 2.1.3 DS1302引脚说明 (5) 2.1.4 74ls245简介及引脚说明 (5) 2.2 时钟硬件电路设计 (6) 2.2.1 时钟电路设计 (7) 2.2.2 整点报时功能 (8) 2.2.3 硬件原理图 (9) 三、proteus和keil软件仿真及调试 (9) 3.1 电路的仿真 (9) 3.2 软件调试 (9) 四、C语言程序 (10) 五、参考文献 (13)

电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。 本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。 本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。 关键词:电子钟;多功能;AT89C52;时钟芯片

一、引言 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。 1.1 多功能电子时钟研究的背景和意义 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的[1]。 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

实时日历时钟显示系统的设计

微机原理及应用课程设计任务书 20 xx -20 xx 学年第 x 学期第 xx 周- xx 周 题目实时日历时钟显示系统的设计 内容及要求 内容:实时日历时钟显示系统 要求:设计一个实时日历时钟显示系统的程序。用“年/月/日”,“时:分:秒”(都是两位)的形式连续显示系统时间 进度安排 课程设计内容时间分配 方案论证1天 分析、设计、调试、运行3天 检查、整理、写设计报告、小结1天 合计5天 学生姓名: xx 指导时间: xxxx 指导地点: xxxx 任务下达任务完成 考核方式 1.评阅√ 2.答辩√ 3.实际操作□ 4.其它□指导教师系(部)主任 注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。 2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

此次微机原理课程设计要求设计一个实时日历时钟显示系统。 本程序利用DOS中断2AH号功能调用取系统年月日,再逐个显示各数据,利用2CH号功能调用取系统时间,逐个显示各数据。用“时:分:秒”(都是两位)的形式连续显示系统时间,并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。 任务安排: 主程序: xx:主体程序和流程设计 xx:日历调用显示系统 xx:时间调用显示系统 子程序: xx:显示两位数字的子程序

一、课程名称 (2) 二、课程内容及要求 (2) 三、小组组成 (2) 四、设计思路 (3) 五、程序流程图及介绍 (4) 六、调试 (5) 七、总结 (7) 八、参考资料 (9) 附录 (9)

一、课程名称:实时日历时钟显示系统的设计 二、课程内容及要求 课程内容:实时日历时钟显示系统 要求:设计一个实时日历时钟显示系统的程序。用“年/月/日”,“时:分:秒”(都是两位)的形式连续显示系统时间 三、小组组成: 成员: xx, xx, xx, xx 任务安排: 主程序: xx:主体程序和流程设计 xx:日历系统 xx:时间系统 子程序: xx:显示两位数字的子程序

单片机课程设计 电子日历时钟显示器设计

目录 1.题目设计要求 (1) 2.开发平台简介 (1) 3.系统硬件设计 (2) 3.1设计原理 (2) 3.2器件的功能与作用 (2) 3.2.1 MCS51单片机AT89C51 (2) 3.2.2复位电路 (3) 3.2.3晶振电路 (4) 3.2.4 DS1302时钟模块 (4) 3.2.5 引脚功能及结构 (4) 3.2.6 DS1302的控制字节 (5) 3.2.7 数据输入输出(I/O) (5) 3.2.8 DS1302的寄存器 (6) 3.2.9 液晶显示LCD1602 (6) 3.2.10 串行时钟日历片DS1302 (8) 4.系统软件设计 (10) 4.1程序流程 (10) 4.2程序代码 (10) 5.系统仿真调试 (20) 5.1仿真原理图设计 (20) 5.2仿真运行过程 (21) 5.3仿真运行结果 (21) 6.总结 (21) 7.参考文献 (22)

1.题目设计要求 通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。要求LCD上显示的日期和时间与当前系统时间保持一致。 2.开发平台简介 2.1系统仿真平台Proteus Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史,在全球得到了广泛应用。Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩。和我们手头其他的电路设计仿真软件,他最大的不同即它的功能不是单一的。另外,它独特的单片机仿真功能是任何其他仿真软件都不具备的。 2.2软件开发平台Keil C Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。Keil C51生成的目标代码效率之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

电子日历时钟设计

目录 1题目设计的要求 (1) 2 系统硬件设计 (1) 2.1设计原理 (1) 2.2器件的功能与作用 (1) 2.2.1 MCS51单片机AT89C51 (1) 2.2.2 串行时钟日历片DS1302 (2) 2.2.3 液晶显示LCD1602 (3) 3 系统软件设计 (4) 3.1程序流程 (4) 3.2程序代码 (5) 4 系统仿真调试 (12) 4.1仿真原理图设计 (12) 4.2仿真运行过程 (12) 4.3仿真运行结果 (13) 5 总结 (13) 6 参考文献 (13)

1题目设计的要求 通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。要求LCD上显示的日期和时间与当前系统时间保持一致。 2 系统硬件设计 2.1 设计原理 图3.1 电路原理图 2.2 器件的功能与作用 2.2.1 MCS51单片机AT89C51 XX AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件

采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。 AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 2.2.2 串行时钟日历片DS1302 系统的组成与工作原理: 系统由单片机AT89C52,串行日历时钟片DS1302,液晶显示模组LCD1602。 DS1302的CLOCK与AT89C52的P1.6相连,RST与P1.5相连,IO与P1.7相连。 LCD1602的D0~D7与AT89C51的P0.0~P.7相连,并接上拉电阻,RS与P2.0相连,RW与P2.1相连,E与P2.2相连。 DS1302是DALLAS公司拖出的涓流充电时钟芯片,内含有一个实时时钟/日历和31个季节静态RAM,通过简单地串行接口与单片机进行通信,实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24小时或12小时格式,DS1302与单片机之间能简单地采用同步串行方式进行通信,仅需用到RES复位、I/O 数据线、SCLK串行时钟3个口线。对时钟、RAM的读/写,可以改用单字节方式或多达31个字节的字符组方式。DS1302工作时功耗很低,保持数据和时钟信息是功率小于1mW。DS1302广泛应用于电话传真、便携式仪器及电池供电的仪器仪表等产品领域中。 RT-1602 字符型液晶模块是以两行16个子的5*7点阵吐信来显示字符的液晶显示器。 DS1302有8个引脚: X1、X2:32.768kHz晶振介入引脚。 GND:地。 RST:复位引脚,低电平有效。 I/O:数据输入/输出引脚,具有三态功能。 SCLK:串行时钟输入引脚。 Vcc1:工作电源引脚。 Vcc2:备用电源引脚。 DS1302有一个控制寄存器,12个日历,时钟寄存器和31个RAM。 控制寄存器 控制寄存器用于存放DS1302的控制命令字,DS1302的RST引脚回到高电平后写入的第一个字就为控制命令。它用于对DS1302读写过程进行控制,它的格式如下:

实时日历时钟系统设计

内蒙古工业大学本科毕业设计说明书 摘要 在当今社会,随着电子产品的不断发展,许多电子设备都趋于智能化,人们都基 本熟悉这些电子产品的基本功能,然而却很少人知道它的内部结构以及工作原理。这 些设备大部分都含有CPU控制器或者是单片机,其中单片机以其COMS化、体积小、成本低、运用灵活、易于产品化等一系列优点,这些年得到迅猛的发展和推广,广泛 的应用于工业自动控制,通讯设备,家用电器等各个领域。 本设计的日历时钟产品是小型电子产品。主要是以单片机AT89C51为总控制器,由时钟芯片DS12C887读取时间数据与掉电储存,用键盘来完成对时间调整,最后通 过1602液晶显示器显示出来,从而达到显示时间的目的。日历时钟广泛的应用于个 人家庭以及车站、医院、商场、办公室等公共场所,成为人们日常生活中不可少的必 需品。因此,本设计具有相当重要的现实意义和实用价值。 关键词:日历时钟;单片机;1602液晶显示;DS12C887

内蒙古工业大学本科毕业设计说明书 Abstract With the continuous development of electronic products in today's society, many electronic devices have tended to be intelligent, people are basically familiar with the basic functions of these electronic products, yet few people know about its internal structure and working principle. most of which containing CPU controller or microcontroller. In recent years, Microcontroller has been the rapid development and large-scale promotion with its with its COMS, small size, low cost, flexible use, easy-to-product such as a number of advantages. It has been widely used in various fields of industrial control systems, communications equipment, and household appliances. The design of the product is small calendar clock electronic products. Mainly based on AT89C51 microcontroller controller, by the clock chip DS12C887 access time data and power-down storage, and use the keyboard to complete on time to adjust, and finally LCD1602 monitor display, so as to achieve the purpose of display time. T he calendar clock is widely used in individual households, as well as railway stations, hospitals, shopping malls, offices and other public places to become the indispensable necessities of daily life. Therefore, the design has very important realistic significance and practical value. Key words: Calendar clock;Microcontroller;LCD1602; DS12C887

基于单片机的电子日历时钟

微机原理课程设计 报告 题目:电子日历时钟 学院电子与信息学院 专业08信息工程1班 组员陈晓伟05冯劲增06 指导教师林耀荣 提交日期2010.6.21

一课程设计题目:电子日历时钟 二实现的功能: 基本功能: (1)显示北京时间,并且能够校准时间; (2)程序使用汇编语言; (3)显示的时、分、秒之间以及年、月、日间以小数点分隔; (4)显示公历日期,并且能够校准日期; 发挥功能: (5)运动秒表; (6)闹钟功能; (7)自动整点报时。 三课程设计的目的: 课程标志性内容的设计理解和综合运用,对所学内容进行一次实操,学以致用。 四、设计方案说明 1、硬件部分 (1)采用6位LED数码管显示日期或者时间。 (2)显示器的驱动采用“动态扫描驱动”,且采用“一键多用”的设计方案,系统电路大为简化。使用小数点表示闹钟设置状态; (3)电路连接使用PCB,使电路连接简洁美观 2、软件部分 (1)“时钟”基准时间由单片机内部的定时中断提供,考虑因素:定时时间是“秒”的整除数,且长短适宜。最长不能超过16位定时器 的最长定时时间;最短不能少于中断服务程序的执行时间。基准时 间越短,越有利于提高时钟的运行精确度。基准时间定为0.05秒。 (2)用一个计数器对定时中断的次数进行计数,由基准时间为0.05秒知计数值为20即可实现实现“秒”定时,同理进行“分”﹑“时” 定时,以及“日”﹑“月”﹑“年”定时。 (3)LED 数码管显示器采用“动态扫描驱动”考虑问题:驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间短),而驱动信号 的间歇时间必须小于“余辉时间”(电流大余辉时间长),但驱动电 流大小受硬件电路能力和LED数码管极限功耗的制约。 (4)动态扫描显示方式在更新显示内容时,考虑到因LED数码管余辉的存在可能会造成显示字符的模糊,所以新内容写入显示器之前将 所有的LED数码管熄灭。 (5)关于自动识别“月大﹑月小”和“平年﹑润年”问题的考虑 a)月大和月小 2月另外计算;

相关文档
最新文档