【关键词】 单片机 时钟芯片DS1302 液晶12864
1、引言
单片机是一种可通过编程控制的微处理器,单片机芯片自身不能单独运用于某项工程或者产品上,它必须要依靠外围数字器件或模拟器件的协调才可以发挥其自身的强大功能,本文介绍如何使用DS1302,实现显示万年历的效果。
2、硬件组成
液晶12864显示系统实际是由51单片机最小系统、液晶12864、DS1302等构成,如下图1所示。
3、程序设计
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit clk=P3^5; //7
sbit io=P3^7; //6
sbit rst=P3^6; //5
sbit cs=P2^0; //4脚
sbit sid=P2^1; //5脚
sbit sclk=P2^2; //6脚
void read_time()//读1302全部时间
{ uchar temp;
temp=read_1302(0x81);//读秒.bcd编码
curr.sec=(((temp>>4)&0x07)*10+(temp&0x0f));
temp=read_1302(0x83);//读分.bcd编码
curr.min=((temp>>4)&0x07)*10+(temp&0x0f);//秒钟显示
temp=read_1302(0x85);//读时.bcd编码24小时
curr.hr=((temp>>4)&0x03)*10+ (temp&0x0f);
temp=read_1302(0x87);//读日.bcd编码24小时
curr.date=((temp>>4)&0x03)*10+ (temp&0x0f);
temp=read_1302(0x89);//读月.bcd编码24小时
curr.mon=((temp>>4)&0x01)*10+ (temp&0x0f);
temp=read_1302(0x8b);//读周.bcd编码24小时
curr.week= (temp&0x0f);
temp=read_1302(0x8d);//读年.bcd编码24小时
curr.year=((temp>>4))*10+ (temp&0x0f);
}
void show_time()
{ uchar buf[9];
LCD_drive(0,0x91); //年
LCD_drive(1,(curr.year)/10+48);
LCD_drive(1,(curr.year)%10+48);
LCD_drive(0,0x93);//月
LCD_drive(1,(curr.mon)/10+48);
LCD_drive(1,(curr.mon)%10+48);
LCD_drive(0,0x95); //日
LCD_drive(1,(curr.date)/10+48);
LCD_drive(1,(curr.date)%10+48);
//LCD_drive(0,0x87); //小时,分中,秒钟
buf[0]=(curr.hr)/10+48;
buf[1]=(curr.hr)%10+48;
buf[2]=':';
buf[3]=(curr.min)/10+48;
buf[4]=(curr.min)%10+48;
buf[5]=':';
buf[6]=(curr.sec)/10+48;
buf[7]=(curr.sec)%10+48;
buf[8]=0;
show_string(0x88,buf); //???
LCD_drive(0,0x9a);
LCD_drive(1,(curr.week)+48); //星期
}
void show_static()//静态部分显示
{ show_string(0x80,"实时时钟");
show_string(0x90,"20 年 月 日");
show_string(0x98,"星期");
}
void main()
{ uchar temp;
uchar sec;//真正的秒钟
LCD_init();
show_string(0x80,"DS1302时钟");
spi_portinit();//端口初始化
write_1302(0x8e,0);//取消DS1302的写保护
write_1302(0x80,0x12);//秒钟初值
show_static();
while(1)
{ read_time();
show_time();
}
}
4、结束
当上述程序编写好之后,我们需要使用编译软件对其编译,得到单片机能识别的二进制代码,然后再用编程器将二进制代码烧写到单片机中,就能看到液晶12864的显示万年历。
参考文献:
[1] 谭浩强.C程序设计,北京:清华大学出版社,1991
[2] 郭天祥.51单片机C语言教程,北京:电子工业出版社,2010
[3] 余锡存等.单片机原理及接口技术,西安:西安电子科技大学出版社,2000
论文作者:汤泽容
论文发表刊物:《工程管理前沿》2019年21期
论文发表时间:2019/11/29
标签:单片机论文; 液晶论文; 小时论文; 万年历论文; 时钟论文; 芯片论文; 北京论文; 《工程管理前沿》2019年21期论文;