jinglixixi 发表于 2020-7-29 08:12

【ESK32-360测评】+ TFT屏显示功能及扩展(1)

本帖最后由 jinglixixi 于 2020-7-29 08:13 编辑

<p>1. 显示功能的初步扩展</p>

<p>在ESK32-360开发板上,配置了TFT显示屏,通过它可以显示字符、图形及图片等。</p>

<p>该显示屏的接口电路如图1所示,它是由CN3连接器来与开发板连接的,所占用的引脚如图2所示。</p>

<p>&nbsp;</p>

<p></p>

<p>图1 显示屏接口电路</p>

<p>&nbsp;</p>

<p></p>

<p></p>

<p>图2 显示屏引脚占用</p>

<p>&nbsp;</p>

<p>在软件方面,例程也提供了相对完整的显示函数,但也有一些功能尚需增添和补充。</p>

<p>首先我们来看一下其提供显示函数,他们有:</p>

<p>void LCD_Init(void); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 初始化函数</p>

<p>void LCD_Config(void); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 引脚配置函数</p>

<p>void LCD_Clear(u16 Color); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 以色彩清除屏幕函数</p>

<p>void LCD_BackColorSet(u16 Color);&nbsp;&nbsp;&nbsp;&nbsp; // 设置背景色</p>

<p>void LCD_TextColorSet(u16 Color);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设置前景色</p>

<p>void LCD_CharDisplay(u32 Line_Num, u32 Column, u32 Ascii);&nbsp;&nbsp;&nbsp; // 字符显示函数</p>

<p>void LCD_StringLineDisplay(u32 Line_Num, char *Sptr); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 字符串显示函数</p>

<p>void LCD_PicDraw(u8 X_Location, u16 Y_Location, u8 Height, u16 Width, uc8 *Pptr); // 图片显示函数</p>

<p>void LCD_LineDraw(u32 X_Location, u32 Y_Location, u32 Length, u32 Direction); &nbsp; &nbsp; &nbsp; &nbsp;// 直线绘制函数</p>

<p>void LCD_CircleDraw(u32 X_Location, u32 Y_Location, u32 Radius); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 圆绘制函数</p>

<p>void LCD_RectDraw(u32 X_Location, u32 Y_Location, u32 Height, u32 Width); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 矩形绘制函数</p>

<p>&nbsp;</p>

<p>那我们还需要补充哪些显示函数呢 ?</p>

<p>1)数值显示函数,在进行数据显示时要单纯靠调用字符显示函数来实现是非常不便的;</p>

<p>2)画点函数,它是其它图形绘制函数的基础;</p>

<p>3)画线函数,虽说例程中提供了画线函数,但它是解决简单的水平线或垂直线的,无法用其来绘制波形曲线;</p>

<p>4)区域填充函数,以解决窗口内波形曲线的擦除;</p>

<p>5)汉字显示函数,在配置相应中文字库的条件下,实现专用汉字的显示。</p>

<p>&nbsp;</p>

<p>通过对例程的学习和分析,所增添的数值显示函数为:</p>

<pre>
<code class="language-cpp">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&lt;len;t++)
        {
                temp=(num/LCD_Pow(10,len-t-1))%10;
                if(enshow==0&amp;&amp;t&lt;(len-1))
                {
                        if(temp==0)
                        {
                                LCD_CharDisplay(x, y+14*t, ' ');
                                continue;
                        }else enshow=1;
                      
                }
               LCD_CharDisplay(x, y+14*t, temp+'0');
        }
}
</code></pre>

<p>&nbsp;</p>

<p>在运行如下的主程序后,可得到图3所示的效果。</p>

<pre>
<code class="language-cpp">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);
}
</code></pre>

<p>&nbsp;</p>

<p>图3 数值显示</p>

<p>&nbsp;</p>

<p>这样在遇到数值显示的地方,就可以轻松地实现了。后面还会继续补充和完善函数的添加,请继续关注。</p>

zxopenljx 发表于 2021-4-18 18:11

<p>谢谢分享</p>

jinglixixi 发表于 2021-4-19 08:00

zxopenljx 发表于 2021-4-18 18:11
谢谢分享

<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>
页: [1]
查看完整版本: 【ESK32-360测评】+ TFT屏显示功能及扩展(1)