请教各位大神关于触摸屏按键输入的问题

2019-07-20 11:00发布


F429,用的是4342RGB屏,想做一个触摸屏的按键输入界面,类似于一个设置选项,点击后出现一个虚拟按键,在按键上按对应的数字键后,将对应数字键显示的值设置进参数保存。

例如:
设置选项
1、经度:112.45N
点击经度,在1位置显示光标,依次键入112.45,要求112.45从触摸屏按键输入,输入后将112.45这个值写入存储器,下次开机后可直接显示。
问题1:按键界面应该怎么做出来?按键的功能如何实现?是否有类似的例程可能分享?
问题2:数据存储的过程中是否需要经过数据类型转换?
问题3:在看了例程之后,我发现LCD例程里面有LCD.C和LTDC.C这两个C文件好像差不多,然后我把里面所有的函数都写下来,功能基本一样,是否可以舍去其中一个?同样的问题在IIC实验中也有一个叫MYIIC.C和CTIIC.C这两个文件也差不多是一样的,能不能舍去一个?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
DreamWaterPro
2019-07-20 15:55
从你提出的问题来看,原子哥说得对。。。你需要做的应该是先看明白触摸屏的使用方法,能够简单改动再说。

回答问题:
问题1:按键界面应该怎么做出来?按键的功能如何实现?是否有类似的例程可能分享?
你所说的按键界面,应该是类似于屏幕键盘这样的界面吧。

TIM图片20171030200005.jpg

这个是我之前做的课程设计,时间匆忙就做了2天,比较简陋。使用战舰,2.5寸电阻屏。

一、界面绘制很简单

对于这个来说,首先填充 {MOD}彩,然后绘制分割线,最后在按键区域中间写文字即可。位置可能需要多次调节,才会有理想的效果。


二、

这里仅仅说一个触摸按键的实现思路,而不是使用其他诸如ewin这种方式。当然你若是会ewin,更加省时省力,效果还好。

1、首先绘制按键,记住按键区域,执行2
2、扫描触摸屏,如果有按键按下,执行3,否则执行2;
3、检测触摸区域是否在按键区域范围内,若是执行4,否则执行2;
4、绘制按键被按下后的效果,执行5
5、扫描触摸屏,查看触摸是否松开,若是执行6,否执行5
6、绘制按键松开是的状态,并查看触摸离开的点是否在按键区域内,是说明按键有效,执行7,否则说明按键无效,执行2
7、执行你要做的事情。

三、例程

这个程序是基于STM32F103的战舰的,和楼主使用的开发板和MCU都有很大出入,恐怕很难通用,代码也没有经过整理,故暂不分享。

问题2:数据存储的过程中是否需要经过数据类型转换?
回答:看你的数据类型。

以AT24C02为例,是按照字节的方式存储的,而调用的写函数也是以字节为单位写入的。因此,写入之前需要转化为若干个u8类型的数据。

当然,如果你的数据本来就是u8类型的,那就没有必要转换了,调用函数直接写进去就可以了。

如果不是,比如是s16型的数据dat(其实就是int),AT24C02写入函数原型是AT24C02_Write(u8 reg,u8 dat),那么需要这样操作:

[mw_shl_code=applescript,true]AT24C02_Write(0x00,s16&0xff);
AT24C02_Write(0x01,(s16>>8));
[/mw_shl_code]
这样就将dat拆分成两个字节,分别存储在AT24C02的0x00 0x01两个地址处。

读出的时候操作相反,首先读出两个字节然后拼起来,不再赘述。

问题3:在看了例程之后,我发现LCD例程里面有LCD.C和LTDC.C这两个C文件好像差不多,然后我把里面所有的函数都写下来,功能基本一样,是否可以舍去其中一个?同样的问题在IIC实验中也有一个叫MYIIC.C和CTIIC.C这两个文件也差不多是一样的,能不能舍去一个?
不太清楚CTIIC.C LTDC.C这两个文件是做什么的。猜测LTDC.C为某型号的液晶屏的驱动程序(因为正点原子开发板支持很多种型号的液晶),CTIIC.C可能为触摸芯片的IIC驱动。想知道是否一样,就得需要你仔细研读代码,明白具体功能了。当然,保险的做法是都别删。


一周热门 更多>