历史上的今天
返回首页

历史上的今天

今天是:2025年02月15日(星期六)

2019年02月15日 | STM32(RFID)阶段三(触屏数字键盘)

2019-02-15 来源:eefocus

        在阶段二中,已经实现了RFID读写器与主控板的相互通信,发送和接收数据串。这是最核心的一部分。不过,之前金额的改变是固定100,现在开始任意数值的增减和任意数值初始化。这部分主要跟读写器的通信协议有关,不同的读写器可能不一样,但是代码思路都是差不多的。 


        为了实现任意数字的输入,首先要有一个键盘,在此,我用STM32TFTLCD触屏做了一个触摸键盘(电阻屏,竖屏)。要先引入touch.c ,24cxx.c,myiic.c文件。 


触屏代码


#include "delay.h"

#include "sys.h"

#include "lcd.h"

#include "key.h"

#include "touch.h"


int digital=0;//键值


void Load_Drow_Dialog(void)//数字键盘画屏

{

    LCD_Clear(WHITE);//清屏  

    POINT_COLOR=RED;

    LCD_ShowString(60,30,120,24,24,"CardID:");  

    LCD_ShowString(60,60,200,24,24,"money :");

    LCD_ShowString(60,90,200,24,24,"count :");

    //LCD_ShowString(60,120,200,24,24,"flag  :");

    POINT_COLOR=BLUE;//设置字体为蓝色 

    LCD_ShowxNum(30,170,1,1,24,0);

    LCD_ShowxNum(90,170,2,1,24,0);

    LCD_ShowxNum(150,170,3,1,24,0);

    LCD_ShowString(210,170,1,24,24,"C");//充值

    LCD_ShowxNum(30,210,4,1,24,0);

    LCD_ShowxNum(90,210,5,1,24,0);

    LCD_ShowxNum(150,210,6,1,24,0);

    LCD_ShowString(210,210,1,24,24,"K");//扣费

    LCD_ShowxNum(30,250,7,1,24,0);

    LCD_ShowxNum(90,250,8,1,24,0);

    LCD_ShowxNum(150,250,9,1,24,0);

    LCD_ShowString(210,250,1,24,24,"D");//确定

    //LCD_ShowxNum(30,200,1,1,16,0);

    LCD_ShowxNum(90,290,0,1,24,0);

    //LCD_ShowxNum(150,200,3,1,16,0);

    LCD_ShowString(210,290,1,24,24,"J");//校准

//  POINT_COLOR=RED;//设置画笔蓝色 

    LCD_DrawLine(0,315,240,315);

    LCD_DrawLine(0,280,240,280);

    LCD_DrawLine(0,240,240,240);

    LCD_DrawLine(0,200,240,200);

    LCD_DrawLine(0,160,240,160);

    LCD_DrawLine(60,160,60,315);

    LCD_DrawLine(120,160,120,315);

    LCD_DrawLine(180,160,180,315);  

}


void anjian(void)

{

    //......根据键值,编写逻辑功能

}


void rtp_test(void)

