【上海航芯 ACM32F070开发板+触控功能评估板测评】+段码LCD屏显示的使用
<p>ACM32F070开发板配合触控功能评估板可较好地实现人机交互,利用功能板上的段码LCD屏可显示2行4位的数据值,并配有多种辅助性提示图标,如温湿度的计量单位、上下限制、无线信号强弱、警示及电量指示灯,见图1所示。</p><p> </p>
<p>图1 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>9999) Num=9999; //4位数,最大显示9999
Get_RAM_NUM_DATA(ram_buff,Num,Num);
HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff);
HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff);
HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff);
HAL_LCD_Write(&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>9999) Num=9999; //4位数,最大显示9999
Get_RAM_NUM_DATA(ram_buff,Num1,Num2);
HAL_LCD_Write(&lcdhandle_YR1618A,0,ram_buff);
HAL_LCD_Write(&lcdhandle_YR1618A,1,ram_buff);
HAL_LCD_Write(&lcdhandle_YR1618A,2,ram_buff);
HAL_LCD_Write(&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>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<<NUM_1_OFFSET)+(NUM123468_RAM0_DIS<<NUM_2_OFFSET)+(NUM123468_RAM0_DIS<<NUM_3_OFFSET)+(NUM123468_RAM0_DIS<<NUM_4_OFFSET);
//ram1
ram_updata =(NUM123468_RAM1_DIS<<NUM_1_OFFSET)+(NUM123468_RAM1_DIS<<NUM_2_OFFSET)+(NUM123468_RAM1_DIS<<NUM_3_OFFSET)+(NUM123468_RAM1_DIS<<NUM_4_OFFSET);
//ram2
ram_updata =(NUM123468_RAM2_DIS<<NUM_1_OFFSET)+(NUM123468_RAM2_DIS<<NUM_2_OFFSET)+(NUM123468_RAM2_DIS<<NUM_3_OFFSET)+(NUM123468_RAM2_DIS<<NUM_4_OFFSET);
//ram3
ram_updata =(NUM123468_RAM3_DIS<<NUM_1_OFFSET)+(NUM123468_RAM3_DIS<<NUM_2_OFFSET)+(NUM123468_RAM3_DIS<<NUM_3_OFFSET)+(NUM123468_RAM3_DIS<<NUM_4_OFFSET);
}</code></pre>
<p > </p>
<p >这样在进行单个数据的检测时,就可排上用上,而不必一个数值显示2遍或显示一行无意义的零值,见图2所示。</p>
<p> </p>
<p>图2 显示光照强度值</p>
<p>在原功能的基础上改建了一个单行显示数值的函数。</p>
<p>改造好后,就可以方便使用了。</p>
页:
[1]