点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/90166684?spm=1001.2014.3001.5503
14
部分参考设计如下:
目 录
摘要 1
abstract 2
1 绪论 3
1.1 课题背景 3
1.2 课题的目的和意义 3
1.3 电子密码锁发展趋势 4
1.4 本设计完成的工作 5
2 总体方案设计 6
2.1 硬件设计 8
2.1.1 电源模块 8
2.1.2 主控制器模块 8
3 硬件实现及单元电路设计 9
3.1 主控制模块 9
3.2 单片机的时钟电路与复位电路设计 10
3.3 单片机管脚说明 11
3.4 键盘电路设计 13
3.5 液晶显示电路设计 14
3.6 存储芯片电路设计 15
3.7 报警电路 16
3.8 密码锁电路 17
4 系统软件设计方案 18
4.1 主程序流图 18
4.2 开锁软件设计 19
5 系统的安装与调试 20
5.1 安装步骤 21
结论 21
参考文献 22
附录1 整机电路原理图 23
附录2 部分源程序 24
摘要
随着科技的进步,电子密码锁的使用逐渐成为一种现代化的安全防护手段。传统的机械密码锁由于存在密码长度短、容易被破解等问题,逐渐无法满足现代社会对安全性的高要求。而电子密码锁通过使用数字密码代替传统的机械钥匙,能够大幅提升锁具的安全性和便利性。
本系统基于AT89C52单片机,采用4×4矩阵键盘输入密码,确保了输入方式的灵活性和简便性。用户可以通过该键盘设定和修改6位密码,这样的设计能够有效防止密码被暴力破解。此外,系统还设有报警功能,当用户输入错误密码时,蜂鸣器会发出警报,提醒用户错误操作。复位电路和晶振电路共同作用,确保系统在启动和工作过程中能够保持稳定运行,从而提高系统的可靠性。
在实际应用中,电子密码锁不仅适用于住宅和办公室等日常场所,还可以广泛应用于需要高安全性的场所,如档案室、机密文件存储等。通过定期更换密码、设定多重身份验证等措施,可以进一步提高安全性,防止未经授权的人员进入。系统的低功耗设计和易于操作的特点使其在成本控制方面表现出色,适合各种需求的用户。用户还可以根据不同的场景设置不同的操作模式,以满足个性化需求,提高系统的实用性。
此外,本系统的设计具有较强的扩展性,可以根据实际需求进一步增加功能。例如,可以加入人脸识别或指纹识别等生物识别模块,提升安全性;还可以通过无线模块实现远程控制和监控功能,为系统提供更多智能化和便捷的应用场景。通过这些改进,电子密码锁系统将变得更加智能、可靠,并能更好地满足不断变化的安全需求。此外,还可以结合云技术,实现数据的远程存储和访问,使系统在大型项目或网络化管理中发挥更大的作用。随着技术的不断发展,未来的电子密码锁将在人工智能和物联网的加持下,实现更高效、更智能的安全防护,满足不同领域的多元化安全需求。
关键词: 密码锁;报警;蜂鸣器;AT89C52
abstract
AT89C52In daily life and work, locking mechanisms are typically used to secure files, financial reports, and personal information to ensure the safety of residential and office spaces. With the advancement of technology, electronic password locks with anti-theft alarm functions have gradually replaced traditional mechanical locks that have fewer passwords and lower security, becoming a market trend. As people’s requirements for everyday safety devices have increased, the emergence of password locks has been promoted, substituting a password for a key to enhance security. Password locks offer high security, low cost, low power consumption, and ease of operation, allowing users to simply remember the password to unlock easily.
This system consists of the AT89C52 microcontroller, a 4×4 matrix keyboard, a buzzer, a reset circuit, a crystal oscillator circuit, and a relay. The 4×4 keyboard is primarily used for inputting and modifying the password, while the buzzer serves as an alarm. The reset circuit and crystal oscillator work in conjunction with the AT89C52 microcontroller to form the minimum system. The system is capable of setting and modifying a 6-digit user password, and it includes alarm functions for incorrect input and password errors. Overall, this system is cost-effective and practical.
Keywords: password lock; alarm; buzzer; AT89C52
1 绪论
1.1 背景
在日常生活和工作中,为了保障住宅和部门的安全,通常采用加锁的方式来保护文件档案、财务报表以及个人资料等。然而,使用传统的机械钥匙开锁往往需要携带多把钥匙,这不仅不方便,而且一旦钥匙丢失,安全性会大幅降低。随着科技的不断进步,人们对日常安全设备的要求越来越高。为满足这些需求,密码锁应运而生,它用密码代替钥匙,从而增强了安全性。密码锁具有高安全性、低成本、低功耗和易于操作等优点。
本设计要求通过密码输入来控制电路或芯片的工作,从而实现对机械开关的控制,完成开锁和闭锁等功能。密码锁的种类繁多,既有简单的电路产品,也有基于芯片的高性价比产品。目前,广泛应用的数字密码锁以芯片为核心,通过编程实现其功能,性能和安全性已大大超过传统机械锁。基于单片机的设计不仅提升了密码锁的稳定性和响应速度,还能提供更丰富的功能选择,适应不同应用场景的需求。
数字密码锁的主要优点包括:
- 良好的保密性:编码组合丰富,远远超过弹子锁,随机开锁的成功率几乎为零。通过增加密码位数和设置复杂的编码规则,可以进一步提高保密性。
- 可变密码:用户可以定期更改密码,以防密码被盗,同时避免因人员更替而导致的安全隐患。设置动态密码或一次性密码功能,更能有效防止密码泄露。
- 误码保护:当输入错误密码时,系统会发出报警,增强安全性。某些高级型号还能在多次输入错误后自动锁定,防止暴力破解。
- 简单易用:操作直观,易于学习,用户可以快速掌握使用方法。此外,数字键盘和提示音设计便于用户在日常使用中确认操作状态。
这些优点使得密码锁在现代安全防范中越来越受到青睐。与传统机械锁相比,数字密码锁减少了对物理钥匙的依赖,降低了因钥匙遗失或被复制带来的安全风险。此外,随着物联网技术的发展,密码锁可以与智能家居系统连接,实现远程控制和实时监控,进一步提高安全性和便利性。未来,结合生物识别技术,如指纹识别、面部识别等,密码锁将提供多重身份验证功能,确保只有授权人员才能进入,从而在各类场所中发挥更加重要的作用,满足日益增长的安全需求。
1.2 目的和意义
随着电子技术和计算机技术的快速发展,单片机的性能不断提升,性价比显著提高,技术日益成熟。单片机因其体积小、重量轻、价格低、功耗低、控制功能强大以及运算速度快等优点,在国民经济建设、军事和家用电器等多个领域得到了广泛应用。本设计利用单片机及其附加器件实现数据采集和控制算法,以完成特定的实际功能,检验并提升同学们对整体电路设计的理解和掌握能力,了解单片机系统的设计流程,以及电路板的实际制作和调试能力。同时,这也增强了对数字电路、单片机和微机原理等课程知识的实际应用能力,为同类产品的进一步发展奠定了理论和实践基础。
自20世纪80年代以来,随着电子锁专用集成电路的出现,电子锁的体积得以缩小,可靠性显著提高,虽然成本较高,但其适用性逐渐增强,特别是在对安全性要求较高的场合。然而,由于电子锁需要电源供电,使用范围受到限制,导致其普及程度较低,因此相关研究一直进展缓慢。
目前,在西方发达国家,电子密码锁技术相对先进,种类繁多,已被广泛应用于智能门禁系统中,通过多种更加安全和可靠的技术来管理门禁。而在我国,电子锁的整体技术水平仍停留在国际上20世纪70年代左右,电子密码锁的成本仍然较高,市场上以按键电子锁为主。虽然按键式和卡片钥匙式电子锁已引进国际先进水平,目前国内也有几家厂商在生产和供应这些产品,但自主研发的电子锁市场结构尚未形成,应用仍不广泛。尽管如此,许多国内企业已经引进了世界先进技术,发展前景非常可观。希望通过不断努力,使电子密码锁在我国能够得到更广泛的应用。
1.3 发展趋势
电子密码锁在金融行业的核心作用是“授权”,即只有被授权的人才能存取资金和物品。广义而言,金融业的“授权”主要可以分为以下三个层次:1. 授予保管权,例如使用保管箱、保险箱和保险柜;2. 授予出入权,例如进入金库、运钞车和保管室;3. 授予流通权,例如进行自动存取款。目前,金融行业中电子密码锁的应用主要集中在前两个层面。
接下来,我们将介绍几种在金融行业中广泛使用的电子密码锁及其技术发展方向。需要强调的是,尽管授权技术再先进,仍然需要高质量的“锁具”作为承载结构,以实现开锁和闭锁的基本功能,并提供实际的防护作用,抵御或尽量延缓破坏行为,从而确保电子密码锁在软硬件方面都能有效防范风险。一般来说,锁具的防盗能力主要取决于锁身外壳、闭锁部件的强度、锁止方式、配合间隙和布局等因素。提升电子密码锁防护能力的重要途径是引入报警系统。在金融行业的许多场所,通常会有人值守并配备监控设备,具备报警功能,以实现物理防范与人力防范的结合。报警系统的有效性依赖于探测功能的实现,根据电子密码锁的使用环境和防护需求,可以选择多种探测手段。在中国城市的金融行业,联网报警已成为各金融网点的基本要求。
根据国内外的实践经验,为金融业实施安全防范风险等级评估是非常必要的。这一评估依据防盗报警设备的性能、安装布局和人员值守情况等因素,来评估被保护物品或区域的防护能力,从而确定风险等级。在这一过程中,电子密码锁的性能显得尤为重要。
此外,数字、字符、图形、图像、人体生物特征和时间等元素都可以作为电子密码锁的“钥匙”信息。通过组合这些信息,可以为电子密码锁提供高度的保密性。例如,在防范严密的金库中,使用复合信息密码的电子密码锁可以有效提升安全性,让盗贼难以得手。信息的组合使用还为电子密码锁的多样化提供了无限可能,使用户能够“千挑百选,自得其所”。
1.4 完成的工作
熟悉52单片机的集成开发环境,并能够使用C语言编写工程文件;
熟练掌握所选单片机的内部结构和资源,以及基本的软硬件调试方法;
能够独立构建基于单片机的最小系统,并完成相关硬件电路的设计与实现;
了解密码锁的工作原理和实现方法。
2 总体方案
该系统采用 AT89C52 单片机作为核心控制单元,结合相关硬件电路,实现密码设置、存储与识别,驱动电磁执行器,并监测其电流,同时接收蜂鸣器传来的报警信号并发送数据。用户输入的密码通过单片机与 EEPROM 中存储的六位密码进行比对。系统提供超过 298 万组连续排列的密码组合,用户可以随意更换,安全性极高。输入正确密码后,电磁执行器将被激活并开锁;如果密码错误,单片机会通过通信线路向智能报警器发送警报信号。
密码锁由单片机、矩阵键盘和其他外部硬件组成。矩阵键盘负责数字密码输入和功能操作。实际应用中,单片机的输出可以直接驱动电子密码锁的电磁铁吸合线圈,或者通过继电器的常开触点控制吸合线圈。每次开锁操作中,单片机会将操作状态和电磁执行器的驱动电流信息传送给处理芯片。同时,系统也会将循环检测密码识别程序中产生的报警信号传递给智能报警器,确保密码锁稳定运行。
图1 系统总体方框图
如图 1 所示,该系统包含多个关键电路模块。电源输入电路为 AT89C52 单片机提供稳定的直流电压。晶振电路为系统提供时钟信号,通过产生振荡电流,确保单片机运行所需的基准频率。复位电路用于将单片机的 CPU 及其他功能模块初始化,使系统进入一个确定的起始状态。例如,复位后程序计数器 (PC) 会被设置为 0000H,单片机从程序的首个存储单元开始执行指令。
键盘接口电路负责用户密码输入操作。开锁电路在检测到输入的密码正确后,单片机会发出开门信号,并通过开锁驱动电路控制电磁锁,从而实现开锁功能。如果密码输入错误,报警电路会触发蜂鸣器发出警报声,提示用户注意。
2.1 硬件设计
2.1.1 电源模块
由于本系统采用电池供电,我们评估了多种供电方案:
方案 1
考虑使用 5V 蓄电池作为电源。蓄电池的优点是具有稳定的电压输出和较强的电流驱动能力。然而,其体积较大,携带和使用极为不便。因此,该方案最终被放弃。
方案 2:
使用三节 1.5V 干电池,组合后提供 4.5V 电压。通过 7805 稳压器转换输出 5V,供给单片机和传感器。经过实验测试,系统在运行过程中电压稳定,能够满足单片机和传感器的供电需求。此外,干电池更换简便,增强了系统的实用性。
综合考虑,最终选择了方案 2。
2.1.2 主控制器模块
方案 1:
考虑采用 AT89C52 单片机作为系统核心,以控制密码锁并满足设计要求。系统的关键功能是密码锁控制,而单片机在这方面表现出明显的优势:操作简单、控制灵活且成本低。AT89C52 单片机具有丰富的资源和较强的控制能力,同时支持位寻址操作,I/O 口可按位寻址,8K 的程序空间完全满足系统需求。此外,价格低廉也是一个显著优点,使该方案具有较高的性价比。因此,从易用性和经济性角度来看,该方案是较为理想的选择。
方案 2:
尝试使用 CPLD(可编程逻辑器件)作为系统控制器。CPLD 拥有高密度、体积小、逻辑功能强大、I/O 资源丰富等特点,适合大规模控制系统。它采用并行输入输出方式,可以显著提升处理速度。然而,本系统对数据处理速度的要求并不高,也不需要复杂的逻辑功能。从经济性和实际需求出发,最终放弃了该方案。
综合考虑实际应用需求,方案 2 被选定为最终方案。
3 硬件实现及单元电路设计
3.1 主控制模块
主控制最小系统电路如图3所示。
图3 单片主控电路
3.2 时钟电路与复位电路设计
本系统采用 STC 系列单片机,相较于其他单片机具有显著优势。STC52 单片机集成了看门狗电路,具有较强的抗干扰能力。与其他系列相比,STC 单片机资源更丰富,执行速度更快。此外,使用串口对单片机进行烧写,程序下载过程简单便捷。
系统采用了内部时钟电路,并配备加电自复位的复位电路(如图 3 和图 4 所示)。
图3 时钟电路 图4 复位电路
由于单片机P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组I/O口在使用时必须外接上拉电阻。
3.3 管脚说明
供电引脚:
VCC(40):为系统提供 5V 直流电源。
GND(20):接地端。
复位引脚:
RST(9):复位输入引脚。当振荡器正常运行且该引脚保持两个机器周期以上的高电平时,单片机会复位。复位后,程序计数器 (PC) 清零,P3.0-P3.7 端口置为高电平。复位操作不影响内部 RAM 内容,系统从 ROM 的 00H 地址重新执行程序。
晶振引脚:
XTAL1(19):连接内部时钟电路的输入端,也是反向振荡放大器的输入端。
XTAL2(18):反向振荡器的输出端,用于提供系统时钟信号。
端口说明:
P0 端口(P0.0-P0.7):一个 8 位漏极开路双向 I/O 端口,每个引脚可以吸收 8 个 TTL 门电流。写入 1 时,端口变为高阻输入状态。P0 可用于外部程序存储器,作为数据/地址的低八位。在 FLASH 编程模式下,P0 接收原码输入,并在校验时输出原码数据,因此需要外部上拉电阻。
P1 端口(P1.0-P1.7):8 位双向 I/O 端口,内部集成上拉电阻。写入 1 后,P1 口被内部拉至高电平,可作为输入端使用。当外部下拉至低电平时会输出电流。FLASH 编程和校验期间,P1 接收地址的低八位。
P2 端口(P2.0-P2.7):内部带有上拉电阻的 8 位双向 I/O 端口。写入 1 时,端口被拉至高电平。P2 口用于访问外部程序存储器的高八位地址,也可用于 16 位外部数据存储器。在 FLASH 编程和校验时,接收地址的高八位信号。
P3 端口(P3.0-P3.7):同样为 8 位双向 I/O 端口,带内部上拉电阻。写入 1 时,端口被拉至高电平。作为输入时,若被外部拉至低电平,端口将输出电流。P3 口在编程和校验时接收控制信号。
控制引脚:
ALE(30):地址锁存允许信号,锁存外部存储器地址的低字节。正常工作时输出振荡器频率的 1/6 的脉冲信号。禁止输出时,该功能只在执行 MOVX 或 MOVC 指令时有效。
EA/VPP(31):保持高电平时,系统使用内部程序存储器;低电平时,使用外部程序存储器。在 FLASH 编程模式下,该引脚需要 12V 编程电压。
(29):外部程序存储器选通信号,在访问外部程序存储器期间有效。
3.4 键盘电路
在单片机应用系统中,通常会配置键盘,主要用于输入命令或数据、控制运行状态,从而实现特定的人机交互功能。键盘作为人机交互的基本工具,通过按键形式设置控制功能或输入数据,其输入状态本质上是开关信号。
对于简单的开关输入,可以使用独立按键。这种方式接口较为简单,但占用了较多的单片机 I/O 端口资源。如果系统功能复杂且需要输入的参数较多,则适合使用矩阵键盘进行输入控制。本系统采用的是 4×3 矩阵键盘,其连接方式如图 5 所示。
图5 键盘电路
3.5 显示电路设计
液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏LCD进行显示,具体连接方式如图6所示。
图6 液晶显示电路
3.6 存储电路设计
芯片间总线(Inter-Integrated Circuit, I2C)是一种通过两根连线实现全双工同步数据传输的通信方式,包括数据线(SDA)和时钟线(SCL)。这种总线接口非常适合扩展外围设备,并且其结构简洁方便。为了存储数据,本系统选用了串行 EEPROM 芯片,AT24C01 系列作为典型的串行总线 EEPROM 被用来进行数据存储。具体的存储系统连接方式如图7所示。
图7 总线和存储芯片连接电路图
3.7 报警电路
报警部分由蜂鸣器及外围电路组成,加电后不发声,当密码输入错误发出报警声。如图8所示。
图8 蜂鸣报警电路
3.8 密码锁电路
密码锁部分由继电器组成,当密码输入正确选择开锁继电器就会吸合。如图9所示。
图9 密码锁电路
4 软件设计方案
4.1 主程序流图
如图10为主程序流程图,用户才可以自行设定和修改6位密码,密码输错会有提示声,密码输入3次错误后系统便会锁住,需管理员才能开锁。只有键入6位开锁密码完成正确才能开锁。
开始
N
密码正确?
Y
Y
开锁?
N
Y
修改密码?
N
返回
图10 主程序流程图
4.2 开锁软件设计
如图11开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误则执行报警程序。
开始
N
所输入密码正确?
Y
返回
图4.2 开锁流程图
4.3 功能介绍:
矩阵键盘按键说明:
1 2 3 确认键
4 5 6 手动关闭锁
7 8 9 修改密码
密码还原 0 删除键 退出键
6位密码 123123
管理员密码 520025
1、只有先输入管理员密码,确认后,输入6位普通密码才可以进行修改密码等权限较大的操作,只输入普通密码没有修改密码的权限。
2、输入密码错误,会声音报警,输入错误达到三次,声音报警不会停止且锁定密码锁,不可再输入。
5 安装与调试
5.1 安装步骤
1.检查元件的好坏
在购买元件并确认无误后,首先要检查各个元件的质量。按照每个元件的检测方法进行检查,确保它们没有问题。同时,要仔细核对原理图与所购元件是否一致,只有在确认无误后,才能开始安装和焊接,以避免因错误焊接而带来不便。
安装和焊接元件时,应根据原理图安排元件的位置。在放置过程中,建议先安装较低的元件,之后再安装较高或更难安装的元件。特别要注意,容易损坏的元件应最后进行焊接;在焊接集成芯片时,每次连续焊接时间不应超过10秒,并且要确保芯片的安装方向正确。
结论
本设计包括电源输入、键盘输入、密码存储、复位、晶振、显示、报警和开锁等部分,其中键盘输入部分选用4×4矩阵键盘。在设计过程中,首先要深入了解和掌握单片机的结构与工作原理,熟悉单片机的接口技术和外围芯片的特性及控制方法。此外,还需要理解单片机核心电路设计的基本方法,并掌握电路参数的计算方法。单片机并不是仅能执行某一特定逻辑功能的芯片,而是将整个计算机系统集成在一个芯片内,简而言之,一块芯片便相当于一台完整的计算机。其体积小、成本低、重量轻,非常适合学习、应用和开发。
现如今,单片机广泛应用于各个领域,几乎难以找到没有单片机的行业。从导航系统、飞机仪表、计算机网络与数据传输,到工业自动化控制、智能IC卡、民用汽车安全系统、录像机、摄像机、自动洗衣机、智能玩具及电子宠物等,都离不开单片机的身影。此外,机器人、智能仪表、医疗设备等领域也依赖单片机的应用。单片机的学习与开发培养了大量的计算机应用和智能控制领域的工程师与科学家。随着单片机技术的广泛应用,各行各业的技术将得到更新升级,并朝着自动化、小型化、智能化的方向发展。对于我们这一代而言,提升这些高科技产品将是我们的使命和目标。
最后,衷心感谢赵老师的悉心指导以及同学们的大力支持与帮助!
参考文献
[1] 王千. 实用电子电路大全[M]. 电子工业出版社, 2004, 28-36
[2] 彭为. 单片机典型系统设计实例精讲[M]. 电子工业出版社,2 006, 69-88
[3] 张荣. 基于单片机的智能系统设计与实现[M]. 电子工业出版社, 2005, 35-38
[4] 朱勇. 单片机原理与应用技术[M]. 清华大学出版社, 2006, 14-16
[5] 潘永雄. 新编单片机原理与应用[M]. 西安电子科技大学出版社, 2003, 78-86
[6] 叶启明. 单片机制作的新型安全密码锁[J]. 家庭电子, 2005, (10):
[7] 郭海英. 基于单片机的电子安全密码锁的设计[M]. 现代电子技术, 2005,(13)
[8] 李明喜. 新型电子密码锁的设计[J]. 机电产品开发与创新, 2004, (03):
[9] 彭为. 单片机典型系统设计实例精讲[M]. 北京:电子工业出版社, 2006, 35-38
[10] ATmega.ATmega8L-8AC, 2006, (01), 63-64
[11] Wireless World, 1998, 42-45
[12] 石文轩, 宋薇. 基于单片机MCS一52的智能密码锁设计[J]. 武汉工程职业技术学院学报, 2004, (01): 76-35
[13] 祖龙起, 刘仁杰. 一种新型可编程密码锁[J]. 大连轻工业学院学报,2002, (01): 54-57
[14] 叶启明. 单片机制作的新型安全密码锁[J]. 家庭电子, 2005, (10): 98-111
[15] 郭海英. 基于单片机的电子安全密码锁的设计[M]. 现代电子技术, 2005, (13), 76-96
[16] 李明喜. 新型电子密码锁的设计[J]. 机电产品开发与创新, 2004, (03): 45-66
[17] 董继成. 一种新型安全的单片机密码锁[J]. 电子技术, 2004, (03): 122-134
[18] R. Dye. Visual Object-Orientated Programming[J]. Dr. Dobbs MacintoshJournal, 1991,56(1):213-234
附录2 部分源程序
#include <reg52.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include “lcd1602.h”
#include “iic.h”
uchar value,i; //变量
uchar flag_lj_en; //边加
uchar flag_lj_en_value;
sbit relay = P2^2; //继电器定义
sbit beep = P3^3; //蜂鸣器定义
sbit beiguan = P2^3; //背光
uint flag_time;
uint flag_guan;
uchar smg_i;
uchar dis_smg[7]={0};
uchar password[7]={6,5,4,3,2,1}; //密码保存
uchar password_bj[7]={1,2,3,4,5,6}; //密码比较
uchar code password_r[6] = {1,2,3,1,2,3} ;
uchar code password_gl[6] = {5,2,0,0,2,5} ;
uchar password_xg[6]; //密码修改
uchar flag_password; //密码正确否
uchar flag_password_cichu1;//密码错误次数
bit flag_200ms=1; //200ms标志位
uchar key_can;
uchar menu_1,menu_i;
#include “iic.h”