1408|1

1509

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【上海航芯 ACM32F070开发板+触控功能评估板测评】+段码LCD屏显示的使用 [复制链接]

 

ACM32F070开发板配合触控功能评估板可较好地实现人机交互,利用功能板上的段码LCD屏可显示2行4位的数据值,并配有多种辅助性提示图标,如温湿度的计量单位、上下限制、无线信号强弱、警示及电量指示灯,见图1所示。

 

图1  LCD屏显示形式

在进行数值显示时,看通过调用函数LCD_DisplayNum()来实现,而实际使用的则是函数LCD_DisplayNum_YR1618A()。

但该函数却是一个双行的显示函数,即上下2行都显示同一个数值,这样在使用时就不免有些不便。

为此,在原功能的基础上改建了一个单行显示数值的函数。

原LCD_DisplayNum_YR1618A函数的内容如下:

void LCD_DisplayNum_YR1618A(uint32_t Num)
{
    uint32_t ram_buff[4];
    ram_buff[0]=0;
    ram_buff[1]=0;
    ram_buff[2]=0;
    ram_buff[3]=0;
    if(Num>9999) Num=9999;  //4位数,最大显示9999
    Get_RAM_NUM_DATA(ram_buff,Num,Num);
    HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff[0]);
    HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff[1]);
    HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff[2]);
    HAL_LCD_Write(&lcdhandle_YR1618A,3,ram_buff[3]);
}

它是通过调用函数Get_RAM_NUM_DATA()来显示双行显示同一内容的,如令其上下两行显示不同的内容,则可将该函数修改为:

void LCD_DisplayNum_YR1618A(uint32_t Num1,uint32_t Num2)
{
    uint32_t ram_buff[4];
    ram_buff[0]=0;
    ram_buff[1]=0;
    ram_buff[2]=0;
    ram_buff[3]=0;
    if(Num>9999) Num=9999;  //4位数,最大显示9999
    Get_RAM_NUM_DATA(ram_buff,Num1,Num2);
    HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff[0]);
    HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff[1]);
    HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff[2]);
    HAL_LCD_Write(&lcdhandle_YR1618A,3,ram_buff[3]);
}

那要是只显示一个数值呢?

这就需要去修改函数Get_RAM_NUM_DATA(),在修改后其内容如下:

void Get_RAM_NUM_DATA(uint32_t *ram_updata,uint16_t num)
{
    if(num_up>9999) num_up=9999;   //4位数,最大显示9999
    int Displayup_1=num_up/1000%10;  //千位,LCD第1个位置(从左到右)------1
    int Displayup_2=num_up/100%10;  //白位,LCD第2个位置(从左到右)-------2
    int Displayup_3=num_up/10%10;   //十位,LCD第3个位置(从左到右)--------3
    int Displayup_4=num_up/1%10;    //个位,LCD第4个位置(从左到右)---------4
    //ram0
    ram_updata[0] =(NUM123468_RAM0_DIS[Displayup_1]<<NUM_1_OFFSET)+(NUM123468_RAM0_DIS[Displayup_2]<<NUM_2_OFFSET)+(NUM123468_RAM0_DIS[Displayup_3]<<NUM_3_OFFSET)+(NUM123468_RAM0_DIS[Displayup_4]<<NUM_4_OFFSET);
    //ram1
    ram_updata[1] =(NUM123468_RAM1_DIS[Displayup_1]<<NUM_1_OFFSET)+(NUM123468_RAM1_DIS[Displayup_2]<<NUM_2_OFFSET)+(NUM123468_RAM1_DIS[Displayup_3]<<NUM_3_OFFSET)+(NUM123468_RAM1_DIS[Displayup_4]<<NUM_4_OFFSET);
    //ram2
    ram_updata[2] =(NUM123468_RAM2_DIS[Displayup_1]<<NUM_1_OFFSET)+(NUM123468_RAM2_DIS[Displayup_2]<<NUM_2_OFFSET)+(NUM123468_RAM2_DIS[Displayup_3]<<NUM_3_OFFSET)+(NUM123468_RAM2_DIS[Displayup_4]<<NUM_4_OFFSET);
    //ram3
    ram_updata[3] =(NUM123468_RAM3_DIS[Displayup_1]<<NUM_1_OFFSET)+(NUM123468_RAM3_DIS[Displayup_2]<<NUM_2_OFFSET)+(NUM123468_RAM3_DIS[Displayup_3]<<NUM_3_OFFSET)+(NUM123468_RAM3_DIS[Displayup_4]<<NUM_4_OFFSET);
}

 

这样在进行单个数据的检测时,就可排上用上,而不必一个数值显示2遍或显示一行无意义的零值,见图2所示。

 

图2 显示光照强度值

最新回复

在原功能的基础上改建了一个单行显示数值的函数。 改造好后,就可以方便使用了。   详情 回复 发表于 2022-10-6 07:01
点赞 关注
 
 

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 

在原功能的基础上改建了一个单行显示数值的函数。

改造好后,就可以方便使用了。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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