本科毕业设计基于单片机的遥控密码锁设计.doc

上传人:文库蛋蛋多 文档编号:3945282 上传时间:2023-03-28 格式:DOC 页数:41 大小:4.19MB
返回 下载 相关 举报
本科毕业设计基于单片机的遥控密码锁设计.doc_第1页
第1页 / 共41页
本科毕业设计基于单片机的遥控密码锁设计.doc_第2页
第2页 / 共41页
本科毕业设计基于单片机的遥控密码锁设计.doc_第3页
第3页 / 共41页
本科毕业设计基于单片机的遥控密码锁设计.doc_第4页
第4页 / 共41页
本科毕业设计基于单片机的遥控密码锁设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《本科毕业设计基于单片机的遥控密码锁设计.doc》由会员分享,可在线阅读,更多相关《本科毕业设计基于单片机的遥控密码锁设计.doc(41页珍藏版)》请在三一办公上搜索。

1、本科毕业设计基于单片机的遥控密码锁设计摘 要红外遥控密码锁是一种以高强度密码序列为基础,在单片机上实现的密码开关。它以红外光作为信息媒体,从而实现了遥遥控。该锁具有使用方便、操作简单、价格低廉等特点,给人们的生活带来了极大方便,特别高辐射区、高传染区等。本次设计的题目是基于单片机的红外遥控密码锁设计。该设计包括红外发射模块、红外接收模块和单片机处理模块。该文详细的阐述了各模块的设计与编程,该遥控密码锁能实现密码输入、密码修改、上锁、开锁以及超次锁定功能。为了防止遥控器失窃,非法人员多次试探尝试打开遥控锁,该系统还增加了错误报警功能,输入密码错误三次以后,蜂鸣器会持续鸣叫进行报警。软件部分用C语

2、言进行编程,采用模块化设计思想。发射模块主要包括矩阵键盘、红外编码与调制部分。其中红外发射使用红外发光二极管,调制部分采用38kHz的脉冲调制,矩阵键盘使用44矩阵。接受部分通过红外接收头接、放大和解调接收到的红外波,该接受头内部电路包括红外检测二极管、放大器、限幅器、带通滤波器、积分电路和比较器等。使用单片机的内部存储器进行密码存储。关键词:单片机 红外线 遥控 密码锁The Device of Infrared Electronic Lock in Code Based on single chip DeviceWu Guanhui(College of Engineering, Sout

3、h China Agricultural University Guangzhou 510640, China)Abstract:Infrared remote control coded lock is a high-intensity password sequence based on single chip microcomputer implementation code switch. The lock is easy to use, simple operation, low cost and so on.It has brought great convenience to p

4、eoples life, especially high radiative zone and high transmission area.The topic of this design is based on single chip microcomputer infrared remote control coded lock design. The design includes infrared emission module, the infrared receiving module and single-chip microcomputer processing module

5、. This paper detailed expounds the module design and programming, the remote control can realize combination lock password, password modification, lock, unlock and super lock function. In order to prevent the remote control theft, illegal personnel many times testing attempts to open the remote cont

6、rol lock, the system also increases the error alarm function, input wrong password 3 times, buzzer will continue to call for the police. Software part in C language programming, using modular design thought. Launch module mainly includes matrix keyboard, the infrared coding and modulation. Which use

7、 infrared light-emitting diodes, infrared launch modulation part on 38 kHz pulse modulation, using a 4x4 matrix keyboard matrix. Acceptance part through the infrared sensor, amplification and demodulating the received infrared wave, the accept header internal circuit including the infrared ray detec

8、tion diode, limiter, band pass filter, amplifier, comparator and integral circuit. It uses SCMs internal storage for password.Key words:single chip infrared ray remote control coded lock 目 录1 前言11.1 课题的研究背景11.2 红外通信基本原理12 系统设计22.1 红外遥控发射系统组成及工作原理22.2 红外遥控接收系统组成及工作原理33 方案选择和论证33.1 红外发射模块33.2 红外接收模块43

