创新实践报告.docx

上传人:小飞机 文档编号:1779000 上传时间:2022-12-18 格式:DOCX 页数:57 大小:347.72KB
返回 下载 相关 举报
创新实践报告.docx_第1页
第1页 / 共57页
创新实践报告.docx_第2页
第2页 / 共57页
创新实践报告.docx_第3页
第3页 / 共57页
创新实践报告.docx_第4页
第4页 / 共57页
创新实践报告.docx_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《创新实践报告.docx》由会员分享,可在线阅读,更多相关《创新实践报告.docx(57页珍藏版)》请在三一办公上搜索。

1、南京信息工程大学 课程实验报告课程名称: 创新实践 实验内容: 电子密码锁设计 日 期: 2017.12.13 姓 名: 魏程 学 号: 20151321035 班 级: 电科一班 摘 要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替

2、钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。 本系统由AT89C51单片机系统、44矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能。除上述基本的密码锁功能外,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。关键词: AT89C51 LCD1602 电子密码锁 44矩阵键盘目录第一章 绪论11.1、课题背景1第二章 总体设计方案的确定22.1 电子密码锁设计的具体要求22.2系统总体方案设计2第三章 系统硬件设计43.1 键盘电路设计43.2 开关电路设计43.3 报警电路

3、设计53.4 密码存储模块设计53.5 复位电路设计63.6 LCD显示模块63.7 继电器控制模块8 3.8 AT89C51单片机简介8第四章 系统软件设计104.1主程序设计流程图104.2 键功能程序流程图104.3 开锁程序流程图11第五章 系统制作及调试125.1焊接注意事项:125.2、硬件调试问题及解决方法12第六章 结论13参考文献14附录一 原理图及PCB图15附录二 电子密码锁程序源代码16附录三 元件清单37第一章 绪论1.1课题背景 电子密码锁应用于金融业,其根本的作用是“授权”,即被“授权”的人才可以存取钱、物。广义上讲,金融业的“授权”主要包括以下三种层次的内容:1

4、、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。目前,金融行业电子密码锁的应用主要集中在前两个层面上。下面将介绍几种在金融行业中使用较多的电子密码锁以及它们的技术发展方向。当然,以上所说的授权技术再高超,都必须由精良的“锁具”担当承载结构部件,实现开启、闭锁的功能,而且承担实体防护作用,抵抗住或尽量延迟破坏行为,让电子密码锁“软、硬不吃”。一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件的强度、锁止型式、配合间隙和布局。提高电子密码锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物

5、理防范和人力防范两种作用。报警的前提是具备探测功能,根据电子密码锁的使用场所和防护要求,可选择多种多样的探测手段。在中国的城市金融业中,实现联网报警已经成为对各金融网点的基本要求。根据国内外的实践经验,金融业实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子密码锁的性能至关重要。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用

6、信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。 第二章 总体设计方案的确定2.1 电子密码锁设计的具体要求(1)要求在输入密码时在LCD屏幕上显示*号。(2)设计开锁密码位六位密码的电子密码锁。(3)能够LCD显示在密码正确时显示PASSWORD OK,密码错误时显示PASSWORD ERROR,输入密码时显示INPUT PASSWORD。(4)输入密码错误超过限定的三次电子密码锁定。(5)44的矩阵键盘其中包括0-9的数字键和功能键(6)当输入密码错误时蜂鸣器响。(7)密码可以修改,修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防

7、止误操作 。(8)AT24C02保存密码.2.2系统总体方案设计采用一种是用以AT89C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1所示 图1作用说明:1、 开锁:插上电源后,程序自动调入初始密码,此时依次输入:123456,然后按【#】(确认)键,此时锁会打开,可以看到显示open,密码锁打开。2、 退出并关锁:按下【*】(取消)键,此时锁关闭,所有输入清除。3、修改密码:在开锁状态下,再次输入正确的密码并按下【#】(确认)键,此时听到两声提示,输入新的六位密码

8、并按【D】(重设)键,再重复输入一次新密码并按【D】,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。(如两次输入的新密码不一样,则重设密码失败)。4、报警并锁定键盘:当输入密码错误后,报警并锁定键盘3秒,如3秒内又有按键,3秒再启动。5、当重置新密码时,新密码会保存于AT24C02存储器里。键盘对应名称如下:1 2 3 A4 5 6 B7 8 9 C* 0 # D图2第3章 硬件电路设计3.1 键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3 图3每一条水平

9、(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图2所示的44键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如

10、果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。3.2开关电路当输入正确密码时,二极管导通发光。输入错误密码时,二极管不能导通 图43.3报警电路当输入错误密码时,电路中蜂鸣器开始报警。当输入密码错误三次时,蜂鸣器持续报警 图53.4密码存储模块AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含2568位存储空间,具有工作电压

11、宽(2.55.5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和IO线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别

12、每个器件。AT24C02正是运用了I2C规程,使用主从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。图6 AT24C02的两种引脚图 图7密码经过修改后,存储在AT24C02中,从而实现掉电保护3.5复位电路 图83.6 LCD显示模块(1)引脚说明:第1脚:VSS为地电源。 第2脚:

13、VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第

14、16脚:背光源负极。(2)1602LCD的RAM地址映射以及标准字库表LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平,0为低电平)。指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H 。指令3:光标和显示模式设置 I/D:

15、光标移动方向,高电平右移,低电平左移 。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线。 N:低电平时为单行显示,高电平时双行显示。 F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符 (有些模块是 DL:高电平时为8位总线

16、,低电平时为4位总线)。指令7:字符发生器RAM地址设置 。指令8:DDRAM地址设置 。指令9:读出忙信号和光标地址。 BF为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。指令10:写数据 。指令11:读数据 。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。1602 内部显示地址如图9所示: 图9例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位在第二行第 一个字符的位置呢?这样

17、不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602 液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中

18、的点阵字符图形显示出来,我们就能看到字母“A”。 图103.7 继电器控制模块电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触

19、点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。 图11电路中继电器室通过PNP型三极管驱动,当阀值超过设定时,单片机会由高电平跳变成低电平,三极管导通继电器吸合,继电器起开关作用,可以驱动负载。3.8 AT89C51单片机简介AT89C51是一种低功耗、高性能CMOS8位微控制器,具有 4K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 4k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,2个16 位 定

20、时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。AT89C51主要功能如表1所示,其DIP封装如图12所示 图12其主要功能特性: 兼容MCS-51指令系统 4k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 2个16位可编程定时/计数器 时钟频率

21、0-33MHz 全双工UART串行中断口线 128x8 bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针 STC89C52引脚介绍 主电源引脚(2根)VCC(Pin40):电源输入,接5V电源GND(Pin20):接地线外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存

22、允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线

23、,名称为P3.0P3.7第4章 系统软件设计4.1主程序设计流程图: 图134.2键功能程序流程图: 图144.3开锁程序流程图: 图15 第五章 系统制作及调试5.1焊接注意事项:LCD的注意事项1.采用焊接方法将金属基PIN安装于LCD时,从玻璃末端到PCB的焊接位置的长度至少5mm,焊接温度必须在260以下,且焊接时间必须在10秒以内,以免焊接过程中对装置的损坏,确保焊接性能。在230,30秒条件下,90%的焊料须紧密附着于PIN上。2.对LCD基板或基PIN焊接位置的调整必须在安装前完成。严禁猛烈移动基PIN,否则会机械地破坏LCD屏与基PIN之间的连接点。焊接时平放LCD,尽量不让L

24、CD受力。3.焊接LCD基板时,将其小心、平衡地插入PCB插槽,以避免损坏基PIN或LCD基板。4.焊接时,LCD基板不应长时间置于焊锡蒸汽中,清洗PCB时,必须避免污染LCD基板,否则可能损坏显示器表面的偏光片及封口胶。5.显示器表面的保护膜直到焊接完成才可揭掉,禁止手指及其它硬物接触偏光片,禁止水和其他化学物质沾污装置,因为这些物质会污染显示器表面。单片机焊接注意事项:89C51单片机芯片是脆弱的,如果焊接时不小心就很可能把芯片损坏!建议用比较好的恒温可调的烙铁,功率在30瓦左右,温度控制在260到300度,建议采用点焊而不用拉焊,焊接时烙铁放在每个引脚的时间不能太长(最好低于3秒)。上边

25、提到的方法还不能确保芯片完好,对芯片有危害的还有带电烙铁的静电感应!烙铁质量不是太好的,焊接时可以把烙铁电源插头拔掉。其他的电子器件焊接须知:一般分四步骤进行。准备焊接:清洁被焊元件处的积尘及油污,再将被焊元器件周围的元器件左右掰一掰,让电烙铁头可以触到被焊元器件的焊锡处,以免烙铁头伸向焊接处时烫坏其他元器件。焊接新的元器件时,应对元器件的引线镀锡。加热焊接:将沾有少许焊锡和松香的电烙铁头接触被焊元器件约几秒钟。若是要拆下印刷板上的元器件,则待烙铁头加热后,用手或银子轻轻拉动元器件,看是否可以取下。清理焊接面:若所焊部位焊锡过多,可将烙铁头上的焊锡甩掉(注意不要烫伤皮肤,也不要甩到印刷电路板上

26、!),用光烙锡头沾些焊锡出来。若焊点焊锡过少、不圆滑时,可以用电烙铁头蘸些焊锡对焊点进行补焊。检查焊点:看焊点是否圆润、光亮、牢固,是否有与周围元器件连焊的现象。5.2、硬件调试问题及解决方法本设计在焊接调试时遇到的问题以及解决方法:单片机的最小系统问题:电源、晶振电路和复位电路都无异常。Lcd焊接时的问题:(1)接通电源后lcd无反应,各个引脚均属正常。推断可能是初始化程序出现问题。经查找得知是lcd显示器的15和16管脚控制背光功能,连接好之后还是不能显示字符。(2)接通电源开门灯和报警电路就会工作,分析原因是单片机刚开始各个管脚输出高电平。第六章 结论本设计从经济实用的角度出发,采用美国

27、Atmel公司的单片机AT89S51与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用汇编编写主控芯片的控制程序,研制了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、

28、学生宿舍及宾馆等场所。参考文献:1 石文轩,宋薇.基于单片机MCS一51的智能密码锁设计.武汉:工程职业技术学院学报.2004;2 祖龙起,刘仁杰.一种新型可编程密码锁.大连:轻工业学院学报.2002;3 叶启明.单片机制作的新型安全密码锁.家庭电子.2005;4 王宽仁. 可靠安全的智能密码锁.电子技术应用.2001;5 李明喜.新型电子密码锁的设计.机电产品开发与创新.2004;6 董继成.一种新型安全的单片机密码锁.电子技术.2004;7 祖龙起,刘仁杰,孙乃凌.一种新颖的电子密码锁.电子世界.2001;8 李明喜.新型电子密码锁的设计.机电产品开发与创新.2004;9 杨茂涛.一种电子

29、密码锁的实现.福建电脑.2004;10 瞿贵荣.实用电子密码锁.家庭电子.2000;11何宏主编. 单片机原理与接口技术. 北京:国防工业出版社. 2006;12杨西明, 朱骐主编. 单片机编程与应用入门. 北京:机械工业出版社.200413 王千.实用电子电路大全.电子工业出版社.2001;14 何立民.单片机应用技术选编.北京:北京航空大学出版社.1998;15 李华.MCS-51系列单片机使用接口技术.北京航空航天大学出版社.1993;16 彭为.单片机典型系统设计实例精讲.北京:电子工业出版社.2006;17 潘永雄.新编单片机原理与应用.西安:西安电子科技大学出版社.2003;18

30、童诗白,华成英.模拟电子技术基础.北京:高等教育出版社.2000;19 阎石主.数字电子技术基础.北京:高等教育出版社.1998;20 樊昌信,曹丽娜.通信原理.北京:国防工业出版社.2007;21 李瀚荪.电路分析基础.北京:高等教育出版社.1991;附录一 原理图及PCB图附录二 电子密码锁程序源代码#include #include#define LCM_Data P0#define uchar unsigned char #define uint unsigned int#define w 6/定义密码位数sbit lcd1602_rs=P25;sbit lcd1602_rw=P26;

31、sbit lcd1602_en=P27;sbit Scl=P34;/24C02串行时钟sbit Sda=P35;/24C02串行数据sbit ALAM = P21;/报警sbit KEY = P20;/开锁sbit open_led=P22;/开锁指示灯bit operation=0;/操作标志位bit pass=0;/密码正确标志bit ReInputEn=0;/重置输入充许标志bit s3_keydown=0;/3秒按键标志位bit key_disable=0;/锁定键盘标志unsigned char countt0,second;/t0中断计数器,秒计数器void Delay5Ms(vo

32、id);unsigned char code a=0xFE,0xFD,0xFB,0xF7; /控盘扫描控制表unsigned char code start_line= “password: “;unsigned char code name = “=Coded Lock=”;/显示名称unsigned char code Correct = “ correct “; /输入正确unsigned char code Error = “ error “; /输入错误unsigned char code codepass= “ pass “; unsigned char code LockOpen

33、= “ open “;/OPENunsigned char code SetNew = “SetNewWordEnable”;unsigned char code Input = “input: “;/INPUTunsigned char code ResetOK = “ResetPasswordOK “;unsigned char code initword= “Init password.”;unsigned char code Er_try= “error,try again!”;unsigned char code again= “input again “;unsigned char

34、 InputData6;/输入密码暂存区unsigned char CurrentPassword6=1,3,1,4,2,0; /当前密码值unsigned char TempPassword6;unsigned char N=0;/密码输入位数记数unsigned char ErrorCont;/错误次数计数unsigned char CorrectCont;/正确输入计数unsigned char ReInputCont; /重新输入计数unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延时=void Delay5Ms(void)unsig

35、ned int TempCyc = 5552;while(TempCyc-);/=400ms延时=void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=/=24C02=/=void mDelay(uint t) /延时 uchar I; while(t-) for(i=0;i125;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_(); _nop_()

36、;/*起始条件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止条件*/void Stop(void) Sda=0; Scl=1; Nop(); Sda=1; Nop();/*应答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向应答位*/void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*发送数据子程序,Data为要求发送的数据*/void Send(uchar Data) uchar BitCounter=8; uch

37、ar temp; do temp=Data; Scl=0; Nop(); if(temp&0x80)=0x80) Sda=1; else Sda=0; Scl=1; temp=Data1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*读一字节的数据,并返回该字节值*/uchar Read(void)uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if

38、(BitCounter-1)temp1=temp1;temp=temp1;BitCounter-;while(BitCounter);return(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar I; uchar *Pdata; Pdata=Data; for(i=0;iNum;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(Pdata+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar I; uchar *Pdata; Pdata=Data; for(i=0;iNum;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(Pdata+i)=Read(); Scl=0; NoAck(); Stop(); /=/=LCD1602=/=

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号