基于STM32和DGUS液晶屏的随机键盘设计

2019-01-21 06:49梁菲惜
电子制作 2019年1期
关键词:液晶屏串口键盘

梁菲惜

(成都理工大学核技术与自动化工程学院,四川成都,610059)

0 前言

中国是网上支付使用大国,根据《中国互联网发展报告2018》显示,到2017年底,中国网上支付用户人数达5.31亿,第三方互联网支付金额达到143万亿。从网银支付到手机支付,互联网支付已经成为中国最主流的支付方式[1~2]。目前密码泄露以病毒、黑客以及旁窥为主要原因。密码泄露不仅会造成个人财产损失,某些平台账号的密码泄露也可能造成他人的财产损失,如盗取社交软件密码骗取失主亲友钱财。采用随机键盘能有效地避免密码旁窥和泄露,不仅能在公共场合避免密码旁窥,也能有效防止通过记忆键盘点击位置的木马窃取密码。当前已经有部分银行采用随机软键盘的控件。

1 设计方案和思路

随机键盘设计旨在通过密码输入键盘的随机排列解决公共场合的密码旁窥和泄露问题。本设计主要达到两个效果:一是使输入键盘随机排列,二是密码匹配。基于以上目的,本设计采用STM32F103RCT6作为主要处理器,用于随机数列产生和密码匹配。产生随机数列采用两两交换法,初始密码存储在EEPROM中,密码键盘显示采用迪文DGUS液晶屏。方案设计思路如图1所示。

图1 随机键盘设计原理图

2 硬件设计

2.1 STM32单片机系统

单片机系统采用STM32F103RCT6。由法意半导体推出的STM32增强型系列STM32F103为高密度性能线的32位微处理器,其内核为Cortex-M3,具有成本低廉、功耗较低、性能较好、集成度高、便于调试等优点,在医疗、工业、电子等领域得到广泛应用[3~4]。STM32F103RCT6最大处理速度为72MHz,兼有串行单线调试SWD和JTAG接口,具有5个串口,可与迪文DGUS液晶屏进行串口通信控制;具有2个I2C接口,可挂载EEPROM进行密码存储。STM32F103RCT6内嵌晶振,为提高时钟稳定性,外接8M无源晶振和32.765K晶振。另连接复位电路和电源指示LED,引出JTAG接口,进行下载和调试。

STM32F103RCT6工作电压为 2V~3.6V,常用工作电压为3.3V。由于USB供电为 5V,无法直接为其提供工作电压。稳压芯片 AMS1117有可调电压和多种固定电压版,可选用3.3V固定电压版为STM32供电,且电路简单。电源开关使用自锁按键,使电路板在上电时不用一直插拔电源线,通过自锁开关来控制电源的通电和断电。

EEPROM可以即插即用,具有掉电数据不丢失的特点。AT24C02最大时钟频率400kHz,达到读写密码速度;内存容量250B,足够初始密码存储空间;I2C通信方式节省I/O口且控制方便;工作电压范围为1.8V 至 6.0V,可直接使用与STM32相同的工作电压供电。

图2 DGUS的硬件结构

DGUS是迪文科技推出的一款图形服务软件,是基于迪文屏K600+内核设计的人机界面系统软件,迪文DGUS屏就是基于该软件设计的液晶显示屏[5~6]。DGUS液晶屏为串口液晶屏,可支持CMOS、RS232、RS485三种电平通信方式,本次采用MINI DGUS液晶屏支持RS232通信方式。DGUS液晶屏支持SD卡,可使用画图软件设计界面通过SD卡下载使用,使界面设计丰富和多样化。其硬件结构如图2所示。

2.2 随机数产生

本设计中随机数产生为0~9的随机排列,以及26个字母的随机排列。对于这两种随机排列均使用两两交换法,原理简单易操作,且随机效果较好。将0~9以及26个字母分别随机处理,在此以0~9的数字排列为例说明。

(1)将0~9进行顺序排列;(2)利用随机函数产生0~9中的两个随机数m、n;(3)将第m个数和第n个数进行位置交换;(4)重复步骤②和步骤③X次,本设计中数字随机序列中取重复次数X=20。由于产生的随机数m、n可能重复,因此实际进行的位置交换次数可能小于20次,但一般不会低于10次,如此即可实现数字键盘的随机排列,理论上可实现的不同排列为10!种。26个字母的随机排列方法与此相同,适当增加交换次数X即可。以X=10为例,对于0~9的随机排列如表1所示。由表所示经过10次两两交换以后,数字序列由[6,0,9,7,2,8,4,1,5,3]变为[9,5,4,6,3,0,7,2,1,8],实现了随机数列的效果。

表1 两两交换法示意图(交换10次)

2.3 系统设计

使用画图软件设计显示界面,如CorelDRAW软件,调节图片大小和分辨率至适应屏幕;将设计好的显示界面通过SD卡下载至DGUS屏,检查显示是否正确;STM32通过IIC通信将预设密码存入EEPROM;在STM32中产生随机数列,将DGUS屏与STM32进行串口连接通信,并将随机数列放入指定触控区域;用户输入密码并确认,STM32通过串口读取用户键入密码;STM32读取EEPROM预设密码,并进行比较;若用户键入密码与预设密码一致,则通过串口使DGUS屏跳转输入正确页面;若用户键入密码与预设密码不一致,则跳转输入密码错误页面,并点击重新输入[7~8]。系统流程图如图3所示。

3 结语

本设计基于STM32和迪文DGUS屏的随机键盘设计,以STM32位主控制芯片,以迪文DGUS液晶屏为显示器件,以两两交换法为核心算法,经实际效果测试,随机排列生产效果良好,能达到较好的随机键盘效果。采用本设计,可以有效解决在公共场合的密码输入旁窥问题,可以有效防止在自动提取款机上通过记忆键盘点击位置的木马窃取密码。

图3 系统流程图

猜你喜欢
液晶屏串口键盘
你知道手机拨号键盘上为什么要有*和#吗?
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
Cлово месяца
ikbc R300机械键盘
基于FPGA的车内环境监测系统设计
一种消除液晶屏高温MURA的工艺研究
脏得吓死人的电脑键盘
MCS—51单片机中的多串口通讯技术的应用
基于单片机的点餐系统硬件设计