【上海航芯 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 显示光照强度值
|