




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 摘 要系统由MCS-51单片机构成核心控制系统,整个系统由主控部分、键盘显示控制部分、执行部分三部分组成,通过随机密码的产生和核对完成自动存包取包过程。设计中各元器件便于安装且操作简单,能基本实现存包取包功能。关键词:自动存包柜;单片机;随机密码目 录1 系统方案设计32 系统硬件设计42.1 AT89C51的组成及管脚介绍42.2 输入电路设计62.2.1 74LS373介绍62.2.2 系统I/O接口扩展72.2.3键盘设计102.3 输出电路113 系统程序设计133.1 主程序模块设计133.2 键输入子程序模块设计144 Proteus仿真分析15参考文献18附录191 系统方案设
2、计自动存包柜由电子电路和机械电路两部分组成,设计的存包柜主要实现电子电路方面的功能,它可以通过单片机完成密码的随机产生、密码的确认和显示以及用发光二极管模拟柜子的开闭状态等功能。系统框图如图2-1所示:发光二极管8051LED数码管电源4*4矩阵键盘图1-1 自动存包柜的系统框图从硬件上看,它的部分组成分别是:发光二极管,通过亮灭来模拟柜子的开闭状态;电源,为电路提供一个5V的工作电压;单片机,整个电路的核心部分;LED数码管,用于显示柜号和密码;还有键盘部分,键盘有14个按键,其中的十个分别为0-9的数字键,其他四个分别为存包键(随机产生密码)、取包键(确认密码)、确定键、取消键。2 系统硬
3、件设计2.1 AT89C51的组成及管脚介绍AT89C51内部有8个部件组成,即CPU、时钟电路、数据存储器、串行口、并行口(P0P3)、定时计数器和中断系统,它们均由单一总线连接并被集成在一块半导体芯片上,即组成了单片微型计算机,AT89C51就是MCS-51系列单片机中的一种。(1) CPU中央处理器中央处理器是AT89C51的核心,它的功能是产生控制信号,把数据从存储器或输入口送到CPU,或将CPU数据写入存储器或送到输出端口。还可以对数据进行逻辑和算术的运算。(2) 时钟电路AT89C51内部有一个频率最大为12MHz的时钟电路,它为单片机产生时钟序列,但需要外接石英晶体做振荡器和微调
4、电容调整频率。(3) 内存内部存储器可分做程序存储器和数据存储器,但在AT89C51中无片内程序存储器。(4) 定时/计数器AT89C51有两个16位的定时计数器,每个定时器和计数器都可以设置成定时的方式和计数的方式,但只能用其中的一个功能,以定时或计数结果对计算机进行控制。(5) 并行I/O口AT89C51有四个8位的并行I/O口,P0,P1,P2,P3,以实现数据的并行输入输出。(6) 串行口它有一个全双工的串行口,它可以实现计算机间或单片机同其它外设之间的通信,该串行口功能较强,可以作为全双工异步通讯的收发器,也可以作为同步移位器用。(7) 中断控制系统AT89C51有五个中断源,既外部
5、中断两个,定时计数器中断两个,串行中断一个,全部的中断分为高和低的两个输出级5。AT89C51的制作工艺为HMOS,采用40管脚双列直插式DIP封装,引脚说明如下:VCC(40引脚)正常运行时提供电源。VSS(20引脚)接地。XTAL1(19引脚)在单片机内部,它是一个反向放大器的输入端,该放大器构成了片内的震荡器,可以提供单片机的时钟信号,该是引脚也可以接外部的晶振的一个引脚,如采用外部振荡器时,对于AT89C51此引脚应该接地。XTAL2(18引脚)在内部,接至上述振荡器的反向输入端,当采用外部振荡器时,对MCS51系列该引脚接收外部振荡信号,即把该信号直接接到内部时钟的输入端。RST/V
6、PD(9引脚)在振荡器运行时,在此引脚加上两个机器周期的电平将单片机复位,复位后应使此引脚电平保持不高于0.5V低电平以保证AT89C51正常工作。在掉电时,此引脚接备用电源VDD,以保持RAM数据不丢失,当BVCC低于规定的值时,而VPD在其规定的电压范围内时,VPD就向内部数据存储器日工备用电源。ALE/PROG(30引脚)当AT89C51访问外部存储器时,包括数据存储器和程序存储器,ALE9地址锁存允许0输入的脉冲的下沿用语锁存16位地址的低8位,在不访问外部存储器的时候,ALE仍有两个周期的正脉冲输出,其频率为振荡器的频率的1/6,在访问外存储器的是候,在两个周期中,ALE只出现一次,
7、ALE断可驱动8个LSTTL负载,对于有片内EPROM的而言,在EPROM编程期间,此脚用于输入编程脉冲PROG。PSEN(29引脚)此脚输出为 单片机内访问外部程序存储器的读选通信号,在读取外部指令期间,PSEN有两次在每个周期有效,在此期间,每当访问外部存储器时,两个有效的PSEN将不再出现,同样这个引脚可驱动8个LSTTL负载。EA/VPP(31引脚)当EA保持高电平时,单片机访问内部存储器,当PC值超过0FFFH时,将自动转向片外存储器。当EA非保持低电平时,则只访问外部程序存储器,对8031而言,此脚必须接地。AT89C51有一个全双工串行口,这个串行口既可以在程序下把CPU的8位并
8、行数据变成串行数据一位一位的从发送数据线发送出去,也可以把串行数据接受来变成并行数据给CPU,而且这种串行发送和接收可以单独进行也可以同时进行。AT89C51的串行发送和接收利用了P3口的第二功能,利用P3.1做串行数据接收线,串行接口的电路结构还包括了串行口控制寄存器SCON,电源及波特率选择寄存器PCON和串行缓冲寄存器SBUF,他们都属于SFR,PCON和SCON用于设置串行口工作方式和确定数据发送和接收,SBUF用于存放欲发送的数据起到缓冲的作用。AT89C51的工作方式:AT89C51的工作方式可以分做复位,掉电和低功耗方式等。(1) 复位方式单片机复位后,程序计数器PC和SFR的状
9、态。复位后,PC初始话为0000H,使单片机能从0000H开始执行程序,故单片机除正常工作的程序运行出错或操作出错而导致死机时,需要复位键进行重新启动,复位不影响RAM存放的内容,因为复位操作是在带电的状态下将程序存储器的地址改变,而ALE和PSEN非在复位期间将输出高电平。RST是复位信号的输入端,RST输入一个有效的高电平旧能使系统复位,当高电平持续24个振荡脉冲周期的时候,单片机完成了复位的操作,假如晶振的频率为6MHZ,则复位信号的持续时间不应小于4us。复位可以是上电复位,按键手动复位,和二者混合式。复位信号中的电阻和电容是为了保证RST断能保证两个机器周期以上的高电平来完成复位操作
10、而特意设定的。(2) 掉电和低功耗方式人们往往在程序运行中发生系统掉电的故障,使RAM和寄存器中的数据内容丢失,使人们丢失珍贵的数据而束手无策,AT89C51有掉电保护功能,是先把有用的数据保存,再用备用电源进行供电。2.2 输入电路设计2.2.1 74LS373介绍MCS-51单片机由于受引脚数的限制,数据线和地址线是复用的,由P0口兼用。为了将它们分离出来,以便同单片机片外的扩展芯片正确的连接,需要在单片机外部增加地址锁存器。我们这次设计中使用74LS373,AT89C51与74LS373的连接图如图3-1所示。74LS373是一种带有三态门的8D锁存器,其引脚如图3-2所示: 图3-1
11、AT89C51与74LS373接口电路图2-2 锁存器74LS373的引脚其引脚的功能如下:D0D7:8位数据输入线Q0Q7:8位数据输出线LE:数据输入锁存选通信号,高电平有效。当该信号为高电平的时候,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。OE:数据输出允许信号,低电平有效。当该信号为低电平的时候,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平的时候,输出线为高阻态6。74LS373的功能见表3-1所示:表2-1 74LS373的功能GDQ0111010000不变1高阻态2.2.2 系统I/O接口扩展由于我们采集的数据量较多,因此CPU的I/O口线不够用,所以我
12、们使用8255A扩展I/O口,以满足系统的要求。8255A与主机电路的连接图如图3-3所示。8255A是Intel公司生产的通用可编程并行I/O接口芯片。图2-3 8255A与主机电路的连接图(1) 8255A内部结构8255A内部由四部分电路组成。它们是A口、B口和C口,A组控制器和B组控制器,数据缓总线冲器及读写控制逻辑。 A口、B口和C口。A口、B口和C口均为8位I/O数据口,但结构上略有差别。A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。B口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲器组成。三个端口都可以和外设相连,分别传送外设的输入/输出数据
13、或控制信息。 A、B组控制电路。这是两组根据CPU的命令字控制8255A工作方式的电路。A组控制A口及C口的高4位,B组控制B口及C口的低4位。 数据总线缓冲器。它是一个8位的双向三态驱动器,用于与单片机的数据总线相连,传送数据或控制信息。 读/写控制逻辑。这部分电路接收MCS-51送来的读/写命令和选口地址,用于控制对8255A的读/写7。(2) 8255A的引脚功能8255A有40条引脚,采用双列直插式封装。引脚如图3-4所示: 数据总线(8条):D0D7:三态双向数据总线,8255A与CPU数据传送的通道,当CPU执行输入图3-4 8255A引脚图输出指令时,通过它实现8位数据的读/写操
14、作,控制字和状态信息也通过数据总线传送。 控制总线(6条):RESET:复位信号,输入高电平有效。一般和单片机的复位相连,复位后,8255A所有内部寄存器清0,所有口都为输入方式。CS:片选信号线,当这个输入引脚为低电平时有效,表示芯片被选中,允许8255A与CPU进行通讯。R:读信号线,当这个输入引脚为低电平时,允许8255A通过数据总线向CPU发送数据或状态字。WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255A。A0、A1:地址输入线。这两位的4种组合00、01、10、11分别用于选择A、B、C口和控制寄存器。 并行I/O总线(24条):这些总线用于和外设相连
15、,分别与A、B、C口相对应,用于8255A和外设之间传送数据,共分三组:PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。 电源线(2条):VCC为5V电源线,允许变化10%;GND为地线。2.2.3键盘设计键盘在单片机应用系统中能实现向单片机输入数据、命令等功能,是人工干预单片机的主要手段。该系统中键盘的主要功能是用于顾客选择适当的包柜存包,用按键来控制柜门的打开,键盘是用805
16、1单片机经74LS373扩展一片8255A构成键盘接口电路的。键盘的闭合与否,映在行线输出电压上就是呈现出高电平或低电平,相反如果高电平表示断开的话,那么低电平就表示键闭合,所以通过对行线电平的高低状态的检测,便可以确认按键按下与否。常用的键盘接口分为独立式按键接口和矩阵式键盘接口。我们在这里选用矩阵式键盘接口,如图3-5所示:5VR143210R2951410R31915R4图2-5 矩阵式键盘矩阵式键盘工作原理:按键设置在行、列线交点上,行列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V电源上。平时无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列
17、线电平决定。列线电平如果为低电平,则行线电平为低电平;列线电平如果为高,则行线电平也为高电平。这是识别矩阵键盘按键是否被按下的关键所在。由于矩阵键盘中行、列线为多键共用,各按键均影响该键在行和列的电平,因此各按键彼此将互相发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置8。键盘实际是一组按键开关的集合,是向系统提供操作人员干预命令和数据的接口设备,这里我们选用4*4矩阵键盘接口,用14个按键控制箱门的打开,其中,数字键10个,分别为09,功能键4个,“ON/C”表示存包键,“=”表示取包键,“+”表示确定键,“”表示取消键。如图3-6所示:图2-6 4*4矩阵键盘该
18、键盘工作方式采用的是外部中断扫描,中断式键盘扫描原理是:当有键按下将会触发一个中断源,提醒处理器进行键值扫描查询。键盘的中断方式一般有定时中断和外部中断两种,本系统采用的是外部中断INT0。单片机先让行线输出低电平,当有键按下时列线电平不全为高,将触发外部中断INT0,单片机进入中断后先延时去抖动,再扫描查寻键盘,读出键值,然后处理相应的键值处理子程序,无键按下则不进入中断,单片机不扫描,从而节约了大量的资源9。矩阵键盘与8255A的连接电路如图3-7所示。图2-7 矩阵键盘与8255A的接口电路2.3 输出电路为了使操作人员及时掌握生产情况,在一般的微型计算机控制系统或者智能仪器当中,都配有
19、显示程序。常用的显示器件有: 显示和记录仪表; CRT显示终端; LED或者LCD显示器; 大屏幕显示器。本次设计所采用的是LED数码管,如图3-8所示.LED数码管是由发光二极管组成,由于材料的不同,可以发出各种单色光线。根据发光二极管内部的连接方式不同,又有共阴极或共阳极两种形式。LED数码管具有结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高等优点。本次设计我们使用两个4位数码管来显示8位密码,其与8255A的连接电路如图3-9所示。图2-8 4位数码显示管图3-9 LED数码管与8255A的接口电路283 系统程序设计为了使本系统的整个程序清晰明白,便于调试和修改,程序
20、设计时把系统的各种功能分为若干部分,于每一部分功能编制相对独立的程序块,对各程序在运行的时候各负其责。3.1 主程序模块设计该模块的功能包括显示的初始化,判断是否有空箱,键盘扫描,密码扫描等功能。存储柜通上电以后,单片机上电,首先进行程序的初始化,包括定时器,外部中断等初始化,以及各参数初始值的设定。默认存储柜为初始状态,根据存包指令,扫面计数器的存储包状态,用数码管显示存储柜号和密码。主流程图如图4-1所示:通电开始初始化显示空箱Y存包取包N状态判断读密码打印密码NY密码是否正确门是否关好YN取物关门门开报警提醒关门Y门是否关好N报警返回3-1 主程序流程图3.2 键输入子程序模块设计键盘采
21、用扫描工作方式,输入程序功能有以下4个方面:(1) 判断键盘上有无键闭合,其方法为扫描口PA07输出全“0”,读PC口的状态,若PC03为全“1”(键盘上行线全为高电平)则键盘上没有闭合键,若PC03不全为“1”,则有键处于闭合状态。(2) 去除键的机械抖动,其方法为判断出键盘上有键闭合后,延迟一段时间再判别键盘的状态,若仍有键闭合,则认为键上有一个键处于稳定的闭合期,否则认为是键的抖动。(3) 判别键闭合的键号,方法对键盘的列线进行扫描,扫描口PA07依次输出:相应的依次读PC口的状态,若PC03为全“1”则列线为“0”的这一列上没有键闭合。闭合键的键号等于为低电平的列号加上为低电平的行的首
22、键号。YYYNNN软件延时10ms闭合键是否释放开确定按键位置是否有键闭合是否有键闭合开始(4) 使CPU对键的一次闭合仅做一次处理,采用的方法为等待闭合键释放后在作处理。流程图如图4-2所示:输入键号到A返回图3-2 键输入子程序流程图4 Proteus仿真分析本设计我们采用Proteus仿真,软件调试先将事先编写好的各模块部分程序写入仿真软件里的单片机中,然后通过Proteus仿真软件进行仿真。如有错误或实现不了预想的功能,则需要对程序进行修改以达到设计的最终要求。此次设计中,灯亮表示柜中存有物品,灯灭表示柜空。(1) 设计中利用Proteus仿真软件建立系统仿真模型如图4-1所示:图4-
23、1 系统仿真模型搭建(2) 按“ON/C”键(即存包键),数码管显示8位随机密码,作为取包时的核对密码,然后密码消失,对应的发光二极管亮,即可存包。仿真结果如图5-2,5-3所示:图4-2 产生8位随机密码图4-3 灯亮,对应柜子可存包(3) 按“=”键(即取包键),显示取包状态,输入密码后,按“+”确定,系统需要对密码与原先保存的密码进行比较,如果密码正确,对应的发光二级管熄灭,即可取包。如图5-4所示:图4-4 密码正确,灯灭,即可取包参考文献1 刘德营,张志霞,李志伟.单片机原理及接口技术M.北京:中国水利水电出版社,2006:154.2 潘新民,王燕芳.微型计算机控制技术M.北京:电子
24、工业出版社,2013:7199,360364.3 宋浩,田丰.单片机原理及应用J.北京:清华大学出版社,2015:139,134179.4 余永权ATMEL89系列(MCS-51兼容)FLASH单片机原理与应用M上海:电子工业出版社,2009:17-195 韩志军单片机应用系统设计M北京:机械工业出版社,2009:132-1476 王路茜.电子设计技术J.维普中文期刊.2006年02期.7 林毓梁.单片机原理及应用M.机械工业出版社,2012:97-1098 韩志军单片机应用系统设计J北京:机械工业出版社,2009:132-147附录主程序清单ORG 00H;JMP MAIN;ORG 23H;
25、JMP COM-INT;主程序开始ORG 30H;MAIN: MOV SP,#30H;LCALL REST;LCALL COMM;JMP $;初始化REST: MOV P0,#00H;MOV P2,#255;MOV P1,#255;RET;串口初始化设置串行口工作方式1,定时器1作为波特率发生器,波特率设置为2400;COMM: MOV TMOD,#20H;MOV TL1,#0F3H;MOV TH1,#0F3H;SETB EA;SETB ES;MOV PCON,#00H;MOV SCON,#50H;SETB TR1;RET;串口中断服务程序COM_INT: CLR ES;CLR RI;MOV
26、A,SBUF;MOV P1,A;MOV DPTR,#TAB;CJNE A,#0FFH,IN-2;MOV SBUF,#255;JNB TI,$;CLR TI;SETB ES;RETI;IN-2: CJNE A,#2,IN-3;MOVC A,A+DPTR;MOV SBUF,A;JNB TI,$;CLR TI;SETB ES;RETI;IN-3: MOV A,#03H;MOVC A,A+DPTR;MOV SBUF,A;JNB TI,$;CLR TI;SETB ES;RETI;TAB: DB 2,H,E,J;END;键输入字程序清单:KEYI: ACALL KS1;JNZ LK1;NI: ACALL
27、DIR;AJMP KEYI;LK1:ACALL DIR;ACALL DIR;ACALL KS1;JNZ LK2;ACALL DIR;AJMP KEYI;LK2:MOV R2,#0FEH;MOV R4,#00H;LK4:MOV DPTR,#7F01H;MOV A,R2;MOVX DPTR,A;INC DPTR;INC DPTR;MOVX A,DPTR;JB ACC.0,LONE;MOV A,#00H;AJMP LKP;LONE: JB ACC.1,LTWO;MOV A,#08H;AJMP LKP;LTWO: B ACC.2,LTHR;MOV A,#08H;AJMP LKP;LTHR: JB AC
28、C.3,NEXT;MOV A,#18H;LKP: ADD A,R4;PUSH A;LK3:ACALL DIR;ACALL KS1;JNZ LK3;POP A;RET;NEXT: INC R4;MOV A,R2;JNB ACC.7,KND;RL A;MOV R2,A;AJMP LK4;KND: AJMP KEYI;KS1: MOV DPTR,#7F01H;MOV A,#00H;MOVX DPTR,A;INC DPTR;INC DPTR;MOVX A,DPTR;CPL A;ANL A,#0FH;RET;8255A工作:MOV A,#90H;MOV DPTR,#0FF7H;MOVX DPTR,A;M
29、OV DPTR,#0FF7CH;MOVX A,DPTR;MOV DPTR,#0FF7DH;MOV A,#DATA1;MOVX DPTR,A;MOV DPTR,#0FF7EH;MOV A,#DATA2;MOVX DPTR,A;显示子程序:MOV DPTR,#8000H;MOV A,#01H;MOVX DPTR,A;ACALL F-BUSY;MOV A,#30H;MOVX DPTR,A;ACALL F-BUSY;MOV A,#0EH;MOV DPTR,A;ACALL F-BUSY;MOV A,#4AH;MOV DPTR,A;ACALL F-BUSY;STORE: SETB VSDA;SETB VSCL;NOP;NOP;NOP;NOP;CLR VSDA;NOP;CLR VSDA;NOP;NOP;NOP;NOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国数字化城市行业发展预测及前景调研研究报告
- 春季小学二年级班主任工作计划
- 病理生理学模考试题含参考答案
- 验光员模拟练习题+参考答案
- 化工生产技术习题+答案
- 职业技术学院2024级国际商务专业人才培养方案
- 2025年江苏省扬州市江都区中考一模英语试题(原卷版+解析版)
- 浙江省强基联盟2024-2025学年高一下学期4月期中英语试题(原卷版+解析版)
- 航空物流运输中的跨境电商物流解决方案考核试卷
- 绢丝在化妆品领域的创新研发与应用实践考核试卷
- 1.2区域整体性和关联性-以青田县稻鱼共生为例课件-高中地理人教版(2019)选择性必修2
- 特殊人群安全用药指导
- 工业物联网安全风险评估-深度研究
- 《洗地机培训方案》课件
- 郑州市2025年高中毕业年级第一次质量预测(一模) 化学试卷(含标准答案)
- 云辐射效应研究-洞察分析
- 免疫组库临床应用
- 2025中国海油春季校园招聘笔试高频重点提升(共500题)附带答案详解
- 消防安全培训课件讲稿
- 四川省乐山市(2024年-2025年小学六年级语文)部编版期末考试((上下)学期)试卷及答案
- 2025届徐州市高考英语二模试卷含解析
评论
0/150
提交评论