基于触屏式电子密码锁的设计_第1页
基于触屏式电子密码锁的设计_第2页
基于触屏式电子密码锁的设计_第3页
基于触屏式电子密码锁的设计_第4页
基于触屏式电子密码锁的设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1基于触摸屏式的电子密码锁设计【摘要】:采用STM32F103RBT6微处理器作为主控制芯片,集合电源、显示、触摸、继电器及蜂鸣器电路设计,给出了实用型电子密码锁的软硬件实现方法,系统具有以下功能:输入修改添加,正确开锁,错误报警等功能,另外,本系统把触摸屏技术和密码锁技术有效的结合在一起,利用ARM片上丰富的资源,以及高效的处理速度,实现了显示美观、反应灵敏、稳定可靠的触屏密码锁。【关键词】:密码锁;STM32F103RBT6;触摸屏1Abstract:UsingSTM32F103RBT6microprocessorasthemaincontrolchip,acollectionofpowersupply,display,touch,relayandbuzzercircuitdesign,givespracticalelectroniclockshardwareandsoftwareimplementation,thesystemhasthefollowingfeatures:inputmodifiedtoadd,correctunlock,falsealarmsandotherfunctions,inaddition,thesystemtolocktouchscreentechnologyandtechnologyeffectivelycombinetheuseoftherichresourcesontheARMchip,aswellasefficientprocessingspeed,achievedabeautiful,responsive,reliabletouchscreenpasswordlock.Keywords:electroniccipherlock;STM32F103RBT6;touchscreen1目录前言.2第1章系统概述.3第1.1节电子密码锁的发展趋势.3第1.2节总体设计思路.3第1.3节系统的介绍.4第2章硬件设计.5第2.1节主控制芯片.5第2.2节触摸屏模块.5第2.3节蜂鸣器,继电器.9第3章软件设计.11第3.1节密码锁部分.11第3.2节触摸屏模块.11第3.3节液晶屏模块.12第4章系统测试.13第4.1节测试方法.13第4.2节测试数据.13结论.15致谢.17附录1:实物照片说明.18附录2:部分源程序.21第0页前言随着现代科学技术的发展,人工智能以逐渐深入人们心目中。通用计算机系统和嵌入式计算机系统成为了实现人工智能的两大途径,而单片机机凭借其微小的体积和低的成本,广泛的运用到日常生活中。同时单片机技术的发展使得生活中很多原本繁琐的工作变得简单快捷如:家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。本课题主要研究给于单片机系统的彩屏电子密码锁,传统门锁的实现从机械锁到转动式密码锁在开锁时都浪费了一大段的时间,即便转动式码盘锁解决了钥匙遗漏的问题但是并没有节省多少时间,然而一种基于单片机技术的电子密码锁只需轻轻按动键盘就能实现开锁,同时能够自动上锁。不管是安全性还是便捷都优越于传统的机械锁。本设计是基于STM32F103RBT6的彩屏触摸按键密码锁,该密码锁运用前言arm芯片,配合2.4寸16位真彩色显示屏以及电阻式触摸屏设计了一个实用型电子密码锁,该密码锁响应速度快,显示美观。不仅完成了课题要求更具有一定的使用价值。第1页第1章系统概述第1.1节电子密码锁的发展趋势在日常和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以枷锁的办法来解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把要是,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具有给人们带来的不便若使用机械式钥匙开锁,为蛮子人们对锁的使用需求,增加其安全性,用密码代替钥匙的密码锁应运而生。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的密码加感应元件,实现了真正的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高,出现了越来越多的电子密码锁。出于安全,方便等方面的需要,许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要与均可成为钥匙的电子信息,组合使用符合信息密码的电子防盗锁获得高度的保密性,如防范森严的金库,需要使用符合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子防潮所获得无穷拓展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可以看出组合使用电子信息是电子密码锁以后的发展趋势。第1.2节总体设计思路电子密码锁是采用单片机技术进行控制一种智能电子设备,该设备能够记录用户设置的密码,识别用户输入的命令。根据这些要求,该课题选择STM32F103RBT6微控制器作为主控芯片,搭配2.4寸触摸彩屏。用户通过电阻式触摸屏输入指令和密码,微控制器检测到这些代码后进行运算,最后执行相应操作,用户密码输入正确则微控制器发出开锁命令有驱动放大电路驱动继电器接通开锁电路,若是密码输入错误多次则被判定不合第2页法用户,发出警报。在输入的同时彩屏显示输入状态,提示用户下一步操作。电源采用5V供电一部分供给报警电路一部分供给开锁电路,同时经过线性稳压器稳压成3.3V供给微控制器工作电源。第1.3节系统的介绍本文设计的电子密码锁包括LCD触摸彩屏、电源、处理器、蜂鸣器、继电器。电源分别与触摸屏、存储器、处理器连接,提供各部分所需要的电能;处理器与存储器、触摸屏分别连接,相互之间进行数据的传输。为了更方便直观的进行密码输入操作。增加了一个能够报警提示的蜂鸣器,将用在密码输入出错的报警上。触摸屏采用HSDTFT真彩液晶再加上AD7843的电阻式触摸屏。而密码锁采用现实在触摸屏上的4*4的矩阵键盘,密码存储于芯片中。触摸屏的上半部分作为密码的显示以及输入错对的提示,而下半部分为4*4密码键盘。屏幕的最上方是LOG个人信息。密码锁首次加电会自动设置一个初始密码888888,密码锁平时处于待机关锁状态在待机状态下,用户在键盘上按数字键,密码锁认为用户开始输入开锁密码,并自动记录数值,待用户在键盘上按确认键后,密码锁开始比较用户密码是否正确,如果密码正确,给继电器线圈加电,表示开锁,如果密码错误,蜂鸣器报警并提示用户重新输入正确的开锁密码,如果连续三次开锁密码错误,用户将需等待一段时间才能进行输入操作。用户在键盘上按修改按钮,在显示器提示输入旧的密码,输入旧的密码后,按确定按钮,如果旧密码错误,蜂鸣器报警,返回待机状态,如旧密码正确,在显示器提示输入新的密码,输入新的密码后按确定按钮,在显示器提示再次输入新的密码,再次输入新的密码后按确定按钮,如果两次输入的新密码一致,在显示器提示修改密码成功,否则蜂鸣器报警,之后均返回待机关锁状态。第3页第2章硬件设计第2.1节主控制芯片2.1.1.STM32F103RBT6我设计的这个电子密码锁采用STM32F103RBT6主控芯片。它的内核为ARM32位Cortex-M3CPU,72MHz,90DMIPS1.25DMIPSMH,单周期乘法和硬件除法,通用增强型,内嵌中断控制器有43个可屏蔽中断通道,采用尾链(tailchaining)技术的中断处理(降至6个CPU周期)。STM32F103RBT6内置128KB的Flash,所以不需要存储芯片。最多内嵌20KB的SRAM,以CPU时钟速度访问(读/写),0等待状态。DMA的介绍:拥有7通道DMA控制器支持的外设,定时器,数模转换器,SPI接口,i2c接口,USART接口等拥有DEBUG模式拥有串行线debug(SWD)和JTAG接口STM32F103RBT6有80个快速I/O端口32/49/805V-tolerantI/Os不可中断的读/修改/写操作16个外部中断向量全可映射,7个定时器三个16位定时器,每个有4个IC/OC/PWM或脉冲计数器6通道16位先进控制定时器:多达6个PWM输出死区时间生成和急停2个16位监视定时器(IndependentandWindow)SysTick定时器:24位递减计数器STM32F103RBT6多达9个通信接口多达2个IC接口(支持SMBus/PMBus)多达3个USART(ISO7816接口,LIN,红外线功能,调制解调器控制)2个SPI接口(18Mbit/s)CAN接口(2.0BActive)USB2.0全速接口第2.2节触摸屏模块2.2.1.电阻式触摸屏ADS7843我的设计采用的是ADS7843电阻式触摸屏,它是一个内置12位模数转换、低导通电阻模拟开关的串行接口芯片4。供电电压为2.75V,参考电压VREF为1V+VCC,第4页转换电压的输入范围为0VREF,最高转换速率为125kHz,此触摸屏能够良好的实现我设计的需要。以下是ADS7843的引脚图及引脚功能说明。ADS7843的引脚配置如图2-1所示。表2-1为引脚功能说明,图2-2为典型应用。图2-1aDS7843引脚说明表2-1引脚功能说明表图2-2典型应用第5页2.2.2.ADS7843的内部结构及参考电压模式选择ADS7843之所以能实现对触摸屏的控制,是因为其内部结构很容易实现电极电压的切换,并能进行快速A/D转换。图2-3所示为其内部结构,A2A0和SER/为控制寄存器中的控制位,用来进行开关切换和参考电压的选择。图2-3ADS7843内部结构图此外,ADS7843支持两种参考电压输入模式:一种是参考电压固定为VREF,另一种采取差动模式,参考电压来自驱动电极。这两种模式分别如图2-4(a)、(b)所示。采用图2-4(b)的差动模式可以消除开关导通压降带来的影响。表2-2为两种参考电压输入模式所对应的内部开关状况。图2-4参考电压输入模式A2A1A0X+Y+IN3IN4-INX开关Y开关+REF-REF001+IN-YOFFON+Y-Y101+IN-XONOFF+X-X010+INGNDOFFOFF+VREFGND110+INGNDOFFOFF+VREFGND表2-2参考电压输入差动模式第6页2.2.3.ADS7843的控制字及数据传输格式ADS7843的控制字如表2-3所列,其中S为数据传输起始标志位,该位必为1。A2A0进行通道选择。Bit(MSB)Bit6Bit5Bit4Bit3Bit2Bit1Bit0SA2A1A0MODESERPD1PD0表2-3ADS7843的控制字MODE用来选择A/D转换的精度,1选择8位,0选择12位。SER/选择参考电压的输入模式(见表2和3)。PD1、PD0选择省电模式:00省电模式允许,在两次A/D转换之间掉电,且中断允许;01同00,只是不允许中断;10保留;11禁止省电模式。为了完成一次电极电压切换和A/D转换,需要先通过串口往ADS7843发送控制字,转换完成后再通过串口读出电压转换值。标准的一次转换需要24个时钟周期,如图2-5所示。由于串口支持双向同时进行传送,并且在一次读数与下一次发控制字之间可以重叠,所以转换速率可以提高到每次16个时钟周期,如图2-6所示。图2-5A/D转换时序(每次转换需24个时钟周期)图2-6A/D转换时序(每次转换需16个时钟周期)第2.3节蜂鸣器,继电器第7页2.3.1.蜂鸣器一)蜂鸣器的介绍1蜂鸣器的作用:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。2蜂鸣器的分类:蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3蜂鸣器的电路图形符号:蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。(二)蜂鸣器的结构原理1压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。如图2-7蜂鸣器电路所示,接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。图2-7蜂鸣器原理图2.3.2.继电器电磁式继电器由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈第8页未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器4是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。继电器的作用是在电路中起着自动调节、安全保护、以弱控强,转换电路等作用。继电器电路如图2-8所示。图2-8继电器原理图第9页第3章软件设计第3.1节密码锁部分系统采用4*4的矩阵式键盘,由0-9这10个数字和锁定,修改,保存,取消,重置等功能键组成。通电后,可直接输入密码。用户在键盘上按数字键,密码锁认为用户开始输入开锁密码,并自动记录数值,待用户在键盘上按确认键后,密码锁开始比较用户密码是否正确。初始密码系统内部flash存有一个6位数组KEY-NUM【8,8,8,8,8,8】用户输入密码后程序将自动调用这个数组经行比较,如果密码正确,给继电器线圈加电,指示灯亮,表示开锁,如果密码错误,声光报警并提示用户重新输入正确的开锁密码,如果连续三次开锁密码错误,密码锁将会被锁定一段时间,同时蜂蜜器一直报警,这段时间系统将会不响应用户的操作。在开锁状态下系统认为该用户是合法用户,这时用户可以在键盘上按修改按钮,这时显示器提示newpasword:这时用户就可以输入新的密码,输完新的六位密码按确定按钮,系统将提示密码被保存并询问是否需要锁定,按下锁定密码锁锁定返回待机状态,此时新的密码将被系统存进flash空间,用于下一次合法用户的认证,之后均返回待机关锁状态。第3.2节触摸屏模块此设计的启动顺序是先对屏幕进行初始化,包括显示屏端口的初始化,设置屏幕的背光等级,然后对地址寄存器赋值,包括X地址,Y地址,一次来确定要操作的地址。当确定了将要操作的地址后,控制寄存器就指向显存操作寄存器,将会写入或者读出此地址的所指向的显存数据。显存数据有16位,分别定义为某一显存上的三原色分量的分布。电阻式触摸屏是一种输入设备,他将触摸区域中触摸点(X,Y)的物理位置转换为代表X坐标和Y坐标的电压读回。下图3-1为触摸模数转换芯片的电路图.第10页图3-1触摸模数转换芯片第3.3节液晶屏模块液晶屏采用16位真彩色2.4寸显示器,该显示器采用并行数据方式,链接到STM32F103RBT6的PA和PB口,通过寄存器写16位点颜色数据实现图形汉字显示,彩屏能够显示通用字符串,软件里带有通用字符数组表,数组表显示为8*16显示,支持函数中直接地址输入。彩屏子程序能够显示16*16、24*24、32*32点阵的汉字,汉字数据采用宋体常规字体通过取模软件输出,导入程序。分别存放于chinese.c中的三个数组。当程序需要显示汉字时在程序中写出汉字所在数组中的位置即可显示该汉字。彩屏坐标定位采用开始点的x、y坐标值,左上角为(0、0)往右往下分别是x和y坐标递增。彩屏字体颜色和底色分别在函数中调用基色数组,子函数会自动写入对应颜色。彩屏图片的写入采用16位真彩色的编码形式,由转换软件将对应像素的图片转换成数据表格,再写入数组中。由图片子程序调用,显示在固定坐标中。系统流程如图3-2所示:第11页GPIO初始化时钟初始化彩屏初始化显示主界面等待触发中断中断服务函数执行开锁程序结束开始图3-2系统流程图结束第12页第4章系统测试第4.1节测试方法4.1.1.密码输入正误的测试随机输入一个六位密码,且每次输入的密码不同,当密码输入正确时,LCD显示器显示“密码正确”,继电器通电工作。当密码输入错误时,显示“密码错误”,继电器不通电。且连续3次错误后,蜂鸣器报警。开锁流程如图4-1所示:开始LCD初始设置为“888888”输入密码密码是否正确LCD上显示“正确”LCD上显示“错误”结束NY图4-1开锁流程图4.1.2.密码修改的测试按下更改键,输入初始密码,按下确认正确后然后可以设置你想要的新密码。设置完成后,点击保存,即可完成密码修改。第4.2节测试数据4.2.1.下面我们将进行一组数据的测试,来验证该密码锁能否完成密码输入判断正误的功能,如表4-1所示:输入次数一二三四五六输入密码888888254712358964147852785214888888第13页现象显示“密码正确”且继电器通电显示“密码错误”显示“密码错误”显示“密码错误”且蜂鸣器报警显示“密码错误”且蜂鸣器报警显示“密码正确”且继电器通电表4-1密码输入正误测试表4.2.2.密码修改的测试设原密码为888888按下更改键,输入初始密码888888输入新密码125800再次输入125800提示密码修改成功按下更改键,输入初始密码100850提示密码输入错误按下更改键,输入初始密码100861提示密码输入错误按下更改键,输入初始密码888888再次输入100860之后输入100860提示密码修改成功经过以上测试证明,我的这个设计,在密码输入与密码修改方面,完成了我预期想要达到的目标。第14页结论本系统采用了STM32F103RBT6处理器,相对于单片机而言内部资源丰富,触摸屏刷新速率更快,功耗更低。在设计过程中,把电子密码锁和触摸屏有效地结合在一起。本系统在小区或者公司的门禁系统中应用广泛8,域传送的键盘相比,用户使用起来只管方便,在十几应用中稳定可靠,且节省资源,达到了预期的效果。但是还有一些不足之处,例如密码的存储方面,掉电后重行上电时,密码会重新默认为888888,并无法保存掉电前所修改的密码,所以,在电源设计和密码的生成的算法上还有待改进,力足完美。第15页参考文献1.丘艳。电子式密码锁。陕西国防工业职业技术学院.西安长河通信有限公司,2010.2.张艳萍,施政.基于触摸屏的电子密码锁设计.南京信息工程大学,2010-07.3.曹建林,孙捷,孙雪怡,任磊,杜康平.电子密码锁设计.成都信息工程学院电子工商学院,2010-04.4.于献权.一种数字化电子密码锁的设计方案.佛山市顺德区美的洗涤电器制造有限公司,2014(4).5.陈阳.基于电子密码锁设计.杨凌职业技术学院,2010(23).6.武红玉.电子密码锁的设计.许昌学院电信学院,2012(5).7.朱传龙.试分析一种数字化电子密码锁的设计方法.江汉大学文理学院,2007-018.朱慧,云乃彰.DDS信号发生器的设计.无锡职业技术学院学报,2012-02.9.张正宜.电子密码锁的设计.山西交通职业技术学院,2007(8).10.张阿梅,电子密码锁,西安外事学院工商院2001,11(7).第16页致谢感谢丁老师的指导以及相关同学的帮助,使我能够顺利的完成此次设计。通过这次毕业设计,我学到了很多关于通讯方面的知识,也领悟到了团队协作的重要性,在和同学的一起学习交流中,收获到了很多意外的想法和思路。第17页附录:中英文文献翻译名称AT89C51的概况第18页附录1:实物照片说明上电开启后输入密码正确后第19页点击更改,输入新密码点击保存后第20页系统原理图第21页PC板图附录2:部分源程序主函数:#includestm32f10x_lib.h#includeLCD_driver.h#includechinese.h#includebutton.h/*宏定义*/#defineLCD_cs(x)x?GPIO_SetBits(GPIOC,LCD_CS):GPIO_ResetBits(GPIOC,LCD_CS)/自己定义的位函数#definepenGPIO_ReadInputDataBit(GPIOB,PEN)/*变量定义-*/GPIO_InitTypeDefGPIO_InitStructure;ErrorStatusHSEStartUpStatus;/*声明函数-*/voidRCC_Configuration(void);第22页voidDelay(vu32nCount);ucharFLAG_KEYDOWN;ucharKEY_NUM;ucharKEY_NUMX;ucharKEY_NUMY;voidGPIO_Config()GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);/把调试设置普通IO口/GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/所有GPIO为同一类型端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/输出的最大频率为50HZGPIO_Init(GPIOA,/初始化GPIOA端口GPIO_Init(GPIOC,/初始化GPIOB端口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,/初始化GPIOB端口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOB,GPIO_Write(GPIOA,0xffff);/将GPIOA16个端口全部置为高电平GPIO_Write(GPIOC,0xffff);/将GPIOC16个端口全部置为高电平第23页voidEXTI_Config(void)EXTI_InitTypeDefEXTI_InitStructure;GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5);/选择PC0作为中断引脚EXTI_InitStructure.EXTI_Line=EXTI_Line5;/PC0andPC1isKEY0+KEY1EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;/中断模式,非事件EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;/下降沿触发EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(/EXTI_ClearITPendingBit(EXTI_Line0|EXTI_Line1);voidNVIC_Config(void)NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/配置2位高优先级(抢占优先级),2位子优先级(响应优先级)NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;/EXTI9_5_IRQn;/;/外部中断线0,1分别对应PC0NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;/io引脚中断抢占优先等级为第二级。NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;/io引脚中断子优先等级为第二级。NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(voidzhujiemian(void)Pant(colors78,colors7);LCD_cs(0);/打开片选使能ChineseChar(24,8,0,colors2,colors7,1);/ChineseChar(24+16,8,0,colors2,colors7,2);/ChineseChar(24+16+16,8,0,colors2,colors7,3);/ChineseChar(24+16+16+16,8,0,colors2,colors7,4);/第24页ChineseChar(24+16+16+16+16,8,0,colors2,colors7,5);/ChineseChar(24+16+16+16+16+16,8,0,colors2,colors7,6);/ChineseChar(24+16+16+16+16+16+16,8,0,colors2,colors7,7);/ChineseChar(24+16+16+16+16+16+16+16,8,0,colors2,colors7,8);/ChineseChar(24+16+16+16+16+16+16+16+16,8,0,colors2,colors7,9);/LCD_ShowString(24+16+16+16+16+16+16+16+16+16,8,colors2,colors7,-);ChineseChar(24+16+16+16+16+16+16+16+16+16+16,8,0,colors2,colors7,10);/ChineseChar(24+16+16+16+16+16+16+16+16+16+16+16,8,0,colors2,colors7,11);/ChineseChar(8,50,1,colors2,colors7,1);ChineseChar(8+24,50,1,colors2,colors7,1);ChineseChar(8+24+24,50,1,colors2,colors7,1);ChineseChar(8+24+24+24,50,1,colors2,colors7,1);ChineseChar(8+24+24+24+24,50,1,colors2,colors7,1);ChineseChar(8+24+24+24+24+24,50,1,colors2,colors7,1);LCD_cs(1);/关闭片选使能pic_play();/*主函数*/intmain(void)SystemInit();GPIO_Config();EXTI_Config();NVIC_Config();LCD_Init();zhujiemian();AD7843();while(1)if(FLAG_KEYDOWN=1)第25页/*延时函数*/voidDelay(vu32nCount)for(;nCount!=0;nCount-);触摸屏:#includestm32f10x_lib.h#includeLCD_driver.h#includechinese.h#includebutton.h/*宏定义*/#definecs(x)x?GPIO_SetBits(GPIOB,CS):GPIO_ResetBits(GPIOB,CS)/自己定义位操作函数#definedin(x)x?GPIO_SetBits(GPIOB,DIN):GPIO_ResetBits(GPIOB,DIN)#definedclk(x)x?GPIO_SetBits(GPIOB,DCLK):GPIO_ResetBits(GPIOB,DCLK)#definebusy(x)x?GPIO_SetBits(GPIOB,BUSY):GPIO_ResetBits(GPIOB,BUSY)#definedoutGPIO_ReadInputDataBit(GPIOB,DOUT)unsignedintTP_X,TP_Y;/#defineCSGPIO_Pin_7/P23;pb7/#defineDINGPIO_Pin_0/P22;pb0/#defineDCLKGPIO_Pin_1/P21;pb1/#defineDOUTGPIO_Pin_2/P20;pb2/#defineBUSYGPIO_Pin_6/P36;pb6/#definePENGPIO_Pin_5/P37;pb5/检测触摸屏响应信号第26页/*voidspistar(void)/SPI开始dclk(0);Delay(20);cs(1);Delay(20);din(1);Delay(20);dclk(1);Delay(20);cs(0);/*voidWriteCharTo7843(unsignedcharnum)/SPI写数据unsignedcharcount=0;dclk(0);Delay(10);for(count=0;countBSRR=VHGPIOA-BRR=(VH)/GPIO_SetBits(GPIOA,VH/GPIO_ResetBits(GPIOA,(VH/LCD_DataPortL=VL;/低位P0口/屏蔽低8位将数据送到PB8-PB15GPIOB-BSRR=(VL)BRR=(VL)8,x1);/设置X坐标位置LCD_Write_COM(0,0x50);LCD_Write_DATA(x18,x1);/开始XLCD_Write_COM(0x00,0x52);LCD_Write_DATA(y18,y1);/开始YLCD_Write_COM(0x00,0x51);LCD_Write_DATA(x28,x2);/结束XLCD_Write_COM(0x00,0x53);LCD_Write_DATA(y28,y2);/结束YLCD_Write_COM(0x00,0x22);/*写汉字子函数*/voidChineseChar(uintx,uinty,intsize,uintFor_color,uintBk_color,charc)inte=0,i,j;inted;uintncols;uintnrows;uintnbytes;uchar*pfont;uchar*pchar;uchar*fonttablif(size=0)ncols=16-1;nrows=16-1;nbytes=32;/每个字取模的字节数=(16*16)/8第33页elseif(size=1)ncols=24-1;nrows=24-1;nbytes=72;/每个字取模的字节数=(24*24)/8elseif(size=2)ncols=32-1;nrows=32-1;nbytes=132;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论