9、.3 单片机最小系统模块53.4 报警模块63.5 液晶显示模块63.6 键盘矩阵模块74 硬件设计流程74.1 单片机最小系统电路74.2 报警电路84.3 红外发射电路84.4 红外接收电路84.5 液晶显示器95 软件设计流程95.1 Keil uVision3软件简介95.2 红外发射模块编码105.2.1 红外遥控编码思想105.2.2 软件程序资源分配125.3 程序设计子模块分析125.3.1 键盘扫描模块135.3.2 红外编码模块155.3.3 时间波形设计模块165.3.4 红外发射模块175.3.5 接收解码模块186 硬件的实现与测试206.1 硬件制作206.2 硬件

10、测试206.3 硬件调试结果207 结论23参考文献24附录A 接收模块原理图25附录B 发送模块原理图26附录C 仿真图27附录D 主要代码28致谢35华南农业大学本科生毕业设计成绩评定表1 前言1.1 课题的研究背景电子技术的飞速发展,给古老的锁具生产带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批如声控锁、磁控锁、密码锁、遥控锁,指纹锁等先进的锁具。本设计是利用红外传输为途径,方便远距离开锁,不用像传统锁那样一定要将钥匙插进锁里才能开启。该设计能实现密码输入、密码修改、上锁、开锁以及超次锁定功能。为了防止遥控器失窃,非法人员多次试探尝试打开遥控锁,该系统还增加了错误报警功能

11、,输入密码错误三次以后,蜂鸣器会持续鸣叫进行报警。该设计具有使用方便、操作简单、价格低廉等特点,特别适用于那些正常人体不宜接近的特殊场所,比如高辐射区、高传染区等。1.2 红外通信基本原理红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原理。红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而

12、低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法,脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本

13、设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图1所示。图1 PPM调制波形图载波信号的频率f=38kHz,载波周期T=26.32s,本设计使用单片机软件产生载波,脉冲宽度t1=10T=260s,二进制数0的脉冲串周期t2=500s,二进制数1的脉冲串周期t3=1000s。普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为816个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于

14、异步串行通信的帧结构,每帧由一个起始位(二进制数0)、8个数据位和2个停止位(二进制数1)构成,如图2所示。每帧传送1个字节的数据,帧与帧间隔大于2ms,帧结构不含地址信息,寻址问题由高层协议解决。图2 数据帧结构示意图由于红外光存在反射,在全双工的方式下发送的信号也可能会被本身接收,因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进行的。2 系统设计2.1 红外遥控发射系统组成及工作原理红外发射系统硬件部分由红外发射电路、键盘矩阵电路、复位电路、晶振电路和指示灯电路组成。其结构框图如图3所示。4*4键盘复位晶振STC89C52电源红外发射指示灯红外发射电路图3 红外遥控发射

15、框图该红外遥控发射系统采用软件编码方式,取代传统的专用芯片编码。键盘输入信息通过I/O口传送到单片机系统,单片机内部按照NEC编码协议,将键值信息进行编码,并经38kHz载波调制,将调制之后的信息由红外发射电路发射出去。2.2 红外遥控接收系统组成及工作原理红外发射系统硬件部分由红外接收电路、复位电路、晶振电路、液晶显示电路、报警电路和指示灯电路组成。其结构框图如图4所示。stc89c52晶振复位红外接收电源LCD显示开锁指示灯报警器图4 红外遥控接收框图通过I/O口接收红外发射系统发送的信息并传送到单片机内部,单片机内部按照NEC编码协议,将接收到的信息进行解码,并通过液晶显示。3 方案选择

16、和论证3.1 红外发射模块方案一:专用芯片解决方案。专用红外编码芯片种类很多,如日本三菱公司的M50426APPT2262、BL9148、ZD6631等,此类芯片一般集载波振荡、编码、发射于一体,具有很强的抗干扰能力,外围电路简单,使用很方便,而且价格很低。通用的遥控器上大多使用此类专用芯片。但是,专用芯片也有致命的弱点:专用芯片的应用灵活性很差,其内部编码已经固定,无法修改内部数据,不适用经常需要改动传送数据的场所;专用芯片几乎都是面向指令型的编码遥控方式,传输效率较低;大多数的专用芯片的内部编码及技术数据已经公诸于世,会产生安全漏洞。方案二:微处理器单独解决方案。电路如图5所示。图5 软件

17、编码发射电路该方案使用微处理器的I/O口直接产生38kHz已调波,驱动红外发光二极管,发射红外数据。38kHz方波由CPU的定时器产生或由软件编程产生。 红外编码工作由软件完成,因此,红外编码方案可以任意设计,外部只需配接非常简单的硬件电路,大大降低了了电路的复杂性,有利于降低成本,减小遥控器的体积。 由于使用软件编码方案,占用了CPU的一定的时间,CPU处理速度 受到一定的影响,但是,对于遥控器这一类功能比较单一的系统来说,处理任务比较少,根本影响不了CPU的处理效率,仅仅是增加了软件编程的负担。 经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,仅仅是增加了软件的编程负担,使

18、得红外编码非常灵活,所以采用该方案。3.2 红外接收模块方案一:分立元件解决方案,电路如图6所示。图6 低电压红外接收电路图中RD1为红外接收管;R3、R4,VT1构成反相放大器;VT2、R5、C2构成滤波器,滤掉38kHz的高频载波;R6、R7、VT3构成整形电路。将滤波后的波形处理为较好的方波;C1、C3为耦合电容;R2为限流电阻,当接收到较强的信号是保护VT1(陈汝全,2004)。该方案最大的优点是供电电压比较低,可用两节电池3V电压供电。 但是,由于电路使用分立元件构成,其稳定性和抗干扰能力不高,影响红外数据传输的准确性。 方案二:集成电路解决方案,电路如图7所示。 该方案使用一体化红

19、外接收器,集红外接收和放大于一体,不需任何外接元件,就能完成从红外接收到输出与TTL电平兼容的所有工作,而体积和普通的塑封三极管大小一样。图7 SM0038接收电路3.3 单片机最小系统模块方案一:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O

20、口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位 定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口(David Calcutt et al,2004)。另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选(李叶紫等,2004)。方案二:AT89S52是一个低功耗,高性能CMOS

21、 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。另外,AT89S52支持ISP下载,并且可以通过AT89S52系统板预留ISP下载接口,实现在线烧写程序。综合比较上述两种方案,单片机最小系统模块应采用STC89C52。3.4

22、报警模块(1)普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点。但是发光二极管发光强度小,难以引起注意,用于报警功能,显得不适合。(2)蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,应用于电子产品中作发声器件。采用无源蜂鸣器实现,只要编写相应的程序即可实现发出不同频率的声音。蜂鸣器所使用的报警频率为单片机内部提供,不需外部提供时钟频率。因此,减少外围设备元件。综合上述比较,我们的设计采用二者的结合,我们采用蜂鸣器做报警器,在三次输入密码不正确后,蜂鸣器就会响;而发光二极管,我们则是利用它来进行判断输入的密码是否正确。3.5 液晶显示模块方案一

23、:数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。使数码管正常显示就得有驱动电路驱动相应的段码,数码管现实方式可分为静态显示和动态显示,静态显示方式只适合显示单个的数字,因此设计应采用动态显示方式。由于动态显示方式利用人眼视觉暂留的特性,扫描的时间应不大于20毫秒,占用系统资源大,而且显示的个数和字型有限,在本设计中不易采用。方案二:1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点型液晶模块 它有若干个57或者511等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了

24、字符间距和行间距的作用。1602的驱动电路带有11条指令,可以很方便的控制液晶的现实效果如:清屏、左移右移、光标显示。而且1602显示的字符在下一条指令为到来之前不会改变,也就是能够维持显示的字符,1602液晶占用的系统资源也少。综合比较上述两种方案,应采用1602液晶组成本设计的显示模块。3.6 键盘矩阵模块STC89C52单片机P2引脚外接44矩阵键盘,按键有09,还有回格键、清屏、设初始密码、修改密码等按键。开机后液晶屏显示提示语,按数字键即可输入密码,按修改密码键,在正确输入旧密码的前提下,即可修改密码。4 硬件设计流程本设计为红外遥控密码锁,硬件部分总共分为以下几个模块:4.1 单片

25、机最小系统电路单片机最小系统电路原理图如图8所示。图8 单片机最小系统电路4.2 报警电路报警电路原理图如图9所示。图9 报警模块电路4.3 红外发射电路红外发射电路原理图如图10所示。图10 红外发送电路4.4 红外接收电路红外接收模块原理图如图11所示。图11 红外接收电路4.5 液晶显示器液晶显示屏的引脚图如图12所示。图12 液晶显示屏引脚图5 软件设计流程系统的软件设计才用C语言,对单片机进行编程实现各项功能。在软件设计过程中,采用模块化设计思想,利用“化整为零”、“化零为整”的方法,分别设计各个子模块的流程图,然后按照流程图去编写对应程序,并在此过程中,分模块进行编译与调试。5.1

26、 Keil uVision3软件简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,其中uVision与Ishell分别是C51 f

27、or Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中(王为青等,2007)。5.2 红外发射模块编码在发射模块编码过程中,一定要严格按照

28、NEC协议的标准进行设计。因此,在编码之前,必须理解并掌握NEC编解码的定义。5.2.1 红外遥控编码思想遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理, 我们使用的超薄型红外线遥控器使用的就是6121 编码。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表

29、示二进制的“1”, 其波形如图13所示。图13 数据波形编码上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰,如我们可以同时使用电视机、机顶盒、功放等遥控器,但它们不会产生误触发。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G 最多额128种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32位二进制码,

30、周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间。如下图14所示。图14 遥控编码波形当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向。1、位定义

31、如图15所示。图15 “0”码编码波形2、单发代码格式 如图16所示。图16 32位码编码波形3、连发代码格式 如图17所示。图17 重复码编码波形由于本设计中,我们需要自己设计并制作红外遥控系统,并在编码中使用NEC协议。5.2.2 软件程序资源分配在程序开始以前,首先要根据电路及设计的需要进行必要的位定义变量、无符号变量、符号变量以及数据表格变量。1、位定义变量本设计中位定义变量共有多个,包括按键、红外发射端口、红外指示灯的位定义变量以及各种功能标志位。特殊定义函数,如键盘扫描函数uchar key(),红外发射函数void send_hw(uchar c),发射引导码函数void sen

32、d_star(),数据编码函数void send_char(uchar c)等。2、无字符局部变量及全局变量根据在程序中设计到的全局变量,都会在.h头文件里予以声明,可以同时赋初值,若没有赋初值则程序自动赋0。本程序中设计到的全局变量包括时间变量、按键标志变量、地址变量、显示标志变量、红外收发标志变量等。bit hw; /红外发射标志位bit key_bit; /按键重复标记sbit led=P37; /这是红外指示灯的位定义sbit out=P36; /这是红外数据发射端口的位定义#define port P2 /这是键盘按键的接口定义5.3 程序设计子模块分析键盘实际上是一组按键开关的集合

33、,在键的闭合和断开过程中,会产生抖动,抖动时间长短和开关的机械特性有关。键的闭合与断开,反映在行线输出电压上就是呈现高电平或低电平。为准确判定按键的位置,我们必须消除抖动期的影响(马忠梅等,2003)。常用软件的方法来消除按键抖动。其基本思想就是:在第一次检测到有键按下时,该键所对应的行线为低电平,执行一段1ms的延时子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有按键按下。当按键松开时,行线的低电平变为高电平,执行一段1ms的延时子程序,检测该行线为高电平,说明按键确实已经松开(李明喜,2004)。采取以上方法,即可消除抖动的影响,延时消抖程序如下。void dela

34、y() /1ms 误差 -0.651041666667sunsigned char a,b;for(b=102;b0;b-)for(a=3;a0;a-);5.3.1 键盘扫描模块本设计中采用了44矩阵键盘。其工作原理为:按建设在行、列线交点上。行线经过上拉电阻接到+5V上。无键按下时,行线处于高电平状态;当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。按键的识别方法:1、扫描法第一步,首先要识别有无键按下。将所有的列线均置为0电平,然后检查各行线电平是否都为高电平,如果不全为高电平,则有键按下,否则说明无键按下。此时也只能判定按键的所在行。第二步,识别出按键的具体位置用扫描法。在

35、某一时刻,只让一条列线处于低电平,其余所有列线处于高电平。以此类推,若此过程中,有行线电平由高电平变成低电平,则该时刻的列线即为按键所在列。由此,可以判断出按下的按键具体位置。2、线反转法第一步,让行线编程为输入线,列线编程为输出线,并使输出线输出电平全为低电平,则行线中电平由高变低的所在行为按键所在行。第二步,再把行线编程列为输出线,列线编程为输入线,并使输出线输出电平为全低电平,则列线中电平由高变低所在列为按键所在列。由此,便可识别出按键的具体位置(王建校等,2002)。尽管在实际应用中,两种方法都可行,但是扫描法要逐列扫描查询,当被按下的键处于最后一列时,则要经过多次扫描才能最后获得此按

36、键所处的行列值。而线反转法很简单,无论被按键是处于第一列还是最后一列,均只需经过两步便能获得此按键所在的行列值。故在本次设计中,我采用了线反转法。键盘工作方式有三种,即编程扫描、定时扫描和中断扫描。1、编程扫描方式:这种方式只有当单片机空闲时,才调用键盘扫描子程序,反复扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。2、定时扫描方式:单片机对键盘的扫描也可以采用定时扫描方式,即每隔一定的时间对键盘进行扫描一次。在这种方式中,通常利用单片机内的定时器产生10ms的定时中断,单片机响应定时器溢出中断请求,对键盘进行扫描。3、中断扫描方式:为进一步提高单片机扫描键盘的工作效率,可采用

37、中断扫描方式,即只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序。键盘扫描模块程序流程图如下图18所示。开始判断是否有键按下 键键按下延时1ms消抖动是逐行列扫描键值转换键值判断是否有键按下 键键按下结束否是是否图否18 键盘扫描子程序由此流程图可以对应编程,采取反转法进行识别按键具体位置。此程序中先将键盘口赋值0f,或者f0。当先令port=0x0f ,若有按键按下,则可得到此时变化后的port值,并赋值给a;再令port=0xf0,若有按键按下,得到此时变化后的port值。将此时的port值与a取或,即可得到该按键的键值。但此时得到的键值都很大,故将a取反使得键值更简单,其键盘

38、扫描子模块编程如下。uchar key()uchar a;a=0;port=0x0f;a=port;if(a=0x0f) key_bit=1; delay();return 0;if(!key_bit) return 0;delay();if(port=a) port=0xf0;a|=port;a=a;else return 0;5.3.2 红外编码模块采用脉宽调制的串行码,设计过程中,按照NEC协议严格进行编码。其流程图如图19所示。该编码严格按照NEC协议中的规则,用0.56ms的低电平与0.56ms的高电平组合表示“0”,用0.56ms的低电平和1.68ms的高电平组合表示“1”。当一个

39、键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地址码(9ms18ms),高8 位地址码(9ms18ms),8 位数据码(9ms18ms)和这8 位数据的反码(9ms18ms)组成。如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向)(董继成,2004)。图19 编码流程图发射部分与接收的软件功能几乎相同,不同之处就是一个发射一个是接收。发射部分的功能实际就是接收部分的无线键盘。5.3.

40、3 时间波形设计模块在中断延时程序,由time值的改变来控制不同长度波形的产生和调制。void Timer0Interrupt(void) interrupt 1if(time) time-,over=0;else over=1,hw=0;if(hw) out=out;else out=1;通过time值的改变分别来发射9ms的38kHz方波、4.5ms的高电平, 0.565ms的38kHz方波与1.685ms的高电平或者0.565ms的高电平等。在红外数据调制过程中,在相应的高电平时间里发送38kHz的方波,在低电平时间不发射调制波,只是延时对应的低电平时间。这样就达到了调制的目的。在接收解

41、码时,有脉冲为低电平,无脉冲为高电平,这样就实现了码形的恢复。然后根据波形长度的不同,来判断它是引导码,还是“0”码或者“1”码。5.3.4 红外发射模块设计中,发射模块启用了多种子模块,发射模块流程图如下图20。是是是否开始从数据缓冲区取一字节数据区提取从高位开始取一位数是“0”码调数据位1发射模块调数据位0发射模块发完8位数修改数据缓冲区指针数据发射完否返回否否发射引导码码图20 发射模块流程图在该模块中,由send_star()函数来发射引导码,由send_char()函数来发射经38kHz载波调制的地址码和数据码即键值码。send_star()函数中通过time值的设定,进入中断,执行

42、Timer0Interrupt(void) interrupt 1函数借以产生调制键值。void send_hw(uchar c)key_bit=0;send_star();send_char(addr0);send_char(addr1);send_char(c);send_char(c);其中addr0、addr1是16位地址码,用以区分发射红外遥控编码的不同设备。红外接收器接收到红外发光管的信号后,再单通过单片机的串口通信来实现信号的传输。其中比较难设计的是38kHz二次调制后发射数据,数据由高位开始发射。且当该位为“1”码时调制发射长度为1.685ms的38kHz脉冲;当为“0”码时,

43、调制发射长度为0.565ms的38kHz脉冲(张文峥等,2000)。5.3.5 接收解码模块红外接收解码的关键是如何识别0和1码,我的做法是根据0和1码的高电平宽度不一样的特点来进行识别。进入红外接收程序后先关闭中断。接着的工作是避开9ms高电平、4.5ms的低电平的引导码,并且判断是否干扰信号或者重复信号。正如前面所说,一体化红外接收头的输出端电平跟遥控发射端电平相反。所以只要遥控有键按下单片机就会马上产生中断接收数据。跟在引导码后面的是8位数据码,也就是我们想要的数据,单片机把它接收并保存。当接收完8位的数据时要更换另外一个数据缓冲区,当8位的键码都接收完的时候就意味这一帧的数据已经接收完

44、毕。然后根据接收到的数据码和数据反码是否对应位相反来确定接收的这一帧数据是否正确,最后退出接收解码程序(邱玉春等,2000)。void Int1(void) interrupt 2 using 1uchar dh;uchar k;TR0=0;dh=TH0;TL0=0;TH0=0;TR0=1;if(dh25&dh2&dh6&dh12) k=1;else n=0;if(n) dat=dat1;dat+=k;if(n=25) buffer0=dat,dat=0;if(n=17) buffer1=dat,dat=0;if(n=9) buffer2=dat,dat=0;if(n=1) buffer3=d

45、at,dat=0;n-;if(!n)if(!(buffer2&buffer3) /数据校验 js=1; /接收完成 beep=0;elsebuffer0=0;buffer1=0;6 硬件的实现与测试6.1 硬件制作首先,根据电路原理图购买需要的元器件,如果有些元器件购买不到,则需要选择型号不同性能相似的元器件;然后按照电路原理图在万能板上布局、焊接电路,在焊接过程中要注意的是不要虚焊、短路和区分部分元器件的正负极;最后,初步焊接完成后,检查有没有漏焊并把正极线和地线统一。6.2 硬件测试1、用万用表测试电路有没有短路;2、在通电的时候,检查各个芯片有没有过热的现象;3、检查三极管、二极管和蜂鸣器正负极有没有焊接错误;4、继续检查其余模块确保电路没有问题。6.3 硬件调试结果本设计是红外遥控密码锁,其红外和报警系统是不可视的,因此调试结果主要通过液晶显示器和发光二极管来显示调试结果。情况一:如图21所示。图21 密码锁上电时如图22所示,这是接收模块上电时的提示状态,提示用户输入密码,用户只有正确输入密码以后才能开锁。情况二: 如图22、23所示。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号