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

📄 lcd162a.h

📁 STM8s
💻 H
字号:
/*

  lcd162显示库文件
	接线方式: 
	/////////////////////////////////////////
	STM8-------1602
	/////////////////////////////////////
	c1-----RS
	c2-----RW
	c3-----EN
	B0-B7-------D0-D7
	VSS,BLA ---电源地
	VDD,BLK-----电源正
	VL---- 接AD(滑动电阻)
	B0-B7-------Do-D7
	////////////////////////////////////////////
	
	//如果第三个引脚VL接地时,VDD不接电源正时,显示效果较好!
	//如果VDD接电源正极,VL接AD,调节电阻,使效果好
*/
#ifndef __LCD162A_H
#define __LCD162A_H       




#define LCDCONT  GPIOC
#define LCD162A_RS  GPIO_PIN_1
#define LCD162A_RW  GPIO_PIN_2  
#define LCD162A_E   GPIO_PIN_3
#define PortDATA   GPIOB
//PB0~7,作为数据线

//lcd162a控制用函数

void lcd162a_Reset(void); //复位lcd162a 
void lcd162a_DispOneChar(u8 x,u8 y,u8 Wdata);//在指定位置显1个字符//x:1-2 //y:1-16
void lcd162a_cls(void);    //清屏
    
void lcd162a_Init(void); //初始化lcd162a
void lcd162a_LocateXY(u8 posx,u8 posy);  //显示光标位置
void lcd162a_WriteCommand(u8 CMD);
void lcd162a_WriteData(u8 dataW);
void lcd162a_ePutstr(u8 x,u8 y,u8 *ptr); //显示字符串
u8 LCD_BUSY(void); //  进行忙检测



//大约1ms  每增加1,增加大约1ms,最大值为0xFFFF
void delay_ms(u16 aa)
  {
    int j;
   while(aa--)
	 {
	 j=150;
	 while(j--);
 }
	 }



//大约 20um,每增加1,增加大约3um,最大值为255(0xFF)
//10----------48um
//100---------315um
void delay_us(u8 aa)  {while(aa--);}



//清屏
////
void lcd162a_cls(void)
{
 lcd162a_WriteCommand(0x01); //             
}



//显示光标位置
void lcd162a_LocateXY(u8 posx,u8 posy)
{  

u8 temp;
 if(posx==1)
 {
	 temp=0x80+posy-1;
 }
 else
 {
	 temp=0xC0+posy-1;
 }
  lcd162a_WriteCommand(temp);  


/*
 u8 temp;
 temp=posx & 0xf;
 posy &= 0x01;
 if(posy) temp |=0x40;
 temp |=0x80;
 lcd162a_WriteCommand(temp); 
*/
}

//在指定位置显示一个字符
//x:0~15
//y:0~1
void lcd162a_DispOneChar(u8 x,u8 y,u8 Wdata)
{             
 lcd162a_LocateXY(x,y);
 lcd162a_WriteData(Wdata);         
}

//显示字符串
void lcd162a_ePutstr(u8 x,u8 y,u8 *ptr)
{             
 u8 i,l=0;

 while (ptr[l] >31)
 {
  l++;
 };

 for (i=0;i<l;i++)
 {
  lcd162a_DispOneChar(x,y++,ptr[i]);
  if ( y == 16 )
  {
   y = 0; 
   x ^= 1;
  }
 }         
}

//复位
////
void lcd162a_Reset(void)
{
 lcd162a_WriteCommand(0x38); //
 delay_ms(15);      

 lcd162a_WriteCommand(0x38); //
 delay_ms(5);

 lcd162a_WriteCommand(0x38); //
 delay_ms(5);

 lcd162a_WriteCommand(0x38); //
 lcd162a_WriteCommand(0x08); //

 lcd162a_cls(); //clear device

 lcd162a_WriteCommand(0x06); //
 lcd162a_WriteCommand(0x0c); //
              
}
//写入控制字。
//RS=0,
//RW=0
//E=1
//
void lcd162a_WriteCommand(u8 CMD)
{
  // delay_ms(2);  //等待控制器完成指令
 LCD_BUSY();

  GPIO_WriteLow(LCDCONT ,LCD162A_RS);
	GPIO_WriteLow(LCDCONT ,LCD162A_RW);
	
	GPIO_WriteHigh(LCDCONT ,LCD162A_E);
	 GPIO_Write(GPIOB,CMD);

   delay_us(5);
   GPIO_WriteLow(LCDCONT ,LCD162A_E);
  

} 

//写入一个字节。
//dataW:要写入的数据/命令
//RS=1
//RW=0
//E=1
//
void lcd162a_WriteData(u8 dataW)
{
  //delay_ms(2); //等待控制器完成指令
 LCD_BUSY();

  GPIO_WriteLow(LCDCONT ,LCD162A_RW);
	GPIO_WriteHigh(LCDCONT ,LCD162A_RS);
	GPIO_WriteHigh(LCDCONT ,LCD162A_E);

 
 GPIO_Write(GPIOB,dataW);

 delay_us(1);

  GPIO_WriteLow(LCDCONT ,LCD162A_E);     

} 


u8 LCD_BUSY(void)
{
  u8 temp=0xff;
  GPIO_Init(PortDATA, (GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |GPIO_PIN_7 |GPIO_PIN_0), GPIO_MODE_IN_PU_NO_IT );

  GPIO_WriteLow(LCDCONT,LCD162A_RS);
	GPIO_WriteHigh(LCDCONT,LCD162A_RW);
	GPIO_WriteHigh(LCDCONT,LCD162A_E);


 delay_ms(1);   //最少需要650um
temp=GPIO_ReadInputData(PortDATA);
GPIO_WriteLow(LCDCONT,LCD162A_E);
  GPIO_Init(PortDATA, (GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |GPIO_PIN_7 |GPIO_PIN_0), GPIO_MODE_OUT_PP_LOW_FAST );
if(temp&0x80)
 return ( 1);
 else 
 return ( 0);
}

/*
    
//初始化lcd162a        
void lcd162a_Init(void)
{                   
 RCC->APB2ENR|=1<<2;    //使能PORTA时钟 
 RCC->APB2ENR|=1<<4;    //使能PORTC时钟  
 
 //RCC->APB2ENR|=1<<0;    //开启辅助时钟 
       
  //JTAG_Set(SWD_ENABLE);

 GPIOA->CRL=0X33333333; //pa0-pa7
 GPIOA->ODR|=0X00FF;  //全部输出高电平 
 
 //pc6-pc9
  GPIOC->CRH&=0XFFFFFF00;
 GPIOC->CRL&=0X00FFFFFF;
  GPIOC->CRH|=0X00000033;//
 GPIOC->CRL|=0X33000000;
 GPIOC->ODR|=0X03C0;

 lcd162a_Reset();
 lcd162a_cls();
       
}  
*/


#endif  



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -