2019-07-15 15:38发布
andy_wsj 发表于 2015-11-12 17:56 我使用了一个12864的LCD,驱动电路集成在LCD模块内 提供的是SPI接口,需要显示的内容,如一个16乘16的块,则先将数据填入,设定坐标,然后将16乘16需要的通过SPI发过去,显示内容就出来了 我看了一下你这个驱动芯片,好像是并口的,操作原理应该差不多
YJD12864HC-1(串行 并行)带字库说明书.pdf 下载积分: 积分 -1 分
1.23 MB, 下载次数: 95, 下载积分: 积分 -1 分
最多设置5个标签!
提供的是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
}
把这写过程结构化处理,显示也可以结构化处理,可以做出更复杂的界面显示来
最佳答案
非常感谢,虽然我用的是51还没有弄出来,而且就是在转化为lcd显示数据的时候有些迷糊了,字库IC要单独调用,但是还是谢谢您的帮助
YJD12864HC-1(串行 并行)带字库说明书.pdf 下载积分: 积分 -1 分
1.23 MB, 下载次数: 95, 下载积分: 积分 -1 分
一周热门 更多>