基于51单片机的红外密码锁(设计及测试报告) .doc_第1页
基于51单片机的红外密码锁(设计及测试报告) .doc_第2页
基于51单片机的红外密码锁(设计及测试报告) .doc_第3页
基于51单片机的红外密码锁(设计及测试报告) .doc_第4页
基于51单片机的红外密码锁(设计及测试报告) .doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1 基于基于 5151 单片机的红外密码锁单片机的红外密码锁 (设计及测试报告)(设计及测试报告) 2 目录目录: 第一章第一章 绪论绪论 .3 1.1课题背景及目的.3 1.2 国内外研究现状4 1.3 课题研究方法4 第二章第二章 红外遥控系统介绍红外遥控系统介绍 .5 2.1 红外通讯原理5 2.2.2发射系统.7 2.3 红外编码格式红外编码格式.10 第第 3 3 章章 硬件电路设计硬件电路设计 .12 3.1 整系统框图整系统框图.12 3.23.2 红外发送红外发送/ /接收接收12 3.2.13.2.1 红外遥控器红外遥控器12 3.2.2红外接收头14 3.3 单片机单片机 at89c51 简介简介.16 3.3.1主要特性主要特性16 3.3.2 管脚说明管脚说明.17 3.3.3 震荡特性震荡特性.18 3.3.4 芯片擦除芯片擦除.18 3.4 44 矩阵键盘矩阵键盘19 3.5 复位电路复位电路.19 3.63.6 振荡电路振荡电路19 3.7 1602 液晶显示液晶显示 20 3.8 发光二极管发光二极管 led .24 3.9 继电器继电器.24 3.10 24c0225 3.11 元器件列表元器件列表.32 第四章第四章系统的软件设计系统的软件设计.33 5.1 红外发射编码部分红外发射编码部分.34 5.2 红外接收解码部分红外接收解码部分.34 1 单片机解码过程单片机解码过程.34 2.红外解码程序代码红外解码程序代码.34 5.3 单片机接收终端部分单片机接收终端部分.39 1. 密码的输入与确认密码的输入与确认39 2. 密码的修改密码的修改39 3.矩阵键盘的扫描矩阵键盘的扫描.39 4.iic.39 5.1602液晶显示液晶显示40 6.终端程序部分终端程序部分.40 第五章第五章 设计调试与方案选择设计调试与方案选择 .54 3 5.1 编码的方案选择编码的方案选择.54 5.2 解码的方案选择解码的方案选择.55 5.3 红外接收部分调试红外接收部分调试.55 54 总结总结.56 参考文献参考文献.57 第一章第一章 绪论绪论 1.1课题背景及目的 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务 报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥 匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打 折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越 来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码 锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机 械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无 论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展, 特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁 的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很 高的安全性、可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、ic 卡 辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡, 只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存 在容易机械损坏,ic 卡还存在容易丢失、损坏等特点。加上其成本较高,一定 程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度, 电子密码锁是这类电子防盗产品的主流。 但是接触式密码锁系统都相应的存在着不同的缺点。例如:接触式密码锁 系统成本较低,体积小,卡片本身无须电源,但使用不太方便,而且有接触磨 损。相比之下,红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可 4 以进行近距离遥控,使用十分方便。而且它已经与 pc 机的数据库相结合,可 以组成一套酒店房间的门禁管理系统。 由于红外遥控具有许多优点, 例如红外线发射装置采用红外发光二极管遥 控发射器易于小型化且价格低廉; 采用数字信号编码和二次调制方式,不仅可 以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动 作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度 快、传输效率高、工作稳定可靠等。工业设备中,在高压、辐射、有毒气体、 粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。所 以红外线遥控是目前使用最广泛的一种通信和遥控手段。 在本设计中,红外遥 控密码锁和 pc 机、数据库相结合,能够实现适时的、强大的管理,使得整个 红外遥控系统得到更好的完善。 1.2 国内外研究现状 目前大部分的锁采用的都是机械式的,其最大的缺点是利用简单工具就能 很容易地把锁打开。针对这种情况,我们设计了一种红外遥控密码锁,而一般 设备都采用专用的遥控编码及解码集成电路,其制作简单、容易,但由于特定 功能的限制,只适用于专用的电器产品,其应用范围受到限制。而设计的红外 遥控密码锁系统能提高门禁系统的可靠性和安全性,适应市场需要。该系统具有 普通电子密码锁功能的同时,还增加了遥控功能。该系统具有较强的实际应用价 值,所涉及的技术包括:红外载波数据传输技术、单片机控制技术、红外遥控系统 编码及译码技术、电路设计与演示板制作技术等。 1.3 课题研究方法 主要的设计实施过程:首先,选用 atmel 公司的单片机 at89c51,以及选 购其他电子元器件。第二步,使用 protel99 完成原理图,并设计 pcb 图完成人 工布线(后因 pcb 板损坏决定采用万能板焊接的方法) 。第三步,使用 keil uvision3 软件编写单片机的 c 语言程序、仿真、软件调试。第四部,使用 proteus 软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成 本次设计。 。 5 第二章第二章 红外遥控系统介绍红外遥控系统介绍 2.1 红外通讯原理 红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基 础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基 本原理。 红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一 般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后 发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通 信系统。 红外线是波长在 750nm 至 1mm 之间的电磁波,它的频率高于微波而低于可 见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外 线,波长在 0.75um 至 25um 之间。红外数据协会(irda)成立后,为了保证不 同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所 采用的光波波长的范围限定在 850 至 900nm 之内。 红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信 号(载波信号) ,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实 现信号调制的脉宽调制(pwm)和通过脉冲串之间的时间间隔来实现信号调制的 脉时调制(ppm)两种方法。脉时调制(ppm)是红外数据协会(irda)和国际电 子电工委员会(ieee)都推荐的调制方式,本设计采用 ppm 调制方法,即用两个 脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验 6 的 rs232 通信,首先产生一个同步头,然后接着 8 位数据比特。如图 2.1 所 示。 图 2.1 ppm 调制波形图 普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令 码组成,指令码长度多为 816 个比特,传送多字节遥控协议时效率偏低,而 增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构, 采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数 0) 、8 个 数据位和 2 个停止位(二进制数 1)构成,如图 2.2 所示。每帧传送 1 个字 节的数据,帧与帧间隔大于 2ms,帧结构不含地址信息,寻址问题由高层协议 解决8。 图 2.2 数据帧结构示意图 由于红外光存在反射,在全双工的方式下发送的信号也可能会被本身接收, 因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进 行的。 7 2.22.2 红外遥控系统结构红外遥控系统结构 红外遥控系统主要分为调制、发射和接收三部分,如图 2.3 所示: 图 2.3 2.2.1 调制 红外遥控发射数据时采用调制的方式,即把数据和一定频率的载波进行“与”操 作,这样可以提高发射效率和降低电源 功耗。 调制载波频率一般在 30khz 到 60khz 之间,大多数使用的是 38khz,占空比 1/3 的方波,如图 2.4 所示,这是由发射端所使用的 455khz 晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取 12, 所以 455khz1237.9 khz38khz。 图 2.4 载波波形 2.2.2 发射系统 目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。由 于发射系统一般用电池供电,这就要求芯片 的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作, 8 这样可以降低功耗芯片所用的晶振应该有 足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器, 陶瓷共鸣器准确性没有石英晶体高,但通常 一点误差可以忽略不计。 红外线通过红外发光二极管(led)发射出去,红外发光二极管内部材料和普通 发光二极管不同,在其两端施加一定电压时, 它发出的是红外线而不是可见光。 图 2.5a 简单驱动电路 图 2.5b 射击输出驱动电路 如图 2.5a 和图 2.5b 是 led 的驱动电路,图 3a 是最简单电路, 选用元件时 要注意三极管的开关速度要快,还要考虑到 led 的正向 电流和反向漏电流,一般流过 led 的最大正向电流为 100ma,电流越大,其 发射的波形强度越大。 图 2.5a 电路有一点缺陷,当电池电压下降时,流过 led 的电流会降低,发射 波形强度降低,遥控距离就会变小。图 2.5b 所示的 射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在 1.2v 左右,因此三级管发射极电压固定在 0.6v 左右, 发射极电流 ie 基本不变,根据 ieic,所以流过 led 的电流也基本不变,这 样保证了当电池电压降低时还可以保证一定的遥 9 控距离。 2.2.3 一体化红外接收头 红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。 内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比 较器等。红外监测二极管监测到红外信号, 然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不 论红外发射器和接收器的距离远近。交流 信号进入带通滤波器,带通滤波器可以通过 30khz 到 60khz 的负载波,通过 解调电路和积分电路进入比较器,比较器输出 高低电平,还原出发射端的信号波形。注意输出的高低电平和发射端是反相的, 这样的目的是为了提高接收的灵敏度。 一体化红外接收头,如图 2.6 所示: 图 2.6 红外接收头 红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电 脚,接地和信号输出脚。根据发射端调制 载波的不同应选用相应解调频率的接收头。 本设计选择 hx1383,因为其性价比较高,且易于购得,如图 2.7: 10 图 2.7 红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供 电脚上须加上滤波电容,一般在 22uf 以上。 有的厂家建议在供电脚和电源之间接入 330 欧电阻,进一步降低电源干扰。 2.3 红外编码格式红外编码格式 遥控发射器专用芯片很多,红外遥控的编码目前广泛使用的是:nec protocol 的 pwm(脉冲宽度调制)和 philips rc-5 protocol 的 ppm,本设计基于 nec 协 议。其编码特征如下: 1、8 位地址和 8 位指令长度; 2、地址和命令 2 次传输(确保可靠性) 3、pwm 脉冲位置调制,以发射红外载波的占空比代表“0”和“1” ; 4、载波频率为 38khz; 5、位时间为 1.125ms 或 2.25ms; nec 码的位定义: 一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms(560us 脉冲+1680us 低电平) ,占空比 1/4;一个逻辑 0 的传输 11 需要 1.125ms(560us 脉冲+560us 低电平),占空比 1/2。而遥控接收头 在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收 头端收到的信号为:逻辑 1 应该是 560us 低+1680us 高,逻辑 0 应该是 560us 低+560us 高。 如图 2.8 图 2.8 nec 遥控指令的数据格式为: 同步码头、地址码、地址反码、控制码、控制反码。同步码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制码、控制反 码均是 8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了 增加传输的可靠性(可用于校验) 。如图 2.9 图 2.9 重复码: 一个命令只发送一次,即使遥控器上的按键一直按着。但是会每 110ms 发送一 次代码,直到遥控器按键释放。如图 2.10 12 图 2.10 重复码比较简单:一个 9ms 的 agc 脉冲、2.25ms 间隔、560us 脉冲。如图 2.11 图 2.11 本设计采用网上购买的 lc7641 芯片为内核的小型遥控器作为发送端,其编码基 于 nec 协议。接收端为 hx1383,数据流入 51 单片机解码。 第第 3 3 章章 硬件电路设计硬件电路设计 3.13.1 整系统框图整系统框图 13 at89c51 lcd 继电器 led 44 键盘 复位电路 接收部分系统主要由 at89c51(51 系列)、lcd、继电器、led、44 矩阵键 盘、复位电路等组成。由红外接收头 hx1383 接收信号,数据流入 51 单片机解 码。 发送部分本设计采用网上购买的 lc7641 芯片为内核的小型遥控器作为发 送端,其编码基于 nec 协议。 3.23.2 红外发送红外发送/ /接收接收 3.2.13.2.1 红外遥控器红外遥控器 发送部分本设计采用网上购买的 lc7641 芯片为内核的小型遥控器作为发送端, 其编码基于 nec 协议。 14 图 3-1 1.外型尺寸: 1.1 键数: 1-18 键 1.2 主尺寸:86mm长38mm宽6mm厚 2.材质: 2.1 面贴:0.125mmpet 光面面料 2.2 外壳:abs 料黑色 2.3 电池:cr20253v 2.4 按键弹力:180-230 克力 3.控制角度: 3.1 有效发射角度:30 度 4.控制距离: 4.1 有效距离8m 5.按键寿命测试: 5.1 3 万次以上 遥控器技术参数及标准 项目 单位 测试条件 最小值 标准值 最大值 静态电流 ua 无键按下 5 10 动态电流 ma 键按下时 6 12 发射距离 m 沿光轴方向 8 30 度自选范围 6 工作电压 v 2.2 3 3.5 振荡频率 khz 可定制 455 15 栽波频率 khz 可定制 38khz 红外波长 nm 940 功能键数 18 适用环境温度 -10 25 40 相对温度 rh 40 90 3.2.2红外接收头 图 32 规格:规格:hx1838(hx1838(铁壳铁壳) ) 宽电压适应、低功耗、高灵敏度、优良的抗干扰特性; 应用广泛:家用电器、空调、玩具等红外遥控接收; 极限参数:极限参数: 电源电压 vcc (v) 6.0工作温度 topr () -25 +85 功 耗pd(mw)35储存温度 tstg () -40 +125 16 光电参数:光电参数: (t=25 vcc=5v f0=38khz) 参参 数数符号符号测试条件测试条件mintypemax单单 位位 工作电压 vcc 2.7 5.5 v 接收距离 ll5ir5 if =300ma (测试信号) 10 17 m 载波频率 f0 38k hz 接收角度 1/2 距离衰减 1/2 +/-45 deg bmp 宽度 fbw -3db bandwidth 2 3.3 5khz 静态电流 icc 无信号输入时 - 0.8 1.5 ma 低电平输出 vol vin=0v vcc=5v 0.2 0.4 v 高电平输出 vohvcc=5v 4.5 vcc v tpwl vin=500vp-p 500 600 700 s 输出脉冲 宽 度 tpwh vin=50mvp-p 500 600 700 s :光轴上测试,以宽度为 600/900s 为发射脉冲,在 5cm 之接收范围内,取 50 次接收脉 冲之平均值(参见测试波形) 。 测试波形:测试波形: 17 图 33 电原理框图:电原理框图: 图 3-5 3.3 单片机单片机 at89c51 简介简介 at89c51 是美国 atmel 公司生产的低电压,高性能 cmos8 位单片机, 片内含 4k bytes 的可反复擦写的只读程序存储器(eprom)和 128bytes 的随 机存取数据序存器(ram) ,器件采用 atmel 公司的高密度/非易失性存储技 术生产,兼容标准 mcs-51 指令系统,片内置通用 8 位中央处理器(cpu)和 flash 存储单元,at89c51 单片机为许多嵌入式 控制系统提供了一种灵活行高且价廉的方案。 3.3.1 主要特性主要特性 8031 cpu 与 mcs-51 兼容 4k 字节可编程 flash 存储器(寿命:1000 写/ 擦循环) 全静态工作:0hz-24khz 三级程序存储器保密锁定 128*8 位内部 ram 32 条可编程 i/o 线 18 两个 16 位定时器/计数器 6 个中断源 图 36 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 3.3.2 管脚说明管脚说明 vcc:供电电压。 gnd:接地。 p0 口:p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电流。当 p1 口的管脚第一次写 1 时,被定义为高阻输入。p0 能够用于外部程序数据存 储器,它可以被定义为数据/地址的第八位。在 fiash 编程时,p0 口作为原码 输入口,当 fiash 进行校验时,p0 输出原码,此时 p0 外部必须被拉高。 p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能接 收输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 flash 编程和校验时,p1 口作为第八位地址接收。 p2 口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收, 输出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电阻拉高,且作 为输入。并因此作为输入时,p2 口的管脚被外部拉低,将输出电流。这是由于 内部上拉的缘故。p2 口当用于外部程序存储器或 16 位地址外部数据存储器进 行存取时,p2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势, 当对外部八位地址数据存储器进行读写时,p2 口输出其特殊功能寄存器的内容。 p2 口在 flash 编程和校验时接收高八位地址信号和控制信号。 p3 口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输 入,由于外部下拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘故。 p3 口也可作为 at89c51 的一些特殊功能口,如下表所示: 管脚 备选功能: p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断 0) p3.3 /int1(外部中断 1) 19 p3.4 t0(记时器 0 外部输入) p3.5 t1(记时器 1 外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3 口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高 电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端 以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作 对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储 器时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起作用。另外,该 引脚被略微拉高。如果微处理器在外部执行状态 ale 禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信号将不出现。 /ea/vpp:当/ea 保持低电平时,则在此期间外部程序存储器(0000h- ffffh),不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定 为 reset;当/ea 端保持高电平时,此间内部程序存储器。在 flash 编程期 间,此引脚也用于施加 12v 编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 3.3.3 震荡特性震荡特性 xtal1 和 xtal2 分别为反向放大器的输入和输出。该反向放大器可以配 置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件, xtal2 应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外 部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.3.4 芯片擦除芯片擦除 整个 perom 阵列和三个锁定位的电擦除可通过正确的控制信号组合,并 保持 ale 管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写 “1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,at89c51 设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支 20 持两种软件可选的掉电模式。在闲置模式下,cpu 停止工作。但 ram,定时 器,计数器,串口和中断系统仍在工作。在掉电模式下,保存 ram 的内容并 且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 3.4 44 矩阵键盘矩阵键盘 如图所示,本系统采用 44 矩阵键盘,16 个按键分为输入数字键: 0、 1、2、3、4、5、6、7、8、9;功能键 lock、modify、cel、enter。矩阵键盘。 图 37 3.5 复位电路复位电路 图 38 时钟电路工作后,在 rest 管脚上加两个机器周期的高电平,芯片内部开 始进行初始复位(如图 38) 。 3.63.6 振荡电路振荡电路 21 图 39 本设计晶振选择频率为 12mhz,电容选择 30pf 如图(39)。经计算得单 片机工作胡机器周期为: 12(112m)=1us。 3.7 1602 液晶显示液晶显示 图 3-10 lcd1602 可显示两行英文字符,并且内带 ascii 字符库。lcd1602 模块 内部可以完成显示扫描,单片机只要向 lcd1602 发送命令和显示内容的 ascii 码。 表表 3-1 引脚功能说明引脚功能说明 引引符号符号功能说明功能说明 22 脚脚 1vss一般接地 2vdd接电源(+5v) 3v0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最 高(对比度过高时会产生“鬼影”,可以通过一个 10k 的电位器调整对比度) 。 4rsrs 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 5r/wr/w 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 6ee(或 en)端为使能(enable)端,下降沿使能。 7db0底 4 位三态、 双向数据总线 0 位(最低位) 8db1底 4 位三态、 双向数据总线 1 位 9db2底 4 位三态、 双向数据总线 2 位 10db3底 4 位三态、 双向数据总线 3 位 11db4高 4 位三态、 双向数据总线 4 位 12db5高 4 位三态、 双向数据总线 5 位 13db6高 4 位三态、 双向数据总线 6 位 14db7高 4 位三态、 双向数据总线 7 位(最高位) (也是 busy flag) 15bla背光电源正极 16blk背光 电源负极 图 3.11 lcd1602 引脚图 表表 3-2 寄存器选择控制表寄存器选择控制表 r s r/w操作说明操作说明 00写入指令寄存器(清除屏等) 01读 busy flag(db7) ,以及读取位址计数器(db0db6)值 10写入数据寄存器(显示各字型等) 11从数据寄存器读取数据 23 1602 液晶模块内部的字符发生存储器(cgrom)已经存储了 160 个不 同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的 符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字 母“a”的代码是 01000001b(41h) ,显示时模块把地址 41h 中的点阵字符图 形显示出来,我们就能看到字母“a”。 因为 1602 识别的是 ascii 码,试验可以用 ascii 码直接赋值,在单片 机编程中还可以用字符型常量或变量赋值,如a。 图 3.9 是 1602 的 16 进制 ascii 码值: 读的时候,先读上面那列,再读左边那行,如:感叹号!的 ascii 为 0x21,字母 b 的 ascii 为 0x42(前面加 0x 表示十六进制) 。 图 3.12 1602 的 16 进制 ascii 码值 表表 3-3 显示地址显示地址 12345678910111213141516 00 h 01 h 02 h 03 h 04 h 05 h 06 h 07 h 08 h 09 h 0a h 0b h 0c h 0d h 0e h 0f h 40 h 41 h 42 h 43 h 44 h 45 h 46 h 47 h 48 h 49 h 4a h 4b h 4c h 4d h 4e h 4f h 24 指令集 1602 通过 d0d7 的 8 位数据端传输数据和指令。 显示模式设置: (初始化) 0011 0000 0x38 设置 162 显示,57 点阵,8 位数据接口; 显示开关及光标设置: (初始化) 0000 1dcb d 显示(1 有效)、c 光标显示(1 有效)、b 光标闪烁(1 有效) 0000 01ns n=1(读或写一个字符后地址指针加 1 / 红外接收数据线 /- / 外部变量声明 /- extern uchar ch; / 红外原码数据存放单元 extern bit intx0f; / 初始为 0;为 1 表示响应外 0 中断 extern bit irvalidf; / 红外解码解码有效标志位,为 1 表示有效 /- / 外部函数声明 /- extern void delay_1ms (unsigned char t);/ 时基为 1ms 的延时 extern void delay_882us(void); / 时基为 882us 的延时 extern void decoder (void); / 遥控解码 extern void intx0_isr (void); / 外 0 中断服务程序,接收到红外信号(下 降沿)响应中断 #endif /红外接收子程序 /说明:单片机使用晶振为 12mhz #include #include #include “remote.h“ /- / 全局变量:内 ram 存储单元定义 /- uchar ch; / 红外原码数据存放单元 /- / 全局变量:内 ram 位定义 /- bit intx0f; / 初始为 0;为 1 表示响应外 0 中断 bit irvalidf; / 红外解码解码有效标志位,为 1 表示有 效 /- / 功能程序区 /- /- / void delay_1ms (unsigned char t) /- / 函数功能: 时基为 1ms 的延时 / 例子提示: 调用 delay_1ms(20),得到 20ms 延时 / 入口参数: 无符号 8bit 整数 / 返回参数: 无 / 全局变量: 无 37 / 调用模块: 无 / 注意事项: 基于使用外 12mhz 晶振的标准 8051(如 at89s51)单片机 /* 令 x=165,y=2,n=1,则延时时间 =3y+(n+2)xy+3*t+5t=(999t+5)t 单位: 1sysclk sysclk=12mhz 误差 delay_1ms(1):延时 1 004 1.004ms 4us delay_1ms(2):延时 2 003 2.003ms 3us delay_1ms(3):延时 3 002 3.002ms 2us delay_1ms(5):延时 5 000 5.000ms 0us delay_1ms(10):延时 9 995 9.995ms 5us delay_1ms(20):延时 19 985 19.985ms 15us delay_1ms(40):延时 39 965 39.965ms 35us delay_1ms(60):延时 59 945 59.945ms 55us delay_1ms(100):延时 99 905 99.905ms 95us delay_1ms(200):延时 199 805 199.805ms 195us delay_1ms(255):延时 254 750 254.750ms 250us */ /- void delay_1ms (unsigned char t) unsigned char i,j; do j = 2; do i = 165; do _nop_(); while (-i); while (-j); while (-t); /- / void delay_882us (void) /- / / 函数功能: 时基为 882us 的延时 / 入口参数: 无 / 返回参数: 无 / 全局变量: 无 / 调用模块: 无 / 注意事项: 延时时间为 881us,误差为 1us /- 38 void delay_882us (void) uchar i,j; for (i=20; i0; i-) for(j=20; j0; j-) ; for (i=5; i0; i-) _nop_(); /- / void decoder (void) /- / / 函数功能: 遥控解码 / 入口参数: 无 / 返回参数: 无 / 全局变量: irvalidf:红外解码有效标志位,为 1 表示有效 / ch:红外原码数据存放单元 / 调用模块: delay_882us();delay_1ms(unsigned char) / 注意事项: /- void decoder (void) uchar i,j; uchar tmp2; / tmp0:暂存原码数据;tmp1:暂存反码 数据 irvalidf = 1; / 先设红外解码有效 for (i=0; i= 1; / 先接收低位数据 if (hongwai) / 若该信号为高电平,则延时 1ms 等 待高电平结束 delay_1ms(1); / 延时 1ms tmpi = tmpi | 0x80; / 暂存信号此时的电平状态 if (tmp0 = tmp1) / 将原码取反后与反码进行比较,若两者 的值相同则完成解码 ch = tmp0; / 保存原码数据 else 40 irvalidf = 0;/ 若原码和反码不等,则本次接收的 数据无效 /- / 中断服务子程序 /- /- / void intx0_isr (void) /- / / 函数功能: 外 0 中断服务程序,接收到红外信号(下降沿)响应中断 / 入口参数: 无 / 出口参数: 无 / 全局变量: intx0f:初始为 0;为 1 表示响应了外 0 中断 / 调用模块: 无 / 注意事项: /- void intx0_isr (void) interrupt 0 _nop_(); / 目的:跳过尖峰干扰脉冲 intx0f = 1; /- / end of file /- 5.3 单片机接收终端部分单片机接收终端部分 1. 密码的输入与确认密码的输入与确认 初始状态红灯亮,表示闭锁。设定初始密码为1,2,3,4 ,通过按输 入键开始输入密码,依次输入 4 个数字,最后与 24c02 当中储存的密码相比较, 密码相等则开锁,绿灯亮。否则开锁失败闭锁,红灯亮。 2. 密码的修改密码的修改 通过按下密码修改键,重现设定密码。重新设定密码首先要输入原密码, 正确则进行新密码的设定,不相等则退出修改。重新修改密码时需输入两次密 码,第一次为新设定的密码,第二次为新密码的确认修改密码成功时 lcd 提示 修改成功并有 led 闪烁。稍后返回欢迎界面。 3.矩阵键盘的扫描矩阵键盘的扫描 键盘设计为 4*4 矩阵键盘。16 个按键用到的实际为 14 个按键,其中包括 10 个 41 数字键,一个输入键,一个确认键,一个取消键,一个修改密码键。矩阵键盘 的扫描方式采用线反转法。 4.iic 程序开始就从 24c02 读出密码储存,为以后输入密码比较。当修改密 码成功时将新的密码写入 24c02 中,掉电不丢失。 5.1602 液晶显示液晶显示 本设计采取 1602 液晶显示界面进行人机交互, 液晶初始状态为欢迎登 录界面 每次操作都有相应的提示语言显示,密码输入输入正确与错误都有相应的提示。 6.终端程序部分终端程序部分 1602 显示 /1602 头文件 #ifndef _lcd1602_h #define _lcd1602_h #include #define uchar unsigned char #define uint unsigned int sbit rs=p23; sbit rw=p24; sbit en=p25; sbit lcd=p27; /背光灯端口 /table 中存放相应必要提示语 uchar code table =“welcome!“; uchar code table1=“successful!“; uchar code table2=“wrong!“; uchar code table3=“modify success!“; uchar code table4=“enter password:“; uchar code table5=“modify password:“; uchar code table6=“new password:“; uchar code table7=“new pwd again:“; uchar code table8=“modify fail!“; uchar code table9=“exit later!“; void delay(uint n) uint x,y; for (x=n;x0;x-) for (y=110;y0;y-); /1602 写命令子函数 void lcd_wcom(uchar com) 42 rs = 0; rw = 0; p0 = com; delay(5); en = 1; en = 0; / 1602 写数据子函数 void lcd_wdat(uchar dat) rs = 1; rw = 0; p0 = dat; delay(5); en = 1; en = 0; / 1602 初始化 void lcd_init() lcd_wcom(0x38); lcd_wcom(0x0c); lcd_wcom(0x06); lcd_wcom(0x01); #endif 矩阵键盘扫描 /*判断按键按下及按键值确定*/ uint keyin() uchar t, keydown; uint x=16; p1 = 0xf0; if (p1!=0xf0) /按键操作 delay_ms(10); p1 = 0xf0; if (p1!=0xf0) t = p1; p1 = 0x0f; keydown = p1 | t; 43 switch(keydown) /判断按键值 case 0xed: x=14; break; / 密码输入 case 0xe7: x=0; break; / 0 case 0xde: x=12; break; / 取消 case 0xdd: x=3; break; / 3 case 0xdb: x=2; break; / 2 case 0xd7: x=1; break; / 1 case 0xbe: x=11; brea

温馨提示

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

评论

0/150

提交评论