专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
求助,怎样使12864显示连续变化的数据(我用的不是st7920的驱动,是st7567)
2019-07-15 15:38
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
4104
3
1393
问题如题,烦请各位不吝赐教
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
andy_wsj
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
}
把这写过程结构化处理,显示也可以结构化处理,可以做出更复杂的界面显示来
最佳答案
加载中...
查看其它3个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
提供的是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
}
把这写过程结构化处理,显示也可以结构化处理,可以做出更复杂的界面显示来
最佳答案
一周热门 更多>