📄 lcd.c
字号:
FIO_Clr(PORT2,LCD_RS_P209); //clear_bit(RS_LCD);
Dnop(1);
FIO_Set(PORT0,LCD_RD_P015); //set_bit(RD_LCD);
FIO_Clr(PORT0,LCD_WR_P016); //clear_bit(WR_LCD);
Dnop(1);
FIO_Set(PORT0,LCD_WR_P016); //set_bit(WR_LCD);
Dnop(1);
FIO_Set(PORT2,LCD_RS_P209); //set_bit(RS_LCD);
FIO_Set(PORT2,LCD_CS_P208); //set_bit(CS_LCD); // disable the access
Dnop(1);
}
void SdData(unsigned char DData) //send display data
{
FIO_Set(PORT0,LCD_WR_P016); //set_bit(WR_LCD); // init all control signal
FIO_Set(PORT0,LCD_RD_P015); //set_bit(RD_LCD);
FIO_Set(PORT2,LCD_RS_P209); //set_bit(RS_LCD);
Dnop(1);
WR_LCDBUS(DData);
Dnop(1);
FIO_Clr(PORT2,LCD_CS_P208); //clear_bit(CS_LCD);enable the access
Dnop(1);
FIO_Clr(PORT0,LCD_WR_P016); //clear_bit(WR_LCD);
Dnop(1);
FIO_Set(PORT0,LCD_WR_P016); //set_bit(WR_LCD);
Dnop(1);
FIO_Clr(PORT2,LCD_RS_P209); //clear_bit(RS_LCD);
FIO_Set(PORT2,LCD_CS_P208); //set_bit(CS_LCD); disable the access
}
void Clr_part(unsigned char x,unsigned char y,unsigned char high,unsigned char width)
{
unsigned char i,j=0;
unsigned char temp=0;
temp = width/8;
CmdWrite(0x00,0xC5);
CmdWrite(0x60,x);
Dnop(10); // set cursor X location to 0
CmdWrite(0x70,y);
Dnop(10); // set cursor Y location to 0
for(i=0;i<high;i++)
{
for(j=0;j<temp;j++)
{
SdData(0);
Dnop(10);
}
CmdWrite(0x60,x);
Dnop(10);
CmdWrite(0x70,y+i);
Dnop(10);
}
}
void Clr_Screen(void)
{
CmdWrite(0xe0,0x00);
Dnop(10);
CmdWrite(0xf0,0xa8);
}
void Full_Screen(unsigned char date)
{
unsigned char i,j;
CmdWrite(0x60,0);
CmdWrite(0x70,0);
for(i=0;i<24;i++)
{
for(j=0;j<128;j++)
{
SdData(date);
}
}
}
void Horizen_Move(unsigned char start,unsigned char end)
{
CmdWrite(0x71,start);
Dnop(10);
CmdWrite(0x72,end);
Dnop(10);
CmdWrite(0x03,0x83);
}
void wr_Num(unsigned x,unsigned y,unsigned char num)
{
CmdWrite(0x00,0xCD); // Whole Chip LCD Controller Reg(Char Mode)
CmdWrite(0x60,x);
CmdWrite(0x70,y);
SdData(num+0x30);
}
void Print_Str(unsigned char x,unsigned char y,unsigned char *str)
{
CmdWrite(0x00,0xCD); // Whole Chip LCD Controller Reg(Char Mode)
Dnop(10);
CmdWrite(0x60,x);
Dnop(10);
CmdWrite(0x70,y);
while(*str>0)
{
SdData(*str);
str++;
Dnop(10);
}
}
void WriteGraphicScreen(unsigned char *GDData)
// DisplayData should be 192x128/8 = 3072byte
// set to graphic display
{
unsigned char TempData;
unsigned char i, j;
CmdWrite(0x00,0xC5);
delayms(1); // normal power mode, Graphic mode,
// display on, normal display.
CmdWrite(0x60,0x00);
delayms(1); // set cursor X location to 0
CmdWrite(0x70,0x00);
delayms(1); // set cursor Y location to 0
for(i=0;i<128;i++)
{
for(j=0;j<24;j++)
{
TempData=(*(GDData+(i*24)+j));
SdData(TempData);
}
}
}
void WriteTextScreen(unsigned char *TxtData)
// DisplayData should be 12(x2)x8 = 192byte
// set to char display
{
unsigned char TempData;
unsigned char i,j;
CmdWrite(0x00,0xCD); delayms(1); // normal power mode, Char mode
// display on, normal display
CmdWrite(0x60,0x00);
delayms(1); // set cursor X location to 0
CmdWrite(0x70,0x00);
delayms(1); // set cursor Y location to 0
for (j=0; j<8; j++)
{
for(i=0; i<24; i++)
{
TempData=(*(TxtData+(j*24)+i));
SdData(TempData);
Dnop(10); Dnop(10); Dnop(10); Dnop(10);
}
}
}
//-----------------------------------
// Init LCD module
//-----------------------------------
void initLCDM(void)
{
FIO_Set(PORT0,LCD_WR_P016); //set_bit(WR_LCD); // init all control signal
FIO_Set(PORT0,LCD_RD_P015); //set_bit(RD_LCD);
FIO_Set(PORT2,LCD_RS_P209); //set_bit(RS_LCD);
FIO_Set(PORT2,LCD_CS_P208); //set_bit(CS_LCD); disable the access
WR_LCDBUS(0xff); // pull up data bus
delayms(300);
FIO_Clr(PORT0,LCD_RST_P017); //clear_bit(RST_LCD);
delayms(500); // delay to wait for LCD module OSC start up
FIO_Set(PORT0,LCD_RST_P017); //set_bit(RST_LCD); // reset pin
delayms(50); // delay to wait for LCD module OSC start up
CmdWrite(0x00,0xCD); // Whole Chip LCD Controller Reg(Char Mode)
Dnop(10);
CmdWrite(0x90,0x0D);
Dnop(10); // Shift Clock Control Reg(192x128,69Hz)
CmdWrite(0xF0,0xA0);
Dnop(10);
CmdWrite(0x10,0x6e);
Dnop(10);
CmdWrite(0x11,0x0);
Dnop(10);
CmdWrite(0x12,0x91);
Dnop(10);
CmdWrite(0x20,0x17);
Dnop(10); // Active Window Right Reg
CmdWrite(0x30,0x7F);
Dnop(10); // Active Window Bottom Reg(128 duty)
CmdWrite(0x40,0x00);
Dnop(10); // Active Window Left Reg
CmdWrite(0x50,0x00);
Dnop(10); // Active Window Top Reg
CmdWrite(0x21,0x17);
Dnop(10); // Display Window Right Reg
CmdWrite(0x31,0x80);
Dnop(10); // Display Window Bottom Reg(128 duty)
CmdWrite(0x41,0x00);
Dnop(10);
CmdWrite(0x51,0x00);
Dnop(10);
CmdWrite(0x81,0x40);
Dnop(10); // by default
Clr_Screen();
}
void Logo(void)
{
unsigned char i,j=0;
unsigned char temp=0;
CmdWrite(0x00,0xC5);
Dnop(10); // display on, normal display
CmdWrite(0x60,0x00);
Dnop(10); // set cursor X location to 0
CmdWrite(0x70,0x00);
Dnop(10); // set cursor Y location to 0
for(i=0;i<32;i++)
{
for(j=0;j<24;j++)
{
temp=(*(E_D_C+(i*24)+j));
SdData(temp);
Dnop(10);
}
CmdWrite(0x60,0x00);
Dnop(10);
CmdWrite(0x70,0x00+i+1);
Dnop(10);
}
CmdWrite(0x60,0x00);
CmdWrite(0x70,40);
for(i=0;i<32;i++)
{
for(j=0;j<24;j++)
{
temp=(*(power_on_1+(i*24)+j));
SdData(temp);
Dnop(10);
}
CmdWrite(0x60,0);
Dnop(10);
CmdWrite(0x70,40+i+1);
Dnop(10);
}
CmdWrite(0x60,0);
CmdWrite(0x70,80);
for(i=0;i<32;i++)
{
for(j=0;j<24;j++)
{
temp=(*(power_on_2+(i*24)+j));
SdData(temp);
Dnop(10);
}
CmdWrite(0x60,0);
Dnop(10);
CmdWrite(0x70,80+i+1);
Dnop(10);
}
delayms(2000);
Clr_Screen();
}
void Menu()
{
CmdWrite(0x00,0xC5);
Dnop(10); // display on, normal display
CmdWrite(0x60,0x00);
Dnop(10); // set cursor X location to 0
CmdWrite(0x70,0x00);
Dnop(10);
display_24(0, 8 ,shu);
display_24(3, 8 ,ru);
display_24(6, 8 ,zu);
display_24(9, 8 ,kang);
display_24(0, 40 ,xian);
display_24(3, 40 ,shi_1);
display_24(6, 40 ,fang);
display_24(9, 40 ,shi);
display_24(0, 72 ,ji);
display_24(3, 72 ,ben);
display_24(6, 72 ,bu);
display_24(9, 72 ,fen);
display_24(0, 104 ,fa);
display_24(3, 104 ,hui);
display_24(6, 104,bu);
display_24(9, 104 ,fen);
CmdWrite(0x00,0xC5);
Print_Str(12,12,":50 10K OFF ");
Print_Str(12,44,":Text Graph ");
Print_Str(12,76,":Enter");
Print_Str(12,108,":Enter");
curse_x=13;
curse_y=31;
CmdWrite(0x00,0xC5);
CmdWrite(0x60,13); //光标起始位置设置
CmdWrite(0x70,31);
}
void Print_Check(unsigned char x,unsigned char y)
{
unsigned char i=0;
CmdWrite(0x00,0xC5);
Dnop(10); // display on, normal display
CmdWrite(0x60,0x00+x);
Dnop(10); // set cursor X location to 0
CmdWrite(0x70,0x00+y);
Dnop(10);
for(i=0;i<8;i++)
{
SdData(check[i]);
Dnop(10);
CmdWrite(0x60,x); // set cursor X location to 0
CmdWrite(0x70,y+i+1);
Dnop(10);
}
}
void Recall(void)
{
CmdWrite(0x00,0xC5);
display96_24(0,0,jiluhao);
display96_24(0,24,jiluhao);
CmdWrite(0x00,0xC5);
display_24(12,0,ling);
display48_24(14,0,cunfang);
display_24(12,24,ling);
display48_24(14,24,neidiao);
display48_24(14,48,fanhui);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -