基于AVR单片机的电子密码锁设计_第1页
基于AVR单片机的电子密码锁设计_第2页
基于AVR单片机的电子密码锁设计_第3页
基于AVR单片机的电子密码锁设计_第4页
基于AVR单片机的电子密码锁设计_第5页
已阅读5页,还剩72页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

沈阳理工大学学士学位论文I摘要本文主要介绍了基于AVR单片机的电子密码锁设计。主要内容为仿真硬件电路的设计和软件程序的设计。主要实现的功能是实现人机接口矩阵输入,这种输入方式更节约管脚,数码管显示输出LCD1602。本例用AVR单片机EEPROM保存密码,输入正确密码时开锁灯亮,液晶显示屏显示开锁成功。在开锁之后可以实现密码的修改和储存,并且重新输入的密码经过MD5加密后以密文的形式存储在EEPROM中,更加安全可靠。此模块是基于AVR单片机的,该模块的硬件开发平台采用的是ATMEL公司的ATMEGA16单片机,且ATMEGA16是基于增强型的AVRRISIC结构的低能耗8位CMOS微控器,速度快,且存储空间大,这给设计带来了极大的方便。将调试成功的C程序工程加载到ATMEGA16单片机中就可以实现以上的功能。本次设计软件方面主要使用的开发平台是WINAVR和AVR_STUDIO,所使用的编程语言是C语言。完成本次设计需要掌握ATMEGA16单片机的相关知识与实际应用,单片机外围电路的设计,相关C程序的设计与仿真等。该驱动程序能够正常运行,运行结果正确,证明设计思路正确。关键词MD5加密;AVR_STUDIO;PROTUES;ATMEGA16单片机沈阳理工大学学士学位论文IIABSTRACTTHISPAPERMAINLYINTRODUCESTHEDESIGNOFELECTRONICPASSWORDLOCKBASEDONAVRMICROCONTROLLERDESIGNOFTHEMAINCONTENTFORTHEDESIGNOFHARDWARECIRCUITANDSOFTWAREPROGRAMTHEMAINFUNCTIONISTOACHIEVEHUMANMACHINEINTERFACEMATRIXINPUT,THEINPUTMODEISMOREECONOMICALINPIN,DIGITALTUBEDISPLAYOUTPUTLCD1602THESAVEPASSWORDWITHAVRMICROCONTROLLEREEPROM,ENTERTHECORRECTPASSWORDTOUNLOCKTHELIGHTS,THELCDSCREENDISPLAYSTHEUNLOCKSUCCESSINTHEUNLOCKINGCANBEACHIEVEDAFTERTHEPASSWORDCHANGESANDSTORAGE,ANDREENTERTHEPASSWORDENCRYPTEDWITHMD5AFTERSTOREDINENCRYPTEDFORMINEEPROM,MORESAFEANDRELIABLETHISMODULEISBASEDONAVRMCU,THEDEVELOPINGPLATFORMOFTHEHARDWAREOFTHEMODULEISBASEDONATMELSATMEGA16CHIP,ANDATMEGA16ISAUNIT,MICROCONTROLENHANCEDAVRRISICSTRUCTURETYPEOFLOWENERGYCONSUMPTIONBASEDON8BITSCMOSSPEED,ANDLARGESTORAGESPACE,WHICHBRINGSGREATCONVENIENCETODESIGNTHESUCCESSFULDEBUGGINGCPROGRAMPROJECTISLOADEDINTOTHEATMEGA16MICROCONTROLLERCANBEACHIEVEDABOVEFUNCTIONSTHEMAINUSEOFTHEDESIGNSOFTWAREDEVELOPMENTPLATFORMISWINAVRANDAVR_STUDIO,THEPROGRAMMINGLANGUAGEUSEDISCLANGUAGECOMPLETEKNOWLEDGEOFTHEDESIGNNEEDTOMASTERTHEATMEGA16MCUANDPRACTICALAPPLICATIONS,SINGLECHIPPERIPHERALCIRCUITDESIGN,CPROGRAMDESIGNANDSIMULATIONTHEDRIVERCANRUNNORMALLY,RUNRESULTSCORRECTLY,PROVETHATDESIGNIDEAISCORRECTKEYWORDSMD5ENCRYPTIONAVR_STUDIOPROTUESATMEGA16MCU沈阳理工大学学士学位论文III目录1绪论111电子密码锁的介绍112AVR单片机的发展过程及现状2121发展过程2122AVR单片机的现状3123AVR单片机的优点3124AVR单片机的型号标识解释5125AVR8BITMCU的最大特点513MD5加密算法的介绍6131MD5的简介6132MD5算法的原理614本论文的结构82系统整体设计921原理框图922系统仿真平台9221PROTUES简介9222PROTUES新特点1023软件开发平台13231WINAVR与AVR_STUDIO的介绍13232AVR_STUDIO的安装13233WINAVR的安装153仿真硬件电路设计1731硬件开发平台17311ATMEGA16介绍17312ATMEGA16产品特征及性能1832单片机外围电路设计23321液晶显示屏的设计23322矩阵键盘输入的设计25沈阳理工大学学士学位论文IV323外围时钟电路的设计25324蜂鸣器及开锁指示灯的设计26325单片机的引脚连接设计26326电源与时钟电路的设计2633电路的完整设计264软件设计2741单片机C语言程序设计技术27411单片机C语言的主要特点2742整体程序设计简要介绍28421整体程序的设计2843各程序模块的设计28431各函数定义28432主函数模块33433LCD1602液晶显示屏模块38434矩阵键盘输入模块41435MD5加密算法模块42436蜂鸣器子模块48437读取密码及存储密码模块485系统的实现5151系统运行结果51511程序的加载51512功能的实现52结论56致谢57参考文献58附录A英文原文59附录B中文翻译67沈阳理工大学学士学位论文11绪论11电子密码锁的介绍目前,最常用的锁是20世纪50年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜。但在使用中暴露了很多缺点一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。二是钥匙一旦丢失,无论谁捡到都可以将锁打开。三是机械锁的材料大多为黄铜,质地较软,容易损坏。四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。由于人们对锁的安全性,方便性等性能有更高的要求,许多智能锁也相继问世,但这类产品的特点是针对特定指纹或有效卡,但能适用于保密要求高且仅供个别人使用的箱、柜、房间,其成本一般较高,在一定程度上限制了这类产品的普及和推广。电子锁是采用电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化所锁,相比传统的锁具,电子锁不使用金属钥匙,保密性、精度都很高。电子锁的发明思路,源自古代的自动机械,它们以重力或蒸汽压力驱动,最广泛用途是用在古代古墓的地下机关。电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进1。电子密码锁是在电子锁的基础上设计的,一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论是在技术上还是在性能上都大大提高。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带处理器的智能密码锁,它除了具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们生活水平的提高,电子密码锁作为防盗卫士的作用日趋重要。电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。随着人们生活水平的提高,如何实现防盗这一问题也变的尤其的突出,沈阳理工大学学士学位论文2传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,机械锁的这些弊端为一种新型的锁电子密码锁,提供了发展的空间18。随着人们对安全的重视和科技的发展,许多电子智能锁已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流2。因为电子密码锁具有保密性好、编码量多、密码可变、误码输入保护、电子密码锁操作简单易行、干扰码功能、在输入正确密码前可输入任意码、安保功能等功能。使用电子密码锁这些问题都能够解决,这也就是电子密码锁成为电子防盗产品主要研究对象的原因。12AVR单片机的发展过程及现状121发展过程AVR单片机是1997年由ATMEL公司研发出的增强型内置FLASH的RISCREDUCEDINSTRUCTIONSETCPU精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。ATMEL挪威设计中心的A先生与V先生,于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/128KB)以及ATMEGA8515/8535。新的型号还有ATMEGA48/88/168存储容量为4/8/16K等3。早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥的方案即采用较高的分频系数对时钟分频,使得指令周期长,执行速度减沈阳理工大学学士学位论文3慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观;此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的做法。ATMEL公司是世界上著名的高性能、低功耗、非易失性存储器和数字集成电路的一流半导体制造公司。20世纪90年代初,ATMEL率先把MCS51内核与其擅长的FLASH技术相结合,推出轰动世界的AT89系列单片机。1997年,ATMEL挪威设计中心出于市场需求考虑,充分发挥其FLASH技术优势,推出全新配置的精简指令集(RISC)单片机,简称AVR。几年来,AVR单片机已形成系列产品,其ATTINY,AT90,ATMEGA分别对应为低、中、高档产品4。122AVR单片机的现状电子技术如今迅猛发展,尤其是单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表、机器人制作等领域,使产品功能、精度和质量大幅度提高,且电路简单,故障率低,可靠性高,成本低廉。AVR单片机价格低廉、可擦除1000次以上,不再有报废品产生,且对掉电后数据的保存带来方便,来电时能记住掉电时的工作状态,给用户带来极高的可靠性,受到一致好评5。123AVR单片机的优点单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中。1)简便易学,费用低廉首先,对于非专业人员来说,选择AVR单片机的最主要原因,是进入AVR单片机开发的门槛非常低,只要会操作电脑就可以学习AVR单片机的开发。单片机初学者只需一条ISP下载线,把编辑、调试通过的软件程序直接在线写入AVR单片机,即可以开发AVR单片机系列中的各种封装的器件。AVR单片机因此在业界号称“一线打天下”。其次,AVR单片机便于升级。AVR程序写入是直接在电路板上进行程序修改、烧录等操作,这样便于产品升级。再次,AVR单片机费用低廉。学习AVR单片机可使用ISP在线下载编程方式即把PC机上编译好的程序写到单片机的程序存储器中,不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有AVR单片机的开发沈阳理工大学学士学位论文4应用,这可节省很多开发费用。程序存储器擦写可达10000次以上,不会产生报废品。2)高速、低耗、保密首先,AVR单片机是高速嵌入式单片机,AVR单片机具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。多累加器型,数据处理速度快。AVR单片机具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。中断响应速度快。AVR单片机有多个固定中断向量入口地址,可快速响应中断。其次,AVR单片机耗能低。对于典型功耗情况,WDT关闭时为100NA,更适用于电池供电的应用设备。有的器件最低18V即可工作。再次,AVR单片机保密性能好。它具有不可破解的位加密锁LOCKBIT技术,保密位单元深藏于芯片内部,无法用电子显微镜看到10。3)I/O口功能强,具有A/D转换等电路AVR单片机的I/O口是真正的I/O口,能正确反映I/O口输入/输出的真实情况。工业级产品,具有大电流灌电流1040MA,可直接驱动可控硅SCR或继电器,节省了外围驱动器件。AVR单片机内带模拟比较器,I/O口可用作A/D转换,可组成廉价的A/D转换器。ATMEGA48/8/16等器件具有8路10位A/D。部分AVR单片机可组成零外设元件单片机系统,使该类单片机无外加元器件即可工作,简单方便,成本又低。AVR单片机可重设启动复位,以提高单片机工作的可靠性。有看门狗定时器实行安全保护,可防止程序走乱飞,提高了产品的抗干扰能力。4)有功能强大的定时器/计数器及通讯接口定时/计数器T/C有8位和16位,可用作比较器。计数器外部中断和PWM也可用作D/A用于控制输出,某些型号的AVR单片机有34个PWM,是作电机无级调速的理想器件。AVR单片机有串行异步通讯UART接口,不占用定时器和SPI同步传输功能,因其具有高速特性,故可以工作在一般标准整数频率下,而波特率可达576K。5)片内EEPROMEEPROM数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM的寿命至少为100,000次擦除周期。EEPROM的访问由地址寄存器、数据寄存器和控制寄存器决定。通过SPI和JTAG及并行电缆下载EEPROM数据的操作6。总的来说,在相同的系统时钟下AVR运行速度最快;芯片内部的沈阳理工大学学士学位论文5FLSAH、EEPROM、SRAM容量较大;所有型号的FLASH、EEPROM都可以反复烧写、全部支持在线编程烧写ISP;多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。其中C编译器主要有CODEVISIONAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位6。124AVR单片机的型号标识解释1)型号紧跟的字母,表示电压工作范围。带“V”1855V;若缺省,不带“V”2755V。例ATMEGA4820AU,不带“V”表示工作电压为2755V。2)后缀的数字部分,表示支持的最高系统时钟。例ATMEGA4820AU,“20”表示可支持最高为20MHZ的系统时钟。3)后缀第一(第二)个字母,表示封装。“P”DIP封装,“A”TQFP封装,“M”MLF封装。例ATMEGA4820AU,“A”表示TQFP封装。4)后缀最后一个字母,表示应用级别。“C”商业级,“I”工业级(有铅)、“U”工业级(无铅)。例ATMEGA4820AU,“U”表示无铅工业级。ATMEGA4820AI,“I”表示有铅工业级7。125AVR8BITMCU的最大特点与其它8BITMCU相比,AVR8BITMCU最大的特点是1)哈佛结构,具备1MIPS/MHZ的高速运行处理能力。2)超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051MCU采用单一ACC进行处理造成的瓶颈现象17。3)快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发16。4)作输出时与PIC的HI/LOW相同,可输出40MA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10MA20MA灌电流的能力。沈阳理工大学学士学位论文65)片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠。6)大部分AVR片上资源丰富带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,ANALOGCOMPARATOR,WDT等。7)大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序8。14MD5加密算法的介绍141MD5的简介MD5算法即信息摘要算法(MESSAGEDIGESTALGORITHM5,在20世纪90年代初由MIT的计算机科学实验室和RSADATASECUTITYINC发明,经历的版本有MD2MD3MD4,MD5广泛用于加密技术,很多系统用户密码都以MD5加密方式保存,用户登录时,系统将用户输入的密码转换成MD5值,然后再与系统中保存的MD5值比较,以此来验证用户的合法性,这样比保存密码明文要安全的多,密码明文容易被窃取和使用,而经MD5加密后的密码,由于其不可逆运算的特性,即使MD5加密后的密码被窃取,系统安全也不会受到威胁16。142MD5算法的原理MD5以512位(BIT分组来处理输入的信息,每一分组又被划分为若干子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组组合后将生成一个128位散列值,这128位二进制数相当于16个字节,由这16个字节转换的字节串就是最后输出的32个字符(每字节转换为2个字符)。本设计MD5算法中,上下文结构变量CONTEXT的BUFFER成员是512位的信息处理缓冲,STATE成员保存MD5算法的4个32位初始幻数及最终的组合输出数位,COUNT成员保存信息位长。在初始化上下文结构变量CONTEXT以后,算法首先调用MD5UPDATE函数对原始信息串进行变换。核心变换函数为MD5UPDATE,对于长串会进行尽可能多次的MD5四轮变换,每次进行的四轮变换由函数MD5TRANSFORM完成,变换后的结果存入于CONTEXT沈阳理工大学学士学位论文7的状态成员STATE。MD5算法接着再进行信息串填充,使其位长度对512求余的结果等于448(即51264),信息的位长度被扩展至N512448位(BIT),即N6456字节(N为一个正整数19。MD5算法填充信息串时,在原始信息的后面填充一个1和若干个0,直到满足上面的条件为止。MD5C中使用的数组PADDING640X80,0,0,用于填充处理,该数组所有字节展开为二进制数时就是1000000,它以1个1开头,后面是511个0,共512位。实际填充时会使用其第0个字节开始的若干个连续字节。在进行填充处理后再调用核心函数MD5UPDATE继续进行变换,完成填充后再使64位二进制表示的填充前信息长度参与变换,此时是第3次调用MD5UPDATE函数,本设计中附加的填充前信息长度由8字节的BITS数组给出。MD5加密算法中,4个加密幻数为A0X01234567,B0X89ABCDEF,C0XFEDCBA98,D0X76543210。它们按LITTLEENDIAN方式初始存放于CONTEXTSTATE中。MD5加密的四轮变换函数MD5TRANSFORM使用了以下4个非线性函数(每轮1个)FX,Y,ZX状态成员STATE0STATE30X1032547698BADCFEEFCDAB8967452301缓冲成员BUFFER64个0X00。(2)首次调用MD5核心计算函数MD5UPDATEMD5UPDATE缓冲成员BUFFER313233343536800000,其中80开始的50个字节为填充字节,以1个二进制1开头,后面为447个0,BUFFER的最后8个字节仍为0X00。再次调用MD5UPDATE函数MD5UPDATECONTEXT,BITS,8,附加用64位8字节)表示的填充前串进行变换COUNT0COUNT10X0000020000000000,即COUNT51251244864STATE0STATE30X39DC0AE10XAB59BA490X57E056BE0X3E880FF2BUFFER的内容不变。最后输出的MD5加密密码为E10ADC3949BA59ABBE56E057F20F883E该字符串是将STATE0STATE3中4个十六进制长整数逆转并转换为小写以后的结果。为将初始密码“123456”进行MD5加密以后的密码存入单片机的EEPROM存储器,需要先将“E10ADC3949BA59ABBE56E057F20F883E”保存到PASSWORDBIN文件。创建PASSWORDBIN以后,打开单片机属性窗口找到“ADVANCEDPROPERTIES“下拉框,选择“INITIALCONTENTSOFEEPROM“项,在其后面的文本框中选择PASSWORDBIN文件即可完成对EEPROM的初始数据绑定。14本论文的结构本论文包括五大部分,第一部分是绪论,其中描述了电子密码锁的介绍,MD5算法的介绍,论文的结构,和AVR单片机的发展过程和现状;第二部分是系统的整体设计,其中包括系统的整体框图,硬件开发工具和软件开发工具,讲述了系统的设计的每个小框架,软件和硬件的功能菜单的介绍;第三部分是仿真硬件电路的设计,包括CPU的选型,所选CPU的功能介绍,外围电路的设计以及各模块的功能介绍;第四部分是软件设计,包括每个模块的软件设计流程图,及主要代码介绍;第五部分是系统的实现,包括程序的加载和功能的实现,介绍了软件的运行结果。沈阳理工大学学士学位论文92系统整体设计21系统框图图21系统框图如图21所示,这个框图实现电子密码锁的功能,在设计中用AVR单片机的EEPROM保存密码,当用户输入正确密码时开锁指示灯亮,液晶显示屏显示开锁成功。开锁成功后用户可按下重设密码键设置新密码,在输入十位以内的新密码后按下存入键可将新密码用MD5算法加密并写入EEPROM,下次开锁时用新密码才能打开。每次按键蜂鸣器都会发出声音以表示按键成功。22系统开发平台221PROTUES简介PROTEUS软件是英国LABCENTERELECTRONICS公司研发的EDA工具软件。它是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器系统为一体的系统设计和仿真平台。是目前同类软件中最先进、最完整的电子类仿真平台之一。它真正实现了在沈阳理工大学学士学位论文10计算机上完成从原理图、电路分析与仿真、单片机代码调试与仿真、系统测试与功能验证到PCB板生成的完整的电子产品研发过程9。已经安装了PROTEUSISIS7软件的桌面上就会有图标。双击该图标,出现工作界面如图1所示。界面中包括标题栏、下拉主菜单、快捷按钮栏、标准工具栏、绘图工具箱、状态栏、选择元器件按钮、预览对象方位控制按钮、仿真操作按钮、预览窗口、电路原理图编辑窗口等。1、电路图的绘制运行的程序后,进入该仿真软件的主界面。作图步骤(1)绘图前,为了便于作图,可作一些设置。如设置栅格、栅格捕捉精度、图形界面颜色、大小等。(2)通过对象选择按钮P,利用其搜索引擎,将所需元器件加入到对象选择器窗口。列元件清单,如表21元件清单(3)放置元器件至图形编辑窗口,并调整到合适位置。(4)修改属性,如电阻,设置电阻值(5)放置总线至图形编辑窗口。(6)完成元器件之间以及元器件与总线的连线。(7)给与总线连接的导线贴标签,以便于系统识别10。222PROTUES的特点PROTEUS软件具有其它EDA工具软件(例MULTISIM)的功能。这些功能是(1)元件名称型号数量PROTEUS中的名称单片机芯片MEGA161MEGA16晶振1MHZ1CRYSTAL电容22PF2CAP液晶显示屏LCD16021LM016L电阻2201RES电阻10K1RES沈阳理工大学学士学位论文11原理布图(2)PCB自动或人工布线(3)SPICE电路仿真革命性的特点(1)互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,PROTEUS建立了完备的电子设计开发环境。功能模块(1)智能原理图设计(ISIS)丰富的器件库超过27000种元器件,可方便地创建新元件;智能的器件搜索通过模糊搜索可以快速定位所需要的器件;智能化的连线功能自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。(2)完善的电路仿真功能(PROSPICE)PROSPICE混合仿真基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,LABCENTER也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;多样的激励源包括直流、正弦、脉冲、分段线性脉冲、音频(使用WAV文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;丰富的虚拟仪器13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;生动的仿真显示用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;高级图形仿真功能(ASF)基于图标的分析可以精确分析电路的多项指标,包沈阳理工大学学士学位论文12括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析11;(3)独特的单片机协同仿真功能(VSM)支持主流的CPU类型如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、DSPIC33、HC11、BASICSTAMP、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;实时仿真支持UART/USART/EUSARTS仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真;编译及调试支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、KEIL和HITECH)结合,进行高级语言的源码级仿真和调试;(4)实用的PCB设计平台原理图到PCB的快速通道原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计;先进的自动布局/布线功能支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理;整的PCB设计功能最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览;多种输出格式的支持可以输出多种格式文件,包括GERBER文件的导入或导出,便利与其它PCB设计工具的互转(如PROTEL)和PCB板的设计和加工12。在PROTEUS绘制好原理图后,调入已编译好的目标代码文件HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。ROTEUS是单片机课堂教学的先进助手。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以沈阳理工大学学士学位论文13达到的效果13。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。图22系统仿真平台界面23软件开发平台231WINAVR与AVR_STUDIO的介绍AVR_STUDIO是ATMEL官方针对AVR系列单片机推出的集成开发环境,它集开发调试与一体,有很好的用户界面与很好的稳定性。由于AVR_STUDIO仅支持编译汇编语言程序,不支持对C语言程序的编译。要基于AVR_STUDIO搭建AVR单片机C语言开发环境,除下载安装AVR_STUDIO之外,还需要下载安装WINAVR来提供AVRGCC编译器。WINAVR是GNU组织组织推出的AVR单片机的GCC编译器,该编译器的编译效率极高,GCC编译器是开源的也是免费的,使用GCC编译器,可以掌握标准C的语法等,为学习LINUX等奠定基础14。沈阳理工大学学士学位论文14232WINAVR的安装按如下系列的图示23进行安装沈阳理工大学学士学位论文15图23WINAVR的安装双击安装包启动安装开始准备安装同意LICENSE选择安装路径选择USB驱动确定开始安装并且完成安装232AVR_STUDIO的安装沈阳理工大学学士学位论文16图24AVR_STUDIO的安装选择安装向导语言接收协议选择安装目录选择安装组件正在安装完成安装安装后的软件界面如图25所示图25软件开发平台界面沈阳理工大学学士学位论文173硬件电路设计31CPU选型311ATMEGA16介绍本课题是基于AVR单片机。所以选用ATMEL公司推出的ATMEGA16完成。ATMEGA16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATMEGA16的数据吞吐率高达1MIPS/MHZ,从而可以减缓系统在功耗和处理速度之间的矛盾15。ATMEGA16AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与运算逻单元ALU相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。ATMEGA16有如下特点16K字节的系统内可编程FLASH具有同时读写的能力,即RWW,512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器T/C,片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益TQFP封装的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;STANDBY模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展STANDBY模式下则沈阳理工大学学士学位论文18允许振荡器和异步定时器继续工作16。本芯片是以ATMEL高密度非易失性存储器技术生产的。片内ISPFLASH允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用FLASH存储区APPLICATIONFLASHMEMORY。在更新应用FLASH存储区时引导FLASH区BOOTFLASHMEMORY的程序继续运行,实现了RWW操作。通过将8位RISCCPU与系统内可编程的FLASH集成在一个芯片内,ATMEGA16成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。ATMEGA16具有一整套的编程与系统开发工具,包括C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。312ATMEGA16产品特征及性能先进的RISC结构131条指令大多数指令执行时间为单个时钟周期32个8位通用工作寄存器全静态工作工作于16MHZ时性能高达16MIPS只需两个时钟周期的硬件乘法器非易失性程序和数据存储器16K字节的系统内可编程FLASH,擦写寿命10,000次具有独立锁定位的可选BOOT代码区,通过片上BOOT程序实现系统内编程,真正的同时读写操作17512字节的EEPROM,擦写寿命100,000次1K字节的片内SRAM可以对锁定位进行编程以实现用户程序的加密JTAG接口与IEEE11491标准兼容符合JTAG标准的边界扫描功能支持扩展的片内调试功能通过JTAG接口实现对FLASH、EEPROM、熔丝位和锁定位的编程沈阳理工大学学士学位论文19外设特点两个具有独立预分频器和比较器功能的8位定时器/计数器一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器具有独立振荡器的实时计数器RTC四通道PWM8路10位ADC,8个单端通道,2个具有可编程增益(1X,10X,或200X)的差分通道面向字节的两线接口两个可编程的串行USART可工作于主机/从机模式的SPI串行接口具有独立片内振荡器的可编程看门狗定时器片内模拟比较器特殊的处理器特点上电复位以及可编程的掉电检测片内经过标定的RC振荡器片内/片外中断源6种睡眠模式空闲模式、ADC噪声抑制模式、省电模式、掉电模式、STANDBY模式以及扩展的STANDBY模式I/O和封装32个可编程的I/O口40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装18工作电压ATMEGA16L2755VATMEGA164555V速度等级8MHZATMEGA16L016MHZATMEGA16ATMEGA16L在1MHZ,3V,25C时的功耗正常模式11MA空闲模式035MA掉电模式/头文件说明部份/UNSIGNEDCHARX1,X2;/全局变量声明部份/FUNCTION1/功能函数定义部份/MAININTI,J/整型变量声明部份/FUNCTION1/功能函数说明部份/C语言具有很强的功能性和结构性,可以缩短单片机控制系统的开发周期,而且易于调试和维护,已经成为目前单片机语言中最流行的编程语言。沈阳理工大学学士学位论文29汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。对于目前普遍使用的RISC架构的8BITMCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少单片机开发中,我们还是建议采用汇编语言比较好。而C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。总之,使用C语言编写程序功能强,限制少,灵活性大,适合编写任何类型的程序。用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。42整体程序设计简要介绍421整体程序的设计整体程序采用分模块设计法,各模块主要包括主函数模块,LCD1602液晶显示屏模块,矩阵键盘输入模块,MD5加密模块,以及各模块串口及变量的赋值与定义。43各程序模块的设计431各函数定义1主函数定义INCLUDEINCLUDEINCLUDE沈阳理工大学学士学位论文30INCLUDEDEFINEINT8UUNSIGNEDCHARDEFINEINT16UUNSIGNEDINT/电子锁指示灯开关定义DEFINELED_ONPORTDEXTERNVOIDLCD_SHOWSTRINGINT8UX,INT8UY,CHARSTR/MD5加密函数EXTERNCHARMD5STRINGCHARSTR/键盘扫描相关函数即按键键值EXTERNINT8UKEYS_SCANEXTERNINT8UKEYMATRIX_DOWNEXTERNINT8UKEYNO/LCD提示字符串CONSTCHARTITLE_TEXT“YOURPASSWORD“/显示缓冲CHARDSY_BUFFER10“/保存在EEPROM中的密码MD5加密密码,其长度为32位CHAREEPROM_PASSWORD33/用户输入的密码密码不超过10位CHARUSERINPUTPASSWORD112LCD1602液晶显示屏定义INCLUDEINCLUDEDEFINEINT8UUNSIGNEDCHAR沈阳理工大学学士学位论文31DEFINEINT16UUNSIGNEDINT/LCD控制引脚定义DEFINERSPD0/寄存器选择DEFINERWPD1/读/写DEFINEEPD2/使能/LCD控制端口DEFINELCD_CRTL_PORTPORTD/LCD数据端口定义DEFINELCD_PORTPORTC/发送LCD数据端口DEFINELCD_PINPINC/读取LCD数据端口DEFINELCD_DDRDDRC/LCD数据端口方向/LCD控制引脚操作定义DEFINERS_1LCD_CRTL_PORT|_BVRSDEFINERS_0LCD_CRTL_PORT/当前按键序号,该矩阵中序号范围为015,0XFF表示无按键INT8UKEYNO0XFF/判断键盘矩阵是否有键按下/INT8UKEYMATRIX_DOWNMD5加密定义INCLUDEINCLUDEDEFINEINT8UUNSIGNEDCHARDEFINEINT16UUNSIGNEDINTDEFINEINT32UUNSIGNEDLONGDEFINEPINT8UUNSIGNEDCHAR/MD5变换程序常量DEFINES117DEFINES1212DEFINES1317DEFINES1422DEFINES215DEFINES229DEFINES2314DEFINES2420DEFINES314DEFINES3211DEFINES3316DEFINES3423DEFINES416DEFINES4210沈阳理工大学学士学位论文33DEFINES4315DEFINES4421TYPEDEFSTRUCT/MD5加密处理上下文结构INT32UCOUNT2/信息位长BITSLENGTHINT32USTATE4/MD5加密初始幻数及MD5摘要计算数据128位,16字节,32个16进制字符INT8UBUFFER64/处理缓冲512位MD5_CTXSTATICINT8UPADDING64/512个填充位,第1位为1,其他位为00X80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/MD5加密的基本位操作函数F,G,H,I,其中X,Y,Z全部为32BITS的长整型数据DEFINEFX,Y,ZXAROTATE_LEFTA,SABDEFINEGGA,B,C,D,X,S,ACAGB,C,DXINT32UACAROTATE_LEFTA,SABDEFINEHHA,B,C,D,X,S,ACAHB,C,DXINT32UACAROTATE_LEFTA,SAB沈阳理工大学学士学位论文34DEFINEIIA,B,C,D,X,S,ACAIB,C,DXINT32UACAROTATE_LEFTA,SAB/MD5相关函数申明VOIDMD5INITMD5_CTXCONTEXTVOIDMD5UPDATEMD5_CTXCONTEXT,INT8UINPUT,INT16UINPUTLENVOIDMD5FINALINT8UDIGEST16,MD5_CTXCONTEXTSTATICVOIDMD5TRANSFORMINT32U4,INT8U64STATICVOIDENCODEINT8U,INT32U,INT16USTATICVOIDDECODEINT32U,INT8U,INT16U432主函数模块如图42所示,是主函数MAIN的流程图概况。在程序开始时初始化并配置端口,在初始时关闭LED指示灯,并且将LCD初始化,使其在第0行显示提示信息。AVREEPROM的密码已由初始化PASSWORDBIN文件导入,并将EEPROM中预设的密码读入EEPRO

温馨提示

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

评论

0/150

提交评论