1、沈阳理工大学学士学位论文 I 摘 要 本文主要介绍了基于 AVR 单片机的电子密码锁设计。主要内容为仿真硬件电路的设计和软件程序的设计 。 主要实现的功能是实现人机接口矩阵输入,这种输入方式更节约管脚,数码管显示输出 (LCD1602)。本例用 AVR 单片机 EEPROM 保存密码,输入正确密码时开锁灯亮,液晶显示屏显示开锁成功。在开锁之后可以实现密码的修改和储存,并且重新输入的密码经过 MD5 加密后以密文的形式存储在 EEPROM 中,更加安全可靠。 此模块是基于 AVR 单片机的, 该模块的硬件 开发平台 采用的是 Atmel 公司的ATmega16 单片机, 且 ATmega16 是
2、基于增强型的 AVR RISIC 结构的低能耗 8 位 CMOS微控器,速度快,且存储空间大,这给设计带来了极大的方便。 将调试成功的 C 程序工程加载到 ATmega16 单片机中就可以实现以上的功能。本次设计软件方面主要使用的开发平台是 WINAVR 和 AVR_Studio,所使用的编程语言是 C 语言。完成本次设计需要掌握 ATmega16 单片机的相关知识与实际应用 , 单片机外围电路的设计,相关C 程序的设计与仿真 等 。 该驱动程序能够正常运行,运行结果正确,证明设计思路正确。 关键词: MD5 加密 ; AVR_Studio; PROTUES; ATmega16 单片机 沈阳理
3、工大学学士学位论文 II Abstract This paper mainly introduces the design of electronic password lock based on AVR microcontroller. Design of the main content for the design of hardware circuit and software program. The main function is to achieve human-machine interface matrix input, the input mode is more eco
4、nomical in pin, digital tube display output (LCD1602). The save password with AVR microcontroller EEPROM, enter the correct password to unlock the lights, the LCD screen displays the unlock success. In the unlocking can be achieved after the password changes and storage, and re-enter the password en
5、crypted with MD5 after stored in encrypted form in EEPROM, more safe and reliable. This module is based on AVR MCU, the developing platform of the hardware of the module is based on Atmels ATmega16 chip, and ATmega16 is a unit, micro control enhanced AVR RISIC structure type of low-energy consumptio
6、n based on 8 bits CMOS speed, and large storage space, which brings great convenience to design. The successful debugging C program project is loaded into the ATmega16 microcontroller can be achieved above functions. The main use of the design software development platform is WINAVR and AVR_Studio,
7、the programming language used is C language. Complete knowledge of the design need to master the ATmega16 MCU and practical applications, single-chip peripheral circuit design, C program design and simulation. The driver can run normally, run results correctly, prove that design idea is correct. Key
8、words: MD5 encryption;AVR_Studio; PROTUES;ATmega16 MCU 沈阳理工大学学士学位论文 III 目 录 1 绪 论 . 1 1.1 电子密码锁的介绍 . 1 1.2 AVR 单片机的发展过程及现状 . 2 1.2.1 发展过程 . 2 1.2.2 AVR 单片机的现状 . 3 1.2.3 AVR 单片机的优点 . 3 1.2.4 AVR 单片机的型号标识解释 . 4 1.2.5 AVR 8-Bit MCU 的最大特点 . 5 1.3 MD5 加密算法的介绍 . 6 1.3.1 MD5 的简介 . 6 1.3.2 MD5 算法的原理 . 6 1.4
9、 本论文的结构 . 8 2 系统整体设计 . 9 2.1 原理框图 . 9 2.2 系统仿真平台 . 9 2.2.1 PROTUES 简介 . 9 2.2.2 PROTUES 新特点 . 10 2.3 软件开发平台 . 13 2.3.1 WINAVR 与 AVR_Studio 的 介绍 . 13 2.3.2 AVR_Studio 的安装 . 13 2.3.3 WINAVR 的安装 . 15 3 仿真 硬件电路设计 . 16 3.1 硬件开发平台 . 17 3.1.1 ATmega16 介绍 . 17 3.1.2 ATmega16 产品特征及性能 . 18 3.2 单片机外围电路设计 . 23
10、3.2.1 液晶显示屏的设计 . 23 3.2.2 矩阵键盘输入的设计 . 24 沈阳理工大学学士学位论文 IV 3.2.3 外围时钟电路的设计 . 25 3.2.4 蜂鸣器及开锁指示灯的设计 . 26 3.2.5 单片机的引脚连接设计 . 26 3.2.6 电源与时钟电路的设计 . 27 3.3 电路的完整设计 . 27 4 软件设计 . 27 4.1 单片机 C 语言程序设计技术 . 27 4.1.1 单片机 C 语言的主要特点 . 27 4.2 整体程序设计简要介绍 . 28 4.2.1 整体程序的设计 . 28 4.3 各程序模块的设计 . 28 4.3.1 各函数定义 . 28 4.
11、3.2 主函数模块 . 33 4.3.3 LCD1602 液晶显示屏 模块 . 38 4.3.4 矩阵键盘输入模块 . 41 4.3.5 MD5 加密算法模块 . 42 4.3.6 蜂鸣器子模块 . 48 4.3.7 读取密码及存储密码模块 . 48 5 系统的实现 . 51 5.1 系统运行结果 . 51 5.1.1 程序的加载 . 51 5.1.2 功能的实现 . 52 结 论 . 56 致 谢 . 57 参考文献 . 58 附录 A 英文原文 . 59 附录 B 中文翻译 . 67 沈阳理工大学学士学位论文 1 1 绪 论 1.1 电子密码锁的介绍 目前,最常用的锁是 20 世纪 50
12、年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜。但在使用中暴露了很多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每 4000 把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。二是钥匙一旦丢失,无论谁捡到都可以将锁打开。三是机械锁的材料大多为黄铜,质地较软,容易损坏。四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。由于人们对锁的安全性,方便性等性能有更 高的要求,许多智能锁也相继问世,但这类产品的特点是针对特定指纹或有效卡,但能适用于保密要求高且仅供个别人使用的箱、柜、房间,其成本一般较高,在一定程度上限制了这类产品的普及和推广 。 电子锁是采用
13、电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化所锁,相比传统的锁具,电子锁不使用金属钥匙,保密性、精度都很高。电子锁的发明思路,源自古代的自动机械,它们以重力或蒸汽压力驱动,最广泛用途是用在古代古墓的地下机关。电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进 1。 电子 密码锁是 在电子锁的基础上设计的, 一种通过 密码 输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的 。 在安全技术防范领域,具
14、有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论是在技术上还是在性能上都大大提高。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带处理器的智能密码锁,它除了具有电子密码 锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 随着人们生活水平的提高,电子密码锁作为防盗卫士的作用日趋重要。电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。 随着人们生活水平的提高,如何实现防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单
15、,被撬的事件屡见不鲜,机械锁的这些弊端为一种新型的锁沈阳理工大学学士学位论文 2 -电子密码锁,提供了发展的空间 18。 随着人们对安全的重视和科技的发展,许多电子智能锁已在国内外相 继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏, IC 卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流 2。 因为电子密码锁具有 保密性好、编码量多、
16、密码可变、误码输入保护、电子密码锁操作简单易行、干扰码功能 、 在输入正确密码前可输入任意码、安保功能等功能。 使用电子密码锁这些问题都能够解决,这也就是电子密码锁成为电子防盗产品主要研究对象的原因。 1.2 AVR 单片机的发 展过程及现状 1.2.1 发展过程 AVR 单片机是 1997 年由 ATMEL 公司研发出的增强型内置 Flash 的 RISC(Reduced Instruction Set CPU) 精简指令集高速 8 位单片机。 AVR 的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 ATmel 挪威设计中心的 A 先生与 V 先
17、生,于 97 年设计出一款使用 RISC 指令集的8 位 单片机,起名为 AVR。 AVR 单片机系列齐全 ,可适用于各种不同场合的要求。 AVR 单片机有 3 个档次 : 低档 Tiny 系列 AVR 单片机 : 主要有 Tiny11/12/13/15/26/28 等; 中档 AT90S 系列 AVR 单片机 : 主要有 AT90S1200/2313/8515/8535 等; (正在淘汰或转型到 Mega 中,详情请参考: AVR 宣布到期的芯片清单 ) 高档 ATmega 系列 AVR 单片机 : 主要有 ATmega8/16/32/64/128( 存储容量为8/16/32/64/128
18、KB)以及 ATmega8515/8535。 新的型号还有 ATmega48/88/168 (存储容量为 4/8/16K) 等 3。 早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥 的 方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度 减 慢。以后的 CMOS 单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未沈阳理工大学学士学位论文 3 被彻底改观;此间虽有某些精简指令集单片机( RISC)问世,但依然沿袭对时钟分频的做 法。 ATMEL 公司是世界上著名的高性能、低功耗、非易失性存储器和数字集成电路的一流半导体制造公司 。 20 世
19、纪 90 年代初 , ATMEL率先把 MCS-51 内核与其擅长的 Flash技术相结合,推出轰动世界的 AT89 系列单片机。 1997 年, ATMEL 挪威设计中心出于市场需求考虑,充分发挥其 Flash 技术优势,推出全新配置的精简指令集( RISC)单片机,简称 AVR。几年来, AVR 单片机已形成系列产品,其 Attiny, AT90, Atmega 分别对应为低、中、高档产品 4。 1.2.2 AVR 单片机的现状 电子技术如今迅猛发展 ,尤其是单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表、机器人制作 等领域 ,使产品功能、精度和质量大幅度提高 ,且电路
20、简单,故障率低,可靠性高,成本低廉。 AVR 单片机价格低廉、可擦除 1000 次以上,不再有报废品产生,且对掉电后数据的保存带来方便,来电时能记住掉电时的工作状态,给用户带来极高的可靠性,受到一致好评 5。 1.2.3 AVR 单片机的优点 单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中 。 1) 简便易学,费用 低廉 首先,对于非专业人员来说,选择 AVR 单片机的最主要原因,是进入 AVR 单片机开发的门槛非常低,只要会操作电脑就可以
21、学习 AVR 单片机的开发。单片机初学者只需一条 ISP 下载线,把编辑、调试通过的 软件 程序直接在线写入 AVR 单片机,即可以开发 AVR 单片机系列中的各种封装的器件。 AVR 单片机因此在业界号称 “一线打天下 ”。其次, AVR 单片机便于升级。 AVR 程序写入是直接在电路板上进行程序修改、烧录等操作,这样便于产 品升级。再次, AVR 单片机费用低廉。学习 AVR 单片机可使用 ISP在线下载编程方式 (即把 PC 机上编译好的程序写到单片机的程序存储器中 ),不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有 AVR 单片机的开发应用,这可节省很多开发费用。程序存储器
22、擦写可达 10000 次以上,不会产生报废品。 沈阳理工大学学士学位论文 4 2) 高速、低耗、保密 首先, AVR 单片机是高速 嵌入式单片机 , AVR 单片机具有预取指令功能,即在执行一条指令时 ,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。多累加器型,数据处理速度快。 AVR 单片机具有 32 个通用工作寄存器,相当于有 32 条立交桥,可以快速通行。中断响应速度快。 AVR 单片机有多个固定中断向量入口地址,可快速响应中断。其次, AVR 单片机耗能低。对于典型功耗情况, WDT 关闭时为 100nA,更适用于电池供电的应用设备。有的器件最低 1.8 V 即可工作。 再
23、次, AVR 单片机保密性能好。它具有不可破解的位加密锁 Lock Bit 技术,保密位单元深藏于芯片内部,无法用电子显微镜看到 10。 3) I/O 口功能强 ,具有 A/D 转换等电路 AVR 单片机的 I/O 口是真正的 I/O 口,能正确反映 I/O 口输入 /输出的真实情况。工业级产品,具有大电流 (灌电流 )10 40 mA,可直接驱动可控硅 SCR 或继电器,节省了外围驱动器件 。 AVR 单片机内带模拟比较器, I/O 口可用作 A/D 转换,可组成廉价的 A/D转换器 。 ATmega48/8/16 等器件具有 8 路 10 位 A/D。 部分 AVR 单片机可组成零外设元件
24、单片机系统,使该类 单片机无外加元器件即可工作,简单方便,成本又低 。 AVR 单片机可重设启动复位 ,以提高单片机工作的可靠性。有 看门狗定时器 实行安全保护 ,可防止程序走乱 飞 ,提高了产品的抗干扰能力。 4) 有功能强大的 定时器 /计数器及通讯接口 定时 /计数器 T/C 有 8 位和 16 位 ,可用作比较器。计数器外部中断和 PWM(也可 用作D/A)用于控制输出,某些型号的 AVR 单片机有 3 4 个 PWM,是作电机无级调速的理想器件。 AVR 单片机有串行异步通讯 UART 接口 ,不占用定时器和 SPI 同步传输功能 ,因其具有高速特性,故可以工作在一般标准整数频率下
25、,而波特率可达 576K。 5) 片内 EEPROM EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。通过 SPI 和 JTAG 及并行电缆下载 EEPROM 数据 的操作 6。 总的来说,在相同的系统时钟下 AVR 运行速度最快;芯片内部的 Flsah、 EEPROM、SRAM 容量较大;所有型号的 Flash、 EEPROM 都可以反复烧写、全部支持在线编程烧写 (ISP);多种频率的内部 RC 振荡器、上电自动复位、看门狗、启动延时等功能,
26、零外围电路也可以工作;每个 IO 口都可以以推换驱动的方式输出高、低电平,驱动能力强;沈阳理工大学学士学位论文 5 内部资源丰富,一般都集成 AD、 DA 模数器; PWM; SPI、 USART、 TWI、 I2C 通信口;丰富的中断源等。 目前支持 AVR 单片机编译器的语言主要有汇编语言、 C 语言、 BASIC 语言等。其中 C 编译器主要有 CodeVisionAVR、 AVRGCC、 IAR、 ICCAVR 等, C 语言编译器由于它具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位 6。 1.2.4 AVR 单片机的型号标识解释 1
27、) 型号紧跟的字母,表示电压工作范围。带 “V”: 1.8-5.5V;若缺省,不带 “V”:2.7-5.5V。例: ATmega48-20AU,不带 “V”表示工作电压为 2.7-5.5V。 2) 后缀的数字部分,表示支持的最高 系统时钟 。例: ATmega48-20AU, “20”表示可支持最高为 20MHZ 的系统时钟。 3) 后缀第一(第二)个字母,表示封装。 “P”: DIP 封装, “A”: TQFP 封装 , “M”:MLF 封装。例: ATmega48-20AU, “A”表示 TQFP 封装。 4) 后缀最后一个字母,表示应用级别。 “C”:商业级, “I”:工 业级(有铅)、
28、 “U”工业级(无铅)。例: ATmega48-20AU, “U”表示无铅工业级。 ATmega48-20AI, “I”表示有铅工业级 7。 1.2.5 AVR 8-Bit MCU 的最大特点 与其它 8-Bit MCU 相比, AVR 8-Bit MCU 最大的特点是: 1) 哈佛结构,具备 1MIPS / MHz 的高速运行处理能力。 2) 超功能精简指令集( RISC),具有 32 个通用工作寄存器,克服了如 8051 MCU采用单一 ACC 进行处理造成的瓶颈现象 17。 3) 快速的存取寄存器组、单周期指令系统,大大优 化了目标代码的大小、执行效率,部分型号 FLASH 非常大,特别
29、适用于使用高级语言进行开发 16。 4) 作输出时与 PIC 的 HI/LOW 相同,可输出 40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备 10mA-20mA 灌电流的能力。 5) 片内集成多种频率的 RC 振荡器、上电自动复位、 看门狗 、启动延时等功能,外围电路更加简单,系统更加稳定可靠。 6) 大部分 AVR 片上资源丰富:带 E2PROM, PWM, RTC, SPI, UART, TWI, ISP,沈阳理工大学学士学位论文 6 AD, Analog Comparator, WDT 等。 7) 大部分 AVR 除了有 ISP 功能外,还有 IAP 功能,方
30、便升级或销毁 应用程序 8。 1.4 MD5 加密算法的介绍 1.4.1 MD5 的简介 MD5 算法即信息摘要算法( message digest algorithm 5),在 20 世纪 90 年代初由 MIT的计算机科学实验室和 RSA Data Secutity Inc 发明,经历的版本有 MD2 MD3 MD4, MD5广泛用于加密技术,很多系统用户密码都以 MD5 加密方式保存,用户登录时,系统将用户输入的密码转换成 MD5 值,然后再与系统中保存的 MD5 值比较,以此来验证用户的合法性,这样比保存密码明文要安全的多,密码明文容易被窃取和使用,而经 MD5加密后的密码,由于其不可
31、逆运算的特性,即使 MD5 加密后的密码被窃取,系统安全也不会受到威胁 16。 1.4.2 MD5 算法的原理 MD5 以 512 位( bit)分组来处理输入的信息,每一分组又被划分为若干子分组,经过了 一系列的处理后,算法的输出由 4 个 32 位 分组组成,将这 4 个 32 位分组组合后将生成一个 128 位散列值,这 128 位二进制数相当于 16 个字节,由这 16 个字节转换的字节串就是最后输出的 32 个字符(每字节转换为 2 个字符)。 本设计 MD5 算法中,上下文结构变量 context 的 buffer 成员是 512 位的信息处理缓冲, state 成员保存 MD5
32、算法的 4 个 32 位初始幻数及最终的组合输出数位, count 成员保存信息位长。 在初始化上下文结构变量 context 以后,算法首先调用 MD5Update 函数对原始信息串进行变换。核心变换函 数为 MD5Update,对于长串会进行尽可能多次的 MD5四轮变换,每次进行的四轮变换由函数 MD5Transform 完成,变换后的结果存入于 context 的状态成员 state。 MD5 算法接着再进行信息串填充,使其位长度对 512 求余的结果等于 448(即512-64),信息的位长度被扩展至 n*512+448 位( bit),即 n*64+56 字节( n 为一个正整数 )19。 MD5 算法填充信息串时,在原始信息的后面填充一个 1 和若干个 0,直到满足上面