超市储物柜电子系统的设计Word格式.docx
《超市储物柜电子系统的设计Word格式.docx》由会员分享,可在线阅读,更多相关《超市储物柜电子系统的设计Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
![超市储物柜电子系统的设计Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/12/615702d1-42b9-477d-91b1-e2bed828efa4/615702d1-42b9-477d-91b1-e2bed828efa41.gif)
实验表明,此设计的接口、结构等设计合理,功能基本可以实现,本设计可供以后的键盘扫描类、显示类、语言提示类等设计参考使用。
关键词:
LM3S811微处理器;
TH12864液晶显示;
4*4键盘;
储物柜
DesignofSupermarketAccessTankElectronicSystem
Abstract:
Thisarticleintroducesthefunctionsofsupermarketlockerautomaticstoragecontrolandvoicealarmanddigitaldisplay.Inthisstudy,weprovideasupermarketlockerandconvenientsolution,withgoodsecurity,codevolume,randomopenlockerssuccessrateisalmostzero.ThispaperusesaARMmicrocontroller(LM3S811maincontrolchip)and12864LCDdisplaymodule,serialconnectionofthedisplaysystem,usingClanguageprogramming,controlledbysoftware,adetailedanalysisofthedesignanddebugtheproblemsolution,whichmakesthesystemcanrealizethe.Forexternalkeycircuitobtaineddata,read,processing,transmissionbythemaincontrolchip,thedatatobedisplayed.Experimentsshowthat,thedesigninterface,designandreasonablestructure,thebasicfunctionscanbeachieved,thedesignofkeyboardscanning,forlaterdisplayclass,languagetipssuchasdesignreference.
Keywords:
LM3S811microprocessors;
TH12864;
a4*4keyboard;
AutomaticAccessTanks
1引言
1.1超市储物柜电子系统的设计研究的背景及意义
自动储物柜在现实生活中应用广泛,为超市,图书馆,展览馆,酒楼,车站,码头,以及娱乐场所提供短期寄存服务,也可以作为工厂、机关、医院、及特种行业员工的更衣柜,这些足以证明储物柜在现代社会中具有重大的工程意义。
超市自动储物柜作为储物柜的其中一种,它克服了传统的人工寄存所带来的费人力[1],速度慢,易冒领,不安全等诸多弊端。
因此为了能够更好的实现超市储物柜的各种功能,具有重要的研究价值。
超市储物柜的发展经历了以下几个方面:
起初的超市储物柜都是钥匙柜。
钥匙柜是将大量的钥匙进行集中管理而设计的,取、还钥匙必须通过管理人员的发放,从而查询到取、还钥匙的各种相关信息并详细记录储物柜的使用情况,解决了因管理不当引发的各种问题和时间。
随着电子元件的进一步发展,在电子密码锁的基础上也出现了很多种类的超市储物柜,且功能日益强大,使用更加方便,安全保密性更强,由以前固定的单密码输入发展到随机密码的输入再到现在的加感应元件密码的扫描,从而实现了真真正正的电子加密。
由于人们对保密性要求的提高,还有一些人针对传统超市储物柜不能满足企业、商业秘密等严格保密的问题,提出了远程管理自动储物管理系统[2],利用数据库技术将密码、IC卡和生物识别系统(指纹识别、人脸识别、掌形识别、签名识别、声音识别等等)综合应用到远程储物柜系统中,利用互联网技术进行保护,即使在很远距离也可以实现对超市储物柜的监控。
作为未来识别技术中的潜力产品,生物识别技术可以说有着非常好的使用前景。
那么,对于现在超市储物柜设备的选择,我们又该如何把握呢?
然而,这三种方式都不太适合现代超市储物柜的发展现状。
第一种超市储物柜虽造价不高,也容易学习,但是使用起来极其不方便,很容易造成硬件资源以及人员的浪费;
第二种在储物柜存满物品时,不会自动显示不能存东西,使用极不方便,且安全性也大打折扣,管理人员并不知道设计的储物柜占用多少资源也没有对其进行可行性分析,总会遇到硬件资源消耗大,作品调剂时间长,无法方便地按自己的设计意图反复修改自己作品的难题;
第三种技术虽然克服了传统自动储物柜系统的许多缺陷,增强了储物柜的安全性,但是这种技术要求过高,投资过大,且不易掌握,不便于技术的推广。
只能适用于保密要求高且供个人使用的箱、柜房间等。
超市储物柜是为了满足公共场合大众存储物品而设计的。
因此本文试图设计一种既实惠又方便的超市储物柜的电子系统,给人们的生活带来方便。
1.2本文的研究内容
本设计来源于对生活的观察,自动储物柜可以节省人力和营业面积,并方便了顾客。
本文以TH12864液晶显示作为显示模块,led模拟门驱动电路。
基本功能如下:
a.当没有“存”键或是“取”键按下时,一直显示欢迎界面。
b.当按下“存”键时,门打开,并显示随机密码。
c.当按下“取”键时,显示“请输入密码”,当用户输入密码时判断密码是否正确。
d.设计一个万能密码以防止用户忘记密码,门打不开的情况。
为了使本设计研究更有价值,可有以下的扩展功能:
e.当用户按下“存”时,在30s内用户如果没有关储物柜的门,会自动报警。
f.当用户输入密码3次不正确时,自动报警。
2总体框图
超市储物柜的控制系统由中央控制和门控制电路构成,中央控制由微机构成,门控制电路采用lm3s811单片机作为主控芯片,每个单片机可控制多个储物柜。
以及4*4键盘扫描用户输入的密码。
利用TH12864液晶显示储物柜当前的状态。
门控驱动电路显示门的开关状态。
下图1为本设计的总体框图:
图1总体框图
2.1主控芯片LM3S811
2.1.1LM3S811芯片介绍
8位的51单片机长期占据着微控制器(MCU)的主流市场,但随着技术与需求的发展,32位微控制器应用增长率也在不断攀升。
目前,基于ARM内核的32位微处理器在市场上处于领导地位。
ARM处理器不但便宜而且性能较传统的51单片机高得多,集成度也大大提高,为单芯片解决方案提供了非常方便的平台,在很多场合都可以用一个芯片就能包容所需的全部资源,同时ARM处理器具有功耗低、程序代码少、自动化程度高、响应速度快、体积小、可根据需要灵活定制等特点,适合于要求实时和多任务处理的场合。
因此本设计采用ARM处理器。
本设计所用的ARM处理器LM3S811有48个引脚[3],其大部分引脚具有复用功能,如LM3S811的用作JTAG的五个管脚,同时也可以作为GPIO使用,这是LM3S811的一个缺点,但同时也是它的一个优点,由于JTAG被用来下载(烧写)程序使用,再用作GPIO可能会使得芯片锁死,这是它的缺点;
但同时,它有防锁死的措施,如果使用者细心加上防锁死程序,或者在不需要使用太多GPIO的情况下,可以尽量不用这五个管脚PB7和PC0~PC3,如果需要,那么在加上防锁死程序后,就有五个GPIO管脚可以使用,这是它的一大优点。
在LM3S811中,有很多功能模块:
JTAG、UART(串口)、PWM(脉冲宽度调制)、Timer(定时器)、ADC(模数转换)等,其中一些功能模块,如串口,可以用在的调试过程中,模拟的虚拟串口,通过串口调试器的调试,在电脑上可以看到输入输出的结果,同时对照硬件的工作情况,可以更直观的得到运行结果。
Timer可以被配置成一个32位的定时器,也可以被分为两个16位的定时/计数器。
LM3S811芯片特点[4]:
●工作频率:
0~50MHz
●32可编程I/O口
●3个定时模块,提供6个16位定时器
●具有8个中断优先级和26个中断
●64k单周期flash,8K单周期访问SRAM
●内置看门狗
●向量中断控制器,可配置优先级和向量地址
●低功耗设计:
具备睡眠模式和深度睡眠模式
●3个PWM信号发生模块,提供3个16位的计数器、6个比较器,3个PWM信号发生器、以及一个死区发生器
●支持4通道模数转换器,500000次/秒的采样率
●内置温度传感器
●内置模拟比较器
●2个异步收发器模块
●支持FreescaleSPI、MICROWIRE、和德州仪器三中格式同步串行接口
●拥有3个PWM发生器模块
LM3S811的内部系统方框图及其芯片管脚[5]图如下图2所示:
图2LM3S811的内部系统方框图及其芯片管脚图
2.1.2硬件总体框图
图3硬件总体框图
本文重点介绍最小系统板的JTAG防锁死按键和仿真接口等[6]。
2.1.2.1JTAG防锁死按键
LM3S811最小系统板中用将复用管脚PB5作为JTAG_LOCK按键,低电平有效。
其主要作用是解决调试过程中有可能偶尔出现芯片的JTAG接口连接失效的问题,即遇到用调试器再也无法连接的情况,下图3防锁死按键电路。
图4JTAG_LOCK电路
2.1.2.2仿真接口
JTAG是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。
标准的JTAG接口是4根线:
测试模式选择TMS_SWDIO、测试时钟TCK、测试数据输出TDO、测试数据输入TD和测试复位/RST构成了仿真连接口,通过仿真连接口和仿真器连接,实现电路的仿真。
2.2TH12864芯片研究
2.2.1显示模块选择
1602液晶显示器采用5×
7点阵,可以显示2行,每行16个字。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
TH12864LCD显示器(LCD)[7]具有功耗低、体积小、重量轻、超薄等,其它显示器无法比拟的优点,近年来被广泛用于单片机控制和微控制器控制的智能仪器、仪表和低功耗电子产品中。
LCD主要分为段位式LCD、字符式LCD和点阵式LCD三种,其中段位式LCD和字符式LCD只能用于字符和数字的简单的显示,而不能满足图形曲线和汉字显示的要求,在很多方面有很大的弊端;
而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线和汉字,像1602液晶显示器采用5×
本文选用了12864(128×
64)LCD显示器,它是128(列)64(行)点阵的LCD显示模块。
在该系统中,通过LM3S811微控制器输入输出接口,利用C语言编程控制输入输出端口的高低电平,根据时序,以实现对LCD的控制,使得所需显示的数据以及功能得以在LCD显示模块上显示。
2.2.2TH12864介绍
引脚名称方向说明
1VSS-GND(0V)
2VDD-SupplyVoltageForLogic(+3.3V)
3V0-SupplyVoltageForLCD
4RS(CS)0H:
DataL:
InstructionCode
5R//W(STD)0H:
ReadL:
Write
6E(SCLK)0EnableSignal
7-140数据0-数据7
DB0-DB7
15PSB0H:
ParallelModeL:
SerialMode
16NC-空脚
17RST0Resetsignal低电平有效
18NC-空脚
19LEDA-背光电源正极(LED+3.3V)
20LEDK-背光电源负极(LED-0V)
表112864引脚说明
本设计使用的是TH12864显示模块,TH12864液晶显示模块是128×
64点阵的汉字图形型液晶显示模块,可显示中文汉字及字符,且内含图形库,可显示自定义字符、汉字和图像,内置国标GB2312码简体中文字库(16×
16点阵)、128个字符(8×
16点阵)及64×
256点阵显示RAM(GDRAM)。
与外部CPU接口采用并行或串行两种控制方式。
其中TH12864的供电电源有3.3V和5V的,在本设计中使用的是3.3V的电源。
其引脚说明如表1所示:
2.2.3TH12864工作原理
在本系统的设计中共使用了6条12864管脚与LM3S811进行连接,其12864的引脚为1、2、4、5、6、15,其中1、2两条分别是接地和电源(3.3V);
4引脚在串行状态下为12864的芯片选择端,控制12864到底是使用还是禁止,高电平有效,并行状态下为12864的数据、命令选择端,高电平为数据端,低电平为命令端;
5引脚在串行状态下12864的数据传送端,并行状态下为读写控制端,高电平读,低电平写;
6引脚串行状态下为12864的同步时钟引脚,并行状态下为信号使能端;
15引脚为设置12864为并行还是串行模式,高电平为并行,低电平为串行,在本设计中使用串行模式,低电平有效。
2.2.4TH12864显示
在显示系统中,我们通过主控芯片LM3S811对12864显示模块进行控制,通过12864显示模块对主控芯片的命令进行读取,得到需要显示的数据或者指令,对所需显示的数据进行显示。
12864液晶显示模块的每一个字符分为三个字节进行传送,其串行传送过程如图5所示:
图5TH12864串行连接时序图
串行数据传送分三个字节完成:
第一个字节:
串口控制—格式为11111ABC
A为数据传送方向控制:
H表示数据从LCD到MCU,L表示数据从MCU到LCD
B为数据类型选择:
H表示数据时显示数据,L表示数据是控制指令
C固定为0
第二个字节:
8位数据的低4位—格式为DDDD0000
第三个字节:
8位数据的高4位—DDDD0000
在本设计中使用了如上的串行传送方式,每一个数据分三个字节进行传送,其中第一个字节的前五位与最后一位为固定的1或0,第六位控制数据的传送方向,第七位对传送的数据类型进行选择;
第二个字节开始对具体数据进行传送,首先传送的是数据的高四位,经过第二个字节的传送,就完成了对数据的高四位的传送,第三个字节就对数据的第四位进行了传送,至此,一个完整的数据得以传送成功。
2.2.5TH12864应用实验
使用Disp_HZ函数对每行进行显示,使用for(:
:
)死循环促成每行的迭代显示。
如图6所示:
图6TH12864应用实验效果
TH12864的基本显示程序如下所示:
constunsignedcharh0[]={"
信息学院"
};
constunsignedcharh1[]={"
电信09赵拓"
constunsignedcharh2[]={"
1070209014015"
constunsignedcharh3[]={"
超市储物柜的设计"
voidmain(void)
{
jtagWait();
//防止JTAG失效,重要!
clockInit();
//时钟初始化:
晶振,6MHz
//初始化指针数组
ptr[0]=h0;
ptr[1]=h1;
ptr[2]=h2;
ptr[3]=h3;
Ini_Lcd();
//初始化液晶
unsignedchartmp;
for(;
;
)
tcnt++;
if(tcnt==0x02)
Disp_HZ(0x80,ptr[0],8);
Disp_HZ(0x90,ptr[1],8);
Disp_HZ(0x88,ptr[2],8);
Disp_HZ(0x98,ptr[3],8);
}
SysCtlDelay(1000*(TheSysClock/3000));
//延时约1000ms
}
3系统软件部分设计
3.1IAR编译环境介绍
IAREmbeddedWorkbenchforARM(简称IAREWARM)是一个针对ARM处理器的集成开发环境。
IAR包含项目管理器、编辑器、C/C++编译器和ARM汇编器、连接器XLINK和支持RTOS的调试工具C-SPY,其C/C++交叉编译器及调试器是今天世界上最完整的和最容易使用的专业嵌入式应用开发工具,在EWARM环境下可以使用C/C++和汇编语言方便地开发嵌入式应用程序,相比其他的ARM开发环境,IAREWARM入门更容易、使用更方便、其代码也更紧凑、编译效率更高、系统库功能也更完善。
IAR从代码编辑、工程建立到C/C++编译、连接和调试可以是一套完整的集成开发,由于其和各种仿真器、调试器紧密结合,用户在开发和调试时能仅仅使用一种开发环境就可以完成多种微控制器的研发。
IAREWARM集成的编译器的主要特征如下[4]:
•高效的PROMable代码,完全标准的C语言兼容;
•内含对应芯片的程序速度和大小优化器;
•版本控制和扩展工具支持良好;
•便捷的中断处理和模拟特性;
•工程中的相对路径支持。
介于IAR的上述特性以及C语言具有广泛的库程序支持,编译执行效率高,支持工具也比较多较成熟,其在嵌入式系统中有广泛的运用,具有通用性强,较强可维护性,可移植性程度高,执行效率高等优点,本次设计决定采用C语言编程4*4键盘扫描模块和TH12864显示模块。
3.2IAR编译环境的安装
由于IAREWARM的试用版有30天功能无限制版本、32K代码限制版本,32K代码限制版的优点是在使用时间上无限制,而我的设计从开始到结束30天不够,功能无限制版使用不便,我的程序32K内足够了,所以我在IAR公司的官网注册下载的就是32K代码限制版,在IAR公司官网获得了其序列码和KEY后就可以安装了。
下载完成IAR安装软件EWARM-KS-CD-6307后,双击进入在安装页面中,点击InstallIAREmbeddedworkbench开始安装,接下来输入刚才在IAR官网获得的试用版序列号和密钥KEY完成IAR安装,接下来还得要安装IAR的工程文件库Stellarisware的软件SW-LM3S-8555以完成编译环境的安装。
IAR编译环境安装完成后还得要安装M3-LINK的虚拟串口驱动程序,安装虚拟串口驱动程序后电脑才能识别仿真器,以完成烧写与仿真器相连接的EEPROM,方法为:
首先将LM3S811最小系统板和仿真器连接,然后与电脑连接,之后电脑会出现新硬件安装向导,选择手动安装以打开德州仪器光盘中的USB仿真器驱动,选择并安装。
由于仿真器是双虚拟串口,因此电脑还会提示安装新硬件,重复以上步骤,直到不再提醒。
IAR开发环境的安装如下图8所示:
图8IAR开发环境的安装
3.3IAR编译环境下LM3S811最小系统版的程序调试
3.3.1IAR工程文件的创建与设置
IAR工程文件的创建:
*创建一个工程文件目录,用来存放工作区文件、工程文件及程序源文件;
*启动IAREWARM,点击“project”,选择“Creatnewproject”,选择默认的ARM和Emptyproject,创建一个基于ARM的空项目,保存项目文件;
*右击项目名称,点击“add”,选择“addgroup”,在弹出的addgroup对话框中输入文件组的名称lib、src、startup,用于存放不同类型的源文件;
*右击文件组名称,点击“add”,选择“addfiles”,添加所需文件以及源程序的源文件,比如lib文件组中的driverlib.a,是任何一个项目中都必不可少的,另外在startup文件组下的startup_ewarm.c也是必不可少的;
IAR项目属性的设置:
☆点击GeneralOptions选项,在Target选项下,点击Device,在右侧选择TexasInsrumentsLM3S811;
☆点击Preprocessor选项卡,添加Include文件目录,在此我将StellarisWare文件夹下的全部子文件夹都包括了进来;
☆在Output选项卡中,勾选Generaladditionaloutput,在outputformat里选择binary,再勾选overridedefault,这样在编译时会自动生成工程二进制文件.bin,方便下载;
☆在Linker选项卡中勾选overridedefault,再选择添加文件LM3S811.icf。
在List选项中选择generatelinkermapfile,便于生成MAP文件;
☆在Debugger选项卡中,在setup里的driver选项选择LMFTDI;
在download下勾选verifydownload和useflashload;
☆在LMIFTDI选项卡中,在Interface下选择JTAG,在JTAG里选择100KHz。
IAR项目属性的设置如下图9所示:
图9IAR项目属性的设置
3.3.2LM3S811最小系统版的程序调试
我使用了LM3S811的GPIO口控制LED闪烁发光的简单例程来测试系统版是否可用以及是否能正常下载烧写程序,只要将LM3S811最小系统版的LED1灯处即JP1跳线连接到PE1,程序下载进去后,LED1灯能亮2秒熄1秒即可判定下载成功且开发板可用。
PE1口控制LED1灯分三步走:
1)调用函数SysCtlPeriEnable()使能LED所在的GPIO模块;
2)调用函数GPIOPinTypeOut()配置LED所在的GPIO管脚为推挽输出;
3)调用函数GPIOPinWrite()对LED所在的GPIO管脚写0和写1来控制LED的亮灭,并在中间插入函数SysCtlDelay()进行延时控制,以达到闪烁发光的效果。
测试用程序清