2526|10

86

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

咨询段式液晶LCD得问题 [复制链接]

就是SEG0和SEG1得地址是00H.    假如我要点亮5得所有段,但是5得 高四位04H地址, 低四位在05H地址。 使用起来就不方便。而且我用得IIC通信,我写数据到LCD上,就得分成两个数组,iic写进LCD也就要写两遍,第一次是一个数组,第二次是一个数组。                                      请教老大解答一下,有没有方便得方法。组合成一个数组。

$WC2)83A7]]VJ3G1T9}3DVU.png (117.46 KB, 下载次数: 1)

$WC2)83A7]]VJ3G1T9}3DVU.png

BPJ84TIX1}3BR00VUXAZ@E9.png (32.66 KB, 下载次数: 0)

BPJ84TIX1}3BR00VUXAZ@E9.png
此帖出自51单片机论坛

最新回复

你看一下我发的文件,写的驱动我特殊处理了一下,不是一下子写入8个bit,是分4个4个写的   详情 回复 发表于 2019-9-29 16:15
点赞 关注
 

回复
举报

1798

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

这是比较常见的问题,实际的解决办法就是对于数字做个库

对于在一个数字高低位在不同地址的,建议先以4bit为单位,就是把每个seg的数值放在变量的bit0~bit3,最后再拼接起来(IIC发送的时候拼接),

以下仅供参考,是我平时用的方法

 

const volatile uchar ledDispTable[]=
  {
      0xfa,0x0a,0xbc,0x9e,0x4e,0xd6,0xf6,0x8a,0xfe,0xde/*0 --9*/,
    0xee/*10A*/,0x76/*11b*/,0xf0/*12C*/,0x3e/*13d*/,0xf4/*14E*/,
        0xe4/*15F*/,0xde/*16g*/,0x6e/*17H*/,0x0a/*18I*/,0x1a/*19J*/,
        0x00/*20K*/,0x70/*21L*/,0x00/*22M*/,0x26/*23n*/,0xfa/*24o*/,
        0xec/*25p*/,0xce/*26q*/,0x24/*27r*/,0xd6/*28S*/,0x8a/*29t*/,
        0xec/*30U*/,0x00/*31v*/,0x00/*32W*/,0x00/*33X*/,0x5e/*34Y*/,
        0x00/*35Z*/,0x04/*36-*/,
  }; 

 

void LoHourDisp(uchar temp) 
{
    uchar i;
    i=ledDispTable[temp];
    rLcdData[13]|=i&0x0e;
    i=i>>4;
    rLcdData[12]|=i&0x0f;
}

此帖出自51单片机论坛

点评

我才开始学习单片机, 没有看的太明白  详情 回复 发表于 2019-9-29 14:35
谢谢, 0xee/*10A*/,0x76/*11b*/,0xf0/*12C*/,0x3e/*13d*/,0xf4/*14E*/,         0xe4/*15F*/,0xde/*16g*/,0x6e/*17H*/,0x0a/*18I*/,0x1a/*19J*/,        &nbs  详情 回复 发表于 2019-9-29 14:33
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
sint27 发表于 2019-9-29 10:58 这是比较常见的问题,实际的解决办法就是对于数字做个库 对于在一个数字高低位在不同地址的,建议先以4b ...

谢谢, 0xee/*10A*/,0x76/*11b*/,0xf0/*12C*/,0x3e/*13d*/,0xf4/*14E*/,
        0xe4/*15F*/,0xde/*16g*/,0x6e/*17H*/,0x0a/*18I*/,0x1a/*19J*/,
        0x00/*20K*/,0x70/*21L*/,0x00/*22M*/,0x26/*23n*/,0xfa/*24o*/,
        0xec/*25p*/,0xce/*26q*/,0x24/*27r*/,0xd6/*28S*/,0x8a/*29t*/,
        0xec/*30U*/,0x00/*31v*/,0x00/*32W*/,0x00/*33X*/,0x5e/*34Y*/,
        0x00/*35Z*/,0x04/*36-*/,

这些是什么意识?

此帖出自51单片机论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

4
 
sint27 发表于 2019-9-29 10:58 这是比较常见的问题,实际的解决办法就是对于数字做个库 对于在一个数字高低位在不同地址的,建议先以4b ...

我才开始学习单片机, 没有看的太明白

此帖出自51单片机论坛

点评

比如你图中的要显示的第二个八,它是两个seg组成的,把其中一个脚当高位,一个脚当地位,比如pin6高位,pin7地位,然后组成一个byte。 然后要显示为“1”的时候是显示段码B跟C,也就是0x0a(假设com4是  详情 回复 发表于 2019-9-29 15:19
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

5
 
一百年后的自己 发表于 2019-9-29 14:35 我才开始学习单片机, 没有看的太明白

比如你图中的要显示的第二个八,它是两个seg组成的,把其中一个脚当高位,一个脚当地位,比如pin6高位,pin7地位,然后组成一个byte。

然后要显示为“1”的时候是显示段码B跟C,也就是0x0a(假设com4是高位,也有可能com1是低位,看连接关系);要显示为“2”的时候要显示A\B\D\E\G五个段,也就是0xbc;

依次类推算出来0~9,和其他有用的字母的对应数值,需要显示1的时候你给驱动函数填入参数1就行了

此帖出自51单片机论坛

点评

你说的把对应的弄出来嘛 char code leddata[10] = {0xf0,0x00,0xb0,0x90,0x40,0xd0,0xf0,0x80,0xf0,0xd0}; char code leddata2[10] = {0x0a,0x0a,0x0c,0x0e,0x0e,0x06,0x06,0x0a,0x0e,0x0e}; 我弄了两个数组  详情 回复 发表于 2019-9-29 15:28
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

6
 
sint27 发表于 2019-9-29 15:19 比如你图中的要显示的第二个八,它是两个seg组成的,把其中一个脚当高位,一个脚当地位,比如pin6高位,p ...

你说的把对应的弄出来嘛

char code leddata[10] = {0xf0,0x00,0xb0,0x90,0x40,0xd0,0xf0,0x80,0xf0,0xd0};
char code leddata2[10] = {0x0a,0x0a,0x0c,0x0e,0x0e,0x06,0x06,0x0a,0x0e,0x0e};

我弄了两个数组, iic,写函数,用了两端,就可以显示成一个数字了。

但是这样就不方便了

此帖出自51单片机论坛

点评

比如你一个有20个seg,定义一个20元素的数组,每个数组只存单个seg的数据,而不是存单个地址的(按你说的一个地址有2个seg),这样软件处理起来比较方面,等iic要写数据的时候再拼起来。整个驱动写好之后,实际处理  详情 回复 发表于 2019-9-29 15:54
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

7
 
一百年后的自己 发表于 2019-9-29 15:28 你说的把对应的弄出来嘛 char code leddata[10] = {0xf0,0x00,0xb0,0x90,0x40,0xd0,0xf0,0x80,0xf0,0x ...

比如你一个有20个seg,定义一个20元素的数组,每个数组元素只存单个seg的数据,而不是存单个地址的(按你说的一个地址有2个seg),这样软件处理起来比较方面,等iic要写数据的时候再拼起来。整个驱动写好之后,实际处理的时候就会方便些,比如llcd[0]对应seg1,lcd[1]对应seg2,也比较直观

此帖出自51单片机论坛

点评

我这样的显示好像会有问题 。 写两个数码管,就得写四段。 而且两个数码管就一起显示得时候会有重影  详情 回复 发表于 2019-9-29 16:12
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

8
 

我把源码发给你,仅供参考

lcd.c

9.71 KB, 阅读权限: 5, 下载次数: 11

此帖出自51单片机论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

9
 
sint27 发表于 2019-9-29 15:54 一百年后的自己 发表于 2019-9-29 15:28 你说的把对应的弄出来嘛 char code leddata[10] = {0xf0,0x00,0x ...

我这样的显示好像会有问题 。 写两个数码管,就得写四段。 而且两个数码管就一起显示得时候会有重影

此帖出自51单片机论坛

点评

你看一下我发的文件,写的驱动我特殊处理了一下,不是一下子写入8个bit,是分4个4个写的  详情 回复 发表于 2019-9-29 16:15
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

10
 
一百年后的自己 发表于 2019-9-29 16:12 我这样的显示好像会有问题 。 写两个数码管,就得写四段。 而且两个数码管就一起显示得时候会有重影

你看一下我发的文件,写的驱动我特殊处理了一下,不是一下子写入8个bit,是分4个4个写的

此帖出自51单片机论坛

点评

好的, 谢谢。  详情 回复 发表于 2019-9-29 16:27
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

11
 
sint27 发表于 2019-9-29 16:15 你看一下我发的文件,写的驱动我特殊处理了一下,不是一下子写入8个bit,是分4个4个写的

好的, 谢谢。

此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表