【上海航芯 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;
- 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;
- 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;
- int Displayup_1=num_up/1000%10;
- int Displayup_2=num_up/100%10;
- int Displayup_3=num_up/10%10;
- int Displayup_4=num_up/1%10;
-
- 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);
-
- 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);
-
- 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);
-
- 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 显示光照强度值
|