ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:225.11KB ,
资源ID:9217046      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9217046.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的电子密码锁设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的电子密码锁设计.docx

1、基于51单片机的电子密码锁设计摘要11 引言12总体设计方案12.1设计原理及相关说明12.2总体设计框图13各芯片设计及对其的调用23.1 STC12C5A60S2单片机主控模块23.2 1602LCD液晶显示模块83.3蜂鸣器103.4 键盘接口114.1硬件测试124.2软件测试134.3测试结果分析与结论134.3.1 测试结果分析144.3.2 测试结论14结论14致谢14参考文献15附录116附录216附录317摘要:该 设计是基于STC12C5A60S2单片机的日历时钟系统,采用1602lcd液晶屏实现显示。显示小时、分钟、秒,并设有按键以方便加入自定义调节时间关键词:STC12

2、C5A60S2单片机、1602LCD1 引言本次课程设计是是为了实现一个可调时钟,可显示小时、分钟、秒利用四个键来调时间2 总体设计方案本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;利用k1、k2、k3、k4四个按键分别置于P1口的4、5、6、7端口可以对时间进行控制修改。利用P0端口使之显示于LCD12864液晶显示屏上.详细请参阅第三节的芯片介绍。1设计原理及相关说明2.2总体设计框图3 各芯片的设计及其调用3.1 STC12C5A60S2单片机主控模块单片机的主控模块如图2,它以单片机STC12C5A60S2为核心,STC12C5A60S2系列

3、单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051系列单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。其主要性能特点如下:增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;工作电压:5.5V-3.5V;工作频率范围:0-35MHz,相当于普通8051的0-420MHz;用户应用程序空间60K字节;片上集成1280字节RAM;通用I/O口(36个),复位后为:准双向口/弱上拉(普通80

4、51传统I/O口);可设置成4种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均能达到20mA,但整个芯片最大不要超过120mA;ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(P3.0/P3.1)直接下载应用程序,数秒即可完成一片;有EEPROM功能;看门狗;内部集成MAX810专用复位电路(外部晶振12M以下时,复位脚可直接1K电阻到地);A/D转换,10位精度ADC,共8路,转换速度可达250K/S;具备双串口;工作温度范围:-40 - +85oC(工业级),0 75oC(商业级);40管脚封装由图2可知,单

5、片机的18和19管脚接时钟电路,19管脚接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,18管脚接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,9引脚是复位输入端,接上电容、电阻及开关后构成上电复位电路。图2 主控制器 STC12C5A60S23.2 1602液晶介绍 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图- 4:图- 4 1602字符型液晶显示器实物图2. 1602LC

6、D的基本参数及引脚功能 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图-5所示:图-5 1602LCD尺寸图1602LCD主要技术参数:显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表-3所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4R

7、S数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表-3:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙

8、信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3. 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表-4所示:序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8

9、置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表-4:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电

10、平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相

11、兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无表-5:基本操作时序表读写操作时序如图- 6和图-7所示:图-6 读操作时序图-7 写操作时序4 .1602LCD的RAM地址映射及标准字库表 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模 块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图-8是160

12、2的内部显示地址。图-8 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英

13、文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”图-9字符代码与图形对应图5. 1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置3.5 蜂鸣器图12 蜂鸣器模块本

14、设计采用的是无源蜂鸣器如下图:图13 无源蜂鸣器该蜂鸣器接入电路时,靠近+极标志的管脚接+5V电源,负极接8550集电极,8550发射极接地,基极接2K电阻。3.6 键盘接口键盘接口电路如图13,本次设计中,按键有4个,每个按键各占用一根I/O线,各按键相互独立,彼此的工作状态互不影响,STC单片机自带上拉电阻因此无需外接上拉电阻,用查询法完成按键功能。图14 键盘接口电路4.1硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现

15、象。在本成电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:(1)串口下载芯片232发烫,单片机晶振不起振(2)1602在显示时间时出现黑格子,遮挡了时间(3)对万年历修改时间或日期时,有时时间改变2次。解决:根据仪器的测试,发现电路引脚有接错的现象,重新焊接后晶振,复位正常,程序能够下载。1602出现黑格子是由于在其第三引脚没加电阻分压导致,加上5K电阻后正常。按键延时较短致使按键次数多加。4.2软件测试电子成年历是多功能的数字型,可以看当前日期,时间。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题

16、。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1:1602显示的时间不完整,最后在液晶初始化程序中给加上该显示的数字即可。2:在调整时间时光标闪烁不规律,原因的由于错用DS1302停振指令所致,最后加上一个变量进行控制即可。 4.3测试结果分析与结论4.3.1 测试结果分析(1)在测试中遇到单片机晶振不起振、232芯片发烫,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.(2)1602液晶有黑色背景出现,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改4.3.2

17、测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固.作品总结在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了作品。达到了预期的目的。完了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时

18、遇到了很多的问题,经过静下心来思考,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次电子制作中学到了很多很多东西,这是最重要的。总之,参加这次电子制作我的能力得到了全方位的提高。致谢词感谢学院给我提供了一个展现自己的舞台,给我一次难得煅炼的机会,使得我的动手能力和专业技能都有了很大的提高。在做作品的日子里得到了指导教师的悉心指导,在此向我的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我对这次的作品完成有了信心和动力,也给了我很多无私的帮助和支持,我在此深表谢意。参考文献

19、:单片机实验设计100例附录1 系统电路原理图附录2实物图附录3系统程序清单/*#include#define uint unsigned int#define uchar unsigned charsbit rs=P20; /定义液晶显示器控制端口sbit rw=P21;sbit en=P22;sbit K1=P10; /定义按键控制sbit K2=P11;sbit K3=P12;sbit K4=P13;uchar shi,fen,miao,ri,yue,nin;uchar code table= Jinxin&GYY;uchar code table1= 00:00:57;uchar nu

20、m,num1,count;uint i,sh,ge,s,g;void delay(uchar time) /延时 uint j; for(;time0;time-) for(j=0;j125;j+); void write_com(uchar com) /写指令函数 en=0; rs=0; delay(5); P0=com; delay(5); en=1; delay(5); en=0;void write_data(uchar dat) /写数据函数 en=0; rs=1; delay(5); P0=dat; delay(5); en=1; delay(5); en=0;void init(

21、) /初始化 en=0; rw=0; write_com(0x38);/设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);/设置开显示,不显示光标 write_com(0x06);/写一个字符后地址指针加1 write_com(0x01);/显示清零,数据指针清零 for(i=0;i(sizeof(table)-1);i+) /第一行写 write_com(0x80+i); write_data(tablei); for(i=0;i(sizeof(table1)-1);i+) /第二行写 write_com(0x80+0x40+i); write_data(table

22、1i);miao=56;fen=59;shi=23; TMOD=0x01; /time0作为定时器工作在模式1下TH0=(65536-50000)/256;TL0=(65536-50000)%6;EA=1; /开启总中断ET0=1; /开启time0中断TR0=1; /启动time0void write_sfm(uchar add,uchar num) /时分秒函数 sh=num/10; /分离出十位 ge=num; /分离出个位 write_com(0x80+0x40+add); /第二行数据指针位置调整 write_data(0x30+sh); /更改显示数据的十位 write_data(

23、0x30+ge); /更改显示数据的个位 void timer0() interrupt 1 /time0中断 TH0=(65536-50000)/256; /重装初始值 TL0=(65536-50000)%6; count+; if(count=20) /20次到则满一秒 count=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; write_sfm(4,shi); write_sfm(7,fen); write_sfm(10,miao); void keyscan() /键盘扫描 i

24、f(K1=0) /按下K1 delay(5); if(K1=0) num1+; while(!K1);/等待释放 if(num1=1) TR0=0; write_com(0x0e); /显示光标,不闪烁 write_com(0x80+0x40+0x0b); /数据指针移动到秒的个位处 write_com(0x0f);/显示光标,闪烁 if(num1=2) write_com(0x80+0x40+0x08); /数据指针移到到分钟的个位处 if(num1=3) write_com(0x80+0x40+0x05); /数据指针移到到小时的个位处 if(num1=4) num1=0; /清零 wri

25、te_com(0x0c); /重新显示 TR0=1; /重新启动计时 if(num1!=0) /按下K2则选择时/分/秒 加1 if(K2=0) delay(5); if(K2=0) while(!K2); if(num1=1) delay(20); miao+; if(miao=60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+0x0a); if(num1=2) fen+; if(fen=60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+0x07); if(num1=3) shi+; if(

26、shi=24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+0x04); if(num1!=0) if(K3=0) /按下K3则选择时/分/秒 减1 delay(5); if(K3=0) while(!K3); if(num1=1) delay(20); miao-; if(miao=-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+0x0a); if(num1=2) fen-; if(fen=-1) fen=59; write_sfm(7,fen); write_com(0x80+0x40+0x07); if(num1=3) shi-; if(shi=-1) shi=23;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1