“药药切克闹”系列-基于STM32触摸屏的超级无敌智能电子密码锁(仿手机键盘26键设计,密码支持英文大写+英文小写+数字)

news/2024/11/28 5:39:35/

项目名称:“药药切克闹”系列-基于STM32触摸屏的超级无敌智能电子密码锁(密码支持英文大写+英文小写+数字)

CSDN:YANG-03                                                                                               Bilibili:-YANG-03


引言:本人在学习STM32电子密码锁和触摸屏时突发奇想,利用触摸屏来实现一个更加高级的一点点的密码锁,于是耗费N天N夜,写了这个“基于STM32触摸屏的超级无敌智能电子密码锁(密码支持英文大写+英文小写+数字)”。

…………其实我只写了main.c函数,其余像触摸屏驱动啥的都是用的正点原子官方给的程序驱动。

项目简介:本项目名称为:“药药切克闹”系列-基于STM32触摸屏的超级无敌智能电子密码锁(密码支持英文大写+英文小写+数字)。硬件包含STM32F103ZET6+3.5寸触摸屏,密码支持英文大小写+数字输入。输入方式仿照手机键盘(26键)。目前只是初版,尚有许多功能未完善。项目简单,这里给的代码复制粘贴到正点原子官方给的例程即可使用。到时只需要给触摸屏初始化一下后看到界面就知道怎么使用的了。

项目内容:

1.触摸屏简介:(这里触摸屏的介绍摘抄自正点原子官方资料中“STM32F1开发指南-库函数版本_V3.3”文档,详细可直接看官方手册)

目前最常用的触摸屏有两种:电阻式触摸屏与电容式触摸屏。

电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合 薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻) 导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、 在他们之间有许多细小的(小于 1/1000 英寸)的透明隔离点把两层导电层隔开绝缘。 当手指 触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在 X 和 Y 两个方向上产生 信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的 位置模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。 电阻触摸屏的优点:精度高、价格便宜、抗干扰能力强、稳定性好。

电阻触摸屏的缺点:容易被划伤、透光性不太好、不支持多点触摸。

电容式触摸屏主要分为两种:

1、 表面电容式电容触摸屏。 表面电容式触摸屏技术是利用 ITO(铟锡氧化物,是一种透明的导电材料)导电膜,通过电 场感应方式感测屏幕表面的触摸行为进行。

2、 投射式电容触摸屏。 投射电容式触摸屏是传感器利用触摸屏电极发射出静电场线。一般用于投射电容传感技术 的电容类型有两种:自我电容和交互电容。 自我电容又称绝对电容,是最广为采用的一种方法,自我电容通常是指扫描电极与地构成 的电容。在玻璃表面有用 ITO 制成的横向与纵向的扫描电极,这些电极和地之间就构成一个电 容的两极。当用手或触摸笔触摸的时候就会并联一个电容到电路中去,从而使在该条扫描线上 的总体的电容量有所改变。在扫描的时候,控制 IC 依次扫描纵向和横向电极,并根据扫描前后 的电容变化来确定触摸点坐标位置。笔记本电脑触摸输入板就是采用的这种方式,笔记本电脑 的输入板采用 X*Y 的传感电极阵列形成一个传感格子,当手指靠近触摸输入板时,在手指和传 感电极之间产生一个小量电荷。采用特定的运算法则处理来自行、列传感器的信号来确定手指 的位置。 交互电容又叫做跨越电容,它是在玻璃表面的横向和纵向的 ITO 电极的交叉处形成电容。 交互电容的扫描方式就是扫描每个交叉处的电容变化,来判定触摸点的位置。当触摸的时候就 会影响到相邻电极的耦合,从而改变交叉处的电容量,交互电容的扫面方法可以侦测到每个交 叉点的电容值和触摸后电容变化,因而它需要的扫描时间与自我电容的扫描方式相比要长一些, 需要扫描检测 X*Y 根电极。目前智能手机/平板电脑等的触摸屏,都是采用交互电容技术。

