2724|0

1万

帖子

25

TA的资源

版主

楼主
 

F429Disco的Mbed电阻触摸屏例子 [复制链接]

本帖最后由 dcexpert 于 2015-12-19 11:18 编辑

这几天Mbed很给力,对F429/F469两个开发板连续升级,给出了很多例子,可以很方便的驱动液晶屏、触摸屏、陀螺仪等外设了。先看看F429的触摸屏用法。

  1. #include "mbed.h"
  2. #include "TS_DISCO_F429ZI.h"
  3. #include "LCD_DISCO_F429ZI.h"

  4. LCD_DISCO_F429ZI lcd;
  5. TS_DISCO_F429ZI ts;

  6. int main()
  7. {
  8.     TS_StateTypeDef TS_State;
  9.     uint16_t x, y;
  10.     uint8_t text[30];
  11.     uint8_t status;
  12.   
  13.     BSP_LCD_SetFont(&Font20);
  14.   
  15.     lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE);
  16.     lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"DEMO", CENTER_MODE);
  17.     wait(1);
  18.   
  19.     status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
  20.   
  21.     if (status != TS_OK)
  22.     {
  23.       lcd.Clear(LCD_COLOR_RED);
  24.       lcd.SetBackColor(LCD_COLOR_RED);
  25.       lcd.SetTextColor(LCD_COLOR_WHITE);
  26.       lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE);
  27.       lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT FAIL", CENTER_MODE);
  28.     }
  29.     else
  30.     {
  31.       lcd.Clear(LCD_COLOR_GREEN);
  32.       lcd.SetBackColor(LCD_COLOR_GREEN);
  33.       lcd.SetTextColor(LCD_COLOR_WHITE);
  34.       lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN", CENTER_MODE);
  35.       lcd.DisplayStringAt(0, LINE(6), (uint8_t *)"INIT OK", CENTER_MODE);
  36.     }
  37.    
  38.     wait(1);
  39.     lcd.Clear(LCD_COLOR_BLUE);
  40.     lcd.SetBackColor(LCD_COLOR_BLUE);
  41.     lcd.SetTextColor(LCD_COLOR_WHITE);
  42.    
  43.     while(1)
  44.     {
  45.       
  46.       ts.GetState(&TS_State);      
  47.       if (TS_State.TouchDetected)
  48.       {
  49.         x = TS_State.X;
  50.         y = TS_State.Y;
  51.         sprintf((char*)text, "x=%d y=%d    ", x, y);
  52.         lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
  53.       }
  54.     }
  55. }
复制代码


  • 首先需要定义一个触摸屏对象
    TS_DISCO_F429ZI ts;以及定义一个触摸屏状态变量
  • TS_StateTypeDef TS_State;通过 ts.Init 初始化触摸屏
    status = ts.Init(lcd.GetXSize(), lcd.GetYSize());
  • 在通过ts.GetState函数获取触摸屏状态
    ts.GetState(&TS_State);
  • 使用TS_State.TouchDetected判断触摸屏是否按下
    TS_State.TouchDetected
  • 最后是通过TS_State.X/TS_State.Y得到触摸点的座标
    x = TS_State.X;
    y = TS_State.Y;


运行效果



注意F429是电阻屏,是不支持多点触摸的。

  • 完整的参考程序
    DISCO-F429ZI_LCDTS.7Z (617.15 KB, 下载次数: 208)


查看本帖全部内容,请登录或者注册
此帖出自stm32/stm8论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表