📄 lcd_display.c
字号:
WriteDDRAM(0x90, 0x02);
WriteDDRAM(0x88, 0x02);
WriteDDRAM(0x98, 0x02);
Delay(255);
Delay(255);
Delay(255);
WriteDDRAM(0x80, 0x04);
WriteDDRAM(0x90, 0x04);
WriteDDRAM(0x88, 0x04);
WriteDDRAM(0x98, 0x04);
Delay(255);
Delay(255);
Delay(255);
WriteDDRAM(0x80, 0x06);
WriteDDRAM(0x90, 0x06);
WriteDDRAM(0x88, 0x06);
WriteDDRAM(0x98, 0x06);
Delay(255);
Delay(255);
Delay(255);
WriteCGROM(0x40,0xaa,0x55);
WriteCGROM(0x50,0x55,0xaa);
WriteCGROM(0x60,0xff,0xff);
WriteDDRAM(0x80, 0x00);
WriteDDRAM(0x90, 0x00);
WriteDDRAM(0x88, 0x00);
WriteDDRAM(0x98, 0x00);
Delay(255);
Delay(255);
Delay(255);
WriteDDRAM(0x80, 0x02);
WriteDDRAM(0x90, 0x02);
WriteDDRAM(0x88, 0x02);
WriteDDRAM(0x98, 0x02);
Delay(255);
Delay(255);
Delay(255);
WriteDDRAM(0x80, 0x04);
WriteDDRAM(0x90, 0x04);
WriteDDRAM(0x88, 0x04);
WriteDDRAM(0x98, 0x04);
Delay(255);
Delay(255);
Delay(255);
//WriteCommand(0x01);
//WriteCommand(0x80);
}*/
/****************************0-9数字对照LCD编码**********************/
unsigned char num2LCDchar(unsigned char num){
if(num<10){
return (0x30+num) ;
}
else{
return (0x41 +num-10);
}
}
/****************************0-9数字对照中文编码**********************/
/*unsigned char num2ChineseChar(unsigned char num,unsigned char *array)
{
if((num>=0)&&(num<=9)){
*array=0xA3;
array++;
*array=0xB0+num;
}
return;
}*/
/****************************int型到LCD显示数组转换*********************/
void int2LCDchar(unsigned int num,unsigned char *result){
unsigned char j;
unsigned char Flag=0;
Display_data_length=0;
j=num/10000;
num=num%10000;
if(j!=0){
*result=num2LCDchar(j);
result++;
Flag=1;
Display_data_length++;
}
j=num/1000;
num=num%1000;
if((j!=0)||(Flag==1)){
*result=num2LCDchar(j);
result++;
Flag=1;
Display_data_length++;
}
//*result=num2LCDchar(j);
//result++;
j=num/100;
num=num%100;
if((j!=0)||(Flag==1)){
*result=num2LCDchar(j);
result++;
Flag=1;
Display_data_length++;
}
//*result=num2LCDchar(j);
//result++;
j=num/10;
num=num%10;
if((j!=0)||(Flag==1)){
*result=num2LCDchar(j);
result++;
Flag=1;
Display_data_length++;
}
//*result=num2LCDchar(j);
//result++;
j=num/1;
*result=num2LCDchar(j);
Display_data_length++;
}
/****************************float??xxxx.xxx??????*********************/
void FloatToLCDChar(float value,unsigned char *result)
{
uint j;
uchar Flag=0;
Display_data_length=0;
if (value >= 10000)
{
*result++ = num2LCDchar(9);
*result++ = num2LCDchar(9);
*result++ = num2LCDchar(9);
*result++ = num2LCDchar(9);
*result++ = '.';
*result++ = num2LCDchar(9);
*result++ = num2LCDchar(9);
*result = num2LCDchar(9);
Display_data_length=8;
}
else
{
j= ( (uint) value) / 1000;
value = value - j*1000;
if(j!=0){
*result++=num2LCDchar(j);
Flag=1;
Display_data_length++;
}
j= ( (uint) value) / 100;
value = value - j*100;
if((j!=0)||(Flag==1)){
*result++=num2LCDchar(j);
Display_data_length++;
Flag=1;
}
j= ( (uint) value) / 10;
value = value - j*10;
if((j!=0)||(Flag==1)){
*result++=num2LCDchar(j);
Display_data_length++;
Flag=1;
}
j= (uint) value;
value = value - j;
*result++=num2LCDchar(j);
Display_data_length++;
*result++='.';
value = value * 1000.0 ;
Display_data_length++;
j= ( (uint) value) / 100;
value = value - j*100;
*result++=num2LCDchar(j);
Display_data_length++;
j= ( (uint) value) / 10;
value = value - j*10;
*result++=num2LCDchar(j);
Display_data_length++;
j= (uint) value;
value = value - j;
*result=num2LCDchar(j);
Display_data_length++;
}
return;
}
/****************************float??xxxx.xxx??????*********************/
float CharToFloat(unsigned char *result)
{
float j=10;
float c1=0,c2=0;
uchar k=0,m=0;
uchar Flag=0;
//Display_data_length=0;
while((*result!=',')&&(k<=8)){
if(Flag==0){
c1=c1*j+(*result-0x30);
}
else{
c2=c2+(*result-0x30)*j;
j=j*0.1;
}
result++;
if(*result=='.') {
Flag=1;
j=0.1;
result++;
}
k++;
}
c1=c1+c2;
return c1;
}
/****************************float??xxxx.xxx??????*********************/
float CharToFloat1(unsigned char *result)
{
//float j=10;
//float c1=0,c2=0;
//uchar k=0,m=0;
//uchar Flag=0;
//unsigned long c1;
/*if((*result>=0x30)&&(*result<=0x39)){
if(Flag==0) c1=c1*j+(*result-0x30);
else{
c2=c2+(*result-0x30)*j;
j=j*0.1;
}
}
else if((*result=='.')&&(Flag==0)){
j=0.1;
Flag=1;
}
else if(*result==',') break;
else return 0;
result++;*/
//}
//c1=c1+c2;
float c2;
uchar k=0,m=0,i=0;
unsigned long c1=0;
for(k=0;k<9;k++){
if(m>0) m++;
if(m>4) break;
if((*result>=0x30)&&(*result<=0x39)) i= *result-0x30;
else if(*result=='.'){
i=0;
m=1;
} else i=0;
if(m!=1){
c1=c1+i;
c1=c1*10;
}
result++;
}
c2=c1;
c2=c2*powf_i(0.1,m-1);
return c2;
}
/****************************float??xxxx.xxx??????*********************/
/*uint FloatToChineseChar(float value,unsigned char *result){
unsigned int j,k=0,l=0;
Display_data_length=0;
if(value>10000){
num2ChineseChar(9,result);
result++;
result++;
num2ChineseChar(9,result);
result++;
result++;
num2ChineseChar(9,result);
result++;
result++;
num2ChineseChar(9,result);
result++;
result++;
*result++=0xA3;
*result++=0xAE;
num2ChineseChar(9,result);
result++;
result++;
num2ChineseChar(9,result);
result++;
result++;
num2ChineseChar(9,result);
result++;
result++;
Display_data_length=8;
return VALUE_OVERFLOW;
}
//显示千位数
j= ((unsigned int) value) / 1000;
value = value - j*1000;
if(j!=0){
num2ChineseChar(j,result);
result++;
result++;
Display_data_length=Display_data_length+1;
k=1;
}
//显示百位数
j= ( (unsigned int) value) / 100;
value = value - j*100;
if((j!=0)||(k==1)) {
num2ChineseChar(j,result);
result++;
result++;
Display_data_length=Display_data_length+1;
l=1;
}
//显示十位数
j= ( (unsigned int) value) / 10;
value = value - j*10;
if((j!=0)||(k==1)||(l==1)) {
num2ChineseChar(j,result);
result++;
result++;
Display_data_length=Display_data_length+1;
}
//显示个位数
j= (unsigned int) value;
value = value - j;
num2ChineseChar(j,result);
result++;
result++;
Display_data_length=Display_data_length+1;
//display "."
*result++=0xA3;
*result++=0xAE;
Display_data_length=Display_data_length+1;
value = value * 1000.0 ;
//显示小数点后第一位
j= ( (unsigned int) value) / 100;
value = value - j*100;
num2ChineseChar(j,result);
result++;
result++;
Display_data_length=Display_data_length+1;
//显示小数点后第二位
j= ( (unsigned int) value) / 10;
value = value - j*10;
num2ChineseChar(j,result);
result++;
result++;
//显示数据长度加2
Display_data_length=Display_data_length+1;
//显示小数点后第三位
j= (unsigned int) value;
value = value - j;
num2ChineseChar(j,result);
result++;
result++;
//显示数据长度加2
Display_data_length=Display_data_length+1;
return VALUE_OK;
}*/
/*****************写测试中文*********************************/
/*void Write_Chinese(){
unsigned char i;
unsigned char *mydata;
WriteCommand(0x01);
WriteCommand(0x80);
mydata=Chinese1;
for (i=0;i<16;i++){
WriteData(*mydata);
mydata++;
}
WriteCommand(0x90);
mydata=Chinese2;
for (i=0;i<16;i++){
WriteData(*mydata);
mydata++;
}
WriteCommand(0x88);
mydata=Chinese3;
for (i=0;i<16;i++){
WriteData(*mydata);
mydata++;
}
WriteCommand(0x98);
mydata=Chinese4;
for (i=0;i<16;i++){
WriteData(*mydata);
mydata++;
}
Delay(100);
Delay(100);
Delay(100);
}*/
/***************************IDtoChar*****************/
/*void ID2LCDchar(unsigned int num,unsigned char *result){
unsigned char temp;
temp=(num&0x700)>>8;
*result++=num2LCDchar(temp);
temp=(num&0x0F0)>>4;
*result++=num2LCDchar(temp);
temp=(num&0x00F);
*result++=num2LCDchar(temp);
//add a space
*result=0x20;
}*/
/**************************ShowIDFunc*******************/
/****************************节点状态显示刷新*********************/
/*void LCD_refresh1(void){
//WriteCommand(1);
//WriteCharArray(1,1,6,nodearray);
//WriteCharArray(1,7,3,HCUarray);
//WriteCharArray(1,7,5,Node1array);
//WriteCharArray(1,7,5,Node2array);
//WriteCharArray(1,7,5,Node3array);
//WriteCharArray(1,7,5,Node4array);
//WriteCharArray(1,7,5,Node5array);
//WriteCharArray(2,1,13,bitrate500array);
//WriteCharArray(3,1,8,RXstatarray);
switch(NodeRxStatus){
case 0:
WriteCharArray(3,9,2,OKarray);
break;
case 1:
WriteCharArray(3,9,7,Warningarray);
break;
case 2:
WriteCharArray(3,9,5,Errorarray);
break;
case 3:
WriteCharArray(3,9,6,BusOffarray);
break;
default:
break;
}
WriteCharArray(4,1,8,TXstatarray);
switch(NodeTxStatus){
case 0:
WriteCharArray(4,9,2,OKarray);
break;
case 1:
WriteCharArray(4,9,7,Warningarray);
break;
case 2:
WriteCharArray(4,9,5,Errorarray);
break;
case 3:
WriteCharArray(4,9,6,BusOffarray);
break;
default:
break;
}
}*/
/****************************收发计数显示刷新*********************/
/*void LCD_refresh2(void){
unsigned char resultarray[5];
WriteCommand(1);
//WriteCharArray(1,1,9,rxCounterarray);
//int2LCDchar(RxCounter,resultarray);
//WriteCharArray(1,11,5,resultarray);
//WriteCharArray(3,1,9,txCounterarray);
//int2LCDchar(TxCounter,resultarray);
//WriteCharArray(3,11,5,resultarray);
}*/
/****************************收发信息真ID显示刷新*********************/
/*void LCD_refresh3(void){
unsigned char i;
unsigned char rowNum=1;
unsigned char ColNum=9;
unsigned char IDdispCode[4];
//RXrecordlock=1; //Lock the RXrecord
WriteCommand(1);
//WriteCharArray(1,1,8,rxframeIDarray);
//display ID according to RxIDcode[]
//if(RxIDcode[0]!=0){ //如果只用pIDrear判断是否收到桢,会漏掉只收到一桢的情况
for(i=0;i<pIDrear+1;i++){
ID2LCDchar(RxIDcode[i],IDdispCode);
RxIDcode[i]=0;
WriteCharArray(rowNum,ColNum,4,IDdispCode); //display this msgID
ColNum+=4; //set next cursor position
if(ColNum>13){
ColNum=1;
rowNum++;
}
}
}
//after all displayed, clear variable for new cycle
pIDrear=0;
RXrecordlock=0; //Release the RXrecord
} */
/*void LCD_refresh4(void){
unsigned char i;
unsigned char rowNum=1;
unsigned char ColNum=9;
unsigned char IDdispCode[4];
WriteCommand(1);
//WriteCharArray(1,1,8,txframeIDarray);
//judge IDflag[12] to find which ID is sent(IDflag==2)
for(i=0;i<16;i++){
//when this msg is Trans
if(TxIDcode[i]!=0){
ID2LCDchar(TxIDcode[i],IDdispCode);
TxIDcode[i]=0;
WriteCharArray(rowNum,ColNum,4,IDdispCode); //display this msgID
ColNum+=4; //set next cursor position
if(ColNum>13){
ColNum=1;
rowNum++;
}
}
}*/
/*void ChangeResultToDisplayChar(float value,unsigned char *result){
unsigned char *point;
point=result;
*point++=':';
//*point++=' ';
FloatToLCDChar(value,point);
point= result+1+Display_data_length;
*point++='m';
*point++='m';
return;
}*/
//after all displayed, clear variables for new cycle
/*uchar Display_string(uchar row,uchar column,uchar *mystring){
if((row<=4)&&(row>0)&&(column>0)){
while((*mystring!=' ')&&(column<=16)){
WriteCharArray(row,column,1,mystring);
column++;
mystring++;
}
return column;
}
else
return 0;
}
uchar Display_char_array(uchar row,uchar column,uchar *mystring){
if((row<=4)&&(row>0)&&(column>0)){
while((*mystring!=',')&&(column<=16)){
WriteCharArray(row,column,1,mystring);
column++;
mystring++;
}
return column;
}
else
return 0;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -