微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机的1602驱动程序

51单片机的1602驱动程序

时间:12-01 来源:互联网 点击:

if ((RCC->

RCC_Clocks->SYSCLK_Frequency= (HSE_Value >>

/*************************************
函数名:lcdinit
函数功能:初始化
参数:无
返回:无
备注:无
*************************************/
void lcdinit()
{

  lcdwcmd(0x38);
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  lcdwcmd(0x38);
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  lcdwcmd(0x38);
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  lcdsetxs(1,0,0);//设置输入模式,默认增量方式,画面不动,光标向右边移动
  lcdsetim(1,0);
  lcdwcmd(0x01);//清屏
}

/*************************************
函数名:lcdsetxy
函数功能:坐标设置
参数:x(列数),y(行数)
返回:无
备注:配合lcdxyprc,lcdxyprs函数使用
列数小于39,行数小于2
*************************************/
void lcdsetxy(uchar X,uchar Y)
{
uchar Address;
if(X>39)
   X=39;
if (Y == 0)
 {
  Address = 0x80 + X;
}
else
 {
 Address = 0xc0 + X;
 }
lcdwcmd(Address);
}

#if XYPRC
/*************************************
函数名:lcdxyprc
函数功能:在特定行列内显示字符
参数:X(列),Y(行),ch(字符)
返回:无
备注:列数小于16,行数小于2
*************************************/
void lcdxyprc(uchar X,uchar Y,char ch)
{
  lcdsetxy(X,Y);
  lcdwdat((uchar)ch);
}
#endif

#if XYPRS
/*************************************
函数名:lcdxyprs
函数功能:在特定行列内显示字符串
参数:X(列),Y(行),String(字符)
返回:无
备注:列数小于16,行数小于2
*************************************/
void lcdxyprs(uchar X,uchar Y,char *String)
{
  if(Y==0)
  {
     if(X<16)
     {
       lcdsetxy(X,Y);
      for(;X<16 && *String!=;X++)
      {
         lcdwdat((uchar)*String);
        String++;
       }
       if(*String!=)
      {
         X=0;
        Y=1;
      }
     }
  }
  if(Y==1)
  {
     lcdsetxy(X,Y);
    for(;X<16 && *String!=;X++)
    {
      lcdwdat((uchar)*String);
      String++;
    }
  }
}

#endif

#if LEFTRIGHT
/*************************************
函数名:lcdright
函数功能:画面和光标一起右边移动n个字符位置
参数:n(字符数)
返回:无
备注:无
*************************************/
void lcdright(unsigned char n)//shift by n characters Right
{
  unsigned char i;
  for(i=0;i    lcdwcmd(0x1e);
}
/*************************************
函数名:lcdleft
函数功能:画面和光标一起左边移动n个字符位置
参数:n(字符数)
返回:无
备注:无
*************************************/
void lcdleft(unsigned char n)//shift by n characters Left
{
  unsigned char i;
  for(i=0;i    lcdwcmd(0x18);
}
/*************************************
函数名:lcdcle
函数功能:光标往左边移动n个字符位置
参数:n(字符数)
返回:无
备注:无
*************************************/
void lcdcle(unsigned char n)//shif cursor right by n
{
  unsigned char i;
  for(i=0;i    lcdwcmd(0x14);
}

/*************************************
函数名:lcdcri
函数功能:光标往右边移动n个字符位置
参数:n(字符数)
返回:无
备注:无
*************************************/
void lcdcri(unsigned char n)//Shift cursor left by n
{
  unsigned char i;
  for(i=0;i     lcdwcmd(0x10);
}

#endif

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top