📄 lcd.c
字号:
0x08,0x08,0x08,0x04,0x04,0x04,0x02,0x03,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xc0,0x60,0x30,0x18,0x0c,0x06,0x02,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x04,0x04,0x0c,0x08,0x08,
0x08,0x08,0x18,0x10,0x10,0x10,0x10,0x10,
0x08,0x10,0x10,0x10,0x10,0x10,0x18,0x08,
0x08,0x08,0x0c,0x04,0x04,0x04,0x02,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char DIG_FONT[]=
{
/*0*/ 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
/*1*/ 0x00,0x00,0x00,0x00,0xff,0xff,0x00,0xff,
/*2*/ 0xff,0xff,0x00,0xff,0xff,0x00,0xff,0xff,
/*3*/ 0x00,0xff,0x00,0xff,0xff,0xff,0xff,0xff,
/*4*/ 0x00,0xff,0xff,0x00,0xff,0xff,0x00,0xff,
/*5*/ 0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
/*6*/ 0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
/*7*/ 0x00,0x00,0x00,0xff,0xff,0xff,0x00,0xff,
/*8*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
/*9*/ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};
unsigned char DISP_BUF[1152];//1 row/line is for ICON
//Turns the display ON or OFF.//
void Switch_LCD(U8 on_off)
{
Comm_Port=switch_on_off+(on_off&0x01);//only bit0 is used
}
// Initial Display Line //
void Init_LCD_Line(U8 line_num)
{
Comm_Port=init_line+(line_num&0x3f);//mask Bit7 and Bit6
}
// sets reference voltage //
void Set_Ref_Voltage(U8 ref_value)
{
Comm_Port=set_ref;
Comm_Port=ref_value&0x3f; //mask Bit7 and Bit6
}
// Set Page Address //
void Set_Page(U8 page_num)
{
Comm_Port=set_Page_addr+(page_num&0x0f);//mask High 4bit
}
// Set Column Address //
void Set_Col(U8 col_num)
{
Comm_Port=set_col_addr_h+(col_num/0x10);//output High 4bit
Comm_Port=set_col_addr_l+(col_num%0x10);//output Low 4bit
}
//ADC Select->Changes the relationship between RAM column address and segment driver. The direction of segment driver output pins can be reversed by software.//
void ADC_Select(U8 direct)
{
Comm_Port=adc_select+(direct%0x01);//only bit0 is used
}
// Reverse Display ON_OFF //
void Reverse_Disp(U8 on_off)
{
Comm_Port=reverse_disp+(on_off&0x01);//only bit0 is used
}
// Entire Display ON / OFF //
void Entire_Disp(U8 on_off)
{
Comm_Port=entire_disp+(on_off&0x01);//only bit0 is used
}
// Select LCD Bias(0:1/7 1:1/9) //
void Sele_Bias(U8 bias)
{
Comm_Port=sel_bias+(bias&0x01);//only bit0 is used
}
// Soft Reset //
void Soft_Reset(void)
{
Comm_Port=soft_reset;
}
// SHL Select //
void SHL_Select(U8 on_off)
{
Comm_Port=shl_select+(on_off&0x01);//only bit0 is used
}
// Power control //
void Power_Ctrl(U8 power_value)
{
Comm_Port=power_ctrl+(power_value&0x07);//only bit2~0 sre used
}
// Regulator Resistor Select //
void Regulator_Select(U8 resistor)
{
Comm_Port=reg_res_sel+(resistor&0x07);//only bit2~0 sre used
}
// Set Static Indicator State //
void Set_Static_Indicator_State(U8 on_off)
{
U8 temp;
temp=on_off&0x01; //only bit0 is used
if(temp==0)
Comm_Port=set_indicator;
else
{
Comm_Port=set_indicator+temp; //output 1st byte
Comm_Port=0x02; //ON (about 0.5 second blinking )
}
}
void Reflash_LCD(void)
{
/*display-data is output from DISP_BUF[] to LCD*/
unsigned char line_num,col_num;
for(line_num=0;line_num<9;line_num++)
{
Set_Page(line_num);
Set_Col(0);
for(col_num=0;col_num<128;col_num++)
Data_Port=DISP_BUF[line_num*128+col_num];
}
}
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
void LCD_Init(void)
{
/*Start of Initialization*/
ADC_Select(0);//ADC Select
SHL_Select(0);//SHL Select
Sele_Bias(1);//LCD Bias Select
Power_Ctrl(VC_ON);//User LCD Power Setup by Internal Instructions->Voltage Converter ON
Delay(1000);//Wait for 1ms
Power_Ctrl(VC_ON+VR_ON);//User LCD Power Setup by Internal Instructions->Voltage Regulator ON
Delay(1000);//Wait for 1ms
Power_Ctrl(VC_ON+VR_ON+VF_ON);//User LCD Power Setup by Internal Instructions->Voltage Follower ON
Regulator_Select(0x04);Set_Ref_Voltage(0x20);//User LCD Power Setup by Internal Instructions->Regulator Resistor Select,Reference Voltage Register Set
Delay(1000);//Waiting for Stabilizing the LCD Power Levels
/*End of Initialization*/
/* Start to use */
//Display Data RAM Addressing by Instruction
// Initial Display Line
// Set Page Address
// Set Column Address
//Write Display ON / OFF by Instruction->Display ON / OFF
Switch_LCD(1);//Turn Display ON / OFF by Instruction->Display ON / OFF
// Show_BMP(Welcome_BMP);
// LCD_Printf(2,"Hello!");
}
void Anti_Disp(U8 line_num) //将某行反显
{
unsigned char col_num;
for(col_num=0;col_num< MAX_COL;col_num++)
DISP_BUF[line_num*128+col_num]=~DISP_BUF[line_num*128+col_num];
Reflash_LCD();
}
void Earse_Line(U8 line_num) //擦除某行
{
unsigned char col_num;
for(col_num=0;col_num< MAX_COL;col_num++)
DISP_BUF[line_num*128+col_num]=0x00;
Reflash_LCD();
}
void LCD_SendString(unsigned char *disp_ptr,char *pt)
{
unsigned char temp_char;
unsigned char ascii_w;
while(*pt)
{
temp_char=(unsigned char)(*pt);
for (ascii_w=0;ascii_w<Ascii_W;ascii_w++)
*disp_ptr++=Ascii[temp_char*Ascii_W+ascii_w];
pt++;
}
}
void LCD_Printf(U8 line_num,char *fmt,...) //从某行起显示字符串
{
va_list ap;
char string[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
LCD_SendString(&DISP_BUF[line_num*128],string);
va_end(ap);
Reflash_LCD();
}
void Page_Dn(void)//全屏下移1行
{
int line_num,col;
for(line_num=6;line_num>=0;line_num--)
{
for(col=0;col<128;col++)
DISP_BUF[(line_num+1)*128+col]=DISP_BUF[line_num*128+col];
}
Reflash_LCD();
}
void Page_Up(void)
{
unsigned char line_num,col;
for(line_num=0;line_num<7;line_num++)
{
for(col=0;col<128;col++)
DISP_BUF[line_num*128+col]=DISP_BUF[(line_num+1)*128+col];
}
Reflash_LCD();
}
void CLS(void) //清屏
{
unsigned int buf_size;
for(buf_size=0;buf_size<1152;buf_size++)
DISP_BUF[buf_size]=0x00;
Reflash_LCD();
}
void Set_Icon(unsigned char icon,unsigned char val) //设置图标
{
DISP_BUF[8*128+icon]=val;
Reflash_LCD();
}
void Show_BMP(unsigned char * ptr)
{
unsigned int counter;
for(counter=0;counter<1024;counter++)
{
DISP_BUF[counter]=*ptr;
ptr++;
}
Reflash_LCD();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -