📄 lcd.c
字号:
unsigned int ii;
unsigned char jj,kk;
for(ii=0;ii<count1;ii++)
for(jj=0;jj<100;jj++)
for(kk=0;kk<100;kk++);
}
//--------------------------------------------
//--------------------------------------------
//-----------运行正常-----------
uint count;
void lcd_yxzc(void)
{
anjian();
if(anjian())
{
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
switch(jianzhi)
{
case shang:
caidan=5;
break;
case xia:
caidan=5;
break;
case queren:
break;
case quxiao:
break;
}
}
wrhz(2,11,yunxing,4);
readtime();
dptime(7,0);
}
//-----------设置菜单-------------
void lcd_setup(void)
{
char row;
row=caidan1;
anjian();
if(anjian())
{
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
}
switch(jianzhi)
{
case shang:
caidan1--;
if(caidan1<3)
caidan1=4;
break;
case xia:
caidan1++;
if(caidan1>4)
caidan1=3;
break;
case queren:
caidan=caidan1+3;
break;
case quxiao:
caidan1=3;
caidan=0;
}
wrhz(2,12,zhucaidan,3);
wrzf(row,9,25);
wrzf(row,10,25);
wrzf(caidan1,9,22); //"-"
wrzf(caidan1,10,23); //">"
wrhz(3,11,shijian,2); //时间
wrhz(3,15,shezhi,2); //设置
wrhz(4,11,shibo,2); //失波
wrhz(4,15,zhuiyi,2); //追忆
}
//---------------------------------------------------
//----------------------------------------------------
//------------修改时间---------------------------------
void lcd_ch_time(void)
{
anjian();
dptime(4,0);
wrzf(5,3*flag+9,24);
wrzf(5,3*(flag-1)+9,25);
bcdtobin(time_buf);
if(anjian())
{
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
}
switch(jianzhi)
{
case shang:
time_buf[flag]++;
break;
case xia:
time_buf[flag]--;
break;
case queren:
flag++;
if(flag==6)
{
flag=0;
caidan=0;
}
break;
case quxiao:
caidan=5;
}
switch(flag)
{
case 0:
if(time_buf[0]>50)
time_buf[0]=0;
break;
case 1:
if(time_buf[1]>12)
time_buf[1]=1;
if(time_buf[1]<1)
time_buf[1]=12;
break;
case 2:
if(time_buf[2]>31)
time_buf[2]=1;
if(time_buf[2]<1)
time_buf[2]=31;
break;
case 3:
if(time_buf[3]>23)time_buf[3]=0;
if(time_buf[3]<0)time_buf[3]=23;
break;
case 4:
if(time_buf[4]>59)time_buf[4]=0;
if(time_buf[4]<0)time_buf[4]=59;
break;
case 5:
if(time_buf[5]>59)time_buf[5]=0;
if(time_buf[5]<0)time_buf[5]=59;
}
bintobcd(time_buf);
if(jianzhi==queren)
settime();
}
//-----------------------------------------------------
//-----------------------------------------------------
sbit work= P1^4;
//-----------------------------------------------------
//-----------------------------------------------------
void timer0_int(void) interrupt 1
{
uchar fen;
TMOD=0x01;
TH0=0xec; //5ms定时中断
TL0=0x78;
TR0=1;
count++;
if((count%100)==0)
work=!work;
if(count==4000)
{
fen++;
count=0;
if(fen==15) //5分钟关背光
{
bkl=0;
fen=0;
}
}
}
//----------------------------------------------------------
//----------------------------------------------------------
uchar pp=1;
void multierrordisplay(void)
{
if(kr&0x40)
{
wrhz(0,6,quexiang,2);
wrhz(2,10,quexiang,2);
wrhz(2,14,guzhang,2);
wrhz(2,18,yuanyin,2);
}
else
{
wrhz(0,6,space,2);
wrhz(2,10,space,2);
wrhz(2,14,space,2);
wrhz(2,18,space,2);
}
if(kr&0x20)
{
wrhz(0,11,nibian,2);
wrhz(3,10,nibian,2);
wrhz(3,14,guzhang,2);
wrhz(3,18,yuanyin,2);
}
else
{
wrhz(0,11,space,2);
wrhz(3,10,space,2);
wrhz(3,14,space,2);
wrhz(3,18,space,2);
}
if(kr&0x10)
{
wrhz(0,16,guoya,2);
wrhz(4,10,guoya,2);
wrhz(4,14,guzhang,2);
wrhz(4,18,yuanyin,2);
}
else
{
wrhz(0,16,space,2);
wrhz(4,10,space,2);
wrhz(4,14,space,2);
wrhz(4,18,space,2);
}
if(kr&0x08)
{
wrhz(0,21,shibo,2);
wrhz(5,10,shibo,2);
wrhz(5,14,guzhang,2);
wrhz(5,18,yuanyin,2);
}
else
{
wrhz(0,21,space,2);
wrhz(5,10,space,2);
wrhz(5,14,space,2);
wrhz(5,18,space,2);
}
wrhz(0,0,guzhang,2);
wrzf(0,4,19);
dptime(7,0);
}
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
uchar shouci,ke;
void krcl(void)
{
uchar hide_arrow=1;
uchar row1;
uchar key=0;
key =kr&0x78;
if(key)
{
if(ke != key)
{
cls(0x00);
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
ke = key;
}
caidan=9;
row1=pp;
anjian();
if(anjian())
{
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
}
if((jianzhi==shang)||(jianzhi==xia))
{
hide_arrow=0;
pp++;
if(pp==2)
{
if(kr&0x40)
pp=2;
else
pp=3;
}
if(pp==3)
{
if(kr&0x20)
pp=3;
else
pp=4;
}
if(pp==4)
{
if(kr&0x10)
pp=4;
else
pp=5;
}
if(pp==5)
{
if(kr&0x08)
pp=5;
else
pp=2;
}
if(pp>5)
pp=2;
//---------------------------------------------------
if(pp==2)
{
if(kr&0x40)
pp=2;
else
pp=3;
}
if(pp==3)
{
if(kr&0x20)
pp=3;
else
pp=4;
}
if(pp==4)
{
if(kr&0x10)
pp=4;
else
pp=5;
}
if(pp==5)
{
if(kr&0x08)
pp=5;
else
pp=2;
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
switch(jianzhi)
{
case queren:
hide_arrow=1;
caidan=pp-1;
if(caidan==0)
caidan=8;
break;
case quxiao:
hide_arrow=1;
caidan=8;
}
if(hide_arrow==0)
{
wrzf(row1,8,25);
wrzf(row1,9,25);
wrzf(pp,8,22);
wrzf(pp,9,23);
}
}
else
{
if(ke!=0)
{
caidan=0;
ke=0;
pp=1;
}
}
}
//----------------------------------------------------------------
//----------------------------------------------------------------
uchar sbcount=0,onetime;
void shibo_memory_program(void)
{
uchar signal=0;
signal=kr&0x80;
if(signal)
{
if(onetime != signal)
{
sbcount++;
if(sbcount>40)
sbcount=1;
Memory_write_inErase(1,2007,sbcount*6,time_buf,6);
onetime = signal;
}
}
else
{
if(onetime != 0)
onetime=0;
}
}
//------------------------------------------------------------------
//------------------------------------------------------------------
//-------------------------------------------------
//-----------失波追忆-------------------------------
uchar sbpoint=0;
void lcd_sb_memory(void)
{
anjian();
if(anjian())
{
bkl=0;
bkl=1;
bkl=0;
bkl=1;
count=0;
switch(jianzhi)
{
case shang:
sbpoint++;
if(sbpoint>sbcount)
sbpoint=1;
break;
case xia:
sbpoint--;
if(sbpoint<1)
sbpoint=sbcount;
break;
case queren:
sbpoint=0;
caidan=5;
break;
case quxiao:
caidan=0;
}
}
wrhz(2,6,shibo,2); //失波
wrhz(2,10,guzhang,2); //故障
wrhz(2,14,fasheng,2); //发生
wrhz(2,18,lele,1); //了
wrzf(2,20,sbcount/10); //sbcount十位
wrzf(2,21,sbcount%10); //sbcount个位
wrhz(2,22,cici,1); //次
if(sbcount!=0)
{
wrhz(5,8,didi,1); //第
wrzf(5,10,sbpoint/10); //sbpoint十位
wrzf(5,11,sbpoint%10); //sbpoint个位
wrhz(5,12,cici,1); //次
wrhz(5,14,fasheng,2); //发生
wrhz(5,18,shijian,2); //时间
Memroy_Array_Read(2007,sbpoint*6,time_buf,6);
if(sbpoint>0)
dptime(6,0);
}
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
void dpcaidan(void)
{
if(shouci!=caidan)
{
cls(0x00);
shouci=caidan;
}
switch(caidan)
{
case 0:
lcd_yxzc();
break;
case 1:
lcd_quexiang();
delay10ms(500);
pp=1;
break;
case 2:
lcd_nibian();
delay10ms(500);
pp=1;
break;
case 3:
lcd_guoya();
delay10ms(500);
pp=1;
break;
case 4:
lcd_shibo();
delay10ms(500);
pp=1;
break;
case 5:
lcd_setup();
break;
case 6:
lcd_ch_time();
break;
case 7:
lcd_sb_memory();
break;
case 8:
wrhz(3,8,QATZJXZ,7);
delay10ms(50);
break;
case 9:
multierrordisplay();
}
}
void main(void)
{
TMOD=0x01;
TH0=0xec;
TL0=0x78;
ET0=1;
TR0=1;
EA=1;
bkl=0;
bkl=1;
bkl=0;
bkl=1;
delayms(1);
wrctrl(0x00,0x00,0x40);
wrctrl(0x00,0x08,0x42);
wrctrl(0x1e,0x00,0x41);
wrctrl(0x1e,0x00,0x43);
wrctrl0(0x81);
wrctrl0(0x98);
cls(0x00);
lcd_yxzc();
start12887();
do
{
krcl();
shibo_memory_program();
dpcaidan();
delayms(500);
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -