本帖最后由 jinglixixi 于 2020-7-31 10:05 编辑
1. 显示功能的初步扩展 在ESK32-360开发板上,配置了TFT显示屏,通过它可以显示字符、图形及图片等。 该显示屏的接口电路如图1所示,它是由CN3连接器来与开发板连接的,所占用的引脚如图2所示。
图1 显示屏接口电路
图2 显示屏引脚占用
在软件方面,例程也提供了相对完整的显示函数,但也有一些功能尚需增添和补充。 首先我们来看一下其提供显示函数,他们有: void LCD_Init(void); // 初始化函数 void LCD_Config(void); // 引脚配置函数 void LCD_Clear(u16 Color); // 以色彩清除屏幕函数 void LCD_BackColorSet(u16 Color); // 设置背景色 void LCD_TextColorSet(u16 Color); // 设置前景色 void LCD_CharDisplay(u32 Line_Num, u32 Column,u32 Ascii); // 字符显示函数 void LCD_StringLineDisplay(u32 Line_Num,char *Sptr); // 字符串显示函数 void LCD_PicDraw(u8 X_Location, u16Y_Location, u8 Height, u16 Width, uc8 *Pptr); // 图片显示函数 void LCD_LineDraw(u32 X_Location, u32Y_Location, u32 Length, u32 Direction); // 直线绘制函数 void LCD_CircleDraw(u32 X_Location, u32Y_Location, u32 Radius); //圆绘制函数 void LCD_RectDraw(u32 X_Location, u32Y_Location, u32 Height, u32 Width); // 矩形绘制函数
那我们还需要补充哪些显示函数呢 ? 1)数值显示函数,在进行数据显示时要单纯靠调用字符显示函数来实现是非常不便的; 2)画点函数,它是其它图形绘制函数的基础; 3)画线函数,虽说例程中提供了画线函数,但它是解决简单的水平线或垂直线的,无法用其来绘制波形曲线; 4)区域填充函数,以解决窗口内波形曲线的擦除; 5)汉字显示函数,在配置相应中文字库的条件下,实现专用汉字的显示。
通过对例程的学习和分析,所增添的数值显示函数为: - uint32_t LCD_Pow(char m,char n)
- {
- uint32_t result=1;
- while(n--)result*=m;
- return result;
- }
- void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len)
- {
- u8 t,temp;
- u8 enshow=0;
- for(t=0;t<len;t++)
- {
- temp=(num/LCD_Pow(10,len-t-1))%10;
- if(enshow==0&&t<(len-1))
- {
- if(temp==0)
- {
- LCD_CharDisplay(x, y+14*t, ' ');
- continue;
- }else enshow=1;
-
- }
- LCD_CharDisplay(x, y+14*t, temp+'0'); //LCD_CharDisplay(x+16*t, y, temp+'0');
- }
- }
复制代码
在运行如下的主程序后,可得到图3所示的效果。- int main(void)
- {
- LCD_Init();
- LCD_Config();
- LCD_Clear(0x2c5c);
- LCD_BackColorSet(0x2c5c);
- LCD_TextColorSet(Yellow);
- LCD_StringLineDisplay(Line3, " Holtek ");
- LCD_StringLineDisplay(Line4, " HT32 Series ");
- LCD_StringLineDisplay(Line5, " LCD Example ");
-
- LCD_ShowNum(Line7,100,1234567890,10);
- while (1);
- }
复制代码
图3 数值显示
这样在遇到数值显示的地方,就可以轻松地实现了。后面还会继续补充和完善函数的添加,请继续关注。
|