接下来看看电容触摸屏的优缺点:

电容触摸屏的优点:手感好、无需校准、支持多点触摸、透光性好。

电容触摸屏的缺点:成本高、精度不高、抗干扰能力差。

部分代码:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"	 
#include "24cxx.h"
#include "w25qxx.h"
#include "touch.h"
#include "remote.h"
#include "key16.h"
#include "beep.h"
#include "adc.h"
#include "timer.h"
/*
作    者:-YANG-
CSDN:YANG-03      Bilibili:-YANG-03
创建时间:2022/08/25
适用硬件:STM32F103ZET6E-mail:2194647952@qq.com
备    注:此历程基于正点原子官方例程所改动,仅供参考学习!
*/extern char k1;//矩阵键盘键值int Input_Toggle=0;//切换英文大小写
int Num_Toggle=0;  //切换英文数字输入char key=' ';//触摸屏键值
char Shuru[11]={' '};//输入密码
char Mima[9]={'A','b','c','1','2','3','4','5','6'};//初始密码
int x;//修改位数
int flag1;//判断密码正确与否
int error_x;//密码输入错误次数/*密码锁*/
void Combination_Lock()
{int i;POINT_COLOR=BLACK;LCD_ShowString(160,180,48,16,16,"Error:");//显示错误次数LCD_ShowString(10,180,32,16,16,"Key:");//显示键值POINT_COLOR=RED;LCD_ShowNum(210,180,error_x,2,16);LCD_ShowChar(45,180,key,16,0);POINT_COLOR=BLACK;LCD_ShowString(10,50,104,16,16,"Please Enter:");LCD_DrawRectangle(30,68,210,98);POINT_COLOR=RED;for(i=0;i<x;i++)//显示输入数据{LCD_ShowChar(50+(i*16),75,Shuru[i],16,0);}LCD_DrawLine(50+(x*16),93,58+(x*16),93);//光标显示LCD_Fill(34+(x*16),93,42+(x*16),93,WHITE);LCD_Fill(66+(x*16),93,210+(x*16),93,WHITE);if(key>='A' && key<='Z')//密码输入(英文大写){Shuru[x]=key;x++;key=' ';delay_ms(100);}if(key>='a' && key<='z')//密码输入(英文小写){Shuru[x]=key;x++;key=' ';delay_ms(100);}if(key>='0' && key<='9')//密码输入(数字){Shuru[x]=key;x++;key=' ';delay_ms(100);}if(x>9 || x<0) x=0;if(key=='<')//删除,减一位{x--;key=' ';delay_ms(100);}if(key=='|')//切换英文大小写{Input_Toggle=!Input_Toggle;key=' ';delay_ms(100);}if(Input_Toggle==0) LCD_ShowString(68,186,8,12,12,"D");if(Input_Toggle==1) LCD_ShowString(68,186,8,12,12,"X");if(Num_Toggle==1) LCD_ShowString(68,186,8,12,12,"S");if(key=='#')//切换英文数字输入{LCD_Fill(0,200,240,320,WHITE);Num_Toggle=!Num_Toggle;key=' ';delay_ms(100);}if(key=='_')//模拟回车键确定,开始密码比对{for(i=0;i<9;i++){if(Shuru[i]==Mima[i])flag1=1;else{flag1=2;break;}}key=' ';delay_ms(100);}if(flag1==1)//密码正确{error_x=0;LED0=!LED0;LCD_ShowString(60,100,120,16,16,"Welcome To Use!");   }if(flag1==2)//密码错误{LCD_ShowString(60,100,120,16,16,"Password error!");x=0;error_x++;flag1=0;}
}/*触摸屏矩阵按键英文界面设计*/
void Touch_Interface_English()
{
//	POINT_COLOR=RED; 
//	LCD_ShowString(30,5,300,16,16,"Long Time No See: YANG");/*嵌入式应用协会*/POINT_COLOR=RED;Chinese_Show_one(50,5,0,16,0);Chinese_Show_one(70,5,1,16,0);Chinese_Show_one(90,5,2,16,0);Chinese_Show_one(110,5,3,16,0);Chinese_Show_one(130,5,4,16,0);Chinese_Show_one(150,5,5,16,0);Chinese_Show_one(170,5,6,16,0);LCD_DrawLine(0,28,240,28);/*矩阵键盘横线*/LCD_DrawLine(0,200,240,200);LCD_DrawLine(0,230,240,230);LCD_DrawLine(0,260,240,260);LCD_DrawLine(0,290,240,290);/*矩阵键盘竖线*//*一*/LCD_DrawLine(24,200,24,230);LCD_DrawLine(48,200,48,230);LCD_DrawLine(72,200,72,230);LCD_DrawLine(96,200,96,230);LCD_DrawLine(120,200,120,230);LCD_DrawLine(144,200,144,230);LCD_DrawLine(168,200,168,230);LCD_DrawLine(192,200,192,230);LCD_DrawLine(216,200,216,230);/*二*/LCD_DrawLine(12,230,12,260);LCD_DrawLine(36,230,36,260);LCD_DrawLine(60,230,60,260);LCD_DrawLine(84,230,84,260);LCD_DrawLine(108,230,108,260);LCD_DrawLine(132,230,132,260);LCD_DrawLine(156,230,156,260);LCD_DrawLine(180,230,180,260);LCD_DrawLine(204,230,204,260);LCD_DrawLine(228,230,228,260);/*三*/LCD_DrawLine(36,260,36,290);LCD_DrawLine(60,260,60,290);LCD_DrawLine(84,260,84,290);LCD_DrawLine(108,260,108,290);LCD_DrawLine(132,260,132,290);LCD_DrawLine(156,260,156,290);LCD_DrawLine(180,260,180,290);LCD_DrawLine(204,260,204,290);/*四*/LCD_DrawLine(36,290,36,320);LCD_DrawLine(72,290,72,320);LCD_DrawLine(96,290,96,320);LCD_DrawLine(144,290,144,320);LCD_DrawLine(168,290,168,320);LCD_DrawLine(204,290,204,320);/*一*/POINT_COLOR=BLACK;LCD_ShowString(8,207,8,16,16,"Q");LCD_ShowString(32,207,8,16,16,"W");LCD_ShowString(56,207,8,16,16,"E");LCD_ShowString(80,207,8,16,16,"R");LCD_ShowString(104,207,8,16,16,"T");LCD_ShowString(128,207,8,16,16,"Y");LCD_ShowString(152,207,8,16,16,"U");LCD_ShowString(176,207,8,16,16,"I");LCD_ShowString(200,207,8,16,16,"O");LCD_ShowString(224,207,8,16,16,"P");/*二*/LCD_ShowString(20,237,8,16,16,"A");LCD_ShowString(44,237,8,16,16,"S");LCD_ShowString(68,237,8,16,16,"D");LCD_ShowString(92,237,8,16,16,"F");LCD_ShowString(116,237,8,16,16,"G");LCD_ShowString(140,237,8,16,16,"H");LCD_ShowString(164,237,8,16,16,"J");LCD_ShowString(188,237,8,16,16,"K");LCD_ShowString(212,237,8,16,16,"L");/*三*/LCD_ShowString(14,267,8,16,16,"|");LCD_ShowString(44,267,8,16,16,"Z");LCD_ShowString(68,267,8,16,16,"X");LCD_ShowString(92,267,8,16,16,"C");LCD_ShowString(116,267,8,16,16,"V");LCD_ShowString(140,267,8,16,16,"B");LCD_ShowString(164,267,8,16,16,"N");LCD_ShowString(188,267,8,16,16,"M");LCD_ShowString(214,267,16,16,16,"<-");/*四*/LCD_ShowString(6,297,24,16,16,"123");LCD_ShowString(42,297,24,16,16,"C/E");LCD_ShowString(80,297,8,16,16,"!");LCD_ShowString(108,297,24,16,16,"---");LCD_ShowString(152,297,8,16,16,"?");LCD_ShowString(174,297,16,16,16,"Fu");LCD_ShowString(210,297,24,16,16,"<--");
}/*触摸屏矩阵按键英文键值反馈*/
void Touch_Keypro_English()
{tp_dev.scan(0);/*键值显示*/
//	POINT_COLOR=BLACK;
//	LCD_ShowString(10,180,32,16,16,"Key:");
//	POINT_COLOR=BLUE;LCD_ShowNum(45,180,k1,2,16);
//	LCD_ShowChar(45,180,key,16,0);/*键值反馈*/if(tp_dev.sta&TP_PRES_DOWN)			//触摸屏被按下{	if(tp_dev.x[0]>0 && tp_dev.x[0]<24 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='Q';if(Input_Toggle==1) key='q';}if(tp_dev.x[0]>24 && tp_dev.x[0]<48 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='W';if(Input_Toggle==1) key='w';			}if(tp_dev.x[0]>48 && tp_dev.x[0]<72 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='E';if(Input_Toggle==1) key='e';}if(tp_dev.x[0]>72 && tp_dev.x[0]<96 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='R';if(Input_Toggle==1) key='r';}if(tp_dev.x[0]>96 && tp_dev.x[0]<120 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='T';if(Input_Toggle==1) key='t';}if(tp_dev.x[0]>120 && tp_dev.x[0]<144 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='Y';if(Input_Toggle==1) key='y';}if(tp_dev.x[0]>144 && tp_dev.x[0]<168 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='U';if(Input_Toggle==1) key='u';}if(tp_dev.x[0]>168 && tp_dev.x[0]<192 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='I';if(Input_Toggle==1) key='i';}if(tp_dev.x[0]>192 && tp_dev.x[0]<216 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='O';if(Input_Toggle==1) key='o';}if(tp_dev.x[0]>216 && tp_dev.x[0]<240 && tp_dev.y[0]>200 && tp_dev.y[0]<230){if(Input_Toggle==0) key='P';if(Input_Toggle==1) key='p';}if(tp_dev.x[0]>12 && tp_dev.x[0]<36 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='A';if(Input_Toggle==1) key='a';}if(tp_dev.x[0]>36 && tp_dev.x[0]<60 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='S';if(Input_Toggle==1) key='s';}if(tp_dev.x[0]>60 && tp_dev.x[0]<84 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='D';	if(Input_Toggle==1) key='d';}if(tp_dev.x[0]>84 && tp_dev.x[0]<108 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='F';	if(Input_Toggle==1) key='f';}if(tp_dev.x[0]>108 && tp_dev.x[0]<132 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='G';	if(Input_Toggle==1) key='g';}if(tp_dev.x[0]>132 && tp_dev.x[0]<156 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='H';	if(Input_Toggle==1) key='h';}if(tp_dev.x[0]>156 && tp_dev.x[0]<180 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='J';	if(Input_Toggle==1) key='j';}if(tp_dev.x[0]>180 && tp_dev.x[0]<204 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='K';	if(Input_Toggle==1) key='k';}if(tp_dev.x[0]>204 && tp_dev.x[0]<228 && tp_dev.y[0]>230 && tp_dev.y[0]<260){if(Input_Toggle==0) key='L';	if(Input_Toggle==1) key='l';}if(tp_dev.x[0]>0 && tp_dev.x[0]<36 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='|';	}if(tp_dev.x[0]>36 && tp_dev.x[0]<60 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='Z';	if(Input_Toggle==1) key='z';}if(tp_dev.x[0]>60 && tp_dev.x[0]<84 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='X';	if(Input_Toggle==1) key='x';}if(tp_dev.x[0]>84 && tp_dev.x[0]<108 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='C';	if(Input_Toggle==1) key='c';}if(tp_dev.x[0]>108 && tp_dev.x[0]<132 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='V';	if(Input_Toggle==1) key='v';}if(tp_dev.x[0]>132 && tp_dev.x[0]<156 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='B';	if(Input_Toggle==1) key='b';}if(tp_dev.x[0]>156 && tp_dev.x[0]<180 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='N';	if(Input_Toggle==1) key='n';}if(tp_dev.x[0]>180 && tp_dev.x[0]<204 && tp_dev.y[0]>260 && tp_dev.y[0]<290){if(Input_Toggle==0) key='M';	if(Input_Toggle==1) key='m';}if(tp_dev.x[0]>204 && tp_dev.x[0]<240 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='<';	}if(tp_dev.x[0]>0 && tp_dev.x[0]<36 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='#';	}if(tp_dev.x[0]>36 && tp_dev.x[0]<72 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='/';	}if(tp_dev.x[0]>72 && tp_dev.x[0]<96 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='!';	}if(tp_dev.x[0]>96 && tp_dev.x[0]<144 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='-';	}if(tp_dev.x[0]>144 && tp_dev.x[0]<168 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='?';	}if(tp_dev.x[0]>168 && tp_dev.x[0]<204 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='f';	}if(tp_dev.x[0]>204 && tp_dev.x[0]<240 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='_';	}}elsedelay_ms(10);	//没有按键按下的时候 	    
}/*触摸屏矩阵按键数字界面设计*/
void Touch_Interface_Number()
{
//	POINT_COLOR=RED; 
//	LCD_ShowString(30,5,300,16,16,"Long Time No See: YANG");/*嵌入式应用协会*/POINT_COLOR=RED;Chinese_Show_one(50,5,0,16,0);Chinese_Show_one(70,5,1,16,0);Chinese_Show_one(90,5,2,16,0);Chinese_Show_one(110,5,3,16,0);Chinese_Show_one(130,5,4,16,0);Chinese_Show_one(150,5,5,16,0);Chinese_Show_one(170,5,6,16,0);LCD_DrawLine(0,28,240,28);/*矩阵键盘横线*/LCD_DrawLine(0,200,240,200);LCD_DrawLine(0,230,240,230);LCD_DrawLine(0,260,240,260);LCD_DrawLine(0,290,240,290);/*矩阵键盘竖线*/LCD_DrawLine(60,200,60,320);LCD_DrawLine(120,200,120,320);LCD_DrawLine(180,200,180,320);POINT_COLOR=BLACK;LCD_ShowString(26,207,8,16,16,"1");LCD_ShowString(86,207,8,16,16,"2");LCD_ShowString(146,207,8,16,16,"3");LCD_ShowString(206,207,8,16,16,"4");LCD_ShowString(26,237,8,16,16,"5");LCD_ShowString(86,237,8,16,16,"6");LCD_ShowString(146,237,8,16,16,"7");LCD_ShowString(206,237,8,16,16,"8");LCD_ShowString(26,267,8,16,16,"9");LCD_ShowString(86,267,8,16,16,"0");LCD_ShowString(142,267,16,16,16,"<-");LCD_ShowString(202,267,16,16,16,"OK");LCD_ShowString(26,297,8,16,16,"+");LCD_ShowString(86,297,8,16,16,"-");LCD_ShowString(146,297,8,16,16,"*");LCD_ShowString(206,297,8,16,16,"/");}/*触摸屏矩阵按键数字键值反馈*/
void Touch_Keypro_Number()
{tp_dev.scan(0);/*键值显示*/
//	LCD_ShowString(10,180,32,16,16,"Key:");
//	POINT_COLOR=BLUE; 
//	LCD_ShowNum(45,180,k1,2,16);/*键值反馈*/if(tp_dev.sta&TP_PRES_DOWN)			//触摸屏被按下{	if(tp_dev.x[0]>0 && tp_dev.x[0]<60 && tp_dev.y[0]>200 && tp_dev.y[0]<230){key='1';	}if(tp_dev.x[0]>60 && tp_dev.x[0]<120 && tp_dev.y[0]>200 && tp_dev.y[0]<230){key='2';	}if(tp_dev.x[0]>120 && tp_dev.x[0]<180 && tp_dev.y[0]>200 && tp_dev.y[0]<230){key='3';}if(tp_dev.x[0]>180 && tp_dev.x[0]<240 && tp_dev.y[0]>200 && tp_dev.y[0]<230){key='4';}if(tp_dev.x[0]>0 && tp_dev.x[0]<60 && tp_dev.y[0]>230 && tp_dev.y[0]<260){key='5';	}if(tp_dev.x[0]>60 && tp_dev.x[0]<120 && tp_dev.y[0]>230 && tp_dev.y[0]<260){key='6';	}if(tp_dev.x[0]>120 && tp_dev.x[0]<180 && tp_dev.y[0]>230 && tp_dev.y[0]<260){key='7';	}if(tp_dev.x[0]>180 && tp_dev.x[0]<240 && tp_dev.y[0]>230 && tp_dev.y[0]<260){key='8';	}if(tp_dev.x[0]>0 && tp_dev.x[0]<60 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='9';}if(tp_dev.x[0]>60 && tp_dev.x[0]<120 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='0';}if(tp_dev.x[0]>120 && tp_dev.x[0]<180 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='<';}if(tp_dev.x[0]>180 && tp_dev.x[0]<240 && tp_dev.y[0]>260 && tp_dev.y[0]<290){key='#';	}if(tp_dev.x[0]>0 && tp_dev.x[0]<60 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='+';}if(tp_dev.x[0]>60 && tp_dev.x[0]<120 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='-';}if(tp_dev.x[0]>120 && tp_dev.x[0]<180 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='*';}if(tp_dev.x[0]>180 && tp_dev.x[0]<240 && tp_dev.y[0]>290 && tp_dev.y[0]<320){key='/';	}}elsedelay_ms(10);	//没有按键按下的时候 	    
}/*红外遥控*/
void Infrared_Remote_Control()
{u8 key;	key=Remote_Scan();//key为红外遥控器按下时的键值//LCD_ShowString(80,300,56,16,16,"KEYVAL:");		if(key){	 //LCD_ShowNum(136,300,key,3,16);//显示键值	  switch(key){case 162:k1=1;	 break;			   case 98: k1=2;	 break;	    case 226:k1=3;	 break;	    case 34: k1=4;	 break;		 case 2:  k1=5;	 break;		  case 194:k1=6;	 break;	   case 224:k1=7;	 break;		  case 168:k1=8;	 break;		  case 144:k1=9;	 break;		   case 152:k1=11;	 break;		    case 104:k1=10;	 break;		  case 176:k1=12;	 break;	   case 56: k1=15;  break;	    case 24: k1=13;  break;		    case 74: k1=99;  break;		    case 16: k1=14;  break;		  case 90: k1=16;  break;			   					 }}else delay_ms(10);	  
}/*矩阵按键*/
void Key4x4(void)
{KEY_Scan16(1);
//	LCD_ShowString(10,300,32,16,16,"Key:");//显示键值
//	LCD_ShowNum(42,300,k1,2,16);
}/*主函数*/
int main(void)
{	 		    delay_init();	    	 //延时函数初始化	  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200);	 	//串口初始化为115200LED_Init();			     //LED端口初始化LCD_Init();	KEY_Init();Remote_Init();			//红外接收初始化		 	KEY_Init16();			//矩阵按键初始化tp_dev.init();    //触摸屏初始化while(1){if(Num_Toggle==0)//英文字母输入{Touch_Interface_English();		  //触摸屏矩阵按键英文界面设计Touch_Keypro_English();           //触摸屏矩阵按键英文键值反馈函数}if(Num_Toggle==1)//数字输入{Touch_Interface_Number();		 //触摸屏矩阵按键数字界面设计Touch_Keypro_Number();           //触摸屏矩阵按键数字键值反馈函数}Combination_Lock();//密码锁//		Infrared_Remote_Control();//红外遥控函数
//		Key4x4();                 //矩阵键盘函数}
}

备注:此程序基于正点原子官方例程改动,仅供参考学习!!!

希望这份代码对各位有帮助!


bee6007d0176475a8fda6d63ca3e63e6.jpg

5b6b20c1c9b242748610f9c25384717b.jpg

2a3198a4820d4021b24306fb219529fb.jpg


http://www.ppmy.cn/news/455459.html

相关文章

tcl手机 手写java_TCL魔法手指V2.0 (使笔记本Synaptics触摸板变身为手写板)

TCL魔法手指功能概述 识别率最高&#xff1a;最新的识别核心&#xff0c;识别率达到99.3&#xff05;&#xff0c;并配合目前最好的多字切分技术&#xff0c;可流畅的连笔书写&#xff0c;随意的倒插笔书写&#xff0c;完全尊重您的书写习惯。 无需特殊硬件&#xff1a;只要您的…

Ai-WB1系列驱动4.0寸电阻触摸屏运行LVGL v8.3

文章目录 [TOC](文章目录) 前言一、功能预览1.滑动条和按钮2. 页面切换3.动画效果4.RGB控制功能1&#xff09;红灯控制2&#xff09;绿灯控制3&#xff09;蓝灯控制4&#xff09;幻彩灯控制 二、接线二、固件链接三、联系我们 前言 Ai-WB1系列一共设计了两款模组&#xff0c;分…

FH162儿童电子液晶手写板方案芯片开发

在如今电子产品盛行的年代里&#xff0c;也许很多朋友都像小编一样&#xff0c;逐渐忘记了如何手写了。长期没有手动写字&#xff0c;写出来的字自己都没眼看。写字是从小养成的传统习惯。 在如今电子产品盛行的年代里&#xff0c;也许很多朋友都像小编一样&#xff0c;逐渐忘记…

如何正确地使用ES6提高我们的代码质量(二)

一、拓展运算符&#xff08;…&#xff09; 这个符号最大的作用就是展开&#xff0c;展开数组和对象。 ①argument转数组 以下第一个例子就是编写一个将数组重新排序的方法&#xff0c;通过…我们可以轻而易举地分解数组。 // 例子 12-1// bad function sortNumbers() {ret…

2019年中国全国5级行政区划(省、市、县(区)、镇(街道)、村)

国内码云的地址 https://gitee.com/ruina2019/china_area GitHub仓库地址 https://github.com/adyliu/china_area.git

Qt生成二维码

首先需要了解的是&#xff0c;二维码就是以01矩阵图的形式存储的字符串而已&#xff0c;就像我们扫描的网址类型的二维码&#xff0c;扫出来通过解析器其实就是一个url链接。关于其他的说明就自己百度了。 此处使用的是开源库qrencode来进行测试&#xff0c;类似的还有zxing或者…

全国行政区划数据(截止2019年3月)

省市区三级数据&#xff08;含港澳台钓鱼岛以及经济开发区&#xff09;和经纬度信息&#xff0c;准确有效&#xff01; 下载地址请扫码

全国省(23个)、直辖市(4个)、自治区(5个)、特别行政区(2个)

省(23):广东省&#xff08;粤&#xff09;湖南省&#xff08;湘&#xff09;江西省&#xff08;赣&#xff09;河北省&#xff08;冀&#xff09;浙江省&#xff08;浙&#xff09;湖北省&#xff08;鄂&#xff09;云南省&#xff08;云&#xff09;山西省&#xff08;晋&…