触摸屏实验(触摸屏介绍+硬件设计+软件设计。注:软件部分代码过长,理解即可)

简介: 触摸屏实验(触摸屏介绍+硬件设计+软件设计。注:软件部分代码过长,理解即可)

ff07290975ef4ae182a73b500ac10047.png

f460e8ff3dcf411b86a9a6118d0a8259.png


缺点:透光性不好,只支持单次单点触摸,容易被划伤


注:手机,平板等一般为电容式。。。。工业用品一般为电阻式


触摸屏+AD转换器--->传递给单片机


42c652a5b7cb4c4188de7eeb169b0b98.png

7c31264f0b1040b58c5fa44296ef6331.png


单片机的IO口对(I方C)进行控制驱动IC,从而控制触摸屏


9a4a7c6821444790a229bbd659e9c248.png

4f5a5d4c1c28447fafc5ad9faeada6a4.png


主函数部分:


7a8754939b6240b283d9be9d5ad3bbba.png


touch.c部分:


311f9ec202d6412582d5b9daed116e91.png

d80bb76864914e95a2a4b2ba8274c572.png


touch.h部分:


c78cb2096b3d47e185de3a8f8f3d7f55.png


注:需要tftlcd部分代码和gui部分代码,由于代码过长(2000+行),无法放置,需要的私聊我


1780a4964818474989f830ff3a5fd1f3.png


以下仅为main.c部分的代码,总代码过长,无法全部放置,需要代码的私聊我


#include "public.h"  
#include "uart.h"
#include "tftlcd.h"
#include "touch.h"
#include "gui.h"
u8 Touch_RST=0;
//触摸测试
void TOUCH_Test(void)
{
    static u16 penColor = BLUE;
    TOUCH_Scan();
    if(xpt_xy.sta)
    {    
        if(xpt_xy.lcdx>tftlcd_data.width)
            xpt_xy.lcdx=tftlcd_data.width-1;
        if(xpt_xy.lcdy>tftlcd_data.height)
            xpt_xy.lcdy=tftlcd_data.height-1;
        if((xpt_xy.lcdx>=(tftlcd_data.width-3*12))&&(xpt_xy.lcdy<24))
            Touch_RST=1;
        if(xpt_xy.lcdy > tftlcd_data.height - 20)
        {
            if(xpt_xy.lcdx>100)
            {
                penColor = YELLOW;
            }
            else if(xpt_xy.lcdx>80)
            {
                penColor = CYAN;
            }
            else if(xpt_xy.lcdx>60)
            {
                penColor = GREEN;
            }
            else if(xpt_xy.lcdx>40)
            {
               penColor = MAGENTA;
            }
            else if(xpt_xy.lcdx>20)
            {
                penColor = RED;
            }
            else if(xpt_xy.lcdx>0)
            {
                penColor = BLUE;
            }       
        }
        else
        {
            LCD_Fill(xpt_xy.lcdx-2,xpt_xy.lcdy-2,xpt_xy.lcdx+2,xpt_xy.lcdy+2,penColor);    
        }
    }        
}
//GUI测试
void GUI_Test(void)
{
    FRONT_COLOR=WHITE;
    LCD_ShowFontHZ(tftlcd_data.width/2-2*24-12, 0,"普中科技");
    LCD_ShowString(tftlcd_data.width/2-7*12,30,tftlcd_data.width,tftlcd_data.height,24,"www.prechin.cn");
    LCD_ShowString(tftlcd_data.width/2-7*8,55,tftlcd_data.width,tftlcd_data.height,24,"GUI Test");
    FRONT_COLOR=RED;
    gui_draw_bigpoint(10,55,GREEN);
    gui_draw_bline(10,80,120,80,10,GREEN);
    gui_draw_rectangle(10,95,30,30,GREEN);
    gui_draw_arcrectangle(50,95,30,30,5,1,BLUE,GREEN);
    gui_fill_rectangle(90,95,30,30,GREEN);
    //gui_fill_circle(90,120,20,GREEN);
    gui_fill_ellipse(30,150,20,10,GREEN);
    //更多的GUI等待大家来发掘和编写
    delay_ms(2000);
    LCD_Clear(BACK_COLOR);        
}
void main()
{
    u16 color=0;
    UART_Init();
    TFTLCD_Init();
Start:
    //GUI_Test();
    FRONT_COLOR=WHITE;
    LCD_ShowFontHZ(tftlcd_data.width/2-2*24-12, 0,"普中科技");
    LCD_ShowString(tftlcd_data.width/2-7*12,30,tftlcd_data.width,tftlcd_data.height,24,"www.prechin.cn");
    FRONT_COLOR=RED;
    LCD_ShowString(tftlcd_data.width-3*12,0,tftlcd_data.width,tftlcd_data.height,24,"RST");
    LCD_Fill(0, tftlcd_data.height - 20, 20, tftlcd_data.height, BLUE);
    LCD_Fill(20, tftlcd_data.height - 20, 40, tftlcd_data.height, RED);
    LCD_Fill(40, tftlcd_data.height - 20, 60, tftlcd_data.height, MAGENTA);
    LCD_Fill(60, tftlcd_data.height - 20, 80, tftlcd_data.height, GREEN);
    LCD_Fill(80, tftlcd_data.height - 20, 100, tftlcd_data.height, CYAN);
    LCD_Fill(100, tftlcd_data.height - 20, 120, tftlcd_data.height, YELLOW);
    while(1)
    {
        if(Touch_RST)
        {
            Touch_RST=0;
            LCD_Clear(BACK_COLOR);
            goto Start;
        }
        TOUCH_Test();
    }                    
}


