📄 main.c
字号:
//写汉字液晶,液晶屏为128*64,4行*8列汉字
/*
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 1 1 1 D *D=1时显示开,D=0时显示关
1 1 A A A A A A *设定显示开始行寄存器位置
1 0 1 1 1 A A A *设定页地址
0 1 A A A A A A *设定列地址
D7 0 D5 D4 0 0 0 0 *D7=1表示LCD忙,D7=0可以读写操作,D5=1显示关状态,
*D5=0显示开状态,D4=1表示正在初始化,D4=0初始化完毕
*/
/**************头文件定义***********/
#include "STC89C51RC.H"
#include <math.h>
#include <intrins.h>
#include <absacc.h>
#include "hanzi.h"
#include "number.h"
#include "DS1302.H"
#include "LCD12864.H"
void main(void)
{
uchar n;
SYSTEMTIME CurrentTime;
Delay(10);
lcd_init();
Initial_DS1302();
// 时间设定
Write1302(DS1302_YEAR, 0x07);
Write1302(DS1302_MONTH, 0x04);
Write1302(DS1302_DAY, 0x10);
Write1302(DS1302_WEEK, 0x02);
Write1302(DS1302_HOUR, 0x12);
Write1302(DS1302_MINUTE, 0x51);
//*/
lcd_clr();
while(1)
{
DS1302_GetTime(&CurrentTime); //读时间
lcd_asci_wr(Line0,0,2); //2
lcd_asci_wr(Line0+8,0,0); //0
lcd_asci_wr(Line0+16,0,(CurrentTime.Year/10)); //0
lcd_asci_wr(Line0+24,0,(CurrentTime.Year%10)); //7
lcd_hanzi_wr(Line0+32,0,nian); //年
lcd_asci_wr(Line0+48,0,(CurrentTime.Month/10));
lcd_asci_wr(Line0+56,0,(CurrentTime.Month%10));
lcd_hanzi_wr(Line0+64,0,yue); //月
lcd_asci_wr(Line0+80,0,(CurrentTime.Day/10));
lcd_asci_wr(Line0+88,0,(CurrentTime.Day%10));
lcd_hanzi_wr(Line0+96,0,ri); //日
lcd_hanzi_wr(Line1+2,2,xing); //星
lcd_hanzi_wr(Line1+16,2,qi); //期
lcd_asci_wr(Line1+32,2,(CurrentTime.Week%10));
lcd_asci_wr(Line1+48,2,(CurrentTime.Hour/10));
lcd_asci_wr(Line1+56,2,(CurrentTime.Hour%10));
lcd_asci_wr(Line1+64,2,10); //Dot
lcd_asci_wr(Line1+72,2,(CurrentTime.Minute/10));
lcd_asci_wr(Line1+80,2,(CurrentTime.Minute%10));
lcd_asci_wr(Line1+88,2,10); //Dot
lcd_asci_wr(Line1+96,2,(CurrentTime.Second/10));
lcd_asci_wr(Line1+104,2,(CurrentTime.Second%10));
lcd_hanzi_wr(Line2,4,ju);
lcd_hanzi_wr(Line2+16,4,wo);
lcd_hanzi_wr(Line2+32,4,yuan);
lcd_hanzi_wr(Line2+48,4,ben);
lcd_hanzi_wr(Line2+64,4,ke);
lcd_hanzi_wr(Line2+80,4,jiao);
lcd_hanzi_wr(Line2+96,4,xue);
lcd_hanzi_wr(Line2+112,4,shui);
lcd_hanzi_wr(Line3,6,pin);
lcd_hanzi_wr(Line3+16,6,ping);
lcd_hanzi_wr(Line3+32,6,gu);
lcd_hanzi_wr(Line3+48,6,hai);
lcd_hanzi_wr(Line3+64,6,you);
n = 164-CurrentTime.Month*30-CurrentTime.Day-1;
lcd_asci_wr(Line3+80,6,(n/100%10));
lcd_asci_wr(Line3+88,6,(n/10%10));
lcd_asci_wr(Line3+96,6,(n%10));
lcd_hanzi_wr(Line3+104,6,tian); //天
lcd_asci_wr(Line3+120,6,11);//!
Delay(300);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -