IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32F4 TFTLCD显示与触摸 -> 正文阅读

[嵌入式]stm32F4 TFTLCD显示与触摸

是基于正点原子的TFTLCD显示和触摸屏的历程改的,在本篇就不再叙述TFTLCD屏的成像原理和触摸原理了。直接上应用,可能有些地方理解的不到位,欢迎各位大佬指正。

一.LCD显示函数

1.LCD_ShowNum()? ? ? //显示数字

//x,y:起点坐标
//num:要显示的数值(0~999999999);?? ??
//len:长度(即要显示的位数)
//size:字体大小
//mode:
//[7]:0,不填充;1,填充0.(不填充:和背景颜色不同,填充:和背景颜色相同)

void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
{         	
	u8 t,temp;
	u8 enshow=0;						   
	for(t=0;t<len;t++)
	{
		temp=(num/LCD_Pow(10,len-t-1))%10;
		if(enshow==0&&t<(len-1))
		{
			if(temp==0)
			{
				LCD_ShowChar(x+(size/2)*t,y,' ',size,0);
				continue;
			}else enshow=1; 
		 	 
		}
	 	LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0); 
	}
} 

2.LCD_Clear()? ? //清屏函数

//color:要清屏的填充色

void LCD_Clear(u16 color)
{
	u32 index=0;      
	u32 totalpoint=lcddev.width;
	totalpoint*=lcddev.height; 			//得到总点数
	if((lcddev.id==0X6804)&&(lcddev.dir==1))//6804横屏的时候特殊处理  
	{						    
 		lcddev.dir=0;	 
 		lcddev.setxcmd=0X2A;
		lcddev.setycmd=0X2B;  	 			
		LCD_SetCursor(0x00,0x0000);		//设置光标位置  
 		lcddev.dir=1;	 
  		lcddev.setxcmd=0X2B;
		lcddev.setycmd=0X2A;  	 
 	}else LCD_SetCursor(0x00,0x0000);	//设置光标位置 
	LCD_WriteRAM_Prepare();     		//开始写入GRAM	 	  
	for(index=0;index<totalpoint;index++)
	{
		LCD->LCD_RAM=color;	
	}
} 

3.LCD_ShowString()? ? ?//显示字符串

//x,y:起点坐标
//width,height:可用于显示的区域大小(如果此区域小于要显示的字符所用区域,会自动截断)??
//size:字体大小
//*p:字符串起始地址 (输要显示的字符即可)? ? ? ?

此函数不可以用来显示中文!!!

void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
{         
	u8 x0=x;
	width+=x;
	height+=y;
    while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
    {       
        if(x>=width){x=x0;y+=size;}
        if(y>=height)break;//退出
        LCD_ShowChar(x,y,*p,size,0);
        x+=size/2;
        p++;
    }  
}

4.POINT_COLOR=RED;? ? ?//设置字体颜色,设置字体为红色?

5.LCD_Init();? ? ? ? ? ? ? ? ? ? ? ?//LCD初始化

二.触摸判断

tp_dev.scan(0);
if(tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265)
{
   
      while(tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265)
	  {
			  tp_dev.scan(0);
	  }
	  LCD_Clear(WHITE);
	  LCD_DrawRectangle(30,30,180,220);
	  LCD_ShowNum(40,40,1,1,24);
	  LCD_ShowNum(90,40,2,1,24);
	  LCD_ShowNum(140,40,3,1,24);
	  LCD_ShowNum(40,90,4,1,24);
	  LCD_ShowNum(90,90,5,1,24);
	  LCD_ShowNum(140,90,6,1,24);
	  LCD_ShowNum(40,140,7,1,24);
	  LCD_ShowNum(90,140,8,1,24);
	  LCD_ShowNum(140,140,9,1,24);

(1)tp_dev.scan(0);? ? //扫描屏幕

(2)tp_dev.x[t]>20&&tp_dev.x[t]<265&&tp_dev.y[t]>200&&tp_dev.y[t]<265

//用于判断屏幕的指定地方有没有被碰到

(3)? ? LCD_DrawRectangle(30,30,180,220);
? ? ? ? ? ? ? ?LCD_ShowNum(40,40,1,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(90,40,2,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(140,40,3,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(40,90,4,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(90,90,5,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(140,90,6,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(40,140,7,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(90,140,8,1,24);
? ? ? ? ? ? ? ?LCD_ShowNum(140,140,9,1,24);

//这十条语句用来在屏幕上画一个九格的矩阵键盘

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:59:50  更:2021-08-06 10:00:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:47:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码