3380|3

7228

帖子

192

TA的资源

五彩晶圆(高级)

楼主
 

【Hanker M4】第9篇IIC数据读出LCD显示 [复制链接]

本帖最后由 常见泽1 于 2015-5-20 23:56 编辑

1.前言
前面几篇简单的实现了IIC数据的读写,LCD的按键和循环显示,现在将两者整合在一起。

实现如下大致功能:
(1)开发板下载程序后上电,
(2)如果不进行按键操作,则LCD进行循环显示,循环屏数为6屏,分别显示为:
“Current :”屏,
“software:”屏,
电压采样值屏,“Thetemperature:”屏,
“Baud Rate:”屏,
“ALLDisplay Screen:”屏。
(屏里面显示的参数的值尚未全部添加,后期会慢慢加进来,敬请期待)

(3)如果在循环显示过程中,按键按下,则进入键显状态,按键按下一翻一屏,不按则保持上次按键按下的屏显,如果十几秒内检测不到按键按下了,则回到上次循环显示的屏数进行显示。
键盘显示屏分别为:
"Correspondence Address : 24500168"屏,(主要完成从IIC读取通信地址,在LCD上显示)
"Meter No: FFFFFFFFFFFF"屏,
电压采样值屏,"Thetemperature:6 "屏,
"BaudRate:115200"屏,
"ALL Display Screen:6 "屏。

2.部分源代码先将地址数据写入EEPROM里

voidfnDl645File_Init(void)
{//       fnDl645File_Write(Dl645FileId_HighPara ,0 , (u8 *)&HighParaDefault , Dl645FileLen_HighPara);         
            AtmelWrite((u8 *)&HighParaDefault,1, 12);                     
}
数据为地址的通信地址
const sDl645HighParaFile_TypeDefHighParaDefault ={                {0x24 , 0x51 , 0x00 , 0x00 , 0x05 ,0x08} ,          {0x11 , 0x11 , 0x11 , 0x22 , 0x22 ,0x22} ,}
再从EEPROM里读地址数据到recData数组里fnDl645File_Read(Dl645FileAddr_HighPara,Dl645FileItemInfoNum_HighPara_ComAddr,&recData[0],6);

下面的问题是怎么将地址数据显示到LCD上
开始我是直接赋值s[10]=recData[5];
但是LCD显示出来数字都不对应该是ASCII码的问题,
下面这样可以s[6]=recData[3]/10+'0';

  1. case 1:
  2.                                         LCD_Clear();
  3.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  4.                                         GrStringDraw(&sContext, "Key Display No: 1", -1, 0, 0, 0);
  5.                                          GrStringDraw(&sContext, "Correspondence Address: ", -1, 0, 60, 0);
  6.                                                          s[10]=recData[5]/10+'0';//取下一个数字
  7.                                          s[11]=recData[5]%10+'0';//取下一个数字

  8.                                     s[8]=recData[4]/10+'0';//取下一个数字
  9.                                         s[9]=recData[4]%10+'0';
  10.                                    s[6]=recData[3]/10+'0';
  11.                                    s[7]=recData[3]%10+'0';
  12.                                    s[4]=recData[2]/10+'0';
  13.                                    s[5]=recData[2]%10+'0';
  14.                                    Add1=fnHexToBcd_u8(recData[1]);                                                                 
  15.                                    s[2]=Add1/10+'0';
  16.                                    s[3]=Add1%10+'0';
  17.                                    Add2=fnHexToBcd_u8(recData[0]);                                                                 
  18.                                    s[0]=Add2/10+'0';
  19.                                    s[1]=Add2%10+'0';
  20.                                    //s[0]=fnHexToBcd_u8(recData[0]/10)+'0';
  21.                                    //s[1]=fnHexToBcd_u8(recData[0]%10)+'0';
  22.                                         GrStringDraw(&sContext, s, -1, 210, 60, 1);
复制代码

3.显示的图片
显示第一屏:

按键显示第三屏:

自动循环显示第5屏


最新回复

是用的M4的库函数啊。你看下给你发的消息   详情 回复 发表于 2015-5-21 11:30
 
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
你好,我也正在进行IIC通信。用的M4C129,作为主机,连续发送多字节到一个外接芯片。结果SCL时钟线由起始的高变低后,一直为低。怎么找出问题呢???希望得到你的帮助

点评

我直接操作的库函数 对地层的这个 没有仔细推敲  详情 回复 发表于 2015-5-21 11:21
 
 

回复

7228

帖子

192

TA的资源

五彩晶圆(高级)

板凳
 
1301120345 发表于 2015-5-21 11:05
你好,我也正在进行IIC通信。用的M4C129,作为主机,连续发送多字节到一个外接芯片。结果SCL时钟线由起始的高变低后,一直为低。怎么找出问题呢???希望得到你的帮助

我直接操作的库函数  对地层的这个 没有仔细推敲

点评

是用的M4的库函数啊。你看下给你发的消息  详情 回复 发表于 2015-5-21 11:30
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

4
 
常见泽1 发表于 2015-5-21 11:21
我直接操作的库函数  对地层的这个 没有仔细推敲

是用的M4的库函数啊。你看下给你发的消息
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表