⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1602.h

📁 在基于avr内核的单片机上实现MP3播放器的功能
💻 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 + -