📄 lcd.c
字号:
#include"includes.h"
void lcd_sendcmd(unsigned char da) //向液晶发送指令
{
unsigned char i;
cs=0;
a0=0; //指令通道
sck=1;
for(i = 0; i < 8; i++)
{
da <<= 1;
cda = CY;
sck = 0;
mydelay(10);
sck = 1;
mydelay(10);
}
cs = 1;
mydelay(20);
}
void lcd_senddata(unsigned char da) //向液晶发送数据
{
unsigned char i;
cs=0;
a0=1; //数据通道
sck=1;
for(i = 0; i < 8; i++)
{
da <<= 1;
cda = CY;
sck = 0;
mydelay(10);
sck = 1;
mydelay(10);
}
cs = 1;
mydelay(20);
}
void lcd_init(void)
{
res = 1;
mydelay(32767);
mydelay(32767);
lcd_sendcmd(0xE2); //internal reset
lcd_sendcmd(0xA2); //d0:Set LCD drive voltage bias ratio 0=1/9bias 1=1/7bias
lcd_sendcmd(0xC8); //d3:select COM output direction 0=normal 1=reverse
lcd_sendcmd(0xA0); //d0:select SEG output direction 0=normal 1=reverse
lcd_sendcmd(0xA6); //d0=0display normal;=1reverse
lcd_sendcmd(0xf8); //select booster ratio
lcd_sendcmd(0x00); //d0\d1=00:4x
lcd_sendcmd(0x2C); //d2:1=select internal power supply operating mode
lcd_sendcmd(0x2E); //
lcd_sendcmd(0x2F);
// lcd_sendcmd(0x25); //select internal resistor ratio(RB/RA)mode
lcd_sendcmd(0x81); //select the VO output voltage electronic volume register
lcd_sendcmd(0x14); //select the VO output voltage electronic volume register
lcd_sendcmd(0x0e); //select the VO output voltage electronic volume register
lcd_sendcmd(0xAF); //d0:LCD display ON=1/OFF=0
lcd_sendcmd(0xE0);
lcd_sendcmd(0x40); //Set the display RAM start line address
}
void Set_Page_Address(unsigned char dat) //设置页地址
{
lcd_sendcmd(0xb0|dat);
}
void Set_Colume_Address(unsigned char dat) //设置列地址
{
unsigned char tmp;
tmp=dat>>4;
lcd_sendcmd(0x10|tmp); //送列地址高三位
tmp=0x0f&dat;
lcd_sendcmd(tmp); //送列地址低四位
}
void lcd_clr(void) //清屏
{
unsigned char i,j;
for(i = 0; i < 8; i++)
{
Set_Page_Address(i);
Set_Colume_Address(0);
for(j = 0; j < 128; j++)
{
lcd_senddata(0x00);
}
}
}
void lcd_drawpot(unsigned char x/*0-127*/, unsigned char y/*0-63*/)
{
unsigned char temp;
Set_Colume_Address(x);
Set_Page_Address(y>>3);
y &= 0x07;
temp = 1<<y;
lcd_senddata(temp);
}
//x每写一个字+16,y换行+1
void lcd_drawhanzimo(unsigned char x/*0-127*/,unsigned char y/*0-7*/,unsigned char* ptr)
{
unsigned int i;
Set_Page_Address(y);
Set_Colume_Address(x);
for(i = 0; i<16; i ++)
lcd_senddata(*(ptr+i));
Set_Page_Address(y+1);
Set_Colume_Address(x);
for(i = 0; i<16; i++)
lcd_senddata(*(ptr+i+16));
}
void lcd_drawnumber(unsigned char x/*0-127*/,unsigned char y/*0-7*/,unsigned char* ptr)
{
unsigned int i;
Set_Page_Address(y);
Set_Colume_Address(x);
for(i = 0; i<8; i ++)
lcd_senddata(*(ptr+i));
Set_Page_Address(y+1);
Set_Colume_Address(x);
for(i = 0; i<8; i++)
lcd_senddata(*(ptr+i+8));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -