课程设计红外遥控电子密码锁的设计与实现Word文件下载.docx
- 文档编号:21861603
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:38
- 大小:411.87KB
课程设计红外遥控电子密码锁的设计与实现Word文件下载.docx
《课程设计红外遥控电子密码锁的设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计红外遥控电子密码锁的设计与实现Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本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>
j--);
}
voidAT24C08_unprotect()
WP=0;
voidAT24C02_Start(void)//开始总线
SDA=1;
SCL=1;
Delay_US();
SDA=0;
voidAT24C02_Stop(void)//停止总线
voidAT24C02_Ack(void)//ACK信号
//等待从机回应
while((SDA==1)&
&
(i<
200))//等侍ACK信号
i++;
SCL=0;
voidAT24C02_NOAck(void)//NOACK
//主机发送给从机
voidAT24C02_Write_Byte(ucharValue)//写8位数据到总线
for(i=0;
i<
8;
i++)
SCL=0;
SDA=Value&
0x80;
//10000000
Delay_US();
SCL=1;
Value<
<
=1;
ucharAT24C02_Read_Byte(void)//读8位数据
ucharValue=0;
//低电平数据可以变化
for(i=0;
i<
i++)
//高电平状态读数据
if(SDA)
{
Value|=0x80>
>
i;
//先读高位数据
}
returnValue;
voidAT24C02_Write(ucharAddress,ucharValue)
AT24C02_Start();
//起始条件
AT24C02_Write_Byte(0xA0);
//器件地址10100000//写
AT24C02_Ack();
//等从机应答
AT24C02_Write_Byte(Address);
//1024字节,其中一个字节操作25
AT24C02_Write_Byte(Value);
//0x15
//
AT24C02_Stop();
Delay_10MS();
ucharAT24C02_Read(ucharAddress)
//开始总线
//10100000
//读数据的地址;
//25
//再次开始
AT24C02_Write_Byte(0xA1);
//10100001
Value=AT24C02_Read_Byte();
AT24C02_NOAck();
//主机发送给从机无应答
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&
100)//如果是宽脉冲,则RODATA=1
aa++;
RODATA=1;
//1.69ms
elseif(res>
=10&
50)//如果是窄脉冲,则RODATA=0
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;
=17)&
25))
RED_key<
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矩阵键盘模块
#defineKEYP2
voidKey(void)
uchark=0;
KEY=0x0F;
i=KEY;
if(i!
=0x0F)
uintl=0;
Delay(1000);
KEY=0x0F;
i=KEY;
if(i!
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;
case0xDD:
{KEY_main=2;
case0xBD:
{KEY_main=3;
case0xEB:
{KEY_main=4;
case0xDB:
{KEY_main=5;
case0xBB:
{KEY_main=6;
case0xE7:
{KEY_main=7;
case0xD7:
{KEY_main=8;
case0xB7:
{KEY_main=9;
case0xEE:
{KEY_main=10;
case0xDE:
{KEY_main=0;
case0xBE:
{KEY_main=11;
default:
break;
voidDelay(unsignedinti)
while(--i);
voidINIT_TIME_0()
TMOD=0X00;
TH0=0X0E;
TL0=0;
ET0=1;
TR0=1;
voidKEY_TIME_0()interrupt1using0
Key();
7.4LCD12864显示
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--){for(i=0;
i<
125;
i++);
}}
voidLCD_SendByt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 红外 遥控 电子 密码锁 设计 实现