碧波液压网 欢迎你,游客。 登录 注册

基于LCD12864显示器的数字示波器设计

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  本文针对LCD12864 特性,完成了数字示波器显示必须的绘图驱动程序设计,这个教程定位给初学者使用,我立足从简单到复杂一步一步介绍设计过程,甚至是调试的过程,还包括一些经验总结,特别是提供了完整的keil 工程附件。希望读者立足示波器项目,学到更多软硬件设计经验技巧。

  一、简易数字示波器原理

  数字示波器基本原理可以简单理解为:数据采集+ 图形显示,该过程循环进行,如图1 所示。

  

图1 简易数字示波器流程图

  LCD 图形显示需要根据LCD 特性设计,不同LCD驱动程序不同,本篇将结合不带字库的LCD12864 设计显示程序。

  二、图形液晶LCD12864绘图驱动设计基础

  关于LCD 的硬件接口电路,在其他教程中有详细介绍,涉及单片机总线知识和CPLD 内部电路,需要认真学习,这里借助现成的驱动函数,重点讲解LCD绘图程序设计。

  LCD12864 的电路接口在头文件中定义:

  #define LCD_LCW XBYTE[0xf4ea]

  // 左屏命令写入

  #define LCD_LDW XBYTE[0xf5ea]

  // 左屏数据写入

  #define LCD_LCR XBYTE[0xf6ea]

  // 左屏命令读出

  #define LCD_LDR XBYTE[0xf7ea]

  // 左屏数据读出

  #define LCD_RCW XBYTE[0xf8ea]

  // 右屏命令写入

  #define LCD_RDW XBYTE[0xf9ea]

  // 右屏数据写入

  #define LCD_RCR XBYTE[0xfaea]

  // 右屏命令读出

  #define LCD_RDR XBYTE[0xfbea]

  // 右屏数据读出

  后面所有对LCD 的编程操作都是基于以上接口定义进行的各种读写操作。

  首先来看LCD12864 的点阵结构图,如图2 所示。

  

图2 LCD点阵分布结构图

  此LCD 屏由水平128 列,垂直64 行组成。水平128 列分左右各64 列两个半屏构成。垂直64 行又分8 页,每页8 行(1 列8 点刚好1 字节)。程序每次对LCD 的绘图操作就是以最小单位1 字节进行操作的。

  理解这点至关重要。也就是每次只能针对8 点进行操作,而不是1 点进行操作。左右屏由单独地址线控制(前面的接口定义就是分左右屏定义的)。实际打点只需往指定“位置”写入数据,“1”亮,“0”暗。

  LCD 驱动忙检测函数void loop_lcd12864_is_busy(unsigned char right)。

  void loop_lcd12864_is_busy(unsigned char right)

  {

  unsigned char tmp,counter=0;

  do {

  if(right) tmp = LCD_RCR;

  else tmp = LCD_LCR;

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论