jinglixixi 发表于 2022-10-5 12:45

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

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

<p> &nbsp;</p>

<p>图1&nbsp; LCD屏显示形式</p>

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

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

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

<p >原LCD_DisplayNum_YR1618A函数的内容如下:</p>

<pre>
<code class="language-cpp">void LCD_DisplayNum_YR1618A(uint32_t Num)
{
    uint32_t ram_buff;
    ram_buff=0;
    ram_buff=0;
    ram_buff=0;
    ram_buff=0;
    if(Num&gt;9999) Num=9999;  //4位数,最大显示9999
    Get_RAM_NUM_DATA(ram_buff,Num,Num);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,0,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,1,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,2,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,3,ram_buff);
}</code></pre>

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

<pre>
<code class="language-cpp">void LCD_DisplayNum_YR1618A(uint32_t Num1,uint32_t Num2)
{
    uint32_t ram_buff;
    ram_buff=0;
    ram_buff=0;
    ram_buff=0;
    ram_buff=0;
    if(Num&gt;9999) Num=9999;  //4位数,最大显示9999
    Get_RAM_NUM_DATA(ram_buff,Num1,Num2);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,0,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,1,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,2,ram_buff);
    HAL_LCD_Write(&amp;lcdhandle_YR1618A,3,ram_buff);
}</code></pre>

<p >那要是只显示一个数值呢?</p>

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

<pre>
<code class="language-cpp">void Get_RAM_NUM_DATA(uint32_t *ram_updata,uint16_t num)
{
    if(num_up&gt;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 =(NUM123468_RAM0_DIS&lt;&lt;NUM_1_OFFSET)+(NUM123468_RAM0_DIS&lt;&lt;NUM_2_OFFSET)+(NUM123468_RAM0_DIS&lt;&lt;NUM_3_OFFSET)+(NUM123468_RAM0_DIS&lt;&lt;NUM_4_OFFSET);
    //ram1
    ram_updata =(NUM123468_RAM1_DIS&lt;&lt;NUM_1_OFFSET)+(NUM123468_RAM1_DIS&lt;&lt;NUM_2_OFFSET)+(NUM123468_RAM1_DIS&lt;&lt;NUM_3_OFFSET)+(NUM123468_RAM1_DIS&lt;&lt;NUM_4_OFFSET);
    //ram2
    ram_updata =(NUM123468_RAM2_DIS&lt;&lt;NUM_1_OFFSET)+(NUM123468_RAM2_DIS&lt;&lt;NUM_2_OFFSET)+(NUM123468_RAM2_DIS&lt;&lt;NUM_3_OFFSET)+(NUM123468_RAM2_DIS&lt;&lt;NUM_4_OFFSET);
    //ram3
    ram_updata =(NUM123468_RAM3_DIS&lt;&lt;NUM_1_OFFSET)+(NUM123468_RAM3_DIS&lt;&lt;NUM_2_OFFSET)+(NUM123468_RAM3_DIS&lt;&lt;NUM_3_OFFSET)+(NUM123468_RAM3_DIS&lt;&lt;NUM_4_OFFSET);
}</code></pre>

<p >&nbsp;</p>

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

<p> &nbsp;</p>

<p>图2 显示光照强度值</p>

lugl4313820 发表于 2022-10-6 07:01

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

<p>改造好后,就可以方便使用了。</p>
页: [1]
查看完整版本: 【上海航芯 ACM32F070开发板+触控功能评估板测评】+段码LCD屏显示的使用