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

上传人:b****7 文档编号:9217046 上传时间:2023-02-03 格式:DOCX 页数:27 大小:225.11KB
下载 相关 举报
基于51单片机的电子密码锁设计.docx_第1页
第1页 / 共27页
基于51单片机的电子密码锁设计.docx_第2页
第2页 / 共27页
基于51单片机的电子密码锁设计.docx_第3页
第3页 / 共27页
基于51单片机的电子密码锁设计.docx_第4页
第4页 / 共27页
基于51单片机的电子密码锁设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

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

《基于51单片机的电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子密码锁设计.docx(27页珍藏版)》请在冰豆网上搜索。

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

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

摘要…………………………………………………………………………………………………1

1引言………………………………………………………………………………………………1

2总体设计方案……………………………………………………………………………………1

2.1 设计原理及相关说明………………………………………………………………………1

2.2 总体设计框图………………………………………………………………………………1

3各芯片设计及对其的调用………………………………………………………………………2

3.1STC12C5A60S2单片机主控模块…………………………………………………………2

3.21602LCD液晶显示模块…………………………………………………………………8

3.3蜂鸣器……………………………………………………………………………………10

3.4键盘接口…………………………………………………………………………………11

4.1硬件测试…………………………………………………………………………………12

4.2软件测试…………………………………………………………………………………13

4.3测试结果分析与结论………………………………………………………………………………13

4.3.1测试结果分析…………………………………………………………………………………14

4.3.2测试结论…………………………………………………………………………………14

结论………………………………………………………………………………………………14致谢………………………………………………………………………………………………14

参考文献…………………………………………………………………………………………15附录1……………………………………………………………………………………………16

附录2……………………………………………………………………………16

附录3……………………………………………………………………………17

 

摘要:

该设计是基于STC12C5A60S2单片机的日历时钟系统,采用1602lcd液晶屏实现显示。

显示小时、分钟、秒,并设有按键以方便加入自定义调节时间

关键词:

STC12C5A60S2单片机、1602LCD

1引言

本次课程设计是是为了实现一个可调时钟,可显示小时、分钟、秒利用四个键来调时间

2总体设计方案

本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;利用k1、k2、k3、k4四个按键分别置于P1口的4、5、6、7端口可以对时间进行控制修改。

利用P0端口使之显示于LCD12864液晶显示屏上.详细请参阅第三节的芯片介绍。

1设计原理及相关说明

2.2总体设计框图

3各芯片的设计及其调用

3.1STC12C5A60S2单片机主控模块

单片机的主控模块如图2,它以单片机STC12C5A60S2为核心,STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(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个),复位后为:

准双向口/弱上拉(普通8051传统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可知,单片机的18和19管脚接时钟电路,19管脚接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,18管脚接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,9引脚是复位输入端,接上电容、电阻及开关后构成上电复位电路。

图2主控制器STC12C5A60S2

3.21602液晶介绍

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。

一般1602字符型液晶显示器实物如图-4:

图-41602字符型液晶显示器实物图

2.1602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图-5所示:

图-51602LCD尺寸图

1602LCD主要技术参数:

显示容量:

16×2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表-3所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

表-3:

引脚接口说明表

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电

平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

3.1602LCD的指令说明及时序

1602液晶模块内部的控制器共有11条控制指令,如表-4所示:

序号

指令

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

置输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

置功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生存贮器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志或地址

0

1

BF

计数器地址

10

写数到CGRAM或DDRAM)

1

0

要写的数据内容

11

从CGRAM或DDRAM读数

1

1

读出的数据内容

表-4:

控制命令表

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说

明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置。

指令2:

光标复位,光标返回到地址00H。

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标。

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电

平时显示5x10的点阵字符。

指令7:

字符发生器RAM地址设置。

指令8:

DDRAM地址设置。

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接

收命令或者数据,如果为低电平表示不忙。

指令10:

写数据。

指令11:

读数据。

 

与HD44780相兼容的芯片时序表如下:

读状态

输入

RS=L,R/W=H,E=H

输出

D0—D7=状态字

写指令

输入

RS=L,R/W=L,D0—D7=指令码,E=高脉冲

输出

读数据

输入

RS=H,R/W=H,E=H

输出

D0—D7=数据

写数据

输入

RS=H,R/W=L,D0—D7=数据,E=高脉冲

输出

表-5:

基本操作时序表

读写操作时序如图-6和图-7所示:

图-6读操作时序

图-7写操作时序

4.1602LCD的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图-8是1602的内部显示地址。

图-81602LCD内部显示地址

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?

这样不行,因为写入显示地址时要求最高位D7

恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显

示出来,我们就能看到字母“A”

图-9字符代码与图形对应图

 

5.1602LCD的一般初始化(复位)过程

延时15mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号

写指令38H:

显示模式设置

写指令08H:

显示关闭

写指令01H:

显示清屏

写指令06H:

显示光标移动设置

写指令0CH:

显示开及光标设置

3.5蜂鸣器

图12蜂鸣器模块

本设计采用的是无源蜂鸣器如下图:

图13无源蜂鸣器

该蜂鸣器接入电路时,靠近+极标志的管脚接+5V电源,负极接8550集电极,8550发射极接地,基极接2K电阻。

3.6键盘接口

键盘接口电路如图13,本次设计中,按键有4个,每个按键各占用一根I/O线,各按键相互独立,彼此的工作状态互不影响,STC单片机自带上拉电阻因此无需外接上拉电阻,用查询法完成按键功能。

图14键盘接口电路

4.1硬件测试

电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。

在本成电子万年历的设计调试中遇到了很多的问题。

回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:

(1)串口下载芯片232发烫,单片机晶振不起振

(2)1602在显示时间时出现黑格子,遮挡了时间

(3)对万年历修改时间或日期时,有时时间改变2次。

解决:

根据仪器的测试,发现电路引脚有接错的现象,重新焊接后晶振,复位正常,程序能够下载。

1602出现黑格子是由于在其第三引脚没加电阻分压导致,加上5K电阻后正常。

按键延时较短致使按键次数多加。

4.2软件测试

电子成年历是多功能的数字型,可以看当前日期,时间。

电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。

最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。

在软件的调试过程中主要遇到的问题如下:

1:

1602显示的时间不完整,最后在液晶初始化程序中给加上该显示的数字即可。

2:

在调整时间时光标闪烁不规律,原因的由于错用DS1302停振指令所致,最后加上一个变量进行控制即可。

4.3测试结果分析与结论

4.3.1测试结果分析

(1).在测试中遇到单片机晶振不起振、232芯片发烫,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.

(2).1602液晶有黑色背景出现,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。

查看烧写的程序是否正确无误,对程序进行认真修改

4.3.2测试结论

经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固.

作品总结

在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。

较好的完成了作品。

达到了预期的目的。

完了最初的设想。

在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。

反而达到事半功倍的效果。

对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。

程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,反而得心应手。

在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。

也练就了我们的耐心,做什么事都在有耐心。

此次电子制作中学到了很多很多东西,这是最重要的。

总之,参加这次电子制作我的能力得到了全方位的提高。

致谢词

感谢学院给我提供了一个展现自己的舞台,给我一次难得煅炼的机会,使得我的动手能力和专业技能都有了很大的提高。

在做作品的日子里得到了指导教师的悉心指导,在此向我的指导教师致以诚挚的谢意。

感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我对这次的作品完成有了信心和动力,也给了我很多无私的帮助和支持,我在此深表谢意。

参考文献:

单片机实验设计100例

附录1系统电路原理图

附录2实物图

附录3系统程序清单

/*********************************************************************************************

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitrs=P2^0;//定义液晶显示器控制端口

sbitrw=P2^1;

sbiten=P2^2;

sbitK1=P1^0;//定义按键控制

sbitK2=P1^1;

sbitK3=P1^2;

sbitK4=P1^3;

ucharshi,fen,miao,ri,yue,nin;

ucharcodetable[]={"Jinxin&GYY"};

ucharcodetable1[]={"00:

00:

57"};

ucharnum,num1,count;

uinti,sh,ge,s,g;

voiddelay(uchartime)//延时

{

uintj;

for(;time>0;time--)

for(j=0;j<125;j++);

}

voidwrite_com(ucharcom)//写指令函数

{

en=0;

rs=0;

delay(5);

P0=com;

delay(5);

en=1;

delay(5);

en=0;

}

voidwrite_data(uchardat)//写数据函数

{

en=0;

rs=1;

delay(5);

P0=dat;

delay(5);

en=1;

delay(5);

en=0;

}

voidinit()//初始化

{

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(table[i]);

}

for(i=0;i<(sizeof(table1)-1);i++)//第二行写

{

write_com(0x80+0x40+i);

write_data(table1[i]);

}

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;//启动time0

}

voidwrite_sfm(ucharadd,ucharnum)//时分秒函数

{

sh=num/10;//分离出十位

ge=num;//分离出个位

write_com(0x80+0x40+add);//第二行数据指针位置调整

write_data(0x30+sh);//更改显示数据的十位

write_data(0x30+ge);//更改显示数据的个位

}

voidtimer0()interrupt1//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);

}

}

voidkeyscan()//键盘扫描

{if(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;//清零

write_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(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