📄 lcd1602.h
字号:
//==============================
#define lcd_data PORTC
#define lcd_ddr DDRC
#define rs A,6//硬件接口线sd卡的新版mother_0,
#define rw A,5
#define e A,7
#define busy C,7
//=================================
//API=======================================
void w_dat(unsigned char y);
void w_wod(unsigned char y);
void set_addr(unsigned char x,unsigned char y);
void display_string(unsigned char * point);
void display_add_string(unsigned char x,unsigned char y,unsigned char * point);
void display_add_string_s(unsigned char x,unsigned char y,uchar * point,uchar size);
void get_hex(unsigned char j);
//////////////////====================
unsigned char addr=0x80; //lcd地址指针
//============================================
void auto_addr(void) ;
//======================
void r_busy(void)
{
_delay_us(100);
}
void w_cmd(unsigned char z)
{
r_busy();
lcd_data=z;
clr(rs);//rs=0;
clr(rw);//rw=0;
clr(e);//e=0;
delay(100);
set(e);//e=1;
}
void wdat(unsigned char y)
{
r_busy();
lcd_data=y;
set(rs);//=1;
clr(rw);//rw=0;
clr(e);//e=0;
delay(100);
set(e);//e=1;
auto_addr();
}
//============================bais function
//===========================
void auto_addr(void) // 列控制
{
addr++;
if(addr==0x90)
set_addr(1,0);
if(addr>=0xd0) set_addr(0,0);
}
//=========================================
//=============================================interface api
void w_dat(unsigned char y)
{
if(y<10) {y+='0';}
wdat(y);
}
void w_wod(unsigned char y)
{
if(y<10) {y+='0';}
wdat(y);
}
void set_addr(unsigned char x,unsigned char y)
{unsigned char i;
if(x)
i=0xc0;//x hang
else i=0x80;
addr=i+y;
w_cmd(addr);
}
void display_string(unsigned char * point)
{
for(;*point!='\0';point++)
w_dat(*point);
}
void display_add_string(unsigned char x,unsigned char y,unsigned char * point)
{
set_addr(x,y);
for(;*point!='\0';point++)
w_dat(*point);
}
void display_add_string_s(unsigned char x,unsigned char y,uchar * point,uchar size)
{uint i;
set_addr(x,y);
for(i=0;i<size;i++,point++)
w_dat(*point);
}
/**/void get_hex(unsigned char j)
{unsigned char i;
i=j/16; if(i<10) w_dat(i);
else {i-=10; w_dat(('A'+i));}
i=j%16; if(i<10) w_dat(i);
else {i-=10; w_dat(('A'+i));}
}
void rst_lcd(void)
{
}
//============================================
void init_lcd(void)//初始lcd
{
out(rs);
out(rw);
out(e);
outp(lcd_ddr);
//=============================
delay_mult(250);
r_busy();
w_cmd(0x01);
delay_mult(250);
w_cmd(0x01);
delay_mult(250);
w_cmd(0x38);
delay_mult(250);
w_cmd(0x38);
w_cmd(0x0C);
w_cmd(0x06);
set_addr(0,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -