版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科生毕业设计(论文)本科生毕业设计(论文)超市存物箱模拟装置设计超市存物箱模拟装置设计二级学院二级学院 :*专专 业业 : *年年 级级 : *学学 号号 :*作者姓名作者姓名 : *指导教师指导教师 : *完成日期:完成日期:20172017 年年 5 5 月月 15 15 日日 A A 基础理论基础理论 B B 应用研究应用研究 C C 调查报告调查报告 D D 其他其他超市存物箱模拟装置设计超市存物箱模拟装置设计AAAA:*AAAA:*AAAA:*论文答辩小组论文答辩小组组组 长长: 成成 员员: 论文成绩:论文成绩: 目录目录1 绪论绪论.11.1 研究背景及意义.11.2 电子密码
2、锁的发展趋势.11.3 设计目标.11.4 芯片方案选择.12 系统硬件设计系统硬件设计.22.1 整体方案设计.22.1.1 系统概述及框图.22.2 最小系统模块.22.2.1STC89C52 简介.22.2.2 最小系统电路.32.3 液晶显示电路.42.3.1 1602 液晶简介.42.3.2 液晶显示模块电路.42.4 按键输入模块.52.5 存储芯片模块电路.62.5.1 存储芯片的介绍.62.5.2 AT24C02 模块电路图.62.6 蜂鸣器模块电路图.72.7 继电器模块电路.72.8 HX711、压力传感器模块电路图.83 软件设计软件设计.93.1 程序流程图设计.93.
3、1.1 总体程序流程图设计.93.1.2 液晶程序设计.123.1.3 矩阵键盘的扫描流程设计.134 电路、程序调试及硬件组装电路、程序调试及硬件组装.154.1 软件仿真.154.2 电路板设计.184.3 元器件的选择与测量.195 总结及研究展望总结及研究展望.205.1 总结.205.2 研究展望.20参考文献参考文献.21致谢致谢 .22附录附录 .23附录 A 元件清单.23附录 B 原理图.24附录 C PCB 图.24附录 D 实物图.25附录 E 程序 .25超市存物箱模拟装置设计超市存物箱模拟装置设计作者 * 指导老师 *(*,* *)摘要摘要: :/ STC89C52/
4、关/要/ STC89C52/键/1602/A/D/AT24C02/键/ EEPROM/ 100/关键词关键词:/键/AT24C02;/Design of Locker Simulator In Supermarket author * Advisor *(School of Information Engineering,Lingnan Normal University,ZhanJiang,524048 China)Abstract:With STC89C52 microcontroller as the core,the hardware circuits of the design in
5、cluding alarm buzzer,matrix keyboard,LCD1602,electromagnetic lock,ADC module,pressure transducer and AT24C02.This design achieves the functions of password setting,identification and storage, and the operations of rely driver and electromagnetic lock as well as the trumkful prompt of its pressure tr
6、ansducer.The single-chip microcomputer will receive the password and compare it with the six-bit password stored in EEPROM.There are one million different combinations of the six-bit password that can be changed at random,which provides a sound confidentiality.If the password were correct,the single
7、-chip microcomputer would drive the open of electromagnetic lock;otherwise, SCM would send out the signal of alarming through communication line and the buzzer would raise the alarm.Keywords:Password lock; Liquid crystal display;Matrix keyboard;Electromagnetic lock;AT24C02;Relay driver;pressure tran
8、sducer11 1 绪论绪论1.11.1 研究背景及意义研究背景及意义随着科技的发展,信息化节奏不断加快,以前的老式机械锁已经不能满足需求而以程序控制的电子密码锁,具有记忆、辨识、报警等特别的使用功能。基于单片机的电子密码锁的研究在保护财产和人身安全方面具有深远意义。1.21.2 电子密码锁的发展趋势电子密码锁的发展趋势从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,相比于键盘式电子密码锁,由数字、字符、图形图像、人体生物特征和时间等要素构造的密码锁更加安全可靠,组合使用这些信息能够使防盗锁获得高度的保密性,这样就增加了更高的安全保险性,以后将会朝着这方向深入发展7。1.
9、31.3 设计设计目标目标(1)用户存物、用户取物、管理员取物(2)管理员修改密码、存物时用户密码通过 LCD 显示(3)存物箱状态指示、自动开关箱、有效按键声音提示、密码输入提示(4)密码正确提示、密码错误提示(5)满箱提示1.41.4 芯片方案选择芯片方案选择此次设计采用单片机 STC89C52 作为系统控制器。单片机具有可靠性强、性价比搞、电压低、功耗低、算术运算功能强、软件编程灵活自由度大,可用软件编程实现各种逻辑功能,本身带有定时器、计数器,可以用来定时和计数,并且其功耗低,体积小,计数成熟和成本低等优点。22 2 系统硬件设计系统硬件设计2.12.1 整体方案设计整体方案设计2.1
10、.12.1.1 系统概述系统概述及框图及框图整个系统以 STC89C52 单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它模块围绕着单片机最小系统展开。其中包括,显示设备使用1602 液晶,进行锁状态和输入密码的显示;密码输入设备采用 4*4 的矩阵键盘,16个按键的数量足够满足此次设计的要求;密码存储使用 EEPROM 芯片,此次设计使用的 EEPROM 芯片型号是 AT24C02,通过 IIC 接口和单片机进行数据传输;发音设备采用有源蜂鸣器,可以发出按键音和报警音;电磁锁采用继电器来驱动;满箱提示使用压力传感器外部输入和 A/D 放大转换芯片转换至单片机来完成。最后是
11、供电采用常用的 USB 5V 进行供电、电磁锁供电采用 5V 供电,系统总框架图如图 1 所示图图 1 1 系统框图系统框图2.22.2 最小系统模块最小系统模块2.2.1STC89C522.2.1STC89C52 简介简介(1)概述STC89C52 是一个电压低,性能高的单片机,片内含 8k bytes 的可屡次擦写的Flash 只读程序存储器(ROM)和 256 bytes 的随机存取数据存储器(RAM)。电源蜂鸣器模块继电器模块密码存储模块电磁锁模块矩阵键盘模块单片机最小系统1602 液晶模块AD 数模转换模块压力传感器模块3P101P112P123P134P145P156P167P17
12、8RESET9P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR16P37/RD17XTAL218XTAL119GND20P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE30EA31P0732P0633P0534P0435P0336P0237P0138P0039VCC40P101P112P123P134P145P156P167P178RESET9P30/RXD10P31/TXD11P32/INT012P33/INT113P34/T014P35/T115P36/WR16P37/
13、RD17XTAL218XTAL119GND20P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE30EA31P0732P0633P0534P0435P0336P0237P0138P0039VCC40U1STC89C5212X112MC230pFC330pFGNDGNDVCCVCC123456789R1103C110uFR310KGNDVCCD0D1D2D3D4D5D6D7RSRWENbprelaySCLSDAP10P11P12P13P14P15P16P17STC89C52 有 40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2
14、个外中断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线。引脚如图 2 所示13。图图 2 2 STC89C52STC89C52 引脚图引脚图2.2.22.2.2 最小系统电路最小系统电路STC89C52 的最小系统如图 3 所示,整个最小系统由三个部分组成,晶振电路部分、复位电路部分、电源电路等三个部分组成。最后一个是电源部分,采用 5V 的USB 直接供电,可采用充电宝、电脑 USB 口、移动电源等设备进行供电。此外,除了单片机最小系统的 3 个部分之外,这里还多了一些外部电路。由于 STC89C52 的P0 口是漏极开路输出,因此在 P0 口接了一个 10K
15、的排阻 R1,使得 P0 口可以作为普通的 I/O 口使用,此次设计用 P0 口来做液晶的数据口。图图 3 3 单片机最小系统单片机最小系统42.32.3 液晶显示电路液晶显示电路2.3.12.3.1 16021602 液晶简介液晶简介液晶显示器是一种显示器件,具有小体积、轻重量、低功耗等特点。本系统显示采用了工业字符型液晶模块 1602,可显示 2 行 16 个字符,能方便显示英文字母大小写、阿拉伯数字、常用符号等,通过自定义还可显示简单的汉字。可以显示 2行标准字符,每行共有 16 个字符。尺寸、引脚说明如图 4、表 1 所示8。图图 4 4 液晶尺寸说明液晶尺寸说明表表 1 1 液晶引脚
16、说明液晶引脚说明符号符号引脚说明引脚说明符号符号引脚说明引脚说明VSS电源地D2数据VDD电源正极D3数据VL液晶显示偏压D4数据RS数据/命令选择D5数据R/W读/写选择D6数据E使能信号 D7数据D0数据BLA背光源正极D1数据BLK背光源负极2.3.22.3.2 液晶显示模块电路液晶显示模块电路液晶模块的电路的连接图如图 5 所示,第 1 脚和第 2 脚分别接到电路的 GND 和VCC,这 2 个脚是液晶工作的电源输入脚。第 3 脚通过一个 10K 的电位器连接到地端,可通过调节该电位器来调节液晶的对比度。第 4 脚是液晶的寄存器选择管脚,接到单片机的 P2.7 脚上。第 5 脚是液晶的
17、读写信号管脚,接到单片机的 P2.6 脚上。第6 脚是液晶的使能管脚,接到单片机的 P2.5 脚上。第 7 脚到第 14 脚是液晶的 8 位5GNDGNDVCCVCCRSRWEND0D1D2D3D4D5D6D7R2103GNDVSS1VCC2VO3RS4RW5EN6D07D18D29D310D411D512D613D714A15K16LCD 1602LCD11602P10P11P12P13P14P15P16P17双向数据线,接到了单片机的 P0 口上。第 15 脚和第 16 脚是液晶的背光电源脚,接 VCC 和 GND。当使用不带背光的模块时,这两个引脚悬空不接。图图 5 5 液晶模块连接图液
18、晶模块连接图2.42.4 按键输入模块按键输入模块由于此次设计输入参数较多、功能较复杂,因此采用 4*4 的矩阵键盘,如图 6所示。只需占用 8 个单片机的 IO 口,就可以实现对 16 个按键的检测。在 16 个按键中,除了 0-9 这 10 个数字键之外,还有删除、取消、确定、手动关锁、修改密码、管理员密码等 6 个功能按键。按键识别采用两步扫描判别法:首先判别按键所在的行,由 P1 口向键盘输出列扫描,然后读入行线状态来判断,然后判别按键所在的列,由 P1 口向键盘输出行扫描,然后读入列线状态来判断,最后将行和列的状态相或得到一个值,再把该值取反得到该位置的键值10。图图 6 6 矩阵按
19、键电路矩阵按键电路62.52.5 存储芯片模块电路存储芯片模块电路2.5.12.5.1 存储芯片的介绍存储芯片的介绍主要特性如图 7、表 2、表 3 所示11。图图 7 7 AT24C02AT24C02 封装图封装图表表 2 2 AT24C02AT24C02 引脚说明引脚说明引脚名称引脚名称引脚功能引脚功能A0-A2器件地址输入SDA串行数据输入输出SCL串行时钟输入WP写保护VCC电源GND地表表 3 3 AT24C02AT24C02 主要功能主要功能2.5.22.5.2 AT24C02AT24C02 模块电路图模块电路图存储芯片 AT24C02 模块的电路的连接图如图 8 所示,第 4 脚
20、和第 8 脚分别接到了电路的 GND 和 VCC,这两个脚是芯片工作的电源、地输入脚;1、2、3 引脚都连接到了 GND,因此芯片的 7 位二进制地址是 1010000;芯片的第 7 引脚接到了 GND,可以进行正常的读写操作,接到 VCC 时启动写保护功能。最后由于 AT24C02 芯片的工作电压:1.8V5.5输入引脚经施密特触发器滤波抑制噪声支持硬件写保护输入/输出引脚兼容 5V双向数据传输协议高可靠性读写次数1000000 次,数据保存 100年二线串行接口兼容400KHz(1.8V,2.5V,2.7V,3.6V)应用在内部结构:256*8(2k)7A01A12A23GND4SDA5S
21、CL6WP7VCC8U2AT24C02R410KR510KVCCSCLSDAVCCQ18550GNDVCCBEEP1bpSCL 和 SDA 是漏极开路设计,因此在连接到单片机的同时,还要加上 2 个 10K 的上拉电阻 1。图图 8 8 存储芯片存储芯片 AT24C02AT24C02 模块电路模块电路2.62.6 蜂鸣器模块蜂鸣器模块电路图电路图此次设计使用的是有源蜂鸣器。由于蜂鸣器工作时,需要的电流比较大,单片机的 IO 口输出的电流又比较小,所以这里利用三极管的开关管功能来控制蜂鸣器发音,选用的三极管型号是 PNP 三极管 S8550,而且选用的蜂鸣器属于有源蜂鸣器,即在蜂鸣器内部已经内置
22、了震荡电路,单片机无需连续发出高低电平来驱动它,而只要输出高(或低)电平即可,这大大简化了单片机程序的设计。由于选用的是PNP 型而单片机上电 IO 口默认是高电平的,所以上电时蜂鸣器是不会发出鸣叫的。蜂鸣器电路如图 9 所示。 图图 9 9 蜂鸣器电路蜂鸣器电路2.72.7 继电器模块电路继电器模块电路此次设计中采用的继电器属于电磁式继电器。继电器模块的电路如图 10 所示。继电器使用的是 5V 电压触发的。由于继电器由导通到关断瞬间,由于工作线圈有电感的性质,所以会在继电器的线圈的低电压端产生一个瞬间电压尖峰,通常能高达8Q2S8550D21N4148GNDVCCJ2D1LEDR61Kre
23、layRelay1数十倍的线圈额定工作电压。所以这里接入一个二极管在继电器两端,因为二极管的负端通常接到 VCC,因此电压尖峰将被抑制。保护了板上的电子元件。当单片机的 IO 口给 PNP 三极管 Q2 一个低电平后后,三极管导通,继电器供电,因此继电器从断开变为闭合,继而给连接到 J2 的电磁锁上电,最终达到单片机控制电磁锁的效果。为了更加形象的感受到电磁锁被打开,此外还加了一个发光二极管作为电磁锁打开的指示灯6。图图 1010 继电器电路继电器电路2.82.8 HX711HX711、压力传感器模块电路图、压力传感器模块电路图此次设计满箱提示功能是当存物箱过满且放不进去时,给存物的人以报警声
24、音提示,存物时,如果存物过满必然会对箱壁有挤压力。在程序上设置一个压力值,如果外部压力传感器采集的压力值大于设置的压力值,证明存物箱存物过满,蜂鸣器报警给存物的人提示。所以设计上采用外部压力传感器输入,但是外部压力传感器采集的压力信号输出较小,单片机并不能识别压力传感器输出的信号,所以采用A/D 转换芯片 HX711 将外部压力传感器采集的压力信号传到 A/D 转换芯片 HX711 进行增益放大,再经过 A/D 转换芯片 HX711 转换成数字信号,再传到单片机上。电路图如图 12 所示压力传感器是采用四个应变电阻封装构成引出来的四根线分别是电源E+、地 E-、信号 A+、信号 A-,并分别接
25、到 A/D 转换芯片 HX711 的 E+、E-、A+、A-端,最后 A/D 转换芯片 HX711 的信号 DT、信号 SCK 分别接到单片机的 IO 口,HX711 芯片管脚如图 11 所示。9图图 1111 HX711HX711 芯片管脚芯片管脚图图 1212 HX711HX711、压力传感器模块电路图、压力传感器模块电路图3 3 软件设计软件设计3.13.1 程序流程图设计程序流程图设计3.1.13.1.1 总体程序流程图设计总体程序流程图设计系统的软件总流程图如图 13 所示,最开始先进行液晶的初始化,包括液晶功能初始化和液晶显示内容初始化。接着就进行密码初始化,包括检查密码存储芯片是
26、不是新的,并且把密码从存储芯片读取到单片机,保存在一个数组里面。完成初始化之后,就开始进行矩阵键盘的扫描,并根据不同的按键扫描返回值,进行不同的任务处理,这些任务基本包括开锁密码判断、密码错误报警、修改密码、管理员恢复密码等。10保存新密码图图 1313 程序流程图程序流程图开始液晶初始化密码初始化输入密码密码类型?正确?管理员密码报警恢复初始密码否是解锁密码正确?错误计次加 1否错 3 次?锁键盘 1 分钟并报警是否执行开锁操作修改密码?是修改密码程序是结束否报警执行满箱提示11程序设计流程说明:首先进行液晶初始化、密码初始化。判断密码输入类型,如果是解锁密码,且输入密码正确,执行开锁操作,
27、并且启动外部压力传感器输入有效,执行满箱提示。如果输入错误,错误次数达到三次,锁住键盘 1 分钟并报警。如果输入的密码类型是管理密码,且输入正确,则恢复初始化密码,错误则报警。如果修改密码,必须在输入解锁密码输入正确,输入新密码,修改密码成功,并保存新密码。部分代码如下:1602 液晶初始化代码: void LcdInit()LcdWriteCmd(0 x38); / 16*2 显示,5*7 点阵,8 位数据口LcdWriteCmd(0 x0C); / 开显示LcdWriteCmd(0 x06); / 地址加 1LcdWriteCmd(0 x01); / 清屏密码初始化代码void CodeI
28、nit()uchar dat,i;dat=IIcReadDat(10);if(dat!=88)IIcWriteDat(0,1); / 给 AT24C02 第 0 个内存写入第一个密码“1”IIcWriteDat(1,2); /给 AT24C02 第 1 个内存写入第一个密码“2”IIcWriteDat(2,3); /给 AT24C02 第 2 个内存写入第一个密码“3”IIcWriteDat(3,4); /给 AT24C02 第 3 个内存写入第一个密码“4”IIcWriteDat(4,5); /给 AT24C02 第 4 个内存写入第一个密码“5”IIcWriteDat(5,6); /给 A
29、T24C02 第 5 个内存写入第一个密码“6”IIcWriteDat(10,88);12是显示一个字符定位行列坐标液晶初始化for(i=0;i6;i+)ArrCodeUnlocki=IIcReadDat(i);3.1.23.1.2 液晶程序设计液晶程序设计程序流程说明:首先进行液晶初始化,液晶初始化程序都是固定的模式,之后确定按键是哪个按下所以要定位行列坐标,之后显示一个字符,如果数据显示完进行下一步,否则回到定位行列坐标。如图 14 所示,部分代码如下:图图 1414 液晶显示流程图液晶显示流程图液晶光标定位代码:void LcdGotoXY(uchar y, uchar x)if(y=0
30、) /第一行 LcdWriteCmd(0 x80+x); if(y=1) /第二行 LcdWriteCmd(0 x80+0 x40+x);row=y;数据显 示完?否13找到行列的交点按键返回键值扫描是哪一列扫描是哪一行返回 99,代表没有按键按下否column=x;输出字符代码:void LcdPrintStr(uchar *str)while(*str!=0)LcdWriteData(*str+);3.1.33.1.3 矩阵键盘的扫描流程矩阵键盘的扫描流程设计设计程序流程说明:判断按键是否有按下,有按下,则判断是哪一行,哪一列,并找到行列的交点按键,并返回按键值。没有按键按下,则返回 99
31、,代表没有按键按下。如图 15 所示。部分代码如下:图图 1515 矩阵键盘扫描流程图矩阵键盘扫描流程图有按键 按下?是14键盘扫描代码:uchar KeyScanf() uchar ret,temp1,temp2; P1=0 x0f; if(P1!=0 x0f) DelayMs(15);if(P1!=0 x0f) temp1=P1; / 判断是哪一行按键按下P1=0 xf0; DelayMs(5);temp2=P1; / 判断是哪一列按键按下ret=temp1|temp2; / 通过行和列的判断是哪一个按键按下switch(ret)case 0 xe7: return 1; case 0 x
32、77:return 12;case 0 xd7: return 2; case 0 xeb:return 4;case 0 xb7: return 3; case 0 xdb:return 5; case 0 xbb:return 6; case 0 x7b: return 13;case 0 xed: return 7; case 0 xdd:return 8; case 0 xbd: return 9; case 0 x7d:return 14;case 0 xee: return 10; case 0 xde: return 0;case 0 xbe: return 11;case 0
33、x7e:return 15; return ret;return 99;154 4 电路、程序调试电路、程序调试及硬件组装及硬件组装4.14.1 软件仿真软件仿真此次设计采用 Keil 进行程序仿真,电路采用软件 Proteus 仿真,在做成成品前,会有一个模拟仿真,做模拟仿真会带来很多的方便好处,例如,实物可以演示的,在仿真软件上就可以做到,这样就省了物力人力的浪费。模拟仿真如果验证正确可行了就可以做实物成品了。仿真过程就是一个找错的过程,不断的验证改正直到正确。4.1.14.1.1 程序程序调试调试写程序不是一次就能成功,而是一个反复找错的过程。在写程序之前,把总设计的流程图列出来。这样在
34、写程序时就比较有总的框架结构。写程序就有了顺序,该写什么就比较清楚。调程序的前提是熟悉 Keil 软件和 C 语言,此次程序设计大部分是关于硬件的程序,会根据硬件的资料进行程序设计,这是比较难的点,因为你必须通过硬件资料了解硬件的工作原理,才能更好的写程序。仿真图如图 16 所示图图 1616 程序调试程序调试164.1.24.1.2 电路的调试及仿真电路的调试及仿真调试是指系统的调整、改进与测试。本设计电路采用 Proteus 进行电路仿真测试,首先设计出整体电路图然后进行检查有没有错误,然后将 Keil 软件上调试生成的 HEX 文件下载到仿真电路图进行仿真,整个模拟仿真如果成功,则表明最
35、后做出的实物是成功可行的,不过也不排除在做硬件时出现错误。如果仿真不成功,可以检查程序、还有电路中的元件参数以及元件的选取是不是符合。Proteus 仿真如图17、18、19、20 所示。(1)输入密码图图 1717 输入密码输入密码(2)解锁成功图图 1818 解锁成功解锁成功17(3)修改密码图图 1919 修改密码修改密码(4)输入管理员密码初始化密码成功图图 2020 初始化密码初始化密码184.24.2 电路板设计电路板设计此次设计的 PCB 制版,采用软件 DXP 2004 画板,要完成电路板设计的整个过程,必须经过原理图设计、PCB 设计和制板三个阶段。(1)绘制原理图:首先设计
36、总的电路图,总的电路图也就是有许多元件和导线构成的,元件都是有外形构造的以及引脚等。所以在设计电路板时,就有元件的封装,例如电阻元件,是有两个引脚,但是外形大小有很多差别,所以要根据选购的元件型号以及外型情况进行具体画封装,例如可以选择直尺量元件引脚间的长度,再在软件上选择封装,如果软件上没有合适的封装,就需要自己重新画封装。绘制的原理图如图 21 所示。图图 2121 绘制原理图绘制原理图(2)绘制 PCB 板:绘制完电路图以及封装之后,将原理图导入图导入,接下来进行布线,可以选择自动布线,也可以自己布线,尽量选择自己布线。PCB 图如图22 所示。19图图 2222 PCBPCB 图图4.
37、4.3 3 元器件的选择与测量元器件的选择与测量此次设计的元器件主要有:STC89C52 单片机、晶振、电阻、电容、按键、开关、电源座、三极管、蜂鸣器、时钟芯片、液晶、继电器、压力传感器、A/D 转换芯片HX711 等。这些元器件的引脚需要查找资料,了解每个器件的特性再进行焊接。这些元器件直接根据型号到电子元器件市场就很容易买到。其中焊接时要注意元件正负极性,电阻电容大小、芯片引脚顺序等细节。一般电阻的大小可以通过色环读取,或直接用万用表进行测量;电容和晶振等的大小会标准在元件本身;元件的正负可以遵循长正短负的原则,一些特殊元件可以通过查找205 5 总结总结及研究展望及研究展望5.15.1
38、总结总结经过三个多月的努力,毕业设计的任务基于单片机的超市存物箱模拟装置设计已经完成。这个设计题目并不是新的,但从中能体现到一个系统开发设计的过程,足于让我受益。能够从设计、论证、画图、制板、编程到最终的调试成功。完成整个系统的设计,我又得到了很好的一次实践锻炼。设计论证和完成设计的整个过程,是将单片机原理、C 语言程序、模拟电路基础与数字电路基础、protel PCB 设计等多门课程的内容有机地结合应用在了一起。如果对于这些课程没有掌握,那做这个设计必然困难重重,所以在大学四年期间的平时上课时间以及课下时间,要多去图书馆充实自己,不要把时间浪费了。此次毕业设计的核心是单片机,我所学专业也是以
39、单片机课程为核心的,现在单片机功能日益强大,有八位、十六位、三十二位等,但其基本原理是相对不变的。本次毕业设计采用八位 STC89C52。虽然本次设计任务的功能较为简单,但是能够较全面的涉及单片机各项基本知识,提高了自己的单片机设计能力,是一次将理论能力向实践能力转化的一次锻炼机会。知识就是从不懂才去探索学习到懂的一个过程。我是一个总是喜欢自己去研究问题,不喜欢和别人探讨交流,总是很被动,不喜欢主动去和别人交流,我将在以后的工作、生活中改变这些缺点。5.25.2 研究展望研究展望现在整个设计成品及论文已经完成,虽然跟不上目前的社会背景使用要求,但是我完成了最终要达到的目标。我从中做了很多努力我
40、收获很多,除了自己的努力之外,还有指导老师的殷切指导及同学的帮助,由于个人知识水平有限有很多地方难免存在不足之处,但是设计就是一个不断完善的一个过程。现在来看这个功能的实现还存在着不少可以扩展的功能比如加上指纹识别模块或者无线刷卡模块等,都可以提高本设计的适用范围。21参考文献参考文献1 张毅刚.赵光权.张京超.单片机原理及应用:C51 编程+Proteus 仿真J高等教育出版社,2016, 54-572 刘刚. Protel DXP 2004 SP2 M. 电子工业出版社, 2013, 14-163 周旭欣.周淇.单片机原理及应用:基于 keil 及 Proteus 仿真 J北京航空航天大学
41、出版社 2016,(03):4 王千. 实用电子电路大全M. 电子工业出版社, 2004, 28-365 沈红卫. 单片机应用系统设计实例与分析M.北京航空航天大学出版社, 2005, 35-386 余孟尝.数字电子技术基础简明教程M.高等教育出版社 2006.77 郭海英. 基于单片机的电子安全密码锁的设计M. 现代电子技术, 2005,(13)8 李玉梅. 基于 MSU-51 系列单片机原理的应用设计M.国防工业出版社, 2006, 35-389 张丽娜,刘美玲,姜新.51 单片机系统开发与实践J北京航空航天大学出版社2013,(10)10 陈桂友,单片机应用技术基础.机械工业出版社,20
42、15,(07)11 叶启明. 单片机制作的新型安全密码锁J. 家庭电子, 2005, (10): 98-11112 李玉峰、倪虹霞. MCS-51 系列单片机原理与接口技术M.人民邮电出版社 2004, 76-9613张齐 .朱宁西.单片机应用系统设计技术-基于 C51 的 Proteus 仿真J电子工业出版社,2014,(9):14 Hiro Yamasaki.The future of sensor interface electronicsJ.Sensors and actuators A,2011,(56):129-133.22致谢致谢我的四年大学生活即将结束,而对于我的人生只是一小段
43、,接下来我将面临新开始新的挑战。本设计的研究工作是在我的指导老师及舍友的精心指导和悉心关怀下完成的。从开题报告到论文结束,我所取得的每一个进步、编写的每一段程序都有舍友、导师的关心指导。在这次毕业设计中我遇到了很多困难比如,在编写程序方面,写程序是一个比较枯燥的,所以要有耐心和细心。在编写完程序之后,我受益匪浅。在以后的学习工作中,尽自己最大的努力取得更好的成绩。 在此我要向我的指导老师以及我的所有老师致以最由衷的感谢和深深的敬意,在四年的大学学习期间,有了每位老师的精心教学,使我获得了很多专业知识,取得了很大的进步。在这里,我向所有关心和帮助过我的老师、同学和朋友表示由衷的谢谢!最后,谢谢在
44、忙碌之中参加评阅论文和答辩的各位老师。23附录附录附录附录 A 元件清单元件清单元件名称元件名称元件数量元件数量STC89C521 片单片机底座1 个12M 晶振1 个30pF 电容2 个电解电容 10uF1 个电阻 1K1 个电阻 10K3 个排阻 10K1 片按键16 个1602 液晶1 个1602 液晶底座1 个10K 电位器1 个AT24C021 个AT24C02 底座1 个有源蜂鸣器1 个S8550(PNP)三极管2 个1N4148 二极管1 个led 灯1 个5V 继电器1 个继电器端子1 个电源开关1 个DC3.5 电源座1 个电磁锁供电线1 根导线若干电源供电线1 根电磁锁1
45、个压力传感器一个A/D 转换芯片 HX711一片24附录附录 B 原理图原理图附录附录 C PCB 图图25附录附录 D 实物图实物图附录附录 E 程序程序#include HX711.h#ifndef _MAIN_H_#define _MAIN_H_#define uchar unsigned char#define uint unsigned int#define GapValue 430#define yaliValue 100#endif/声明函数extern void DelayMs(uint time);extern void MingJiao(uint time);extern
46、void Get_yali1();26extern void Get_yali2();/定义管脚sbit SDA_P = P21; / 定义 AT24C02 的 SDA 引脚sbit SCL_P = P20; / 定义 AT24C02 的 SCL 引脚sbit LcdEn_P = P25; / 1602 液晶的 EN 管脚sbit LcdRw_P = P26; / 1602 液晶的 RW 管脚 sbit LcdRs_P = P27; / 1602 液晶的 RS 管脚sbit Relay_P = P32; / 继电器引脚sbit Beep_P = P33; / 蜂鸣器引脚/定义变量unsigne
47、d long yali1 = 0; /用来存放毛皮数据long yali2 = 0; /用来存放实物重量uchar ArrCodeBuff6; / 密码输入缓冲区uchar ArrCodeUnlock6; / 解锁密码uchar ArrCodeTemp6; / 临时数组(修改密码时会用到)uchar ArrCodeAdmin6=1,2,3,1,2,3;/ 管理员密码uchar row,column; / 液晶的当前行列坐标uchar inputNum=0; / 输入的密码位数uchar inputMode=1; / =1 输入解锁密码,=2 输入修改密码 1,=3 输入解锁密码 2uchar
48、errTime=0; / 密码输入错误的次数/ 延时 6 微秒void Delay6us() _nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();27/ 1602 液晶写命令函数,cmd 就是要写入的命令void LcdWriteCmd(uchar cmd) LcdRs_P = 0;LcdRw_P = 0;LcdEn_P = 0;P0=cmd;DelayMs(2);LcdEn_P = 1; DelayMs(2);LcdEn_P = 0;/ 1602 液晶写数据函数,dat 就是要写入的命令void LcdWriteData(uchar dat)Lc
49、dRs_P = 1; LcdRw_P = 0;LcdEn_P = 0;P0=dat;DelayMs(2);LcdEn_P = 1; DelayMs(2);LcdEn_P = 0;void LcdInit()LcdWriteCmd(0 x38); / 16*2 显示,5*7 点阵,8 位数据口LcdWriteCmd(0 x0C); / 开显示,不显示光标28LcdWriteCmd(0 x06); / 地址加 1,当写入数据后光标右移LcdWriteCmd(0 x01); / 清屏/ 液晶光标定位函数void LcdGotoXY(uchar y, uchar x)if(y=0) / 第一行LcdW
50、riteCmd(0 x80+x); if(y=1) / 第二行LcdWriteCmd(0 x80+0 x40+x);row=y;column=x;/ 液晶输出字符串函数void LcdPrintStr(uchar *str)while(*str!=0)LcdWriteData(*str+);/ IIC 起始函数void IIcStart()SDA_P=1; Delay6us(); SCL_P=1; Delay6us();SDA_P=0; Delay6us();29/ IIC 终止函数void IIcStop()SDA_P=0; Delay6us(); SCL_P=1; Delay6us();
51、SDA_P=1; Delay6us();/ IIC 写一个字节void IIcWriteByte(uchar dat) uchar i;for(i=0;i8;i+)dat=dat1; SCL_P=0;Delay6us(); SDA_P=CY;Delay6us(); SCL_P=1; Delay6us();SCL_P=0; Delay6us();SDA_P=1;Delay6us(); 30/ IIC 读一个字节uchar IIcReadByte()uchar i,temp,dat=0;SCL_P=0; Delay6us();SDA_P=1;Delay6us();for (i=0;i8;i+) S
52、CL_P=1; Delay6us();temp=SDA_P;Delay6us();dat=(dat1)|temp; SCL_P=0;Delay6us(); return(dat);/ IIC 总线响应void IIcRespons()uchar i=0;SCL_P=1;Delay6us();while(SDA_P=1)&(i250) i+;31SCL_P=0; Delay6us();/ IIC 读出数据uchar IIcReadDat(uchar addr)uchar dat;IIcStart(); / 开始信号IIcWriteByte(0 xa0); / 写芯片地址(写)IIcRes
53、pons(); / 等待应答 IIcWriteByte(addr); / 写内存地址(0-255)IIcRespons(); / 等待应答 IIcStart(); / 开始信号IIcWriteByte(0 xa1); / 写芯片地址(读)IIcRespons(); / 等待应答 dat=IIcReadByte(); / 读取一个字节数据 IIcRespons(); / 等待应答 IIcStop(); / 结束信号DelayMs(2); / 简短延时return dat; / 返回读取到的数据/ IIC 写入数据void IIcWriteDat(uchar addr,uchar dat) IIc
54、Start(); / 开始信号 IIcWriteByte(0 xa0); / 写芯片地址(写) IIcRespons(); / 等待应答 IIcWriteByte(addr);/ 写内存地址(0-255)32 IIcRespons(); / 等待应答 IIcWriteByte(dat); / 写入数据 IIcRespons(); / 等待应答 IIcStop(); / 结束信号 DelayMs(2); / 简短延时/ 矩阵键盘扫描程序uchar KeyScanf()uchar ret,temp1,temp2;P1=0 x0f;if(P1!=0 x0f)DelayMs(15);if(P1!=0
55、x0f)temp1=P1; / 判断出是哪一行按键按下P1=0 xf0;DelayMs(5);temp2=P1; / 判断出是哪一列按键被按下ret=temp1|temp2; / 通过行和列的值,确定是哪个按键被按下switch(ret)case 0 xe7: return 1;case 0 xd7: return 2;case 0 xb7: return 3;case 0 x77: return 12;case 0 xeb: return 4;case 0 xdb: return 5;33case 0 xbb: return 6;case 0 x7b: return 13;case 0 xe
56、d: return 7;case 0 xdd: return 8;case 0 xbd: return 9;case 0 x7d: return 14;case 0 xee: return 10;case 0 xde: return 0;case 0 xbe: return 11;case 0 x7e: return 15;return ret;return 99;/ 液晶显示密码void LcdPrintCode(uchar num)LcdGotoXY(row,column); / 液晶显示定位LcdWriteData(num+0 x30); / 显示输入的密码DelayMs(150); /
57、 等待 150 毫秒LcdGotoXY(row,column); / 重新回到刚刚的显示位置LcdWriteData(*); / 显示“*”替换刚刚显示的数字column+; / 液晶显示光标的纵坐标加 1/ 清除密码输入缓冲区的内容void ClearCodeBuff()34uchar i;for(i=0;i6;i+) / 循环执行 6 次ArrCodeBuffi= ; / 每次清除一位密码缓冲区inputNum=0; / 输入的密码位数为 0/ 密码输入初始化void inputInit()LcdGotoXY(0,0); / 光标定位LcdPrintStr( state:lock );/
58、液晶第 0 行显示 State:lock LcdGotoXY(1,0); / 光标定位LcdPrintStr(Password: );LcdGotoXY(1,9); / 液晶第 1 行显示Password: ClearCodeBuff(); / 清除密码缓冲区/ 密码初始化void CodeInit()uchar dat,i;dat=IIcReadDat(10);if(dat!=88) / 如果是第一次使用 AT24C02 芯片IIcWriteDat(0,1);/ 给 AT24C02 第 0 个内存写入第一个密码“1”IIcWriteDat(1,2);/ 给 AT24C02 第 1 个内存写入
59、第二个密码“2”IIcWriteDat(2,3);/ 给 AT24C02 第 2 个内存写入第三个密码“3”IIcWriteDat(3,4);/ 给 AT24C02 第 3 个内存写入第四个密码“4”IIcWriteDat(4,5);/ 给 AT24C02 第 4 个内存写入第五个密码“5”35IIcWriteDat(5,6); / 给 AT24C02 第 5 个内存写入第六个密码“6”IIcWriteDat(10,88);/ 给 AT24C02 第 10 个内存写入数字“88”,代表密码初始化好了for(i=0;i= 0) yali2 = (unsigned long)(float)yali
60、2/GapValue); /计算实际压力值elseyali2 = 0;/获取压力 2void Get_yali1()yali1 = HX711_Read();36 / 毫秒级的延时函数,time 是要延时的毫秒数void DelayMs(uint time)uint i,j;for(i=0;itime;i+)for(j=0;j112;j+);void MingJiao(uint time)Beep_P=0;/ 蜂鸣器开始鸣叫DelayMs(time);/ 延时Beep_P=1;/ 蜂鸣器停止鸣叫 / 主函数,程序从这里开始执行void main() uchar i; / 临时变量uchar keyVa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 路侧感知数据融合处理平台建设项目可行性研究报告
- 视频运营提成方案
- 药企账号运营方案模板
- 年产1亿瓦时轻型动力电池项目可行性研究报告模板-立项拿地
- 2026 儿童适应能力社交文化反思课件
- 2026 育儿幼儿绘画构图创意课件
- 医保办应急预案
- 施工现场防爆炸应急预案
- 汽车厂项目高处作业专项方案
- 客户投诉管理实施细则
- DL-T5344-2018电力光纤通信工程验收规范
- 《运动训练学》考研历年真题
- 2024年新疆克拉玛依市独山子石化分公司招聘笔试参考题库含答案解析
- 杭州市旅游职业学校招聘真题
- 猥亵刑事案件谅解书范本
- 2023风力发电机组延寿评估技术规范
- tcp kp系列网络继电器使用手册
- T-CWAN 0075-2023 焊接材料用原辅材料矿物粉采购技术条件
- 海洋地理信息系统国内外研究发展
- 2023年贵阳市自然资源局事业单位招聘考试笔试题库及答案解析
- JJF 1066-2000测长机校准规范
评论
0/150
提交评论