历史上的今天
今天是: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(); //键盘监控 } 以上代码,实现数字键盘输入,键值部分逻辑代码,根据实际需求编写。
史海拾趣
|
做芯片这行好几年,各种技术会议也参加了不少,只是飞思卡尔的技术论坛还没有去过。一直想参加,毕竟属于行业的老大啊!可是哪有那么容易! 今年的飞思卡尔大学生智能车赛开办了一个博客大赛,参与投票的工程师就有机会参加技术论坛。赶紧去投 ...… 查看全部问答> |
|
四川省大学生电子设计竞赛西南科技大学赛区竞赛题目-远程温湿度测量系统 本帖最后由 paulhyde 于 2014-9-15 04:20 编辑 电子竞赛题目-远程温湿度测量系统 一、电子竞赛题目任务: 制作一个远程温湿度测量仪,该测试仪具有温湿度测量和远程显示等功能。其结构框图如下: 二、电子竞赛题目要求: 1、基本要求 ( ...… 查看全部问答> |
|
关于AGC(Automatic Gain Control)和ADC “100分哦” 请教各位达人,我想找一款内置AGC功能的ADC,ADC最好为12bit,20MSPS 我网络上找了一些资料都没有发现有这样的ADC,许多电路都是内置模拟AGC再加一个ADC来实现的 谁能告诉我有没有这样的ADC啊?有的话提供型号,最好能有PDF文档,立即送100分… 查看全部问答> |
|
C167CR是汽车电子行业应用比较广泛的一种单片机,我正在做相关项目,在这里介绍一下其存储器及外部总线,和大家分享。 (第四点是针对评估板kitCCON-167评估板所作的相关寄存器配置) 1.最大寻址空间是16M 2.片内存储器 &nb ...… 查看全部问答> |
|
因工作繁忙,本人现转让一全新的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 ...… 查看全部问答> |




