📄 disp.c
字号:
#include "public.h"
#include "disp.H"
#include "p_main.H"
/*地址线:A1为CS1;A2为CS2;A3为D/I;A3为HIGH则为数据;A3为低则为命令;*/
ioport unsigned int port8001;
ioport unsigned int port8002;
ioport unsigned int port8005;
ioport unsigned int port8006;
#define LCD_CODE1 port8002
#define LCD_CODE2 port8001
#define LCD_DATA1 port8006
#define LCD_DATA2 port8005
void Delay(unsigned int time)
{
while(time--);
}
void Lw(unsigned int x,unsigned int y,unsigned int dd)
{
unsigned int temp=0;
if(y<64)
{
temp=x|0x0b8;
LCD_CODE1=temp;
Delay(8);
temp=y|0x40;
LCD_CODE1=temp;
Delay(8);
LCD_DATA1=dd;
Delay(8);
}
else
{
temp=x|0x0b8;
LCD_CODE2=temp;
Delay(8);
temp=(y-64)|0x40;
LCD_CODE2=temp;
Delay(8);
LCD_DATA2=dd;
Delay(8);
}
}
void Lcd_Init(void)
{
unsigned int x,y;
LCD_CODE1=0X3F;
Delay(8);
LCD_CODE1=0X0C0;
Delay(8);
LCD_CODE2=0X3F;
Delay(8);
LCD_CODE2=0X0C0;
Delay(8);
for(x=0;x<8;x++)
{
for(y=0;y<128;y++)
{
Lw(x,y,0x00);
Delay(8);
}
}
}
void Wr_Cchar(uint x,uint y,uint color,uint *pp)
{
unsigned int j,dd;
for(j=0;j<6;j++)
{
dd=*(pp+j);
if(color==1)dd=0x0ffff-dd; /*等于一反显*/
Lw(x,(y+j),dd);Delay(8);
}
}
/************************************************************/
/*函数功能:整形数据转成字符,显示*/
/*入口参数:X地址 Y地址 小数点位数 整数位数 整形数据*/
/*出口参数:无 */
/*字符:6*8 */
/*作者:刘勇 */
/************************************************************/
void Pr_IntToChar(uint x_addr,uint y_addr,uint dian,uint zheng,uint color,uint dd)
{
uint i,j,temp;
uint bcd_wei[5];
bcd_wei[0]=dd%10;
bcd_wei[1]=dd/10%10;
bcd_wei[2]=dd/100%10;
bcd_wei[3]=dd/1000%10;
bcd_wei[4]=dd/10000;
if(zheng==0) /*整数*/
{
Wr_Cchar(x_addr,y_addr,color,&chin_6[0]);
}
else
{
j=zheng+dian-1;
for(i=0;i<zheng;i++,j--)
Wr_Cchar(x_addr,(y_addr+6*i),color,&chin_6[bcd_wei[j]*6]);
}
if(dian!=0)
{
temp=zheng*6;
Wr_Cchar(x_addr,(temp+y_addr),color,&chin_6[0x0a2]); /*小数点*/
temp=(zheng+1)*6;
j=dian-1;
for(i=0;i<dian;i++,j--)
Wr_Cchar(x_addr,(temp+6*i+y_addr),color,&chin_6[bcd_wei[j]*6]);
}
}
/****************************************************/
/*函数功能:显示8*8的字符数据*/
/*入口参数:X地址 Y地址 整形数据*/
/*出口参数:无*/
/*字符:8*8 */
/*作者:刘勇 */
/****************************************************/
void Wr_Cch8(uint x,uint y,uint color,uint *pp)
{
unsigned int j,dd;
for(j=0;j<8;j++)
{
dd=*(pp+j);
if(color==1)dd=0x0ffff-dd; /*等于一反显*/
Lw(x,(y+j),dd);Delay(2);
}
}
/****************************************************/
/*函数功能:显示6*12的字符数据*/
/*入口参数:X地址 Y地址 整形数据*/
/*出口参数:无*/
/*字符:6*12 */
/*作者:刘勇 */
/****************************************************/
void Wr_Cch12(unsigned int x,unsigned int y,uint color,unsigned int *pp)
{
unsigned int j,dd;
for(j=0;j<12;j++)
{
dd=*(pp+j);
if(j<6)
{
if(color==1){dd=0x0ffff-dd;dd&=0x0f0;}
Lw(x,(y+j),dd);
Delay(2);
}
else
{
if(color==1){dd&=0x0ff;dd=0x0ff-dd;}
Lw((x+1),(y+j-6),dd);
Delay(2);
}
}
}
/************************************************************/
/*函数功能:整形数据转成字符,显示*/
/*入口参数:X地址 Y地址 小数点位数 整数位数 字符下横线标志 整形数据*/
/*出口参数:无 */
/*字符:6*12 */
/*作者:刘勇 */
/************************************************************/
void Pr_IntTo12(uint x_addr,uint y_addr,uint dian,uint zheng,uint key,uint dd)
{
uint i,j,temp;
uint bcd_wei[5];
bcd_wei[0]=dd%10;
bcd_wei[1]=dd/10%10;
bcd_wei[2]=dd/100%10;
bcd_wei[3]=dd/1000%10;
bcd_wei[4]=dd/10000;
if(zheng==0) /*整数*/
{
if(p_key==key)
{
if(enter_flag==1)Wr_Cch12(x_addr,y_addr,1,&chin_13[0]);
else Wr_Cch12(x_addr,y_addr,1,&chin_12[0]);
}
else Wr_Cch12(x_addr,y_addr,0,&chin_12[0]);
}
else
{
j=zheng+dian-1;
for(i=0;i<zheng;i++,j--)
{
if(p_key==key)
{
if(enter_flag==1)Wr_Cch12(x_addr,(y_addr+6*i),1,&chin_13[bcd_wei[j]*12]);
else Wr_Cch12(x_addr,(y_addr+6*i),1,&chin_12[bcd_wei[j]*12]);
}
else Wr_Cch12(x_addr,(y_addr+6*i),0,&chin_12[bcd_wei[j]*12]);
}
}
if(dian!=0)
{
temp=zheng*6;
if(p_key==key) /*小数点*/
{
if(enter_flag==1)Wr_Cch12(x_addr,(temp+y_addr),1,&chin_13[0x78]);
else Wr_Cch12(x_addr,(temp+y_addr),1,&chin_12[0x78]);
}
else Wr_Cch12(x_addr,(temp+y_addr),0,&chin_12[0x78]);
temp=(zheng+1)*6;
j=dian-1;
for(i=0;i<dian;i++,j--) /*小数*/
{
if(p_key==key)
{
if(enter_flag==1)Wr_Cch12(x_addr,(temp+y_addr+6*i),1,&chin_13[bcd_wei[j]*12]);
else Wr_Cch12(x_addr,(temp+y_addr+6*i),1,&chin_12[bcd_wei[j]*12]);
}
else Wr_Cch12(x_addr,(temp+y_addr+6*i),0,&chin_12[bcd_wei[j]*12]);
}
}
}
/****************************************************/
/*函数功能:显示12*12的汉字数据*/
/*入口参数:X地址 Y地址 整形数据*/
/*出口参数:无*/
/*汉字:12*12 */
/*作者:刘勇 */
/****************************************************/
void Wr_Chinese(unsigned int x,unsigned int y,uint color,unsigned int *pp)
{
unsigned int j,dd;
for(j=0;j<24;j++)
{
dd=*(pp+j);
if(j<12)
{
if(color==1){dd=0x0ffff-dd;dd&=0x0f0;}
Lw(x,(y+j),dd);
Delay(2);
}
else
{
if(color==1){dd&=0x0ff;dd=0x0ff-dd;}
Lw((x+1),(y+j-12),dd);
Delay(2);
}
}
}
void P_Screen1(void)
{
uint i,m;
for(i=0;i<12;i++)
{
m=scr1_data[i];
Wr_Chinese(scr1_site1[i],scr1_site2[i],0,&chin_24[m]);
}
switch(p_key)
{
case 0:
for(i=0;i<4;i++)
{
m=scr1_data[i];
Wr_Chinese(scr1_site1[i],scr1_site2[i],1,&chin_24[m]);
}
break;
case 1:
for(i=4;i<8;i++)
{
m=scr1_data[i];
Wr_Chinese(scr1_site1[i],scr1_site2[i],1,&chin_24[m]);
}
break;
case 2:
for(i=8;i<12;i++)
{
m=scr1_data[i];
Wr_Chinese(scr1_site1[i],scr1_site2[i],1,&chin_24[m]);
}
break;
default: break;
}
}
void P_Screen2(void)
{
uint i,m,st_out;
st_out=0x0001;
for(i=0;i<18;i++)
{
m=scr2_data[i];
Wr_Cchar(scr2_site1[i],scr2_site2[i],0,&chin_6[m]);
}
for(i=0;i<3;i++)
Pr_IntToChar((i+3),14,2,3,0,up1_data.avr_u[i]);
for(i=0;i<3;i++)
Pr_IntToChar((i+3),56,1,3,0,up1_data.avr_i[i]);
for(i=0;i<3;i++)
{
if(cos_flag[i]==1)Wr_Cchar((i+3),92,0,&chin_6[0x0d8]);
else Wr_Cchar((i+3),92,0,&chin_6[0x0de]);
Pr_IntToChar((i+3),98,3,1,0,up1_data.avr_c[i]);
}
if(tou_flag[0]==1||tou_flag[1]==1||tou_flag[2]==1||tou_flag[3]==1) /*投切标志*/
Wr_Cch8(7,6,0,&chin_8[0x30]);
else if(qie_flag[0]==1||qie_flag[1]==1||qie_flag[2]==1||qie_flag[3]==1)
Wr_Cch8(7,6,0,&chin_8[0x38]);
else
Wr_Cch8(7,6,0,&chin_8[0x40]);
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,20,1,&chin_6[0x06]); /*1*/
else Wr_Cchar(7,20,0,&chin_6[0x06]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,28,1,&chin_6[0x0c]); /*2*/
else Wr_Cchar(7,28,0,&chin_6[0x0c]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,36,1,&chin_6[0x12]); /*3*/
else Wr_Cchar(7,36,0,&chin_6[0x12]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,44,1,&chin_6[0x18]); /*4*/
else Wr_Cchar(7,44,0,&chin_6[0x18]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,52,1,&chin_6[0x1e]); /*5*/
else Wr_Cchar(7,52,0,&chin_6[0x1e]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,60,1,&chin_6[0x24]); /*6*/
else Wr_Cchar(7,60,0,&chin_6[0x24]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,68,1,&chin_6[0x2a]); /*7*/
else Wr_Cchar(7,68,0,&chin_6[0x2a]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,76,1,&chin_6[0x30]); /*8*/
else Wr_Cchar(7,76,0,&chin_6[0x30]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cchar(7,84,1,&chin_6[0x36]); /*9*/
else Wr_Cchar(7,84,0,&chin_6[0x36]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cch8(7,92,1,&chin_8[0x00]); /*10*/
else Wr_Cch8(7,92,0,&chin_8[0x00]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cch8(7,102,1,&chin_8[0x08]); /*11*/
else Wr_Cch8(7,102,0,&chin_8[0x08]);
st_out<<=1;
if((st_out&up1_data.c_status)>0)Wr_Cch8(7,113,1,&chin_8[0x10]); /*12*/
else Wr_Cch8(7,113,0,&chin_8[0x10]);
}
void P_Screen3(void)
{
uint i,m;
for(i=0;i<17;i++)
{
m=scr3_data[i];
Wr_Cchar(scr3_site1[i],scr3_site2[i],0,&chin_6[m]);
}
for(i=0;i<3;i++)
{
if(p_flag[i]==1)Wr_Cchar((i+3),22,0,&chin_6[0x0d8]);
else Wr_Cchar((i+3),22,0,&chin_6[0x0de]);
Pr_IntToChar((i+3),28,1,3,0,up1_data.avr_p[i]);
}
for(i=0;i<3;i++)
{
if(q_flag[i]==1)Wr_Cchar((i+3),75,0,&chin_6[0x0d8]);
else Wr_Cchar((i+3),75,0,&chin_6[0x0de]);
Pr_IntToChar((i+3),81,1,3,0,up1_data.avr_q[i]);
}
Wr_Chinese(6,0,0,&chin_24[0x108]); /*频*/
Wr_Chinese(6,12,0,&chin_24[0x120]); /*率*/
Pr_IntToChar(7,60,2,2,0,up1_data.avr_f);
}
void P_Screen4(void)
{
uint i,m;
for(i=0;i<18;i++)
{
m=scr4_data[i];
Wr_Cch12(scr4_site1[i],scr4_site2[i],0,&chin_12[m]);
}
for(i=0;i<6;i++)
{
m=scr4_data1[i];
Wr_Chinese(scr4_site3[i],scr4_site4[i],0,&chin_24[m]);
}
Pr_IntTo12(3,34,0,2,9,set_yg[3]);
Pr_IntTo12(3,46,0,2,9,set_yg[2]);
Pr_IntTo12(3,58,0,2,9,set_yg[1]);
Wr_Cch12(3,70,0,&chin_12[0x78]);
Pr_IntTo12(3,76,0,2,9,set_yg[0]);
Pr_IntTo12(5,34,0,2,9,set_wg[3]);
Pr_IntTo12(5,46,0,2,9,set_wg[2]);
Pr_IntTo12(5,58,0,2,9,set_wg[1]);
Wr_Cch12(5,70,0,&chin_12[0x78]);
Pr_IntTo12(5,76,0,2,9,set_wg[0]);
Pr_IntTo12(0,44,0,2,9,p_year);
Pr_IntTo12(0,62,0,2,9,p_month);
Pr_IntTo12(0,80,0,2,9,p_day);
Pr_IntTo12(0,98,0,2,9,p_hour);
Pr_IntTo12(0,116,0,2,9,p_minute);
Pr_IntToChar(2,116,0,2,0,p_second);
}
void P_Screen5(void)
{
uint i,m;
for(i=0;i<20;i++)
{
m=scr5_data[i];
Wr_Cchar(scr5_site1[i],scr5_site2[i],0,&chin_6[m]);
}
for(i=0;i<3;i++)
Pr_IntToChar((i+3),24,1,2,0,up2_data.avr_zxb[i]);
for(i=0;i<3;i++)
Pr_IntToChar((i+3),86,1,2,0,up2_data.avr_zxb[i+3]);
}
void P_Screen6(void)
{
uint i,m;
for(i=0;i<14;i++)
{
m=scr6_data[i];
Wr_Cchar(scr6_site1[i],scr6_site2[i],0,&chin_6[m]);
}
Wr_Cch8(5,0,0,&chin_8[0x08]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -