资源描述
红外遥控电子密码锁设计
红外遥控电子密码锁设计
目录
1绪论 1
1.1引言 1
1.2红外通信基本原理 1
2 设计框图 3
2.1发射端 3
2.2接收端 3
3功能实现 3
4法案选择和论证 4
4.1红外发射部分 4
4.2红外接收部分 4
4.3液晶显示部分 6
4.4键盘输入部分 8
4.5稳压电源部分 8
4.6总体设计图 9
4.6.1发射端 9
4.6.2接收端 9
5软件设计 10
5.1键盘扫描部分 10
5.2红外发送数据部分 11
5.3红外接收部分 12
5.4验证密码 14
5.5修改密码 19
6系统调试 22
6.1调试仪器 22
6.2整体调试 22
6.3硬件单元调试 22
6.3.1编码键盘的调试 22
6.3.2发送端部分的调试 22
6.4软件调试 23
7 结论 23
致谢 24
参考文献 25
附录 28
1 绪论
1.1 引言
锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。锁具发展到现在已有一百多年的历史了,人们对它的结构、机理也研究得很透彻,因此,不用钥匙就能打开的方法和工具也层出不穷。现代人类文明社会里,由于社会中各种矛盾冲突十分剧烈,人们的思想道德观念,价值观念,文化修养水平等差异,群众中良莠不齐,善良的人们能够自觉规范自已的行为,“非礼不为”,虽无钥匙亦不会乱闯。然而,那些毫无道德观念的盗贼却想方设法利用高科技手段撬门开锁,使广大居民防不胜防。
为什么会出现这种情况呢?因为传统锁具都存在致命的弱点:
第一、 锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;
第二、 锁具制作工艺,技术落后,无法阻止技术手段的开启。
目前,市场上很多国内外的锁具,实际上都不具备真正的防盗功能。在惯偷面前,两根钢丝或几件简单的工具就可以把这些锁打开,有的惯偷甚至公开扬言:“没有我打不开的锁。”其实,不是他们多高明,而是一般锁具技术原理太过简单。面对这一残酷的现状,新时代提出了锁具必须革命的迫切的要求。
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。
本设计就是其中的一种,红外遥控电子密码锁。本设计是利用红外传输为途径,方便远距离开锁,不用像传统锁那样一定要将钥匙插进锁里才能开启;该设计具有使用方便、操作简单、价格低廉等特点,特别适用于那些正常人体不宜接近的特殊场合,比如高辐射区、高传染区等。
1.2 红外通信基本原理
红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原理
第11页(共29页)
红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。
红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。
红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图1-1所示。
图1-1
载波信号的频率 f=38KHz,载波周期T=26.32us,本设计使用单片机软件产生载波,取T=26us,脉冲宽度t1=10T=260us。
2 设计框图
12按键的编码键盘
80C51单片机
2.1发射端
红外发射
图2-1
2.2接收端
1602液晶显示
LED灯及蜂鸣器提示
红外接收端
80C51单片机
图2-2
3 功能实现
l 在发射端部分按下按键,编码键盘扫描得到相应数据,并发送到接收端,有效距离为>5M。
l 当接收端处于待机状态时候,发射端按下start/restart按键,则进入密码验证部分,发送端输入密码。若输入的密码符合预设的密码,则液晶显示相应提示,并且LED以300ms的频率闪烁3秒,蜂鸣器鸣叫3秒。若密码错误,则液晶显示相应提示。
l 当接收端处于待机状态时候,发射端按下changepassword按键,则进入密码修改部分。在此可以修改预设的密码。
4 方案选择和论证
4.1红外发射部分
方案一:专用芯片解决方案。
专用红外编码芯片种类很多,如日本三菱公司的M50426AP、PT2262、BL9148、ZD6631等,此类芯片一般集载波振荡、编码、发射于一体,具有很强的抗干扰能力,外围电路简单,使用很方便,而且价格也很低。通用的遥控器上大多使用此类专用芯片。
但是,专用芯片也有致命的弱点:专用芯片的应用灵活性很差,其内部编码已经固定,无法修改内部数据,不适用于经常需要改动传送数据的场合;专用芯片几乎都是面向指令型的编码遥控方式,传输效率较低;大多数的专用芯片的内部编码及技术数据已经公诸于世,会产生安全漏洞。
方案二:微处理器单独解决方案。
该方案使用微处理器的I/O口直接产生38KHz已调波,驱动红外发光二极管,发射红外数据。38KHz方波由CPU的定时器产生或由软件编程产生。
红外编码工作由软件完成,因此,红外编码方案可以任意设计,外部只需配接非常简单的硬件电路,大大降低了了电路的复杂性,有利于降低成本,减小遥控器的体积。
由于使用软件编码方案,占用了CPU的一定的时间,CPU处理速度受到一定的影响,但是,对于遥控器这一类功能比较单一的系统来说,处理任务比较少,根本影响不了CPU的处理效率,仅仅是增加了软件编程的负担。
经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,仅仅是增加了软件的编程负担,使得红外编码非常灵活,所以采用该方案。
图4-1
4.2红外接受部分
方案一:分立元件解决方案,电路如图4-2所示。
图中RD1为红外接收管;R3、R4,VT1构成反相放大器;VT2、R5、C2构成滤波器,滤掉38KHz的高频载波;R6、R7、VT3构成整形电路,
将滤波后的波形处理为较好的方波;C1、C3为耦合电容;R2为限流电阻,当接收到较强的信号是保护VT1。
该方案最大的优点是供电电压比较低,可用两节电池3V电压供电。
但是,由于电路使用分立元件构成,其稳定性和抗干扰能力不高,影响红外数据传输的准确性。
图4-2
方案二:集成电路解决方案,电路如图4-3所示。
该方案使用一体化红外接收器,集红外接收和放大于一体,不需任何外接元件,就能完成从红外接收到输出与TTL电平兼容的所有工作,而体积和普通的塑封三极管大小一样。
MK0038芯片介绍:
MK0038的管脚分布如图4-4所示,2脚、3脚分
图4-3
别为地电源和地,1脚是解调信号输出,其电平与TTL兼容。MK0038系列特性如下:
频率范围:32.75KHz、36.7 KHz、38 KHz、40 KHz
电源电压范围:4.7V~5.3V
工作电流:3 mA
最大遥控距离:>8 m
工作温度:-10~+60 ℃
MK0038是黑色环氧聚光透镜,滤除了可见光的干扰。内含红外线PIN接收管、选频放大器和解调器。
当红外线发射器发出的信号经空间传送到MK0038时,它内部的PIN红外 图4-4
线接收管将红外线转换为电信号,该信号经选频放大、解调后由1脚输出与TTL电平兼容的电信号,该信号可以直接送入微处理器进行处理。
MK0038的输出波形如图4-5所示。当接收到频带内的红外信号时,MK0038接收器会输出低电平,否则数据高电平,从而“将时断时续”的红外信号解调成原来的连续方波信号。
图4-5
MK0038的优点是稳定性好,抗干扰能力很强,外围电路非常简洁,成本又不高,适用于各种红外遥控和红外数据传输,是替代其它红外接收放大器的理想元件。唯一的缺点是电源供电需5V左右,无法用就两节电池供电。
经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,通过软件编程,使得红外编码非常灵活,所以采用该方案。
4.3液晶显示部分
1602LCD显示介绍:现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线DB0-DB7和RS,R/W,E三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。
接口信号说明
1602型LCD的接口信号说明如表4-1所示。
表4-1 1602型LCD的接口信号说明
编号
符号
引脚说明
编号
符号
引脚说明
1
Vss
电源地
9
DB2
Data I/O
2
VDD
电源正极
10
DB3
Data I/O
3
VEE
液晶显示偏压信号
11
DB4
Data I/O
4
RS
数据/命令选择端(H/L)
12
DB5
Data I/O
5
R/W
读写选择端(H/L)
13
DB6
Data I/O
6
EN
使能信号
14
DB7
Data I/O
7
DB0
Data I/O
15
BLA
背光源正极
8
DB1
Data I/O
16
BLK
背光源负极
主要技术参数
1602型LCD的主要技术参数如表4-2所示。
表4-2 1602型LCD的主要技术参数
显示容量
16*2个字符
芯片工作电压
4.5~5.5V
工作电流
2.0mA(5.0V)
模块最佳工作电压
5.0V
字符尺寸
2.95*4.35(WXH)mm
基本操作程序
读状态:输入:RS=L,RW=L,E=H 输出:DB0-DB7=状态字
读数据:输入:RS=H,RW=H,E=H 输出:无
写指令:输入:RS=L,RW=L,DB0-DB7=指令码,E=高脉冲
输出:DB0-DB7=数据
写数据:输入:RS=H,RW=L,DB0-DB7=数据, E=高脉冲 输出:无
完成的功能及其接线图
本系统中只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“RIGHT”,通过LCD显示屏,可以清楚的判断出接收端的状态。
4.4 键盘输入部分
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。因此,采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置。其大体功能(看键盘按键上的标记)及与单片机引脚接法如图4-6所示。
图4-6 键盘输入原理图
4.5稳压电源模块
由于单片机、HS0038等元件都需要5V电压的供电,故无法仅使用2块干电池进行供电,于是便设计了使用稳压电源的稳压模块。使用5V稳压芯片7805,使整个系统的供电为5V电压,确保了电压的稳定。原理图如图4-7:
图4-7
4.6总体设计图
4.6.1发射端:
图4-8
4.6.2接收端:
图4-9
5软件设计
5.1键盘扫描部分 键盘扫描部分如图5-1
原本应该是4x4的 矩阵,而在本设计中,只使用了十二个键盘,故使用了4X3的键盘矩阵。
工作原理分析:
行线P2.1~P2.3是输入线,单片机通过其电平的高低来判断按键是否被按下,具体步骤如下所示:
(1):判断键盘上有无按键按下。其方法是P2.7~P2.4列电平全输出为“0”电平,读行线P2.1~P2.3电平状态,若行电平全为“1”,则键盘无按键按下,若不全为“0”,则有按键按下。
(2):去键抖动的影响。 方法是:在判断有按键按下之后,软件延时一段时间,再判断键盘状态,如果仍未有按键按下状态,则认为有一个确定的按键被按下,否则是按键抖动,进行按键抖动处理。
(3):扫描键盘,得到按下按键的键号。按照行列式键盘的工作原理,键值=行号X4+列号。
图5-1
入口
5.2红外发送数据
返回
关闭定时器T0,并拉高P1.0口,使红外管关闭
发送累加和sum
发送键盘读取到的数据
发送字符’S’
发送字符’S’
打开定时器T0产生38K方波
本设计的数据发送流程图如图5-2所示。
本设计的协议如下:
先发送两个字符’S’,然后发送从键盘扫描得到的所计算的数字,最后发送之前所有发送数据的累加和sum。即一帧数据发送完毕。
若键盘得到的数据是数字11,即意味着确认键,则将累加和sum清零。该步骤是在键盘扫描部分执行。
在发送一帧数据之时,应该先打开产生38K频率波形的定时器T0的开始寄存器TR0。此时38K频率的载波形成。
在一帧数据发送完毕之后,应该关闭定时器T0的开始寄存器TR0,并拉高P1.0,使得红外发射管处于关闭状态。
图5-2
代码体现
Void Send_Password (unsigned key_value_temple )
{
SBUF='S';
while(!TI);
TI=0;
SBUF='S';
while(!TI);
TI=0;
SBUF=key_value_temple;
while(!TI);
TI=0;
SBUF=sum;
while(!TI);
TI=0;
if (key_value_temple==11) sum=0;
WAVE=1;
}
入口
5.3红外接收部分
SBUF是否为’S’?
接收数据
NO
接收数据
YES
计算累加和
接收数据
NO
SBUF是否为’S’?
YES
计算累加和是否与sum相等?
sum减去key_value_temple
NO
YES
接收到的数据是否为11?
NO
清除累加和sum
YES
保存接收到的数据
返回
图5-3
第12页(共29页)
数据接收部分的流程图如图5-3所示。
这是本设计中最为复杂的一个部分。因为此处为协议的体现之处。发射端只需要发射数据即可,而接收端则需要判断接收到的数据是否正确并对接收到的数据进行判断。具体执行步骤如下:
首先根据之前自己制定的协议,在得到发送端所发来的数据之前,必须要连续获得’S’的字符。这是因为虽然在接受端使用了HS0038这样具有消除干扰的红外接受原件,只接受38K频率的方波,但是环境中依然存在38K频率方波的干扰,在设计过程中,我发现台灯、日光灯乃至太阳光中都含有该频率波形,所以依然会有所干扰,接受端可能会接受错误数据。而经过制定的协议,基本就可以将环境中的干扰排除掉。若首先接受到的连续两个字符并不是’S’,则返回到循环的初始端。
当接受到连续两个’S’的字符后,发射端则认为即将有正确的数据发送过来。则下一位数据被认作为发送端所扫描键盘得到的键盘值。但这依然可能受到环境中的光所干扰。故在一帧数据的最后设置校验和。该校验和为发送端所发送的所有一轮数据的累加和sum。而在接收端也计算得出所接收到的一轮数据的累加和sum。若接收到的发送端发送过来的sum与接收端所计算出来的sum不相等,则认为接收到错误数据,将其丢弃,重新回到循环的开始,进行一帧数据的接收。
若接收到的数据为’11’,即表示数据输入完成,则在发送端和接收端两端都将累加和sum清零。
代码体现:
void receive_data(void)
{ for(;;)
{while (!RI);
RI=0;
if (SBUF=='S');
else continue;
while (!RI);
RI=0;
if (SBUF=='S');
else continue;
while (!RI);
RI=0;
key_value_temple=SBUF;
while (!RI);
RI=0;
sum+=key_value_temple;
if (sum==SBUF) key_value=key_value_temple;
else{ sum-=key_value_temple;continue ; }
if (key_value==11) sum=0;
break;
}
}
第13页(共29页)
接收到的数据是否为验证密码功能?
5.4验证密码 入口
NO
接收数据
YES
将接收到的数据转换为password
接收到的数据是否为11?
NO
得到的password是否与设定的password相等?
YES
NO
LCD显示相关内容以提示密码输入错误(5S)
返回
LCD显示相关内容,LED以300ms的周期闪烁3S,蜂鸣器鸣叫3S
YES
图5-4
验证密码部分的流程图如图5-4所示。
当首先接收到的数据为’11’,则意味着发送端按下了start/restart键,则接收端进入密码验证部分。
开始接收数据。为了提示和保护每次接受到的数据,每按一次按键在液晶上显示符号’*’。判断所接收到的数据是否为’11’,这意味着在发送端用户是否已经完成输入过程,按下了OK按键。如果接收到的数据并不是’11’,则说明用户仍然需要继续输入密码。则此时将从进入密码验证部分开始所接收到的数据转换成password,所用的方法也非常简单,即将每次所接收到的数据向左边移一位。一旦接收到了’11’的数据,则说明用户已经完成输入密码了,此时将之前所转换得到的password与系统的预设密码password_init进行比较。若二者相等,则说明密码输入正确,首先在液晶上显示相应的提示,即向用户提示密码输入正确,并且LED以300ms的周期进行闪烁3秒,蜂鸣器鸣叫3秒。随后再转回待机状态,液晶显示待机状态时所该显示的提示语。
代码体现:
/*********************************receive password**********************/
for(;;)
{
password=0;
receive_data();
if (key_value==10)
{
write_com(0x01);
write_com(0x80);
for(num=0;num<9;num++)
{
write_data(table4[num]); //写数据
}
write_com(0x80+0x40);
while (key_value!=11)
{
receive_data();
switch(key_value)
{
case 10:
{
write_com(0x01);
write_com(0x80);
for(num=0;num<8;num++) write_data(table4[num]); //写数据
write_com(0x80+0x40);
password=0;
break;
}
case 11:break;
default:{password= key_value+password*10;write_data(ASCII[key_value]); break;}
}
}
if (password== password_init)
{
TR0=1;
LED=0;
BEEP=1;
while(!finish_beep_flag);
finish_beep_flag=0;
write_com(0x01);
write_com(0x80);
for(num=0;num<9;num++)
{
write_data(table8[num]); //写数据
delay(20);
}
write_com(0x80+0x40); //
for(num=0;num<8;num++)
{
write_data(table9[num]);
delay(20);
}
delay(3000);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table2[num]); //写数据
}
write_com(0x80+0x40); //
for(num=0;num<8;num++)
{
write_data(table3[num]);
}
}
else
{
write_com(0x01);
write_com(0x80);
for(num=0;num<8;num++)
{
write_data(table[num]); //写数据
delay(20);
}
write_com(0x80+0x40); //
for(num=0;num<14;num++)
{
write_data(table1[num]);
delay(20);
}
delay(3000);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table2[num]); //写数据
}
write_com(0x80+0x40); //
for(num=0;num<8;num++)
{
write_data(table3[num]);
}
}
}
}
void Time0_Service(void) interrupt 1
{
flash_count++;
TH0=0X08A;
TL0=0X0D0; //30ms
if ((flash_count%10)==0) LED=!LED;//300ms
if (flash_count==100) //3S
{
flash_count=0;
TR0=0;
LED=1;
BEEP=0;
finish_beep_flag=1;
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table2[num]); //写数据
}
write_com(0x80+0x40); //
for(num=0;num<8;num++)
{
write_data(table3[num]);
}
} //LED FLASH AND BEEP FOR 3 SECONDS
}
第31页(共29页)
5.5 修改密码
入口
接收到的数据是否为修改密码功能?
NO
接收数据
YES
将接收到的数据转换为password
接收到的数据是否为11?
NO
YES
保存得到的password为设定的password,即为password_init
LCD显示相关内容,以提示密码设定成功
YES
返回
图5-5
修改密码部分的流程图如图5-5所示。
若在待机状态时接收到的数据为’12’,则意味着在发送端用户按下了changepassword的按键,进入修改预设密码password_init的部分。
与密码验证部分一样,为了提示和显示每次接受到的数据,每按一次按键在液晶上显示所按下按键的编码。判断所接收到的数据是否为’11’,这意味着在发送端用户是否已经完成输入过程,按下了OK按键。如果接收到的数据并不是’11’,则说明用户仍然需要继续输入密码。则此时将从进入密码验证部分开始所接收到的数据转换成password,所用的方法也非常简单,即将每次所接收到的数据向左边移一位。一旦接收到了’11’的数据,则说明用户已经完成输入修改后的密码了,此时将之前所转换得到的password赋予预设密码password_init,然后在液晶上显示相应的提示,即向用户提示密码已经修改完成。经过5秒左右的展示之后,转回待机状态,液晶显示待机状态时所该显示的提示语。
代码体现:
/**************************changepassword*************************************/
if (key_value==12)
{
write_com(0x01);
write_com(0x80);
for(num=0;num<13;num++) write_data(table5[num]); //写数据
write_com(0x80+0x40);
while (key_value!=11)
{
receive_data();
switch(key_value)
{
case 12:{
write_com(0x01);
write_com(0x80);
for(num=0;num<13;num++) write_data(table5[num]);
write_com(0x80+0x40);
password=0;
break;
}
case 11:break;
default:{password= key_value+password*10; write_data(ASCII[key_value]); break;}
}
}
password_init=password;
write_com(0x01);
write_com(0x80);
for(num=0;num<14;num++)
{
write_data(table6[num]); //写数据
}
write_com(0x80+0x40);
for(num=0;num<7;num++)
{
write_data(table7[num]); //写数据
}
}
delay(3000);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table2[num]); //写数据
}
write_com(0x80+0x40); //
for(num=0;num<8;num++)
{
write_data(table3[num]);
}
}
6 系统调试
6.1调试仪器
表6-1 调试使用的仪器设备
序号
名称、型号、规格
数量
备注
1
笔记本型计算机
1
带2个9针串口
2
直流稳压电源
2
5V
3
万用表
1
-
4
串口调试USB-ISP线
1
-
5
Keil C51单片机编译软件
美国Keil Software公司
6
示波器
1
-
6.2 整体调试
本装置的调试主要分为硬件调试、软件调试等两大部分。
经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,我是首先完成单元功能模块的调试,然后进行系统调试,整体上与硬件调试的方法差不多。联机调试是最重要的一部分,同时也是本装置成功的关键。有许多新问题都不是很容易解决的。
6.3 硬件单元调试
6.3.1 编码键盘的调试
当按键按下后,系统上电,确保单片机能够识别出所按下的按键,首先在KEIL软件中进行软仿真,通过每一步的运行,查看各寄存器的数值。当软仿真没有问题的时候,再在发射端的硬件上接上液晶进行观察,当按下按键时,在液晶上应该显示相应的按键值。
6.3.2 发送端部分的调试
在接收端部分使用液晶进行检测发送端发送的数据是否正确。当发送端按下一个按键,在接收端的液晶上显示该按下的按键值,以判断是否有错误。
6.4 软件调试
对于本系统而言,软件程序所实现的功能比较多,所以软件程序的调试显得相当的烦琐。整个程序是使用C语言。
用51系列单片机的下载线将程序下载到单片机内,用串口USB线来监测发送和接收的数据,对照着来修改程序。首先要保证每个模块独立能够发送接收的数据均符合要求,再来直接用线来连接从机和主机来测试单片机之间的串口通信协议是否正确,之后再加上红外发送和接收模块来统一测试。
总结调试经验,红外通信只能工作于半双工方式,同时,由于通信波特率比较低,编程时应注意等待时间。
7 结论
本系统以单片机AT89S52芯片为核心部件,利用红外通信技术、单片机串口通信技术并配合一套独特的软件算法实现了红外信号传输、密码修改,液晶显示等功能,实验和理论分析结果都表明,红外遥控电子密码锁设计完成了设计的各项任务。在系统设计过程中,力求硬件线路简单,充分发挥软件片成方便灵活的特点,来满足系统设计要求。
红外遥控电子密码锁操作简单,给用户提供了友好的操作界面,用户不需专门学习,就能够简单、快捷地完成操作,做到即买即用。此产品还有其它优点:功耗低,价格适中,体积小;而且可以通过修改单片机程序,从而使其功能不断地增强与更新。
红外遥控密码锁系统的成本与低、体积小,而且可以进行近距离遥控,低耗很低,使用十分方便。如经优化设计,成本可以进一步降低。红外遥控密码锁锁具有广阔的市场前景。
在毕业设计过程中,巩固了在大学4年内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕设提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。
由于时间太仓促,经验不足,理论方面也相应的存在不足,加上条件有限,仍存在着一些设计方面的问题,个人技能也有待提高。理论知识还要巩固加强。
致 谢
首先感谢我的父母亲,他们的勤劳善良、执着以及对生活的态度使我终生受益。如果没有他们从小到大对我的培养,就没有这一切。
感谢我的指导老师文远熔老师,无论在论文的选题、课题的研究和论文的撰写过程中,自始至终得到了老师的悉心指导和热情帮助,使我的毕业设计才得以顺利完成。在设计的开始选择方案中,文老师给了我一个提示,要求我使用单片机自带的通讯端口来进行设计,这是给总方案定下了一个基调。在调试期间,起初该设计要受到环境中的一些可见光的影响,文老师又提示我需要编写一个简单的协议来排除这些干扰,这是帮助我解决了调试期间的问题。
感谢学校。学校各位老师这四年来的教导,他们的教导使我受益匪浅。衷心感谢我的同学,感谢他们给予我的帮助和支持。感谢学校图书馆和自修室为我提供了良好的学习环境,为我不断吸取新知识提供了很好的源泉。
展开阅读全文