基于mini原子开发板的触摸屏按钮管理系统+GUI函数

2019-07-21 02:00发布

       最近在准备今年九月份的电子设计国赛,由于觉得按键太麻烦,所以干脆就利用原子提供的触摸屏底层驱动实现了触控按钮的管理,其基本功能如下:
    1:支持按钮样式自定义,包括按钮颜 {MOD},渐变 {MOD},文字颜 {MOD},按下按钮的颜 {MOD}、渐变 {MOD}和字体颜 {MOD}等。
    2:系统实现了对按钮的自动管理,首先申请按钮,Apply_Button(u16 x0 , u16 y0 , u16 x1 , u16 y1 , u16 color , char* text); 输入按钮的相关信息,若按钮没有与之前的按钮位置重合,则返回新申请的按钮id号,若申请不成功,返回0.当有按钮按下时,可以获取按下的按钮id,来判断是哪个按钮被按下。
    3:按钮的扫描设置了两种模式,一种是中断模式,一种是查询模式。其中中断模式采用定时器每隔20ms进行一次扫描,当探测到有按钮按下时,将按钮id加入按钮id环形缓存区,主函数中只要判断缓存区是否为空,就可以来获取按下的按钮id值,这样提供了一种并行的管理机制。第二种是查询方式,通过调用函数Get_ButtonID()进入等待,直到有按钮被按下,返回按下按钮的id。
    4:采用动态的内存管理,每申请一个按钮,会为该按钮开辟一个空间,并加入到双向链表的表尾,实现对按钮的管理。当要撤销按钮时,需要调用void Free_Button(u8 *id , u16 bkcolor);函数释放指定id的按钮,并以bkcolor {MOD}填充按钮区域,也可以调用Free_AllButton(u16 bkcolor);释放所有按钮。






 
      最近有些人在问有没有战舰版的,我就试着移植了一下,由于手上没有战舰版的板子,只有一块类似的,在我的板子上调试是通过了,但没有在战舰版上调试,大家可以帮忙测试下,有什么问题告诉我,我再修改,希望对大家有帮助....

 

下面附上工程源代码:

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
48条回答
elor
1楼-- · 2019-07-22 21:54
回复【12楼】双星伴月:
---------------------------------
我的屏幕ID是9325 你说的 9341我在液晶屏初始化中好像没有找到对应的ID,你的屏幕是原子的么?
elor
2楼-- · 2019-07-23 02:12
回复【12楼】双星伴月:
---------------------------------
这些警告没关系,只是把char型转换成u8型  你的应该是屏幕型号不对
xouou_53320
3楼-- · 2019-07-23 08:06
 精彩回答 2  元偷偷看……
双星伴月
4楼-- · 2019-07-23 10:38
 精彩回答 2  元偷偷看……
745021926
5楼-- · 2019-07-23 13:23
支持LZ,有GUI触摸的就更好了,呵呵
elor
6楼-- · 2019-07-23 17:55
回复【17楼】745021926:
---------------------------------
你是指什么GUI的触摸啊?

一周热门 更多>