相关文章
|
存储 编译器 C语言
[Eigen中文文档] 对未对齐数组断言的解释
本文将解释程序因断言失败而终止的问题。
322 0
|
城市大脑 运维 监控
阿里速度! SRE团队全力保障多地健康码顺利上线
如何精准防控,统筹疫情期间的各项工作,有序稳健恢复经济社会秩序,成为当务之急。对此,阿里巴巴快速反应,除各种物资支持、政策响应外,还配合多地政府开发健康码,充分运用大数据手段助力疫情防控和复工复产,实现数字化防疫,让政府相关人员更快速、更清晰、更精准地进行防控管理决策。
阿里速度! SRE团队全力保障多地健康码顺利上线
|
9月前
|
存储 供应链 安全
区块链技术在选举中的应用:透明与安全的新时代
区块链技术在选举中的应用:透明与安全的新时代
310 16
|
10月前
|
人工智能 编译器 C语言
【AI系统】传统编译器发展
编译技术是计算机科学的重要组成部分,作为基础软件的核心,它将高级语言转换为机器码,极大提高了编程效率。从1957年的IBM Fortran开始,编译器经历了多个发展阶段,包括结构化程序设计、面向对象编程、并行计算及AI应用等,形成了如今如GCC、LLVM等成熟的编译体系。未来,随着多语言融合和跨平台需求的增长,编译技术将继续演进,支持更多新兴语言和平台。
286 3
|
Linux 开发工具 Python
【Deepin 20系统】Linux系统从零打造完美VScode for Python环境
如何在Deepin 20系统中从零开始配置一个完美的VScode for Python开发环境,包括安装Anaconda、VScode、必要的插件、汉化、主题和字体设置,以及如何运行和调试Python程序。
385 6
|
网络协议 前端开发 JavaScript
WebSocket 【实用教程】
WebSocket 【实用教程】
226 1
|
SQL 前端开发 Java
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
若依修改03----利用若依代码生成器,生成课程管理的前后端代码,课程的条件搜索接口,一旦数据表创建好了,直接交给若依代码的生成器就好了,配置代码生成信息,包含基本信息,字段信息,生成信息。字段信息决
|
人工智能 安全 数据管理
元宇宙的安全与隐私保护是构建健康、可持续虚拟世界的关键要素。以下是对元宇宙安全与隐私问题的详细分析
**元宇宙安全与隐私至关重要,面临网络安全威胁、隐私泄露及违法活动挑战。措施包括技术升级、数据管理、用户教育、实名制及创新监管。预计到2040年,元宇宙将影响数亿人生活,安全问题亟待解决。**
|
存储 数据可视化
Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险/收益可视化
Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险/收益可视化
Fama French (FF) 三因子模型和CAPM模型分析股票市场投资组合风险/收益可视化
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
129 0