📄 lcd.c
字号:
void ini_lcd(void)
{
unsigned char i;
for(i=0;i<3;i++)
WriteCom(i,0xC0);
for(i=0;i<3;i++)
WriteCom(i,0x3F);
}
void delay_ms(unsigned int time)
{
unsigned int i;
unsigned int j;
for(i=0;i<=time;i++)
{
for(j=0;j<=1052;j++)
{
WDR();
}
}
}
void cls_lcd(void)
{
unsigned char R4;
unsigned char R3;
unsigned char A;
unsigned char i;
R4=0;
A=R4;
for(R4=0;R4<8;R4++)
{
A=0xB8+R4;
for(i=0;i<3;i++)
WriteCom(i,A);
for(i=0;i<3;i++)
WriteCom(i,0x40);
R3=0x40;
for(R3=0;R3<64;R3++)
{
for(i=0;i<3;i++)
WriteDat(i,0x00);
}
}
}
void w_hz(unsigned char lr,unsigned char x,unsigned char y,unsigned char s[32])
{
//column-->y,code
//page-->x
unsigned char column;
unsigned char page;
unsigned char i;
x=x+0xb8;
y=y+0x40;
page=x;
column=y;
WriteCom(lr,column);
for(i=0;i<16;i++)
{
WriteCom(lr,page);
WriteDat(lr,s[i]);
}
page++;
column=y;
WriteCom(lr,column);
for(i=16;i<32;i++)
{
WriteCom(lr,page);
WriteDat(lr,s[i]);
}
}
void nw_hz(unsigned char lr,unsigned char x,unsigned char y,unsigned char s[32])
{
//column-->y,code
//page-->x
unsigned char column;
unsigned char page;
unsigned char i;
//unsigned char t[32];
x=x+0xb8;
y=y+0x40;
page=x;
column=y;
WriteCom(lr,column);
for(i=0;i<16;i++)
{
WriteCom(lr,page);
WriteDat(lr,~s[i]);
}
page++;
column=y;
WriteCom(lr,column);
for(i=16;i<32;i++)
{
WriteCom(lr,page);
WriteDat(lr,~s[i]);
}
}
void w_fh(unsigned char lr,unsigned char x,unsigned char y,unsigned char s[16])
{
//column-->y,code
//page-->x
unsigned char column;
unsigned char page;
unsigned char i;
x=x+0xb8;
y=y+0x40;
page=x;
column=y;
WriteCom(lr,page);
WriteCom(lr,column);
for(i=0;i<8;i++)
{
WriteDat(lr,s[i]);
}
page++;
column=y;
WriteCom(lr,page);
WriteCom(lr,column);
for(i=8;i<16;i++)
{
WriteDat(lr,s[i]);
}
}
void disp_fh(unsigned char a,unsigned char b,unsigned char c,unsigned char dat)
{
switch(dat)
{
case 0:w_fh(a,b,c,num_0);break;
case 1:w_fh(a,b,c,num_1);break;
case 2:w_fh(a,b,c,num_2);break;
case 3:w_fh(a,b,c,num_3);break;
case 4:w_fh(a,b,c,num_4);break;
case 5:w_fh(a,b,c,num_5);break;
case 6:w_fh(a,b,c,num_6);break;
case 7:w_fh(a,b,c,num_7);break;
case 8:w_fh(a,b,c,num_8);break;
case 9:w_fh(a,b,c,num_9);break;
}
}
void disp_dy(unsigned int dy)
{
unsigned char y1,y2,y3,y4;
y1=dy/1000;
y2=(dy-y1*1000)/100;
y3=(dy-y1*1000-y2*100)/10;
y4= dy-y1*1000-y2*100-y3*10;
disp_fh(2,2,16,y1);
// w_fh(2,2,24,num_p);
disp_fh(2,2,32,y2);
disp_fh(2,2,40,y3);
disp_fh(2,2,48,y4);
}
void disp_dl(unsigned int dy)
{
unsigned char y1,y2,y3,y4;
y1=dy/1000;
y2=(dy-y1*1000)/100;
y3=(dy-y1*1000-y2*100)/10;
y4= dy-y1*1000-y2*100-y3*10;
disp_fh(2,4,16,y1);
// w_fh(2,4,24,num_p);
disp_fh(2,4,32,y2);
disp_fh(2,4,40,y3);
disp_fh(2,4,48,y4);
}
void disp_wd(unsigned char wd)
{
unsigned char y1,y2;
y1=wd/10;
y2=wd-y1*10;
disp_fh(2,6,24,y1);
disp_fh(2,6,32,y2);
}
void disp_zt(unsigned char dat)
{
switch(dat)
{
case 0: w_hz(0,6,48,hzfang);w_hz(1,6,0,hzdian);break;
case 1: w_hz(0,6,48,hzkuai);w_hz(1,6,0,hzchong);break;
case 2: w_hz(0,6,48,hzjuan);w_hz(1,6,0,hzchong);break;
case 3: w_hz(0,6,48,hzchong);w_hz(1,6,0,hzman);break;
}
}
void disp_js(unsigned char dat)
{
if(dat<10)
disp_fh(0,4,52,dat);
}
void disp_main(void)
{
/*w_hz(0,0,0,blank); w_hz(0,0,16,blank); w_hz(0,0,32,blank);*/w_hz(0,0,48,hzzhi);
w_hz(1,0,0,hznen); w_hz(1,0,16,hzxin); w_hz(1,0,32,hzchong); w_hz(1,0,48,hzdian);
w_hz(2,0,0,hzqi);/* w_hz(2,0,16,blank);w_hz(2,0,32,blank);w_hz(2,0,48,blank);*/
w_hz(0,2,0,hzdian);w_hz(0,2,16,hzchi);w_hz(0,2,32,hzmh);w_hz(0,2,48,hznie);
w_hz(1,2,0,hzge);/* w_hz(1,2,16,blank);*/ w_hz(1,2,32,hzdian); w_hz(1,2,48,hzya);
w_hz(2,2,0,hzmh);/* w_hz(2,2,16,blank);w_hz(2,2,32,blank);*/w_fh(2,2,56,chr_v);
w_hz(0,4,0,hzjie);w_hz(0,4,16,hzshu);w_hz(0,4,32,hzmh);/*w_hz(0,4,48,blank);*/
w_hz(1,4,0,hzjie);/* w_hz(1,4,16,blank);*/ w_hz(1,4,32,hzdian); w_hz(1,4,48,hzliu);
w_hz(2,4,0,hzmh);/* w_hz(2,4,16,blank);w_hz(2,4,32,blank);*/w_fh(2,4,56,chr_a);
w_hz(0,6,0,hzzhuang);w_hz(0,6,16,hztai);w_hz(0,6,32,hzmh);w_hz(0,6,48,hzkuai);
w_hz(1,6,0,hzchong); /*w_hz(1,6,16,blank);*/ w_hz(1,6,32,hzwen); w_hz(1,6,48,hzdu);
w_hz(2,6,0,hzmh);/* w_hz(2,6,16,blank);w_hz(2,6,32,blank);*/w_hz(2,6,48,hzdu);
w_fh(2,4,24,num_p);
w_fh(2,2,24,num_p);
}
void scan_key(void)
{
unsigned char keycode;
unsigned char n_key;
keycode=PIND&0xC8;
keycode=~keycode;
if(keycode!=0)
PORTD &=~(1<<0);
//delay_ms(1);
n_key=PIND&0xC8;
n_key=~n_key;
if(keycode==n_key)
disp_fh(2,0,32,keycode);
}
void main(void)
{
init_devices();
WDR();
b_n=1;
b_s=2;
b_v=1215;
b_a=20;
b_t=34;
tims1=0;
tims2=0;
PORTA=0x00;
ini_lcd();
cls_lcd();
disp_main();
disp_js(1);
disp_zt(4);
disp_dy(0);
disp_dl(0);
disp_wd(31);
do{
WDR();
scan_key();
delay_ms(1);
}while(1);
}
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
WDR();
TCNT0 = 0x8D;
}
#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)
{
WDR();
TCNT2 = 0x04; /*INVALID SETTING*/; //reload counter value
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -