📄 fm12864-1.c
字号:
{
unsigned char i,j;
LCD_Set_StartLine(0x00);
for(i=0;i<8;i++)
{
LCD_Set_Page(i);
LCD_SelectScr(1);
LCD_Set_Colomn(0);
for(j=0;j<64;j++)
LCD_WriteData(0x00);
LCD_SelectScr(2);
LCD_Set_Colomn(0);
for(j=0;j<64;j++)
LCD_WriteData(0x00);
}
}
/**************************
******************************/
void LCD_Init(void)
{
Lcd_En=0;
delay_50ms(10); //延时0.5s
Lcd_En=1;
LCD_SelectScr(0); //全屏
LCD_OnOffSet(1); //关显示
LCD_Set_StartLine(0x00);
LCD_Set_Page(0x00);
LCD_Set_Colomn(0x00);
// LCD_OnOffSet(1); //开显示
LCD_ClrScr(); //清屏
}
/****************************************
function 16*16汉字
******************************************/
void LCD_WordDisp(unsigned char page, unsigned char column, unsigned char *hzk)
{
unsigned char j=0,i=0,k=0;
for(j=0;j<2;j++)
{
if (column <4)
{
k=column;
LCD_SelectScr(1); //CSA=1,CSB=0,select leftwindow
}
else
{
k = column-4;
LCD_SelectScr(2); //CSA=0,CSB=1,select rightwindow
}
LCD_Set_Page(page+j);
LCD_Set_Colomn(k<<4);
for(i=0;i<16;i++)
{
LCD_WriteData(hzk[16*j+i]);
}
}
}
/*************************************************************
8*16
***************************************************************/
void LCD_ByteDisp(unsigned char page, unsigned char column, unsigned char *bytek)
{
unsigned char j=0,i=0,k=0;
for(j=0;j<2;j++)
{
if(column>15) {return;}
else if (column > 7)
{
k=column-8;
LCD_SelectScr(2); //CSA=0,CSB=1,select rightwindow
}
else
{
k=column;
LCD_SelectScr(1); //CSA=1,CSB=0,select leftwindow
}
LCD_Set_Page(page+j);
LCD_Set_Colomn(k<<3);
for(i=0;i<8;i++)
{
LCD_WriteData(bytek[8*j+i]);
}
}
}
/***********************
8*16
***************************/
void LCD_ShowASCII(unsigned char page, unsigned char column, unsigned char ascii)
{
LCD_ByteDisp(page,column,Codes[ascii-' ']);
}
/********************************
8*8
************************************/
void LCD_Show88(unsigned char page, unsigned char column, unsigned char *byte)
{
unsigned char i;
if(column>16) {return;}
else if(column>8)
{LCD_SelectScr(2); //如果column>8 (8,9,10,11,12,13,14,15)写在第二屏上
column=column & 0x07; //防止越界
}
else {
LCD_SelectScr(1); //(0,1,2,3,4,5,6,7)则写在第一屏上
}
LCD_Set_Page(page);
LCD_Set_Colomn(column<<3);
for(i=0;i<8;i++) LCD_WriteData(byte[i]);
}
/*********************************************
显示数字
***********************************************/
void LCD_ShowNum(unsigned char page,unsigned char column,unsigned char num)
{
LCD_ByteDisp(page,column,Codes[16+num]);
}
/*****************************************
*****************************************/
void LCD_ShowString(unsigned char page,unsigned char column,unsigned char *string)
{
unsigned char i=0;
while(string[i]!='\0')
{
LCD_ByteDisp(page,column,Codes[string[i]-' ']);
column++;
i++;
}
}
/**********************************************
**************************************************/
void LCD_PicDisp(unsigned char *pic)
{
unsigned char i=0,j=0,k=0;
for(i=0;i<8;i++)
{
for(j=0;j<128;j++)
{
if(j<64)
{
k=j;
LCD_SelectScr(1); //CSA=1,CSB=0,select leftwindow
}
else
{
k=j-64;
LCD_SelectScr(2); //CSA=0,CSB=1,select rightwindow
}
// LCD_Set_StartLine(i);
LCD_Set_Colomn(k);
LCD_WriteData(pic[128*i+j]);
}
}
}
/***************************************
*******************************************/
void LCD_ShowInteger(unsigned char page,unsigned char column,signed long number,unsigned char bits)
{
unsigned char flag=0,flag_sp=0,i,column_temp, flag_neg=0;
unsigned long Div=1;
if(number==0)
{
LCD_ShowASCII(page, column, '0');
for(i=1; i<bits; i++)
LCD_ShowASCII(page, column+i, ' ');
}
else
{
column_temp=column;
if(number<0)
{
LCD_ShowASCII(page, column_temp, '-');
column_temp=column_temp+1;
number = -1 * number;
flag_neg++;
}
for(i=1; i<bits; i++)
Div *= 10;
for(i=0; i<bits; i++)
{
if(number/Div)
flag = 1;
if(flag)
{
LCD_ByteDisp(page,column_temp,Codes[16+(number/Div)]);
column_temp ++;
number = number % Div;
}
else
flag_sp++;
Div = Div/10;
}
if(flag_sp<bits)
for(i=0; i<flag_sp; i++) //不需显示的地方填充空格
{
LCD_ShowASCII(page, bits+column-flag_sp+i+flag_neg, ' ');
}
}
}
/*******************************************************
***********************************************************/
void LCD_ShowFloat(unsigned char page, unsigned char column, float number, unsigned char bits_in)
{
unsigned char flag=0,flag_sp=0,i,column_temp,bits;
unsigned long Div=1, number_int, number_float_int;
float number_float;
if(number==0.0) //待显示数等于0时,只显示0
{
LCD_ShowASCII(page, column, '0');
for(i=1; i<bits_in; i++)
LCD_ShowASCII(page, column+i, ' ');
}
else //if(number!=0.0) //待显示数大于0时,
{
column_temp=column;
bits = bits_in;
if(number<0)
{
LCD_ShowASCII(page, column_temp, '-');
column_temp ++;
number = -1 * number;
bits ++ ;
}
number_int = (unsigned long)number;
number_float = number - number_int;
if(number_int==0)
{
LCD_ByteDisp(page,column_temp,Codes[16]);
column_temp ++;
}
else
{
for(i=1; i<bits; i++)
Div *= 10;
for(i=0; i<bits; i++)
{
if(number_int/Div)
flag = 1;
if(flag)
{
LCD_ByteDisp(page,column_temp,Codes[16+(number_int/Div)]);
column_temp ++;
number_int = number_int % Div;
}
else
flag_sp++;
Div = Div/10;
}
}
LCD_ShowASCII(page, column_temp, '.'); //显示小数点
column_temp ++;
bits ++;
if(number_float==0.0)
{
if(flag_sp<bits)
for(i=1; i<flag_sp; i++) //小数部分为0时后面都填充0
{
LCD_ShowASCII(page, bits+column-flag_sp+i, '0');
}
}
else
{
Div = 1;
for(i=1; i<bits-column_temp+column; i++)
Div *= 10;
number_float_int = (unsigned long)(number_float*Div*10);
bits = bits-column_temp+column;
for(i=0; i<bits; i++)
{
LCD_ByteDisp(page,column_temp,Codes[16+(number_float_int/Div)]);
column_temp ++;
number_float_int = number_float_int % Div;
Div = Div/10;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -