《毕业设计论文基于单片机控制的红外电子密码锁.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于单片机控制的红外电子密码锁.doc(29页珍藏版)》请在三一办公上搜索。
1、泉 州 师 范 学 院毕业论文(设计)题 目 基于单片机控制的红外电子密码锁 物理与信息工程学 院 电子信息科学与技术专 业07级1班学生姓名 学 号 指导教师 职 称 教授 完成日期 教务处 制基于单片机控制的红外电子密码锁物理与信息工程学院 电子信息科学与技术指导老师 教授摘 要:随着科学技术的不断提高,传统的机械锁渐渐的不能满足现代人的需要,钥匙互开锁的机率很高,这使用户的安全性大打折扣。而电子密码锁的诞生克服了机械锁的一系列缺点,特别是安全性能,它取代传统机械锁是一种发展趋势,应用将日益广泛。本次设计的是一款具有红外遥控功能的电子密码锁。设计分为矩阵式键盘输入模块、红外遥控输入模块、红
2、外芯片解码模块、存储器电路模块、语音芯片模块、继电器控制模块、声光提示模块和显示模块。用宏晶的STC89C52RC作为整个系统的控制核心,整个系统电路简单、功能完善、性价比高、操作方便,达到了人机交互的目的。关键词:电子密码锁;语音芯片;STC89C52RC;红外;第一章:绪论进入电气化时代,一切都往智能化的方向发展,人们对生活质量,生活水平的要求越来越高,智能化将逐步取代人工手动,成为这世界的主要控制手段。传统的手工开锁已经无法满足人满的生活要求,近几年来随着犯罪手段的高端化,人们对家庭防盗锁的要求也越来越高。1.1 选题的背景社会的飞速发展,文明进步的同时不文明的行为也在猖獗,如何实现家庭
3、防盗这一问题变的尤为突出,传统的机械锁构造简单,开锁手法单一,已经无法抵抗日益高超的偷盗技巧。电子技术的进步让智能化进入人们的日常生活,当前国内外锁的形式也越来越多,声控锁,指纹识别的锁,密码锁,遥控锁等先进的锁具也层出不穷。虽然这类产品安全性能很高,保密性好,但由于生产成本过高,携带安装和使用都不方便,在一定程度上也限制了这些产品的普及和推广1-5。而本次设计是在单片机控制下的红外遥控锁,是对单片机技术和红外传感器技术的一个结合。它具有安全性高,性价比高等优点。二十一世纪各种电子信息技术进入高速发展时期,包括信息系统微电子、计算机技术、现代通信技术、传感器技术。传感器技术中也包括了红外线传感
4、器技术。红外线是一种肉眼看不见的光线,最近几十年来,斩露头角的红外传线技术,在各个领域中都到了广泛的应用。开始应用到了生产生活中,逐渐形成了一门崭新的技术红外线技术。红外线技术,顾名思义,就是通过红外线进行数据传输。在计算机技术发展的早期,数据都是通过电缆光缆进行传输的,传输连接线麻烦,需要特制的接口,使用起来很不方便。后来就有了红外线、蓝牙等无线数据传输技术。红外通讯技术是利用红外线来进行数据传输,是无线通讯的一种。红外线的特点是红外传输是一种点对点的传输方式,传输距离比较近,而且要对准接收方向,中间不能有障碍。由于红外线是直线传输,所以红外通讯技术不太适用于障碍比较多的地方。1.2目前国内
5、外的研究现状红外遥控技术是目前家用电器中用得比较多的遥控方式,在车载影音导航系统、手机传输系统等领域也被广泛的应用。红外遥控设备具有不影响周边环境、不干扰其他设备的特点。由于其无法穿透障碍物,所以不同房间的家用电器可以使用通用的遥控器而不会相互干扰;电路调试比较简单,只要按照给定的电路连接和按键说明,一般不需调试可直接投入工作;编码解码较为容易,可同时进行多路遥控。由于各个厂家生产了大量红外遥控专用的集成电路,需要时按说明书直接操作就可以了。因此,红外遥控器在家用电器近距离(小于 10 米)的传输中得到了广泛的应用6-7。1.3 课题的研究方法本次设计是基于单片机STC89C52RC控制,以红
6、外遥控器发送密码,红外一体化接头接收并送给单片机解码,可实现对密码的修改,删除,利用AT24C02对密码进行保存。密码解锁机会只有三次,若连续三次密码错误系统自动报警后并启动管理者密码。利用液晶显示屏LCD1602进行显示。制作时先各个模块单独进行调试,当每个模块的功能都实现后再整合起来,用于达到预期的目标。1.4 本论文的方案设计用单片机作为整个密码锁的核心模块,用户通过红外遥控或键盘输入密码,语言芯片提示用户所进行的操作,储存芯片保存着用户的密码,继电器控制着密码锁的关闭,单片机对用户所输入的密码进行判断,从而实现了电子密码锁的一系列功能,通过液晶显示以及声光提醒,达到了人机交互的目的。第
7、二章:总体方案本设计分为矩阵式键盘输入模块、红外遥控输入模块、红外芯片解码模块、存储器电路模块、语音芯片模块、继电器控制模块、声光提示模块和显示模块。采用STC89C52RC来作为系统控制芯片。系统结构如图1所示。STC89C52RC键盘输入模块红外遥控输入模块红外接收芯片模块存储器电路模块语音芯片模块继电器控制模块声光提示模块显示模块图1 系统结构款图第三章:硬件电路设计3.1 单片机外围电路采用STC89C52RC来作为系统控制芯片。与标准8051的计数器、定时器相比,该单片机多了一个定时器/中断器,含有8K的ROM,存储能力比8051多了一倍, 该单片机是8051内核的加强产品8。单片机
8、外围电路如图2所示,采用12MHz的晶振;P2口与矩阵式键盘相连;P1口与LCD1602八根数据线相连,三根控制线分别与P3.7、P3.6、P3.5相连;P0.4到P0.7与语音芯片ISD1720工作在SPT模式的四跟控制线相连;P0.2为报警输出口,当用户输入密码三次错误时,输出低电平,蜂鸣器响;P0.0、P0.1与存储器芯片AT24C02相连;P0.3与发光二极管相连,当密码输入正确时,点亮发光二极管;P3.4与继电器相连,控制密码锁的关闭,当密码输入正确时,该口位输出高电平,电子密码锁打开。P3.2与红外接收芯片相连,用来促发外部中断0。图2 单片机外围电路3.2 键盘电路由于该设计要应
9、用到较多的按键,所以键盘电路采用矩阵式键盘,如图3所示。其中0到9有十个数字键,在编程上用户输入的密码为6位,6位随机的数字组合可以高达百万种,对电子密码锁的安全性有了保障。当输入的数字有错时,可以按“删除”键,删掉当前的数字。“确认”键是在密码输入完毕时才有效。当密码输入正确时,电子密码锁打开,此时“修改密码”键才有效,否则按下该键系统没反应。当输入密码有错时,用户可以重新输入密码,但当连续三次密码都输错时,必须输入9位的管理者密码。“启动”键作为一个开关键,只有在“启动”键打开时,系统才正常工作。当电子密码锁打开时,10秒之内没去动,单片机将自动关掉“启动”键,此时系统处于省电模式。 图3
10、 矩阵式键盘电路3.3 红外接收芯片电路本设计中红外接收芯片选用一体化红外线接收器,该红外接收头只有三个引脚:信号输出脚、接地脚、供电脚,不需要其他元件,与单片机的连接非常方便,如图4所示。红外解码芯片内部电路包括红外监测二极管,放大器,限副器,带通滤波器,解调电路,积分电路,比较器等。红外监测二极管监测到从遥控器发来的调制载波为38KHz微弱的红外信号, 经过放大后送进限幅器,把信号幅度控制在一定范围,继而通过带通滤波器,允许38KHz的载波信号通过,经过解调电路和积分电路后送进比较器,输出的信号与TTL电平信号兼容。单片机对收到的信号进行解码,就可以判断出用户按下的是哪个键值,进而执行相关
11、的程序9。解码就是把收到不同宽度的脉冲区别出来,该系统中解码是通过单片机计算出两次下降沿到来的间隔时间,当单片机P3.2口有下降沿来临时促发外部中断0一次,并启动定时器0,当第二次下降沿来临时,通过计算定时器0的中断次数,就能够区分不同宽度的脉冲。由于红外接收头内部放大器的增益比较大,容易引起干扰,因此在供电脚和地直接加个滤波电容,保证芯片工作在一个稳定的状态,如图4所示。图4 红外接收电路3.4 存储器电路本设计的存储芯片采用AT24C02,E2PROM为电擦除可编程的ROM,可以在芯片断电时保持存储单元的数据不变。用户的密码保存在该芯片的相关存储单元中,AT24C02具有256个字节的存储
12、单元,对电子密码锁来说,存储容量足够用,具有I2C总线的功能,功耗小,由于STC89C52RC单片机没有I2C接口,因此采用软件模拟I2C总线,系统复位或断电后用户所设置的密码不会丢失。AT24C02是漏极开路,SDA与SCL需要接上拉电阻,如图5所示;A0A2为器件的地址,总线上可以挂多片的AT24C02,本系统只用到一片,所以地址的输入引脚可接地10。图5 存储器电路3.5 语音芯片电路语音芯片模块硬件由ISD1720、单片机控制线、录音输入装置(麦克风)和语音输出装置(喇叭)等组成,如图6所示。ISD1720芯片是本模块的核心部分,接受控制命令且具有独立的存储单元。采用ISD1720 芯
13、片,此芯片可实现20480秒录放音功能,可重复擦写 ,稳定性较好、语音清晰,且价格比较便宜。可工作在两种控制方式:独立按键工作模式和SPI模式11。本设计中对语音的录音采用独立按键工作模式,通过录音把音频信号存储在ISD1720芯片的相应的存储单元里头;对系统的实时放音采用SPI模式,由于STC89C52RC没有SPI硬件接口,因此用软件的方式模拟SPI总线接口,主控单片机通过四线SPI协议对ISD1720进行串行通信。图6语音芯片模块3.6 继电器控制电路继电器控制电路由1只NPN型三级管8050驱动5V继电器。继电器的引入,可以提高系统的驱动能力,还可以隔离电磁锁工作时产生的电磁干扰12。
14、继电器上并联一个二极管起保护作用如图7所示,因为继电器里面的线圈具有电感特性,流经电感线圈的电流不能突变,当三极管关段时,跟三极管相连的线圈里面电流突然中断,会产生感应电动势,容易击穿三极管,由于电动势方向与电源方向相反,因此此二极管是反向接入的,来吸收感应电动势,这样电动势就不会太高了,保护了元器件。当单片机P3.4输入高电平时,继电器的常开端闭合,密码锁打开,提高了整个系统工作的稳定性和可靠性。图7 继电器控制电路3.7 声光提示电路当用户密码输入正确时,点亮发光二极管,发光二极管由单片机P0.3直接驱动,密码锁打开;当用户密码连续输入三次错误时,蜂鸣器开始响,蜂鸣器由于功率比较大,本设计
15、采用三级管8550驱动蜂鸣器,当P0.2为低电平时,三极管导通,蜂鸣器发出声音如图8所示。图8 声光提示电路3.8 液晶显示电路本设计中由于要对密码锁所处的状态以及提示用户进行相应操作的显示,所以采用液晶显示屏LCD1602如图9所示。LCD1602可以显示两行,每行16个字符,内部具有字符发生器,可以显示阿拉伯数字,英文字母的大小写,以及一些常用的符号等,使用+5V电源供电,与其连接的外围电路简单13。该液晶显示屏具有轻薄短小、低耗电量、抗干扰能力强等特点。同时显示信息量大,灵活多变显示多种信息,用户可以清晰看出此时密码锁的状态。8跟数据线与单片机P1口并行相连,传输速度快。图9 液晶显示电
16、路第四章:系统的软件设计4.1 软件总流程图本系统的软件设计采用C语言编写。C语言可读写好,容易修改,移植性也较好,用C语言编写的程序通俗易懂,一目了然。软件主要分为:主程序,外部中断0子程序,定时器0中断子程序,定时器1中断子程序,定时器2中断子程序,LCD1602驱动子程序,ISD1720驱动子程序,AT24C02的驱动子程序,延时子程序等。主程序主要完成了硬件的初始化以及相关函数的调用工作;外部中断0子程序用来处理从红外遥控发出的信号;定时器0中断子程序对到来的两次下降沿时间进行统计;定时器1中断子程序用于键盘扫描:每隔50毫秒对键盘进行扫描一次,这样CPU就能够定时扫描键盘的状态,能够
17、正确得到用户输入的键值;定时器2中断子程序起到省电作用:当电子密码锁成功开锁10秒钟,用户没有对密码锁进行相应的操作时,将自动关掉密码锁跟LCD1602等相应设备,此时系统处于最省电的状态。软件设计流程图如图10所示:开始定时器,外部中断,ISD1720,LCD1602等初始化化等待中断液晶显示、语音提示“请输入新密码”删除当前位密码是液晶显示、语音提示“欢迎光临”,定时器2开,灯亮液晶显示、语音提示“请输入管理者密码”蜂鸣器响输错是否三次否液晶显示、语音提示“请按确认键”液晶显示、语音提示“请输入密码”进入中断判断键值启动键数字键0-9确认键密码修改键删除键标志位flag取反该键是否有效该键
18、是否有效返回否返回否该键是否有效数字键是否有效返回否是是是是flag是否等于1密码位数加1,存入数组输入是否满了用户密码确认键新密码一次确认键新密码二次确认键管理者密码确认键密码是否正确显示、语音提示“请再输入一次”是是是否两次密码是否相同液晶显示、语音提示“密码已修改成功”是密码是否正确否蜂鸣器关是否清除所有标志位,密码锁,液晶关闭否返回否4.2 主要程序简介4.2.1 初始化程序 void init() /initi2c(); inf=1; jdq=0;led0=0;lcdrw=0; write_com(0x38);write_com(0x0c);write_com(0x06);write
19、_com(0x01);write_com(0x80); PX0=1; TMOD=0x12;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;ET0=1;TH0=0xCA;TL0=0xCA;TR0=0;IT0=1;EX0=1;ET2=1;TH2=(65536-50000)/256; TL2=(65536-50000)%256;RCAP2H=(65536-50000)/256;RCAP2L=(65536-50000)%256; TR2=0;ISD_Init();4.2.2 液晶显示程序void write_com(uchar
20、com) lcdrs=0;lcden=0;P1=com;delay1(5);lcden=1;delay1(5);lcden=0;void write_data(uchar dat) lcdrs=1;lcden=0;P1=dat;delay1(5);lcden=1;delay1(5);lcden=0;4.2.3 系统待机程序void clear() fmq=1; led0=0; jdq=0; write_com(0x01); flag=0; flag1=0; flag2=0; flag3=0; flag4=0; flag5=0; flag6=0; flag7=0; ok=0; kk=0; num
21、1=0; num2=0; num3=0; num4=0; num5=0; TR2=0; TH2=(65536-50000)/256; TL2=(65536-50000)%256; 4.2.4 主要功能子程序void int_0() interrupt 0;void time0() interrupt 1;void time1() interrupt 3;void time2() interrupt 5;void delay();void ISD_SET_PLAY( uchar Saddl,Saddh,Eaddl,Eaddh);void write_6byte(uchar address,uch
22、ar *p);void read_nbyte(uchar address,uchar n);第五章 调试及性能分析5.1 硬件调试硬件调试所用到的工具有:电烙铁用于焊接,万用表用于检查电路是否有问题。本次设计的电路图不是很复杂,用万用表一一检测焊接的电路是否存在问题,如短路、断路等,待全部检测完毕,确保硬件没有出问题时,接上电源,进入各个模块的调试,在硬件调试中有时候也配合着软件进行的。1 按键的调试在检测短路、断路时主要遇到矩阵式键盘焊接粗糙,不同按键间存在短路的问题,造成了行线与列线在没键按下时都相互连接,使得多个键出现连在一起的现象,但认真检测完各个按键之后,查出了所有问题所在,重新认真
23、焊接一遍,键盘没出现短路现象,按键可用。由于本设计中应用到较多的按键,按键采用的是行列式键盘扫描的原理,任何一个按键硬件连接出错或者按键间存在短路问题,都会影响到单片机对其他键值的正确识别,最终会导致设计的失败。2 单片机外围电路的调试由于系统上电时,单片机IO口处于输入状态,各个口位理论上为高电平,用万用表测下各个引脚的电压,差不多在4.7V左右,表明工作在稳定状态。按下复位键,单片机也可以正常复位,单片机外围电路调试完毕。3 报警电路的调试从原理图可以看出,只要三极管的基极为低电平时,三极管处于导通状态,蜂鸣器就会响,结合软件,把单片机的某个IO口置为低电平,此时蜂鸣器响,置为高电平蜂鸣器
24、停,报警电路正常。4 红外一体化芯片的调试 随便按下遥控器的某个按键,测量红外一体化输出那端有没有出现低电平,刚开始时不管按下那个键,不管按多久,都没有有用的低电平信号输出,红外一体化没有正常工作,重新检测下红外一体化芯片周围的电路,电源供电正常,但红外就是不能工作,仔细查下红外一体化芯片的数据手册,发现红外一体化芯片接反了,将芯片位置换一下,红外一体化芯片输出正常,反应灵敏。5 液晶电路的调试 检测液晶电路能否工作很容易,给液晶正常上电,液晶屏出现一块一块黑色的字块,表明LCD1602没坏,接下来用软件方式对液晶进行操作,比如清屏,设计显示的行数与位数,发现对液晶操作的相应指令可以很好的执行
25、,液晶屏上显示本设计需要的相关信息。6 继电器电路的调试继电器在没通电时,通过万用表检测继电器的常开常闭端。把万用表打到检测短路的那一档,触点与常开端段路,与常闭端短路。当给与继电器连接的三极管基极一个高电平时,人耳听到了继电器吸合的声音,此时用万用表检测,常闭端与触点不导通,而常开端与触点相连,继电器正常工作。、7 语音外围电路的调试在硬件调试中遇到的主要问题是语音这一模块:语音的录放效果不好,不能把正常的音频信号播放出来,有很大一部分失真甚至不能正常播放。由于ISD1720可工作在独立按键模式,仔细查找语音芯片相关资料及ISD1720的数据手册发现:语音芯片的振荡电阻,即与20脚相连的那个
26、电阻,决定了内部的工作频率。采样频率可通过外接电阻调节,电阻过大采样频率低,正常的语音信号在3.4KHz左右,根据抽样定理知,采样频率应该大于两倍的语音信号频率,才能较好的恢复出原始信号。采样频率高,信号较好,但芯片内部可录音的时间较少。综合多方面的考虑,最后把振荡电阻定位80千欧,采样频率为8KHz,此时语音芯片录放正常,音质较好。5.2 软件调试由于STC89C52RC单片机具有可在线编程,在一定的硬件结构基础上,只要改变软件单片机就可以实现不同的功能。软件在整个设计中起着关键作用,本设计能否正常运行,软件占了很大功夫。对于电子密码锁,软件实现的功能比较多,使用起来比较灵活,软件调试显得比
27、较烦琐。待硬件都连接好之后,单片机板用串口线与电脑连接,上电后发现程序不能下载到单片机里面,重新检查了连线以及电平转换芯片MAX232,发现一切正常。经过几番周旋之后,发现了电脑主机后面的9针串口坏了,后来用电脑USB转串口线,在网上找到了相关的驱动程序,安装之后,总算可以把程序下载进去。本设计的程序是在keil环境下编写,该软件内部有丰富的库函数和功能强大的调试环境。由于程序中包含着较多的驱动子程序,所以软件的调试从各个子程序开始。对LCD1602以及AT24C02这些常用的器件,驱动子程序不难调试。键盘的驱动程序,考虑到机械式键盘在人为按下以及完全释放需要去抖过程,这期间定时器可能再次引起
28、中断,因此在单片机扫描到键盘有按下时,关掉该定时器中断,待键盘完成释放之后再开中断。但在键盘调试过程中也发现按下相应的键,单片机没有执行相应的操作,有两个按键不起任何作用,仔细分析之后发现,这两个接触式按键损坏了,由于本设计中要用到了14个按键,可以不要用到那两个损坏的按键,重新设置键值之后,键盘软件调试顺利完成。仿真器在软件调试中也起了很大的作用,在对语音芯片内部的地址片段的正确寻址中,仿真器较快的得到了各个片段的真实地址,接着对这些地址稍作修改,可以使语音芯片播放时没有很明显的空隙,效果更好。红外遥控器的解码在整个软件设计中耗了较多的时间,经过反复的修改解码程序,最终把各个键值都算出来。在
29、各个模块都调试成功之后,将这些模块组合起来就是本设计所要的软件系统。在整个软件的综合过程中,通过设置相关的标志位,把不同的子程序衔接起来,达到了预期的目的,电子密码锁运行正常。5.3 性能分析液晶屏能够准确显示当前系统所处的状态;语音芯片实时提示用户应该进行的操作;矩阵式按键与红外按键能够配合使用,也可各自独立使用;当用户输入密码正确,电子密码锁打开,点亮发光二极管;修改密码时,两次密码设置相同时,保存新密码,密码修改成功;当用户输入密码错误达到三次时,有报警提示,直到正确输入管理员密码;省电模式在用户打开密码锁时,无其它操作十秒钟,才开启,此时密码锁自动关闭。第六章 本文总结本次设计的电子密
30、码锁,操作方便,稳定性好,可靠性高,成本低廉。红外遥控的加入,语音芯片与液晶显示屏的设计,便于人机交互, 更加智能化,这是传统机械锁无法比拟的,有一定的发展前景。可以预见,该设计的大规模使用,将有效改善现有机械锁的安全性、方便性。通过本次设计加深了对所学知识的理解,也扩充了课外知识,增强了知识的灵活应用能力。在实际操作中我也发现了很多自身存在的问题,由于我的粗心马虎,在硬件制作过程中增加了很多不必要的麻烦,才知道无论什么事情都要一心一意,仔仔细细,可以节省很多时间和精力。软件是我的薄弱环节,所以在软件编写时遇到了很多的麻烦,不过这也培养了我的独立思考和解决问题的能力,通过上网或去图书馆查找资料
31、,还有同学的热心帮助,这些问题到最后都解决了。还要感谢洪清泉老师,在选题和制作过程中,他都给我们提供了宝贵的意见,也定期给我们开会,了解我们的制作进步,关心我们治国制作过程中是否遇到问题,给我们于支持和鼓励。参考文献:1 叶启明.单片机制作的新型安全密码锁J.家庭电子,2005,(10);2 郭海英.基于单片机的电子安全密码锁的设计M.现代电子技术,2005,(13);3 李明喜.新型电子密码锁的设计J.机电产品开发与创新,2004,(03);4 董继成.一种新型安全的单片机密码锁J.电子技术,2004,(03);5 祖龙起,刘仁杰,孙乃凌.一种新颖的电子密码锁J.电子世界,20016 李广弟
32、.单片机基础M.北京:北京航空航天大学出版社,1994.7 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998.8 李光飞,等.单片机课程设计实例指导M.北京:北京航空航天大学出版社.2004.105-125.9 谭浩强.C程序设计(第三版)M.北京:清华大学出版社.2005.7.10 戴仙金.51单片机及其C语言程序开发实例M.北京:清华大学出版社.2008.2.11 戴佳,戴卫恒,刘博文.51单片机C语言应用程序设计实例精讲M.北京:电子工业出版社,2008.12.12 康华光.电子技术基础(第四版)M.北京:高等教育出版社,199813 梁宗善.新型集成块
33、应用M.武汉:华中理工大出版社,2004 28附录完整的源程序#include#define uchar unsigned char#define uint unsigned intuchar code table1=Please enter the; uchar code table2=password:;uchar code table3=Please press the;uchar code table4=confirm key;uchar code table5=Your password is; uchar code table6=incorrect;uchar code table
34、7=Welcome ! ;uchar code table8=*;uchar code table9=8,9,1,1,2,5;uchar code table10=0,7,0,3,0,3,0,0,6;uchar code table11=Senior Password; uchar code table12=new password:;uchar code table13=password again:;uchar code table14=Password changed; uchar code table15=successfully;uchar code table16=*;sbit s
35、da=P01;sbit scl=P00;sbit lcdrs=P37;sbit lcdrw=P36;sbit lcden=P35;sbit fmq=P02;sbit inf=P32;sbit led0=P03;sbit jdq=P34;sbit MOSI=P05;sbit MISO=P04;sbit MSCLK=P06;sbit NSSMD0=P07;sbit CMD=SR0_L0; sbit PU=SR0_L2;sbit RDY=SR10; bit flag,flag1,flag2,flag3,flag4,flag5,flag6,flag7,ok;uchar num,num1,num2,nu
36、m3,num4; num5;uchar aa6,bb9,cc6,dd6;uchar kk,hwkey,key_bit_count,common_code_count,key_code,new_code,key,inf_status;uchar PSTAddL,PSTAddH,PENAddL,PENAddH; uint buf_key_code,count_T,buf_CT;uchar bdata SR0_L; uchar bdata SR0_H; uchar bdata SR1; void delay() ; void delay1(uint i)uint j;for(;i0;i-)for(j
37、=100;j0;j-);void delay10us(uint t)while(t-);void delay2(uint x) uint i,j;for(i=0;ix;i+) for(j=0;j0;j-) ; for(i=0;i0;j-) ; if(BUF_ISD&0x01) MOSI=1; else MOSI=0; BUF_ISD=1; MSCLK=1; if(MISO) BUF_ISD|=0x80; else BUF_ISD&=0x7f; for(j=6;j0;j-) ; MOSI=0; return(BUF_ISD); void ISD_PU() ISD_SendData(0x01);
38、ISD_SendData(0x00); NSSMD0=1; void ISD_Rd_Status() SR0_L=ISD_SendData(0x05); SR0_H=ISD_SendData(0x00); SR1=ISD_SendData(0x00); NSSMD0=1;void ISD_WR_APC2(uchar apcdatl,apcdath) ISD_SendData(0x65); ISD_SendData(apcdatl); ISD_SendData(apcdath); NSSMD0=1; void ISD_Init() NSSMD0=1; MSCLK=1; MOSI=0; do IS
39、D_PU(); delay2(50); ISD_Rd_Status(); while(CMD|(!PU); ISD_WR_APC2(0x80,0x0c); void ISD_SET_PLAY( uchar Saddl,Saddh,Eaddl,Eaddh) ISD_SendData(0x80); ISD_SendData(0x00); PSTAddL=ISD_SendData(Saddl); PSTAddH=ISD_SendData(Saddh); PENAddL=ISD_SendData(Eaddl); PENAddH=ISD_SendData(Eaddh); ISD_SendData(0x0
40、0); NSSMD0=1; void write_com(uchar com) lcdrs=0;lcden=0;P1=com;delay1(5);lcden=1;delay1(5);lcden=0;void write_data(uchar dat) lcdrs=1;lcden=0;P1=dat;delay1(5);lcden=1;delay1(5);lcden=0;void lcall1() /请输入密码 ISD_SET_PLAY(19,0x00,27,0x00); write_com(0x01); write_com(0x80);for(num=0;num16;num+)write_dat
41、a(table1num);delay1(20);write_com(0xc4);for(num=0;num9;num+)write_data(table2num);delay1(20);void lcall2()/请按确认键 ISD_SET_PLAY(33,0x00,40,0x00);write_com(0x01); write_com(0x80);for(num=0;num16;num+)write_data(table3num); delay1(20);write_com(0xc2);for(num=0;num11;num+)write_data(table4num);delay1(20)
42、;void lcall3()/你输入的密码有误 ISD_SET_PLAY(44,0x00,55,0x00);write_com(0x01); write_com(0x80);for(num=0;num16;num+) write_data(table5num);delay1(20);write_com(0xc3);for(num=0;num9;num+)write_data(table6num);delay1(20);void lcall4() /欢迎光临 ISD_SET_PLAY(74,0x00,80,0x00);write_com(0x01); write_com(0x82);for(num=0;num11;num+)write_data(table7num); delay1(20); void lcall5()/请输入管理者密码 ISD_SET_PLAY(59,0x00,69,0x00);write_com(0x01); write_com(0x80);f