红外遥控电子密码锁的设计与实现.docx

上传人:b****2 文档编号:258401 上传时间:2023-04-28 格式:DOCX 页数:43 大小:412.23KB
下载 相关 举报
红外遥控电子密码锁的设计与实现.docx_第1页
第1页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第2页
第2页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第3页
第3页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第4页
第4页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第5页
第5页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第6页
第6页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第7页
第7页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第8页
第8页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第9页
第9页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第10页
第10页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第11页
第11页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第12页
第12页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第13页
第13页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第14页
第14页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第15页
第15页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第16页
第16页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第17页
第17页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第18页
第18页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第19页
第19页 / 共43页
红外遥控电子密码锁的设计与实现.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

红外遥控电子密码锁的设计与实现.docx

《红外遥控电子密码锁的设计与实现.docx》由会员分享,可在线阅读,更多相关《红外遥控电子密码锁的设计与实现.docx(43页珍藏版)》请在冰点文库上搜索。

红外遥控电子密码锁的设计与实现.docx

红外遥控电子密码锁的设计与实现

成都信息工程学院“天府软件园”杯嵌入式创新技术大赛

报告书

 

项目名称:

红外遥控电子密码锁的设计与实现

完成日期:

2011年5月

成员:

李刚张洋洋唐明友

摘要:

本设计是以STC89C52为主要芯片,以中断、计数等基本工作方式来控制、判断外部器件的工作、工作状态,结合采用数字信号编码的基本算法,用红外遥控器遥控发送密码、再用红外接收管接收密码,单片机根据红外接收管导通与否和持续时间结合二次调制方式的基本算法还原遥控器发送的密码,再与外部储存器AT24C02储存的密码对比,判断密码是否正确,辅助以LCD12864显示用户的操作结果,以蜂鸣器提醒,再通过矩阵键盘实现输入或修改密码等基本功能实现红外电子密码锁的设计。

该设计运用了c语言编写程序,简单、明了,很好的实现了红外通信的要求。

在以往设计的基础上,该设计添加了在线烧写程序,极大的方便了用户使用,特别是为工业生产带来了极大的便利。

红外电子密码锁具有成本较低、操作方便、体积小、无污染、反应速度快等优势,具有很好的市场价值。

关键词:

编码、解码、密码、红外

1总体设计思路

1.1题目要求

红外遥控电子密码锁由红外遥控发射板、红外接收终端、带控制的电子锁构成。

当红外接收终端收到遥控板送来的开锁密码信号,并与保存在终端中的密码对比。

当对比成功后终端向电子锁发出开锁命令,完成开锁功能。

此题目的重点、难点是实现红外信号的接收、密码储存和正确识别按键并显示操作结果。

由于红外遥控不影响周边环境、不干扰其他电器设备,其无法穿透墙壁,因此,不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。

而且红外电子密码所体积较小、操作方便等优势,具有很好的市场前景。

1.2本设计主要硬件功能部分

本系统主要由六大部分组成:

1)单片机最小系统模块;

2)LCD显示电路模块;

3)阵列键盘模块;

4)红外接收模块;

5)AT24C02模块;

6)蜂鸣器模块;

1.3本设计软件的总体构思

本设计是以STC89C52为核心控制器件。

本设计是通过STC89C52与AT24C02之间交换密码后,再与用户通过键盘或红外遥控器发送过来的密码作对比,再用LCD12864显示操作结果,用蜂鸣器提示电子锁是否打开,从而实现红外遥控电子密码锁的设计,如下图。

2

系统的硬件设计与实现

2.1AT24C02模块

2.1.1器件及原理介绍

AT24C02串行E2PROM具有I2C总线接口功能,功耗低,宽电源电压(根据不同型号2.5~6.0V),工作电流约为3mA,静态电流随电源电压不同为30μA~110μA。

图表2

I2C通信原理:

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化,如图A。

SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号,如图4。

图表3

图表4

2.1.2电路实现

A0、A1、A2作为地址线,因在此只有一个器件,故全都接GND。

