电子密码锁课程设计Word格式文档下载.docx

上传人:b****5 文档编号:19484975 上传时间:2023-01-06 格式:DOCX 页数:15 大小:285.85KB
下载 相关 举报
电子密码锁课程设计Word格式文档下载.docx_第1页
第1页 / 共15页
电子密码锁课程设计Word格式文档下载.docx_第2页
第2页 / 共15页
电子密码锁课程设计Word格式文档下载.docx_第3页
第3页 / 共15页
电子密码锁课程设计Word格式文档下载.docx_第4页
第4页 / 共15页
电子密码锁课程设计Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

电子密码锁课程设计Word格式文档下载.docx

《电子密码锁课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电子密码锁课程设计Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

电子密码锁课程设计Word格式文档下载.docx

2硬件设计

2.1电路元件说明:

2.1.1 LED数码显示器

LED显示块是由发光显示二极管显示字段的显示器件。

七段显示块与单片机接口非常容易。

只要将一个8位并行输出与显示块的发光二极管引脚相连即可。

8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制发光二极管的8位字节数据称为段选码。

LED数码显示器内部有两种不同的形式:

共阳极显示和共阴极显示,此设计采用共阴极显示。

其内部结构及共阴极显示其内部电路如下:

2.1.2复位电路:

  复位电路有上电自动复位和手动复位,此设计用的是上电复位,电路图如上。

pin9:

RESET/VPD复位信号复位脚,当8951通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统及初始复位。

   

2.1.3时钟电路:

89C51芯片内部有一个高增益反相放大器,用于构成振荡器。

反相放大器的输入端为XTAL1,输出端为XTAL,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。

电容

器C1和C2通常取30PF,可稳定频率并对振荡频率有微调作用。

此振荡脉冲频率为12MHZ。

单片机时钟电路振荡脉冲可以由内部方式和外部方式产生,XTAL1(19引脚)XTAL2(18引脚)即为单片机的两个时钟引脚。

 

2.1.4矩阵键盘:

矩阵式键盘又称行列式键盘,往往用于按键个数多的场合,矩阵式键盘的按键于行、列的交叉点上,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接,列线通过上拉电阻接电源,将行线所得单片机的I/O口作为输出端,列线所接的I/0口为输入端,编程所有行线输出低电平,列线输出高电平,当没有键被按下时,所有输出端为高电平,表示无键按下,一旦有键按下,则出现输入端被拉低变为低电平。

这样,通过读入列线的状态即可知道是否有键按下。

2.1.5 单片机引脚说明

Pin20:

接地脚。

pin40:

正电源脚,工作时,接+5v电源。

pin19:

时钟XTAL1引脚,片内振荡电路的输入端。

pin18:

时钟XTAL2脚,片内振荡电路的输出端。

3程序存储器和数据存储器的单元分配

3.1程序存储器和数据存储器的单元分配

  存储器是单片机的一个重要组成部分,每个存储单元对应一个地址,每个个单元共有1个地址,用两位16进制数表示,即存储器的地址(00H~FFH)。

存储器中每个存储单元可存放一个八位二进制信息,通常用两位16进制数来表示,这就是存储器的内容。

3.1.1程序存储器

在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。

程序存储器可以放在片内或片外,亦可片内片外同时设置。

由于PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H到FFFFH。

3.1.2数据存储器

单片机的数据存储器由读写存储器RAM组成。

其最大容量可扩展到64k,用于存储实时输入的数据。

8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。

3.1.3特殊功能寄存器

特殊功能寄存器(SFR)的地址范围为80H~FFH。

在MCS-51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。

MCS-51共有P0~P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。

其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、数据指针DPTR等的功能。

4程序设计

8位数码显示,,初始化时显示器显示“000000”,输入三位数字,按确定键;

4.1程序流程:

如下图

4.2密码锁程序

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P2^6;

sbitwela=P2^7;

sbitled1=P1^0;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

ucharcsw1,csw2,csw3,csw4,csw5,csw6;

ucharjpax,key,num,cs,cs1,cs2;

/////////////////////延时/////////////////////////////

voiddelayms(uintxms)

{

uinti,j;

for(i=xms;

i>

0;

i--)

for(j=110;

j>

j--);

}

///////////////////////////////////

voiddisplaym()

{

P0=0xfe;

wela=1;

wela=0;

P0=table[csw1];

dula=1;

dula=0;

delayms

(2);

P0=0xfd;

P0=table[csw2];

P0=0xfb;

P0=table[csw3];

P0=0xf7;

P0=table[csw4];

P0=0xef;

P0=table[csw5];

P0=0xdf;

P0=table[csw6];

}

///////////////////////////////////////////////////////

voidmatrixkeyscan()

uchartemp,temph,templ,k;

P3=0xf0;

temp=P3;

temph=temp&

0xf0;

if(temp!

=0xf0)

delayms(10);

temph=P3;

temph=temph&

if(temph!

{

P3=0x0f;

templ=P3;

templ=templ&

0x0f;

k=temph|templ;

switch(k)

{

case0xee:

key=0;

break;

case0xde:

key=1;

case0xbe:

key=2;

case0x7e:

key=3;

case0xed:

key=4;

case0xdd:

key=5;

case0xbd:

key=6;

case0x7d:

key=7;

case0xeb:

key=8;

case0xdb:

key=9;

case0xbb:

key=10;

}

while(temph!

{

P3=0xf0;

temph=P3;

temph=temph&

}

jpax=1;

}

///////////////判断////////////////////

voidpd()

if(cs1==cs2)

led1=1;

else

num=0;

cs1=0;

cs2=0;

////////////////警告///////////////////

led1=0;

delayms(500);

////////////////确认///////////////////

voidqr()

switch(num)

case1:

cs1=cs;

case2:

cs2=cs;

pd();

if(cs==cs2)

led1=~led1;

cs=0;

///////////////记录////////////////////

voidjl()

if(jpax==1)

jpax=0;

switch(key)

case0:

cs=cs*10+key;

case3:

case4:

case5:

case6:

case7:

case8:

case9:

case10:

num++;

qr();

}

////////////////按键分解///////////////////

voidanjianfenjie()

{

csw1=cs/100000;

csw2=cs%100000/10000;

csw3=cs%10000/1000;

csw4=cs%1000/100;

csw5=cs%100/10;

csw6=cs%10;

////////////////主函数///////////////////

voidmain()

jpax=0;

num=0;

cs1=0;

cs2=0;

cs=0;

while

(1)

matrixkeyscan();

jl();

anjianfenjie();

displaym();

5.总结

通过此次课程设计,我重新把单片机及相关知识联系在了一起,虽然掌握的知识不是很多,但通过查找资料我还是对单片机有了很好的了解和掌握。

  在设计中我才发现单片机虽然体积小但是功能很强大,在生活中很多地方都可以用到它。

单片机这门学科博大精深,在以后的学习中只有多看书,理论与实践结合才能把这门课掌握好。

同时我也体会到合作的好处。

让我懂得了如何合作,对不同看法发表自己的意见。

此次设计中最要的一点是,让我知道了,理论联系实践的好处。

不管理论学的再怎么好都必须联系实践,只有在实践中我们才会更加懂得如何运用自己的所学,在实践中将自己的知识实物化。

理论联系实践是我们获取知识的最佳途径。

6.附录

原理图

PCB板图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

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

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