教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 文秘资料 >

基于51单片机的ds1302与LM016L液晶时钟设计

来源:网络收集 时间:2026-09-20
导读: 基于51单片机的时钟设计 一. 基本功能 利用AT89c51作为主控器与时钟芯片DS1302组成一个时钟系统,并由LM016L液晶显示。 二. 硬件设计 图1.总设计图 1. 单片机最小系统 1.1选用AT89C51的引脚功能 图2. AT89C51 XTAL1:单芯片系统时钟的反向放大器输入端。 XT

基于51单片机的时钟设计

一. 基本功能

利用AT89c51作为主控器与时钟芯片DS1302组成一个时钟系统,并由LM016L液晶显示。

二. 硬件设计

图1.总设计图

1. 单片机最小系统

1.1选用AT89C51的引脚功能

图2. AT89C51

XTAL1:单芯片系统时钟的反向放大器输入端。

XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。

RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。

1.2复位电路

如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。

图3.复位电路

1.3时钟电路

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12MHz的石英晶体。

图4.时钟电路

2. 时钟芯片部分 2.1 DS1302引脚说明

图.5

1)Vcc1:后备电源,VCC2:主电源。在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。2)X1、X2:振荡源,外接32.768kHz晶振。

3)RST:复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。

4)I/O为串行数据输入输出端(双向)。 5)SCLK为时钟输入端。

2.2 时钟电路

图.6

3. LM016L液晶

图7.LM016L引脚图

LM016L与1602使用方法相同。

引脚说明:

引脚 1 2 3 4 5 6 7 8 9 10 11 12 13

符号 VSS VDD V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6

功能说明 一般接地 接电源(+5V)

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过

一个10K的电位器调整对比度)。 RS为寄存器选择,高电平1时选择数据寄存器、低电平0时

选择指令寄存器。 R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进

行写操作。

E(或EN)端为使能(enable)端,下降沿使能。 底4位三态、 双向数据总线 0位(最低位)

底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位

14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flang) 电路接口说明:

AT889C51 的P0口作为数据的输出端,P3.5和P3.6, P3.7 作为控制信号的输出端。

三. 软件设计

3.1编程语言及编程软件的选择

本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。 而汇编语言使用起来并没有这么方便。

本设计选用了Keil作为编程软件,.Keil C51生成的目标代码效率非常之

高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

3.2时间的显示

ML016L和1602一样,都是两行十六列的液晶显示屏。通过程序对ML016L进行初始化后,通过写指令和写数据的操作就可以再液晶屏上显示出对应的数据,而时钟数据则是从DS1302获取。这样可以显示出时间。

四. 程序

#include<reg52.h> #include<intrins.h>

#define uchar unsigned char #define uint unsigned int sbit rs=P2^0; //1602命令\数据选择端 sbit e=P2^1; //1602使能端 sbit sck=P3^6; //DS1302 sbit io=P3^7; //DS1302数据端 sbit rst=P3^5; //DS1302 CE端 RST的功能 uint temp; //定义整型的温度数据 float f_temp;

uchar code num[]="0123456789"; // 定义浮点型的温度数据 uchar code nian[]="20 - - "; uchar code shi[]=" : : ";

uchar read_add[]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81}; //DS1302读数据地址端

uchar write_add[]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; //DS1302写数据地址端

uchar time_data[]={11,1,12,5,18,00,00}; //设置初始时间 uchar disp[14]; //定义数组 void delayms(uint z) //毫秒级延时函数 { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); }

void delayus(uint time) { while(time--); }

//1602液晶

void write_com(uchar com) { rs=0; P0=com; delayms(5); e=1; delayms(5); e=0; }

void write_data(uchar date) { rs=1; P0=date; delayms(5); e=1; delayms(5); e=0; }

void init() { uchar num; write_com(0x38); write_com(0x06); write_com(0x0c); write_com(0x01); write_com(0x80+0x40); for(num=0;num<8;num++) {

//微秒级延时函数 //写指令函数 //写数据函数 //液晶初始化函数

write_data(shi[num]); delayms(1); } write_com(0x80); for(num=0;num<10;num++) { write_data(nian[num]); delayms(1); } }

//DS1302

void write_ds1302_byte(uchar dat) { uchar i; for(i=0;i<8;i++) { sck=0; io=dat&0x01; dat=dat>>1; sck=1; } }

void write_ds1302(uchar add,uchar dat) { rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1; }

uchar read_ds1302(uchar add) { uchar i,value; rst=0; _nop_(); sck=0; _nop_();

//写一个字节函数

//写一个地址和数据函数//读地址函数

rst=1; _nop_(); write_ds1302_byte(add); for(i=0;i<8;i++) { value=value>>1; sck=0; if(io) value=value|0x80; sck=1; } rst=0; _nop_(); sck=0; _nop_(); sck=1; io=0; return value; } void read_rtc(void) //读时钟函数 { uchar i; f …… 此处隐藏:3883字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于51单片机的ds1302与LM016L液晶时钟设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/736846.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)