📄 lcm_disp.c
字号:
//8*8显示一个字符(第0,6,7列不亮;只设置1-5列的亮暗就可以
#include "CONFIG.H"
uint8 a[8]={20,7,8,31,23,59,50,0}; //2007 08 31 23 59:50 0
uint8 d1m[8]={0,100,13,31,24,60,60,100}; //进位
uint8 code d2m[12]={31,29,31,30,31,30,31,31,30,31,30,31};//月份
uint8 bdata flag;
sbit opp=flag^0;
void fresh()
{ uint8 i=7,j;
uint8 x,y;
a[i]++;
while(a[i]==d1m[i]&&i>0)
{ i--; a[i]++; }
x=i/4*2+3;y=i%4*3+3;
LCM_DispChar(x, y, a[i]/10+'0');
LCM_DispChar(x, y+1, a[i]%10+'0');
for(j=i+1;j<8;j++)
{ x=j/4*2+3;y=j%4*3+3;
if(j==2||j==3) //年
{ a[j]=1; LCM_DispStr(x, y, "01"); }
else{ a[j]=0; LCM_DispStr(x, y, "00"); }
}
}
//5ms中断
void timer(void) interrupt 1
{
TH0=0xee;
TL0=0x00;
opp=!opp;
// if(opp==1)fresh();
}
void main(void)
{
opp=0;
TMOD=0x1;
TL0=0x00;
TH0=0xee;
EA=1;
ET0=1;
TR0=1;
LCM_DispIni(); // 初始化图形液晶模块
LCM_DispClr();
LCM_DispStr(1, 3, "Beijing Time");
LCM_DispStr(3, 4, "2007 08 31 ");
LCM_DispStr(5, 3, "23:59 50 0 ");
LCM_DispWord(2,8,0);
LCM_DispWord(3,8,1);
LCM_DispWord(2,11,16);
LCM_DispWord(3,11,17);
LCM_DispWord(2,14,32);
LCM_DispWord(3,14,33);
while(1)
{
// if(opp==1)fresh();
if(opp==1)
{
while(opp==1) //去抖动
{d1m[3]=d2m[a[2]-1]+1;
if(a[2]==2&&a[1]%4==0&&(a[0]*100+a[1])%400!=0)
d1m[3]=29; //闰年2月时只有28天
}
if(a[7]==0) LCM_DispChar(5,5,':');
if(a[7]==50)LCM_DispChar(5,5,' ');
fresh();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -