stm32GUI滑杆图形操作界面

发布者:平稳心绪最新更新时间:2019-09-11 来源: eefocus关键字:stm32GUI  滑杆图形  操作界面 手机看文章 扫描二维码
随时随地手机看文章

本文是关于图形滑杆操作界面的底层编写,是在stm32f4单片机上,2.4寸320*240彩色tft屏幕上实现的当然也可以移植到其他单片机和屏幕上。

首先是背景界面的编写

背景界面的编写,可以方便到时候从某个功能退出时,直接把屏幕恢复到主界面


void back_screen(void)               //显示界面函数

{

Lcd_ColorBox(0,0,320,240,WHITE);   //清屏,显示为白色

print_text(30,70,'c',RED,YELLOW);    //在某某坐标显示一个char类型字符

print_text(30,78,'a',RED,YELLOW);    //camera即摄像头按钮

print_text(30,86,'m',RED,YELLOW);

print_text(30,94,'e',RED,YELLOW);

print_text(30,102,'r',RED,YELLOW);

print_text(30,110,'a',RED,YELLOW);

    print_text(30,10,'R',RED,YELLOW);        //rece 即receive 蓝牙接收数据显示

  print_text(30,18,'e',RED,YELLOW);

print_text(30,26,'c',RED,YELLOW);

print_text(30,34,'e',RED,YELLOW);

wite(30,50,0,RED,YELLOW);                //这个是在屏幕上显示个冒号

print_text(30,160,'G',RED,YELLOW);     //gogo发车按钮,可以根据自己的实际用途更改

   print_text(30,168,'O',RED,YELLOW);

      print_text(30,176,'G',RED,YELLOW);

      print_text(30,184,'O',RED,YELLOW);

    

//操作值P的滑杆显示

  print_text(312,5,'P',BLUE,WHITE);           //在屏幕上显示p

Lcd_ColorBox(304,13,2,203,MAROON);       //画一根棕色的线

wite(312,p+13,0,YELLOW,YELLOW);        //在线上根据p的值的大小显示滑块的位置

  print_number(312,216,p,BLACK,WHITE,3);

  print_text(250,5,'D',BLUE,WHITE);       //操作值D的滑杆显示

Lcd_ColorBox(242,13,2,203,MAROON);

wite(250,d+13,0,YELLOW,YELLOW);

   print_number(250,216,d,BLACK,WHITE,3);

print_text(188,5,'S',BLUE,WHITE);     //  操作值S的滑杆显示 即舵机角度

Lcd_ColorBox(180,13,2,203,MAROON);

  wite(188,servo+13,0,YELLOW,YELLOW);

   print_number(188,216,servo,BLACK,WHITE,3);

  

      print_text(126,5,'A',BLUE,WHITE);      //电机A的速度滑杆显示

      Lcd_ColorBox(120,13,2,203,MAROON);

      wite(128,motor1+113,0,YELLOW,YELLOW);   //判断速方向,进而显示±

if(motor1>=0)

        {

print_number(128,216,motor1,BLACK,WHITE,3);

wite(114,216,11,BLACK,WHITE);

}

else

{

print_number(128,216,(-motor1),BLACK,WHITE,3);

wite(114,216,13,BLACK,WHITE);

}

print_text(64,5,'B',BLUE,WHITE);

      Lcd_ColorBox(58,13,2,203,MAROON);

      wite(66,motor2+113,0,YELLOW,YELLOW);

if(motor2>=0)

        {

print_number(66,216,motor2,BLACK,WHITE,3);

wite(52,216,11,BLACK,WHITE);

}

else

{

print_number(66,216,(-motor2),BLACK,WHITE,3);

wite(52,216,13,BLACK,WHITE);

}

}

 


之后是在主界面采用轮询的方式,循环读取是否有触摸产生,并执行相应的操作

 轮询我是在main里面的while循环轮询,有某些触摸产生时,判断触摸的位置,进入相应的程序


 


while(1)

 

{

  flag=0;  //屏幕触摸中断标志位,一般屏幕中断不开启因为采用轮询,在进入摄像头的程序后,怕再次轮询耽误摄像头执行效率就用了触摸中断返回

    tx=TOUCH_X();    //读取触摸的x轴坐标

  ty=TOUCH_Y();//读取触摸的y轴坐标   我的屏幕上横向的是y轴

  print_text(270,142,'x',BLACK,WHITE);   //显示出读到的坐标,方便开发GUI时快速找准触摸位置

print_number(270,158,tx,BLACK,WHITE,4);   

print_text(270,190,'y',BLACK,WHITE);

  print_number(270,206,ty,BLACK,WHITE,4);

if(tx>20&&tx<65)   //p   判断如果触摸点是在P对应的滑杆上则执行以下程序

  {

if(ty<21)ty=21;    //限幅,

           if(p>200)p=200;

p=ty-21; //将触摸的位置坐标赋给p值,-21是为了补偿 

Lcd_ColorBox(296,13,17,203,WHITE); //首先清空p滑杆

    Lcd_ColorBox(304,13,2,203,MAROON);    //画上滑杆

    wite(312,p+13,0,YELLOW,YELLOW);    //显示出滑杆对应的位置

      print_number(312,216,p,BLACK,WHITE,3);  //并在滑杆尽头显示p的数值

}

  if(tx>73&&tx<128)   //D

  {

   if(ty<21)ty=21;

    d=ty-21;

   if(d>200)d=200;

Lcd_ColorBox(234,13,17,203,WHITE);

    Lcd_ColorBox(242,13,2,203,MAROON);

   wite(250,d+13,0,YELLOW,YELLOW);

     print_number(250,216,d,BLACK,WHITE,3);

  }

  if(tx>288&&tx<320&&ty>73&&ty<120)   //摄像头入口程序

{

cam_backround();

VS_Enable(); 

delay_ms(1000);

touch_Enable();

while(flag==0);

PLCK_Disable();

touch_Disable();

  back_screen();          //摄像头结束后返回主界面

  if(tx>135&&tx<186)        //舵机入口程序   

  {

   if(ty<42)ty=42;

    servo=ty-21;

   if(servo>170)servo=170;

Lcd_ColorBox(172,13,17,203,WHITE);

      Lcd_ColorBox(180,13,2,203,MAROON);

      wite(188,servo+13,0,YELLOW,YELLOW);

        print_number(188,216,servo,BLACK,WHITE,3);

TIM_SetCompare1(TIM1,(9*servo+1750));   

  }

  

  if(tx<240&&tx>190)           //motor1程序,可按需求编写

  {

       motor_off(2);

       motor_off(1);

          if(ty<21)ty=21;

    motor1=ty-21-100;

if(motor1>100)motor1=100;

Lcd_ColorBox(112,13,17,203,WHITE);

Lcd_ColorBox(120,13,2,203,MAROON);

      wite(128,motor1+113,0,YELLOW,YELLOW);

if(motor1>=0)

        {

print_number(128,216,motor1,BLACK,WHITE,3);

wite(114,216,11,BLACK,WHITE);

}

else

{

print_number(128,216,(-motor1),BLACK,WHITE,3);

wite(114,216,13,BLACK,WHITE);

}

        

  }

 

}

 


效果演示(gif自动加速,无奈)

控制舵机演示

进入摄像头演示

进入摄像头演示


关键字:stm32GUI  滑杆图形  操作界面 引用地址:stm32GUI滑杆图形操作界面

上一篇:STM32Cube开发-PWM
下一篇:STM32学习---GPIO和按键(流水灯学习)

推荐阅读最新更新时间:2024-11-16 21:22

基于嵌入式操作系统VxWorks的图形界面开发
摘 要: 本文主要阐述了利用嵌入式操作系统VxWorks的图形开发组件WindML进行图形界面开发的相关技术,并且总结出了程序设计的总体框架以及一些在实际编程中遇到的问题的解决方法,实现了WindML功能的扩展。    关键词: 嵌入式操作系统;图形界面;VxWorks    引言   嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,显然,嵌入式系统中的操作系统是整个系统的核心部分。 VxWorks作为性能优秀的嵌入式操作系统,不论是在可靠性、实时性、可裁减性方面,还是在开放性、易用性等方面都是相当不错的。   本文主要利用WindML解决了嵌入式系统一般图形开发中所遇到的问题,对个
[工业控制]
基于嵌入式<font color='red'>操作</font>系统VxWorks的<font color='red'>图形</font><font color='red'>界面</font>开发
小米员工微博曝光MIUI V6系统操作界面
   小米将于2014年7月22日举办新品发布会已经被官方证实,不过是否会推出新一代小米4手机,还是未知,但从曝光的图来看,本次发布小米4手机似 乎问题不大。同时,在近日,有关MIUI V6的信息也层出不穷,而最可信的一张图就是来自小米工程师于微博曝光的一张MIUI V6界面图。 图片来自互联网   从曝光的MIUI V6操作界面可以看出,新系统似乎会随着应用程序进行颜色改变,且时间显示改在通知栏的左侧,整体界面设计也与过去稍有不同。   从日前曝光的小米手机4照片来看,这款手机屏幕尺寸可能提升至5.2英寸,将具有实体按键设计。另外,在硬件规格方面,小米手机4可能会采用高通骁龙805处理器,搭配3GB RAM,并支持4G
[手机便携]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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