单片机 实时时钟电路(AT89C51、LCD1602、PCF8563)

发布时间:
来源: 电子工程世界

一、简介

此电路主要有51单片机、LCD1602模块、PCF8563芯片和按键组成组成,通过LCD1062显示当前时间,按键可设置时间。

二、运行效果

三、部分代码

/*想要更多项目私wo!!!*/

#include

#include

#define uchar unsigned char

#define uint unsigned int



void init()

{

uchar num;

lcden=0;

write_com(0x38); //0011 1000B,功能模式设置,设置为8为数据口,两行显示,5*7点阵

write_com(0x0c); //0000 1011B,显示开及光标设置,关显示,显示光标,光标闪烁

write_com(0x06); //0000 0110B,显示光标移动设置,读或写一个字符,地址指针减一且光标减一,写一个字符屏幕显示不移动

write_com(0x01); //0000 0001B,显示清屏,数据指针和所有显示清屏

write_com(0x80); //1000 000B,关闭显示

delay1602(5);

write_com(0x80); //1000 000B,设置为2行显示,写入第一行字符的地址,第一行地址是00-2F

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

{

write_date(table[num]); //写入第一行数据

delay1602(5);

}

write_com(0x80+0x40); //1100 0000B,设置为2行显示,写入第二行字符的地址,第而行地址是40-67

for(num=0;num<15;num++) //写入第二行数据

{

write_date(table1[num]);//写入第二行数据

delay1602(5);

}


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

读入时间到内部缓冲区----外部调用 

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

void P8563_gettime()

{

    P8563_Read();

    if(g8563_Store[0]==0)

      P8563_Read(); /*如果为秒=0,为防止时间变化,再读一次*/

}


//---主函数---//

void main()

{

P8563_init();

init();

while(1)

{

P8563_gettime();

BCD_16( );

display();

key_scan(); 

  }

}


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。