SDA作串行数据读写端接P1.2口,SCL作为时钟信号接P1.1口。

图表5AT24C02硬件结构

2.2红外通信模块

2.2.1遥控发射器及其编码

遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理,我们使用的超薄型红外线遥控器使用的就是6121编码。

当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。

这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,

其波形如图7所示。

图表7

上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。

然后再通过红外发射二极管产生红外线向空间发射。

UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰,如我们可以同时使用电视机、机顶盒、功放等遥控器,但它们不会产生误触发。

该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。

UPD6121G最多额128种不同组合的编码。

遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。

一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,

图表8发射波形图

当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。

如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。

代码格式(以接收代码为准,接收代码与发射代码反向)

1)位定义

图表9

2)单发代码格式

图表10

3)连发代码格式

图表11

2.2.2电路实现

一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的TTL信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。

在本系统中我们采用红外一体化接收头HS0038,外观图如图所示。

图表12

HS0038黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。

在用小功率发射管发射信号情况下,其接收距离可达35m。

它能与TTL、COMS电路兼容。

HS0038为直立侧面收光型。

它接收红外信号频率为38kHz,周期约26μs,同时能对信号进行放大、检波、整形,得到TTL电平的编码信号。

三个管脚分别是地、+5V电源、解调信号输出端。

利用外部中0断进行数据的接收。

图表13HS0038硬件结构

2.3矩阵键盘模块

将12个按键分为4排3列排列好,如图:

矩阵键盘硬件结构。

当有一个键按下时,通过某一边引脚赋低电平,扫描全部引脚看是否与最初的赋值一样,不一样则根据相应的算法(通过改变后的值与初始值相或,根据结果赋值)确定是哪个键按下。

图表14矩阵键盘硬件结构

2.4显示模块

2.4.1LCD12864介绍

LCD12864分为带字库和不带字库两种,带字库的在显示文本时更方便,不带字库的在显示图像时更有优势。

本系统采用带字库的LCD12864,采用标准的20脚接口,各引脚接口说明如表所示:

编号符号引脚说明编号符号引脚说明

1VSS电源地11D4数据

2VDD电源正极12D5数据

3V0对比度亮度调整13D6数据

4RS数据/命令选择14D7数据

5R/W读/写选择15PSB串行通信选择端

6E使能信号16NC空脚

7D0数据17RET复位

8D1数据18VOUTLCD驱动负电压

9D2数据19LED+背光电源正极

10D3数据20LED-背光电源地

2.4.2LCD12864电路图:

图表15LCD12864硬件结构

2.5蜂鸣器模块

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。

本系统采用无源蜂鸣器,控制更简单。

蜂鸣器硬件如下图:

图表16

2.6单片机最小系统模块

2.6.1单片机最小系统电路图:

图表17最小系统

3

软件设计

3.1程序流程图

3.1.1主程序流程图

图表18主程序流程图

3.1.2

键值判断流程图

图表19键值判断流程图

3.1.3

开锁流程图

图表20开锁程序流程图

3.1.4

密码修改流程图

图表21密码修改流程图

3.1.5

红外接收流程图

图表22红外接收流程图

3.1.6

按键扫瞄流程图

图表23按键扫描流程图

3.2程序设计(见附录二)

4

总结:

本设计不但很好的满足了题目的要求,即终端能够接收红外遥控发射板发射的红外信号(密码)并能与已存密码作对比,而且能够在液晶上显示操作结果,还增加了取消这一功能,从而完成了红外遥控电子密码锁的要求。

但一开始并不是这么顺利,最先将程序下载到机子里面,键盘不能工作,后经查发现键盘程序没有运行。

改过来后又发现多了一个键,没有用处,经讨论将多的键设为取消键。

原来设计的电源是直接用USB从电脑上引出来,后来在此解读题目时发现不能满足题目要求,所以添加了一个用7805稳压的小模块。

美中不足的是此设计红外遥控的距离并不太理想(一米多一点),而且取消功能并不是想象的能够取消前面自己不想要的内容,而是返回主菜单。

但这些不足并不能抵消此设计带来的好处。

5

参考文献:

侯璐《黑龙江大学学生学术科技创新项目申请书》

甄盈盈《红外遥控密码锁的设计与实现》

《撰写电子设计竞赛报告参考格式》

《第7章电子设计竞赛设计总结报告写作》

在此感谢以上作者、作品。

但由于部分原因没有完全列举出作者姓名或作品完整,望谅解。

 

6

附录一

6.1整体电路结构:

图表24总电路图

6.2PCB图:

图表25pcb电路图

7附录二

7.1AT24C02模块

#include"common.h"

sbitWP=P1^0;

sbitSCL=P1^1;

sbitSDA=P1^2;

voidDelay_US(void)

{

;;

}

voidDelay_10MS(void)

{

uchari=0;

ucharj=0;

for(i=50;i>0;i--)

{

for(j=200;j>0;j--);

}

}

voidAT24C08_unprotect()

{

WP=0;

}

voidAT24C02_Start(void)//开始总线

{

SDA=1;

SCL=1;

Delay_US();

SDA=0;

Delay_US();

}

voidAT24C02_Stop(void)//停止总线

{

SDA=0;

SCL=1;

Delay_US();

SDA=1;

Delay_US();

}

voidAT24C02_Ack(void)//ACK信号

{

uchari=0;//等待从机回应

SCL=1;

Delay_US();

while((SDA==1)&&(i<200))//等侍ACK信号

{

i++;

}

SCL=0;

Delay_US();

}

voidAT24C02_NOAck(void)//NOACK

{

SCL=1;//主机发送给从机

Delay_US();

SDA=1;

SCL=0;

Delay_US();

}

voidAT24C02_Write_Byte(ucharValue)//写8位数据到总线

{

uchari=0;

for(i=0;i<8;i++)

{

SCL=0;

SDA=Value&0x80;//10000000

Delay_US();

SCL=1;

Delay_US();

Value<<=1;

}

SCL=0;

Delay_US();

SDA=1;

}

ucharAT24C02_Read_Byte(void)//读8位数据

{

ucharValue=0;

uchari=0;

SCL=0;//低电平数据可以变化

Delay_US();

for(i=0;i<8;i++)

{

SCL=1;//高电平状态读数据

Delay_US();

if(SDA)

{

Value|=0x80>>i;//先读高位数据

}

SCL=0;

Delay_US();

}

returnValue;

}

voidAT24C02_Write(ucharAddress,ucharValue)

{

AT24C02_Start();//起始条件

AT24C02_Write_Byte(0xA0);//器件地址10100000//写

AT24C02_Ack();//等从机应答

AT24C02_Write_Byte(Address);//1024字节,其中一个字节操作25

AT24C02_Ack();

AT24C02_Write_Byte(Value);//0x15

AT24C02_Ack();//

AT24C02_Stop();

Delay_10MS();

}

ucharAT24C02_Read(ucharAddress)

{

ucharValue=0;

AT24C02_Start();//开始总线

AT24C02_Write_Byte(0xA0);//10100000

AT24C02_Ack();

AT24C02_Write_Byte(Address);//读数据的地址;//25

AT24C02_Ack();

AT24C02_Start();//再次开始

AT24C02_Write_Byte(0xA1);//10100001

AT24C02_Ack();

Value=AT24C02_Read_Byte();

AT24C02_NOAck();//主机发送给从机无应答

AT24C02_Stop();

returnValue;

}

7.2红外通信模块

sbitbeer=P0^4;

sbitRED_DATA=P3^2;//红外接口

//ucharRED_ADD=0;//红外遥控的地址

ucharRED_add=255;//红外遥控的地址缓存区

ucharRED_key=255;//红外摇控的键值,无键按下时为255

//红外初始化

voidInit_Red(void)

{

RED_DATA=1;//P3^2输出高电平

EX0=1;//开启红外中断P3^2

}

//检测脉冲宽度

ucharRed_check(void)

{

uchart=0;uchara=0;

while(RED_DATA)

{

t++;

for(a=0;a<4;a++);//

if(t==250)

returnt;//超时溢出

}

returnt;

}

