新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 跟我学51单片机(八)——图型带字库液晶128×64

跟我学51单片机(八)——图型带字库液晶128×64

作者:时间:2013-01-26来源:网络收藏
要使液晶能正常工作和操作方便,除了写数据和命令函数外,还需要进行初始化等操作,先将本讲中所用到的操作液晶的主要函数设计如下。

  液晶初始化函数:初始化液晶,设置液晶的工作方式等。

  void LCD_init(void)

  {

  RST=0;

  //RST管脚置低,复位液晶

  LCD_delay();

  //延时一段时间,以完全复位

  RST=1;

  //RST管脚置高,复位完成

  PSB=1;

  //PSB管脚置高,并行工作模式

  LCD_en_command(0x30);

  //设置8位并数据格式

  LCD_en_command(0x0c);

  //开显示器

  LCD_en_command(0x80);

  //显示起始地址

  CLEARSCREEN();

  //对液晶进行清屏

  }

  /*设置显示地址函数:

  参数:x取值范围:0~7;y取值范围:1~4 */

  void LCD_set_xy( uchar x, uchar y )

  {

  switch(y) //判断是哪一行显示

  {

  case 1:LCD_en_command(0x80 + x);break;

  //如果是第一行,地址加0x80

  case 2:LCD_en_command(0x90 + x);break;

  //如果是第二行,地址加0x90

  case 3:LCD_en_command(0x88 + x);break;

  //如果是第三行,地址加0x88

  case 4:LCD_en_command(0x98 + x);break;

  //如果是第四行,地址加0x98

  default:break; //否则退出

  }

  }

  /*写字符串函数:向液晶写入字符串

  参数:x-列坐标,y-行坐标,*s-将要显示的字符串数

  据*/

  void LCD_write_string(uchar x, uchar y, uchar *s)

  {

  LCD_set_xy( x, y );

  //先设置要显示的地址

  while (*s) //如果当前字符没有结束

  {

  LCD_en_dat(*s); //显示当前字符

  s ++; //指向下一个字符

  }

  }

  四、调试要点与实验现象

  接好硬件(特别是连接好液晶),通过冷启动方式将程序所生成的。hex文件下载到单片机运行后,复位单片机,然后就可在学习板上看到12864液晶上显示的“128×64液晶测试”等字符。

  调试128×64液晶时应注意的是,对于液晶的读忙函数如果用一段延时代替的话,一定要足够长,不同128×64液晶的所需要的时间可能稍许不同,这也是导致液晶无显示,出乱码等的常见原因。此外,与前讲介绍的1602液晶相似,对于128×64液晶上的V0管脚,作为液晶显示器对比度调整端,其接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,因此可通过一个电位器实现对其的电压调整,前文提到,将其调节到3.6~3.7V 时对比度效果最好。

  五、总结

  本讲简要介绍了带字库128×64液晶的工作原理并给出了驱动实例,在液晶的操作时序一定要严格,需参考其数据手册或规格书。

  对于128×64液晶,如果在实际应用中仅使用并口或串口通信模式,可将PSB(第15脚)接固定电平,并口时接高电平;串口时接低电平,从而节省控制管脚。

  128×64液晶的内部接有上电复位电路,因此可以将RESET(第17脚)悬空或者接到电源正上,以节省控制管脚。

  128×64液晶内部带有丰富的DDRAM(文本显示RAM)和GDRAM(绘图RAM),本文只是对其驱动方法经行了介绍,但具体如何实现等需要读者自己实践。

  液晶的显示对后续程序的辅助作业很大,可以用它来显示一些调试信息或者测量数据等非常方便,下讲就将结合液晶显示来实现一个单片机的简易频率计,敬请期待。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