求助,怎样使12864显示连续变化的数据(我用的不是st7920的驱动,是st7567)

2019-07-15 15:38发布

问题如题,烦请各位不吝赐教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
andy_wsj
1楼-- · 2019-07-15 20:03
我使用了一个12864的LCD,驱动电路集成在LCD模块内
提供的是SPI接口,需要显示的内容,如一个16乘16的块,则先将数据填入,设定坐标,然后将16乘16需要的通过SPI发过去,显示内容就出来了
我看了一下你这个驱动芯片,好像是并口的,操作原理应该差不多

说一下动态显示问题,例如显示: A相电流:xx.xA
其中xx.x是AD采样计算之后的值,实时变化
首先确定一个刷新时间,例如20ms,每隔20ms给LCD发送:“A相电流:xx.xA”的显示数据
从软件角度,首先要有一个字库,支持中文字母数字什么的。
我用代码表述比较容易一点,keil MDK环境,假设使用uCOS
const char *const strCurrentTitle[2] = {"A相电流:","A PHASE CUR:"};定义要显示的内容,假设支持中英文
void  displayCur( INT32U  cur_val )  //每20ms调用这个函数,将AD采样计算后的值传过来
{
       char buf[ MAX_DISPLAY_LEN ] = {0};
       INT8U charLen = 0;

       charLen = strlen( strCurrentTitle[LanguageType] );  //标题长度
       memset( buf, ' ',  MAX_DISPLAY_LEN );   //清空buf,填上空格防止显示乱码
       memcpy( &buf[0],  strCurrentTitle[ LanguageType ],  charLen );   //标题填入buf
       sprintf( &buf[charLen ], "%4.1fA",  (float)(cur_val / 10) );  //AD采样填入buf,小数根据自己的实际情况计算

      SendStringToLcd(0, 0, &buf[0] ); //前面两个参数表示显示第一行,没有反显,还可以有其他参数等等
}

void SendStringToLcd( INT8U line, INT8U reverse, char *p_text )
{
      需要完成一下一些工作:
      根据line设置LCD显示行
      根据reverse和p_text处理字库,转换为LCD显示数据
      把数据通过你的驱动发到LCD
}
把这写过程结构化处理,显示也可以结构化处理,可以做出更复杂的界面显示来
最佳答案
进无止境
2楼-- · 2019-07-15 21:23
本帖最后由 进无止境 于 2015-11-13 09:32 编辑
andy_wsj 发表于 2015-11-12 17:56
我使用了一个12864的LCD,驱动电路集成在LCD模块内
提供的是SPI接口,需要显示的内容,如一个16乘16的块,则先将数据填入,设定坐标,然后将16乘16需要的通过SPI发过去,显示内容就出来了
我看了一下你这个驱动芯片,好像是并口的,操作原理应该差不多

非常感谢,虽然我用的是51还没有弄出来,而且就是在转化为lcd显示数据的时候有些迷糊了,字库IC要单独调用,但是还是谢谢您的帮助

YJD12864HC-1(串行 并行)带字库说明书.pdf 下载积分: 积分 -1 分

1.23 MB, 下载次数: 95, 下载积分: 积分 -1 分

zgd881009
3楼-- · 2019-07-15 22:54
说明书好东西

一周热门 更多>