voidexter0()interrupt0

{

ucharres=0;ucharaa=0;

bitOK=0;

bitRODATA=0;

 

while

(1)

{

if(RED_DATA)//有高脉冲出现

{

res=Red_check();//获得此次高脉冲宽度

if(res==250)

{

break;//非有用信号

}

if(res>=200&&res<250)

{

OK=1;//获得前导位(4.5ms)

}

elseif(res>=70&&res<100)//如果是宽脉冲,则RODATA=1

{

aa++;

RODATA=1;//1.69ms

}

elseif(res>=10&&res<50)//如果是窄脉冲,则RODATA=0

{

aa++;

RODATA=0;//500us

}

//前1-8位是遥控器地址码,9-16位是地址反码,17-24是键值码,25-32是是键值反码

//获取正码

if(OK&&(aa>=0)&&(aa<8))

{

RED_add<<=1;

RED_add=RED_add+(uchar)RODATA;

}

if(OK&&(aa>=17)&&(aa<25))

{

RED_key<<=1;

RED_key=RED_key+(uchar)RODATA;

}

if(aa==32&&RED_add==0)

{

KEY_main=Red_change(RED_key);break;

}

}

}

}

//把红外数据进行转换

ucharRed_change(ucharrednum)

{

switch(rednum)

{

case16:

return0;

case48:

return1;

case176:

return2;

case112:

return3;

case8:

return4;

case136:

return5;

case72:

return6;

case40:

return7;

case168:

return8;

case104:

return9;

case0:

return10;//电源开关

case32:

return11;//EQ

case144:

return12;//快退

case80:

return13;//快进

case160:

return14;//声音减

case96:

return15;//声音加

case128:

return16;//CH-

case64:

return17;//CH+

default:

return255;

}

}

7.3矩阵键盘模块

#include"common.h"

#defineKEYP2

voidKey(void)

{

uchari=0;

ucharj=0;

uchark=0;

KEY=0x0F;

i=KEY;

if(i!

=0x0F)

{

uintl=0;

Delay(1000);

KEY=0x0F;

i=KEY;

if(i!

=0x0F)

{

KEY=0x0F;

i=KEY;

KEY=0xF0;

j=KEY;

k=i|j;

KEY_change(k);

}

while(KEY!

=0xf0&&l<2000)

{

KEY=0xf0;

l++;

}

}

}

voidKEY_change(uchari)

{

switch(i)

{

case0xED:

{KEY_main=1;break;}

case0xDD:

{KEY_main=2;break;}

case0xBD:

{KEY_main=3;break;}

case0xEB:

{KEY_main=4;break;}

case0xDB:

{KEY_main=5;break;}

case0xBB:

{KEY_main=6;break;}

case0xE7:

{KEY_main=7;break;}

case0xD7:

{KEY_main=8;break;}

case0xB7:

{KEY_main=9;break;}

case0xEE:

{KEY_main=10;break;}

case0xDE:

{KEY_main=0;break;}

case0xBE:

{KEY_main=11;break;}

default:

break;

}

}

voidDelay(unsignedinti)

{

while(--i);

}

voidINIT_TIME_0()

{

TMOD=0X00;

TH0=0X0E;

TL0=0;

ET0=1;

TR0=1;

}

voidKEY_TIME_0()interrupt1using0

{

TH0=0X0E;

TL0=0;

Key();

}

7.4LCD12864显示

#include"common.h"

sbitCS=P0^3;

sbitSID=P0^2;

sbitCLK=P0^1;

sbitRESET=P0^0;

#definelcdcom_w0xf8

#definelcdcom_r0xfc

#definelcddata_w0xfa

#definelcddata_r0xfd

//汉字地址表

ucharcodeaddr_tab[]={//便于根据汉字坐标求出地址

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置

0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置

0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置

0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置

};

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

//函数名:

voidDelay_LCD(void)

//功能:

5ms延时

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

voidDelayms(uintt)//约延时ms

{uinti;while(t--){f

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2