{

    u8 key;


    while(1)

    {

        Receive_One();  

        LCD_ShowString(150,35,200,16,16,card_id);       

        LCD_ShowxNum(152,60,money,4,24,0);      

        LCD_ShowxNum(152,90,num,4,24,0);    

        //LCD_ShowxNum(190,120,flag,1,24,0);

        delay_ms(10);   


        key=KEY_Scan(0);//触屏校准键

        tp_dev.scan(0); //扫描触摸屏.0,屏幕扫描;1,物理坐标;       

        if(tp_dev.sta&TP_PRES_DOWN)         //触摸屏被按下

        {   

            if(tp_dev.x[0]

            {   

                if(tp_dev.x[0]>0&&tp_dev.x[0]<60){

                    if(tp_dev.y[0]>160&&tp_dev.y[0]<200){      digital=1;

                    }else if(tp_dev.y[0]>200&&tp_dev.y[0]<240){digital=4;

                    }else if(tp_dev.y[0]>240&&tp_dev.y[0]<280){digital=7;

                    }

                    //else if(tp_dev.y[0]>280&&tp_dev.y[0]<320){}

                }else if(tp_dev.x[0]>60&&tp_dev.x[0]<120){

                    if(tp_dev.y[0]>160&&tp_dev.y[0]<200){      digital=2;

                    }else if(tp_dev.y[0]>200&&tp_dev.y[0]<240){digital=5;

                    }else if(tp_dev.y[0]>240&&tp_dev.y[0]<280){digital=8;

                    }else if(tp_dev.y[0]>280&&tp_dev.y[0]<320){digital=0;

                    }

                }else if(tp_dev.x[0]>120&&tp_dev.x[0]<180){

                    if(tp_dev.y[0]>160&&tp_dev.y[0]<200){      digital=3;

                    }else if(tp_dev.y[0]>200&&tp_dev.y[0]<240){digital=6;

                    }else if(tp_dev.y[0]>240&&tp_dev.y[0]<280){digital=9;

                    }

                    //else if(tp_dev.y[0]>280&&tp_dev.y[0]<320){}

                }else if(tp_dev.x[0]>180&&tp_dev.x[0]<240){

                    if(tp_dev.y[0]>160&&tp_dev.y[0]<200){      digital=11;

                    }else if(tp_dev.y[0]>200&&tp_dev.y[0]<240){digital=12;

                    }else if(tp_dev.y[0]>240&&tp_dev.y[0]<280){digital=13;

                    }else if(tp_dev.y[0]>280&&tp_dev.y[0]<320){digital=14;

                    }

                }

            }

            anjian();

        }

        delay_ms(50);


        if(key==WKUP_PRES)  //KEY0按下,则执行校准程序

        {

            LCD_Clear(WHITE);//清屏

            TP_Adjust();  //屏幕校准 

            TP_Save_Adjdata();   

            Load_Drow_Dialog();

        }


    }

}




int main(void)

 {      


    delay_init();            //延时函数初始化  

    LCD_Init();

    KEY_Init();             //按键初始化  



    tp_dev.init();          //触摸屏初始化touch.c

    Load_Drow_Dialog();     //数字键盘

    rtp_test();             //键盘监控

}


以上代码,实现数字键盘输入,键值部分逻辑代码,根据实际需求编写。

推荐阅读

史海拾趣

AdaptivEnergy公司的发展小趣事

AdaptivEnergy是一家专注于能量收集和管理技术的公司,以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展: AdaptivEnergy成立于2007年,总部位于美国马里兰州的克拉克斯堡市。公司的创始人是一群在能源管理和微型能源收集技术领域具有丰富经验的工程师和科学家。初期,公司主要专注于研发微型能源收集器件,旨在利用环境中的振动、热能等能源,为便携设备提供持续的电源支持。

  2. 技术创新与专利保护: AdaptivEnergy在能量收集和管理领域取得了多项技术突破,并获得了相关的专利保护。公司开发的微型能量收集器件具有高效、小型化和低成本的特点,广泛应用于智能手机、传感器、医疗设备等领域。同时,公司还不断改进其技术,并积极寻求新的技术创新和专利保护,以保持竞争优势。

  3. 产品推出与市场应用: 随着技术的成熟和产品的不断完善,AdaptivEnergy推出了一系列的微型能量收集器件和解决方案。这些产品可以通过环境中的振动、光照、温差等能源源源不断地为设备提供电力支持,解决了传统电池供电存在的限制和问题。这些产品在便携式电子设备、无线传感器网络、智能健康监测等领域得到了广泛应用。

  4. 市场拓展与合作伙伴关系: AdaptivEnergy积极拓展国内外市场,并与各类客户和合作伙伴建立了稳固的合作关系。公司与电子设备制造商、系统集成商、科研机构等进行合作,共同开发定制化的能量收集解决方案,满足不同客户的需求。同时,公司还与行业协会、学术界等建立合作关系,共同推动微型能量收集技术的发展和应用。

  5. 未来展望与持续创新: 作为一家专注于微型能量收集技术的领先企业,AdaptivEnergy将继续致力于持续创新和技术提升。公司将继续投入研发资源,推出更加高效、可靠的微型能量收集器件和解决方案,以满足日益增长的市场需求。未来,AdaptivEnergy将继续在能量收集和管理领域发挥领先优势,为客户提供更加智能、便携的能源解决方案。

GD Rectifiers Ltd公司的发展小趣事

随着全球对环境保护问题的日益关注,GD Rectifiers Ltd积极响应并践行绿色环保理念。公司投入大量资源进行绿色产品的研发和生产,推出了一系列符合环保标准的整流器产品。这些产品不仅具有高效、节能的特点,还大幅降低了生产和使用过程中的环境污染。同时,公司还加强了对废弃物的处理和回收利用工作,努力实现生产全过程的绿色化。GD Rectifiers Ltd的环保行动赢得了社会各界的广泛赞誉和支持,为公司的可持续发展奠定了坚实基础。

AF International公司的发展小趣事

作为一家具有社会责任感的企业,AF International始终关注社会公益事业的发展。公司积极参与扶贫、教育等公益活动,捐资助学、扶贫济困,为社会做出积极贡献。此外,AF International还注重环保和可持续发展,采用环保材料和节能技术,降低生产过程中的能耗和排放。这些举措不仅体现了公司的社会责任感,也为公司的可持续发展奠定了坚实基础。

这五个故事分别从不同角度展现了AF International在电子行业中的发展历程和取得的成就,体现了公司的创新精神、国际化视野、社会责任感等优秀品质。

BEKA Associates Ltd公司的发展小趣事

在快速发展的过程中,BCD Semi(Diodes)积极寻求风险投资和资本运作的支持。公司通过吸引国内外知名的投资机构参与投资,获得了大量的资金支持,为公司的研发、生产和市场拓展提供了有力的保障。同时,BCD Semi还通过并购、合作等方式,与行业内的其他企业实现资源共享和优势互补,进一步提升了公司的综合实力。

EFINIX公司的发展小趣事

EFINIX公司成立于2012年,由一群来自知名FPGA企业的创始人团队创立。他们拥有丰富的FPGA设计经验,并致力于在可编程逻辑行业实现突破性的创新。公司总部位于美国加利福尼亚州圣克拉拉市,计划采用一种全新的现场可编程门阵列(FPGA)技术——量子可编程技术,来设计芯片。这种技术旨在实现芯片尺寸仅为传统芯片的四分之一,能耗减少一半,同时结构更加简化。EFINIX公司相信,这种技术将推动人工智能和深度学习的发展,使数据处理更加高效。

Altus Technology Inc公司的发展小趣事

Altus Technology Inc自成立以来,始终将技术创新作为公司发展的核心驱动力。在早期,公司研发团队通过不懈努力,成功开发出了一款具有革命性的芯片,这款芯片在性能和功耗上均优于当时的同类产品。凭借这一技术突破,Altus在市场上迅速获得了一席之地,并吸引了大量合作伙伴和投资人的关注。随着技术的不断迭代和升级,Altus逐渐在电子行业中树立了技术领先的形象,并持续推出了一系列创新产品,巩固了市场地位。

问答坊 | AI 解惑

早就想参加飞思卡尔技术论坛,这次终于有机会了

做芯片这行好几年,各种技术会议也参加了不少,只是飞思卡尔的技术论坛还没有去过。一直想参加,毕竟属于行业的老大啊!可是哪有那么容易! 今年的飞思卡尔大学生智能车赛开办了一个博客大赛,参与投票的工程师就有机会参加技术论坛。赶紧去投 ...…

查看全部问答>

四川省大学生电子设计竞赛西南科技大学赛区竞赛题目-远程温湿度测量系统

本帖最后由 paulhyde 于 2014-9-15 04:20 编辑 电子竞赛题目-远程温湿度测量系统 一、电子竞赛题目任务: 制作一个远程温湿度测量仪,该测试仪具有温湿度测量和远程显示等功能。其结构框图如下: 二、电子竞赛题目要求: 1、基本要求 ( ...…

查看全部问答>

PB编译项疑问??

请问大家这个PB的编译选择项有什么不同么?之前我编译的时候,修改了一点就要重新编译,一等就是一个小时。我在网上找到一个快速编译的方法,可是这好像只是针对修改了的驱动而言。 所以我有几个疑问,还望大家能帮我解答。 如果我只是增加驱动, ...…

查看全部问答>

关于AGC(Automatic Gain Control)和ADC “100分哦”

请教各位达人,我想找一款内置AGC功能的ADC,ADC最好为12bit,20MSPS 我网络上找了一些资料都没有发现有这样的ADC,许多电路都是内置模拟AGC再加一个ADC来实现的 谁能告诉我有没有这样的ADC啊?有的话提供型号,最好能有PDF文档,立即送100分…

查看全部问答>

modem怎样判断来电是电话还是传真呢

发现不管是电话还是传真 modem收到的都只是RING... 怎样判断到底是电话还是传真呢 谢谢。。…

查看全部问答>

c167CR存储器介绍

C167CR是汽车电子行业应用比较广泛的一种单片机,我正在做相关项目,在这里介绍一下其存储器及外部总线,和大家分享。 (第四点是针对评估板kitCCON-167评估板所作的相关寄存器配置) 1.最大寻址空间是16M 2.片内存储器     &nb ...…

查看全部问答>

转让全新的ARM开发板

因工作繁忙,本人现转让一全新的ARM7开发板:EasyARM2131开发平台 地点:上海市闵行区 电话:13681848395 清单如下: 1.EasyARM2131开发实验板 1 台 2.EasyJTAG-H 1 只 3.SD CARD PACK 1 块 4.杜邦-1P测试线 9 条 5.20P仿真电缆 1 条 6.R ...…

查看全部问答>

STM32的USB2.0的速度可以到多少?12Mor480M?

手册上说: USB 2.0 full speed interface但是文件又说:The STM32F103xC, STM32F103xD and STM32F103xE performance line embed a USBdevice peripheral c ...…

查看全部问答>

运放稳定性

运算放大器的稳定性设计,中文材料,不太清楚在这个论坛里有没有人上传过,要是没有会陆续更新。谢谢~~ 第一部分:环路稳定性基础 第二部分:运放网络、SPICE分析…

查看全部问答>

重油椭圆齿轮流量计

重油椭圆齿轮流量计是一种容积式流量计,测量原理是液体在流量计种流动,在进出口两端会形成差压,在流量计种的椭圆齿轮在轴上不停的旋转,齿轮间的空隙将充满液体,液体随齿轮的旋转被排出,齿轮的转数和流量值成正比关系,测出椭圆齿轮的转数即 ...…

查看全部问答>