📄 displayfunction.c
字号:
#include "HardInterface.h"
/*-------------------------字模显示函数----------------------------------*/
/*void SetCGRAM(void) 建立CGRAM*/
/*void DisplayChar(unsigned char row,unsigned char col,unsigned char word) 显示西文字符*/
/*void CCDisplay(unsigned char row,unsigned char col,unsigned word) 文本方式下显示汉字*/
/*void GCDisplay(unsigned char row,unsigned char col,unsigned char GW[32]) 图形方式下显示汉字*/
/*void RRWL(unsigned char row ,unsigned char col,unsigned int wordcode) 读取RAM字模,再在LCD显示汉字*/
/*void ThirdDisplay(unsigned char row,unsigned char col,unsigned char TuXing[96]) 第三区显示图形*/
/*void Data_disply(unsigned char row, unsigned char col, unsigned long int data) 十进制最大八位显示数据*/
/*void CLRDisplay_definition(unsigned char row,unsigned char col) 自定义清楚RAM*/
/*----------- 系统状态显示-----------
void Display_XTZT(unsigned char flag) 系统状态显示
-----------数据显示函数-----------*/
//void Display_DianLiu(void) //电流
//void Display_XDianYa(void) //相电压
//void Display_LDianYa(void) //线电压
//void Disply_Gonglv(unsigned char flag) //功率
//void Display_GLYS(void) //功率因素
//void Display_PinLv(void) //频率
//void Display_XTZT(unsigned char flag) //系统状态
//void Display_XBSZ(unsigned char flag) //谐波失真度
//void Display_XiLiang(unsigned char flag)//需量(0)电流)(1)功率
//void Display_DianDu(void) //电度
/*-------------------------------*/
/* 显示西文字符*/
void DisplayChar(unsigned char row,unsigned char col,unsigned char word)
{
unsigned int cursor,tempaddress,addl,addh;
unsigned char i;
/*cursor=0x0260+row*20*8+col; //第一显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4f); //光标下移,CSRDIR代码
WRCommand(0x42); //设置数据写入,MWRITE代码
for (i=0;i<8;i++)
{
WRData(0x00);//清楚屏幕
}
*/
cursor=row*20+col; //第一显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4C); //光标下移,CSRDIR代码
WRCommand(0x42); //设置数据写入,MWRITE代码
WRData(word);
}
void DisplayChar_new(unsigned char row,unsigned char col,unsigned char word[8],unsigned char n)
{
unsigned int cursor,tempaddress,addl,addh;
unsigned char i,k;
for (k=0;k<=n;k++)
{
cursor=0x0260+row*20*8+col+k; //第二显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4f); //光标下移,CSRDIR代码
WRCommand(0x42); //设置数据写入,MWRITE代码
for (i=0;i<8;i++)
{
WRData(0x00);//清楚屏幕
}
}
cursor=row*20+col; //第一显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4c); //光标右移,CSRDIR代码
WRCommand(0x42); //设置数据写入,MWRITE代码
for (k=0;k<n;k++)
WRData(word[k]);
}
/*/*字定义清显示RAM
void CLRDisplay_definition(unsigned char row,unsigned char col)
{
unsigned int cursor,tempaddress;
unsigned char addl,addh,i,k;
WRCommand(0x4f); //光标下移
//清除二区字模
for(k=0;k<2;k++)
{
cursor=0x0260+row*20*8+col+k; //设置光标位置
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x42); //设置数据写入
for(i=0;i<16;i++)
{
WRData(0x00);
}
}
//清除一区四个文本字模
for(k=0;k<2;k++)
{
cursor=row*20+col+k;
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x42); //设置数据写入
WRData(0x20);
WRData(0x20);
}
}
*/
/****************设定清屏函数************/
void CLRDisplay_choice(unsigned char row,unsigned char col,unsigned char layer,unsigned int n)
{
unsigned int i;
unsigned int cursor,tempaddress;
unsigned char addl,addh;
switch (layer)
{
case 0:
{
cursor=row*20+col;
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
break;
}
case 1:
{
cursor=0x0260+row*20*8+col; //设置光标位置
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
break;
}
default:return;break;
}
WRCommand(0x4c); //光标右移
WRCommand(0x46); //设置光标指针0x0000
WRData(addl);
WRData(addh);
WRCommand(0x42); //设置数据写入
for(i=0;i<n;i++)
{
WRData(0x00);
}
}
/*建立CGRAM*/
void SetCGRAM(void)
{
unsigned int i;
WRCommand(0x5c); //设置CGRAM首地址
WRData(0x00); //首地址为0x3000
WRData(0x30);
WRCommand(0x46); //设置光标指针
WRData(0x00); //首地址为0x3000-代码0x80
WRData(0x34);
WRCommand(0x4c); //光标右移
WRCommand(0x42); //设置数据写入
for(i=0;i<CLength;i++)
{
WRData(CTable[i]);
}
}
/*文本方式下显示符号*/
void CCDisplay(unsigned char row,unsigned char col,unsigned char word)
{ //row(0~29),col(0~39)
unsigned int cursor,tempaddress,addl,addh;
unsigned char k;
for(k=0;k<4;k++)
{
cursor=row*20+col+k; //第一显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4F); //光标下移
WRCommand(0x42); //分横二部分写字竖二部分
WRData(word);
WRData((word+1));
WRData((word+2));
word=word+3;
}
}
/*图形方式下显示汉字*/
void GCDisplay(unsigned char row,unsigned char col,const unsigned char GW[32])
{ //row(0~319)col(0~29)
unsigned int cursor,tempaddress;
unsigned char addl,addh;
unsigned char i,k;
WRCommand(0x4f); //光标下移
for(i=0;i<2;i++)
{
cursor=0x0260+row*20+col+i; //加上显示二区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x42);
for(k=0;k<16;k++)
{
WRData(GW[i*16+k]);
}
}
}
/*图形方式下显示数字*/
void GCDisplay_C(unsigned char row,unsigned char col,const unsigned char GW[64])
{ //row(0~319)col(0~29)
unsigned int cursor,tempaddress;
unsigned char addl,addh;
unsigned char i,k;
WRCommand(0x4f); //光标下移
for(i=0;i<2;i++)
{
cursor=0x0260+row*20+col+i; //加上显示二区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x42);
for(k=0;k<32;k++)
{
WRData(GW[i*32+k]);
}
}
}
/*第三区显示图形*/
void ThirdDisplay(unsigned char row,unsigned char col,const unsigned char TuXing[96])
{
unsigned int cursor,tempaddress,addl,addh;
unsigned char p,i;
for (p=0;p<4;p++)
{
cursor= 0x12D0+row*20+col+p; //第三显示区
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WRCommand(0x46); //设置光标指针
WRData(addl);
WRData(addh);
WRCommand(0x4F); //光标下移
WRCommand(0x42); //图形分三部分描述
for(i=0;i<24;i++)
{
WRData(TuXing[p*24+i]);
}
}
}
/*void init_time(void)//输入初始时间
{
int s,m,h,d,mo,y;
printf("input cur_time.second and input cur_time.hour and input cur_time.date and input cur_time.month and input cur_time.year.\n");
scanf(" %d, %d, %d, %d, %d, %d",&s,&m,&h,&d,&mo,&y);
}
*/
/*————————32*24数字0~9显示函数——————*/
void Display_Number(unsigned char row, unsigned char col,unsigned char number)
{
switch(number)
{
case 0:GCDisplay_C(row,col,CTable50);break;
case 1:GCDisplay_C(row,col,CTable51);break;
case 2:GCDisplay_C(row,col,CTable52);break;
case 3:GCDisplay_C(row,col,CTable53);break;
case 4:GCDisplay_C(row,col,CTable54);break;
case 5:GCDisplay_C(row,col,CTable55);break;
case 6:GCDisplay_C(row,col,CTable56);break;
case 7:GCDisplay_C(row,col,CTable57);break;
case 8:GCDisplay_C(row,col,CTable58);break;
case 9:GCDisplay_C(row,col,CTable59);break;
default:break;
}
}
/*————————16*16数字0~9显示函数——————*/
void Display_Number1(unsigned char row, unsigned char col,unsigned char number)
{
switch(number)
{
case 0:GCDisplay(row,col,CTable70);break;
case 1:GCDisplay(row,col,CTable71);break;
case 2:GCDisplay(row,col,CTable72);break;
case 3:GCDisplay(row,col,CTable73);break;
case 4:GCDisplay(row,col,CTable74);break;
case 5:GCDisplay(row,col,CTable75);break;
case 6:GCDisplay(row,col,CTable76);break;
case 7:GCDisplay(row,col,CTable77);break;
case 8:GCDisplay(row,col,CTable78);break;
case 9:GCDisplay(row,col,CTable79);break;
default:break;
}
return;
}
/*十进制最大四位显示数据。point 是小数点位数*/
void Data_disply(unsigned char row, unsigned char col, unsigned int data,unsigned char point)
{
unsigned char Data_inter[5],p;
const unsigned int Data_dp;
signed char i;
unsigned long int D_i1,D_i2,k;
D_i1=data;
for(i=4;i>0;i--)
{
for(p=1,k=1;p<=i;p++)
{
k*=10;
}
D_i2=D_i1%k;
Data_inter[i]=(D_i1-D_i2)/k;
D_i1=D_i2;
}
Data_inter[0]=D_i1;
for(i=4;i>=1;i--)
{
Display_Number(row,col,Data_inter[i]);
col+=2;
if((i==(point+1))&&(point!=0))
{
GCDisplay_C(row,col,CTable60);
col++;
}
}
}
/*十进制最大八位显示数据*/
void Data_disply_8(unsigned char row, unsigned char col, unsigned long data,unsigned char point)
{
unsigned char Data_inter[8],p;
const unsigned long Data_dp;
signed char i;
unsigned long D_i1,D_i2,k;
D_i1=data;
for(i=7;i>0;i--)
{
for(p=1,k=1;p<=i;p++)
{
k*=10;
}
D_i2=D_i1%k;
Data_inter[i]=(D_i1-D_i2)/k;
D_i1=D_i2;
}
Data_inter[0]=D_i1;
for(i=7;i>=1;i--)
{
Display_Number(row,col,Data_inter[i]);
col+=2;
if((i==(point+1))&&(point!=0))
{
GCDisplay_C(row,col,CTable60);
col++;
}
}
}
//void Display_string(unsigned char row,unsigned char col,unsigned char[8],unsigned char n)
//{
//Data_disply
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -