单片机电子系统课程设计红外遥控密码锁Word格式.docx
《单片机电子系统课程设计红外遥控密码锁Word格式.docx》由会员分享,可在线阅读,更多相关《单片机电子系统课程设计红外遥控密码锁Word格式.docx(26页珍藏版)》请在冰豆网上搜索。
例如可以作为汽车车门锁(较常规的遥控锁更安全),也可以作为仓库和家用门锁等。
关键词:
单片机、红外、遥控、密码锁
目录
1绪言1
1.1课题背景、发展及意义1
1.2课程的具体要求及任务1
1.2.1设计任务1
1.2.2基本要求1
1.2.3发挥部分1
2红外遥控锁总体设计方案2
2.1任务分析与实现2
2.2红外遥控锁硬件方案设计3
2.3红外遥控锁软件方案设计4
3红外遥控锁硬件电路设计方法及原理5
3.1红外遥控系统5
3.1.1调制5
3.1.2发射系统5
3.1.3红外接收头原理图6
3.2单片机的原理及应用7
3.2.1单片机原理简介7
3.2.2单片机最小系统的介绍7
3.2.3单片机定时/计数功能的介绍8
3.3步进电机工作原理8
3.3.1步进电机原理8
3.3.2步进电机驱动电路8
3.4LED指示电路9
3.5蜂鸣器电路9
3.6系统原理图及印刷板图9
3.6.1系统总原理图9
3.6.2印刷版图10
4软件设计流程11
4.1全部软件12
5系统的调试与分析12
5.1硬件调试12
5.2软件调试12
6结论与展望13
6.1结论13
6.2展望13
致谢14
参考文献14
附录114
附录215
1绪言
1.1课题背景、发展及意义
由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以,在设计家用电器的红外线遥控器时,不必要像无线电遥控器那样,每套(发射器和接器)要有不同的遥控频率或编码(否则,就会隔墙控制或干扰邻居的家用电器),所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。
这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方便。
由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。
随着科技的进步,人们对物质生活的水平的要求也越来越高,以指代步,是人们对科技的要求。
红外技术的发展和红外线的诸多特性,决定了它在短距里遥控上的应用。
出于方便性和安全性和方便性的设计要求,我设计了红外遥控密码锁。
1.2课程的具体要求及任务
1.2.1设计任务
利用单片机、红外遥控器、红外接收头、LED、蜂鸣器等设计一个红外遥控密码锁。
1.2.2基本要求
1.根据方案设计原理电路
2.供电电压5V稳压电源,遥控最大操作距离8m。
3.利用EDA仿真软件对设计电路进行仿真
1.2.3发挥部分
连续输入密码输入N(N可以软件设定)次,实现可调报警功能。
2红外遥控锁总体设计方案
2.1任务分析与实现
本设计的任务是:
以AT89C52单片机为处理核心,用红外接收管接收来自遥控器的红外波形,经过接收管解调后转化成的脉冲送入单片机进行处理。
红外波的解码是通过AT89C52单片机对红外接收头产生的信号的脉宽进行检测,从而判断接收到多少个0和1,最后合成为4个字节的8位代码。
通过软件编码,给该遥控器编写相应的初始化密码(启动系统是可以修改成任意的四位密码),然后通过解码来识别密码,以进行进一步的操作。
本系统总体思路如下:
根据遥控器的按键编码值对遥控锁进行编程,从而设置开锁的初始化密码。
当系统启动时,系统进入设正常工作状态,此时,如果用户更改了初始密码,用户输入新的密码,步进电机正转90度开锁。
为了使用方便,专门设置了一个按键关锁(电机反转)。
采用初始密码的操作同上。
如果连续五次输入的密码均为错误,蜂鸣器会长鸣30秒报警(报警时间可以通过软件设定)。
要求达到的各项指标及实现方法如下:
1.利用红外接收头接收来自红外遥控器的编码波形,经红外接收头解调放大后的脉冲送入单片机进行处理。
2.对脉冲信号的高低电平的时间长短进行存储和计数。
实现:
通过软件编程,用单片机的定时和计数器对脉冲的高低电平进行计时和计数。
3.对数据进行处理,根据红外的编码方式以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二制的“0”;
以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。
解码出的32位二进制码前16为位用户识别码,能识别不同的电器设备,后16位为8位操作码(功能码)及其反码。
利用软件编程,对数据进行处理得到相应按键对应的编码值。
最终实现目标:
对遥控器的按键值进行识别、存储和计数,然后和设定的密码组进行比较以识别密码和控制步进电机开关锁。
总系统框图如图2.1.1所示。
图2.1.1红外电控锁系统框图
2.2红外遥控锁硬件方案设计
遥控锁,首先要解决是编码和解码的问题。
编码部分采用编码芯片为HT6221的遥控器面板,当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二制的“0”;
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的,然后再通过红外发射二极管产生红外线向空间发射。
HT6221产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。
该芯片的用户识别码固定为十六进制01H;
后16位为8位操作码(功能码)及其反码。
UPD6121G最多额128种不同组合的编码。
在解码的时候,可以通过单片机对红外接收头产生的信号的脉宽进行检测,从而判断接收到多少个0和1,最后合成为4个字节的8位代码。
接收部分,采用红外接收头和单片机系统。
红外接收头把接收到的红外波形转化成红外脉冲,输入单片机,经过单片机接收和处理,读取按键值。
本设计用到的红外接收头来接收、放大和解调接收到的红外波,只要把该接收头的输出引脚连接单片机的外部中断口,就可以搭建简单的红外接收电路。
通过对红外接收头输出的正负脉冲进行计时和计数,通过计算就可以得到按键编码对应的二进制数组。
通过该数组获得按键值。
利用红外接收头来接收红外编码信号,电路简单,很容易操作实现,硬件开销小。
红外信号收发系统的典型电路如图1所示,红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。
红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的副载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。
注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。
红外接收头的种类很多,引脚定义也不相同,一般都有三个引脚,包括供电脚,接地和信号输出脚。
根据发射端调制载波的不同应选用相应解调频率的接收头。
大体积红外接收头IRM38A引脚说明
红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头的供电脚上须加上滤波电容,一般在22uf以上。
有的厂家建议在供电脚和电源之间接入330欧电阻,进一步降低电源干扰。
红外发射器可从遥控器厂家定制,也可以自己用单片机的PWM产生,家庭遥控推荐使用红外发射管(L5IR4-45)的可产生37.91KHz的PWM,PWM占空比设置为1/3,通过简单的定时中断开关PWM,即可产生发射波形。
2.3红外遥控锁软件方案设计
通过软件控制单片机的功能是单片机的主要特点和优点,程序的设计要考虑合理性和可读性,遵循模块化设计的原则,采用自顶向下的设计方法。
模块化设计使程序的可读性好、修改及完善方便。
软件设计包括主程序,密码校验子程序,步进电机正反准子程序,定时器0和外部中断1初始化子程序,延时子程序,红外解码子程序,蜂鸣器子程序等等。
密码校验子程序用来将解码得到的密码数组和设定的密码数组进行比较,从而判断密码正误。
步进电机正反转子程序用来控制步进电机正反转,从而实现开关锁。
定时器0和外部中断一用来对定时器0和外部中断1进行初始化。
红外解码程序用来将接收到的红外脉冲的时间数据转换成二进制表示的数据,然后进一步解码为按键编码值。
3红外遥控锁硬件电路设计方法及原理
3.1红外遥控系统
红外遥控的概述:
红外线的光谱位于红色光之外,波长是0.76~1.5μm,比红光的波长还长。
红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。
红外遥控几乎适用所有家电的控制。
红外遥控系统的主要部分为调制、发射和接收,如图所示:
图1红外遥控系统
3.1.1调制
红外遥控是以调制的方式发射数据,就是把数据和一定频率的载波进行“与”操作,这样既可以提高发射效率又可以降低电源功耗。
调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图2所示,这是由发射端所使用的455kHz晶振决定的。
在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷
12≈37.9kHz≈38kHz。
3.1.2发射系统
目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。
由于发射系统一般用电池供电,这就要求芯片的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常一点误差可以忽略不计。
红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。
图3b射击输出驱动电路
图3a简单驱动电路
如图3a和图3b是LED的驱动电路,图3a是最简单电路,选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。
图3a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。
图3b所示的射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右,发射极电流IE基本不变,根据IE≈IC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥控距离。
3.1.3红外接收头原理图
红外接收头和复位电路电路原理图如图3.1.3所示。
图3.1.3红外接收头和复位电路电路原理图
3.2单片机的原理及应用
3.2.1单片机原理简介
单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存储器RAM、只读存储器ROM、基本输入/输出接口电路。
定时器/计数器等部件都制作在一块芯片上,构成一个完整的微型计算机从而实现微型计算机的基本功能。
单片机内部结构示意图如图3.2.1所示。
图3.2.1单片机内部结构示意图
3.2.2单片机最小系统的介绍
AT89C52提供以下标准功能:
8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,5个中断源,一个全双工串行通信口,片内具有振荡器及时钟电路。
单片机最小系统如图3.4所示。
图3.2.2单片机最小系统
3.2.3单片机定时/计数功能的介绍
AT89C52单片机定时/计数器的工作有两个特殊功能寄存器控制。
TMOD用于设置其工作方式:
TCON用于控制其启动和中断请求。
3.3步进电机工作原理
3.3.1步进电机原理
步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
3.3.2步进电机驱动电路
步进电机驱动电路原理图如图3.2.2所示。
图3.3.2步进电机驱动电路原理
3.4LED指示电路
LDE指示电路原理图如图3.4.1。
图3.4.LED指示电路原理图
3.5蜂鸣器电路
蜂鸣器电路原理图如图3.5.1所示。
图3.5.1蜂鸣器电路原理图
3.6系统原理图及印刷板图
3.6.1系统总原理图
系统总原理图如图3.6.1所示。
图3.6.1系统总原理图图
3.6.2印刷版图
系统印刷板图如图3.6.2
图3.6.2系统印刷板图
4软件设计流程
4.1全部软件
相关代码见附录
5系统的调试与分析
5.1硬件调试
首先,找到所有所需的元器件并归类放好。
然后将做好的PCB板放到电脑面前,对应画好的PCB图纸,将原件一一对应的插入到板子上,并并稍稍固定以防止焊接过程中原件的掉落。
原件放好后便可以拿到后面去一一焊接。
焊接完毕后按要求调试。
调试故障及原因分析如下。
1.接收不到红外信号
原因:
红外接收头插反。
调试过程:
红外遥控对接收头按键,蜂鸣器不叫,说明红外接收管没有接收到红外信号,或者是程序没有正确处理红外信号。
结论:
红外接收管种类很多,但常用的只有两三种,这两三种输出引脚不同,使用的时候要正确识别。
2.蜂鸣器叫声小
跟蜂鸣器串联的电阻过大
调试:
更换与蜂鸣器串联的电阻,换成阻值较小的电阻。
正确识别和读取色环电阻。
5.2软件调试
具体的说这个应该属于是软硬件联合调试,在硬件调试好的情况下,调试软件应该还是比较容易的。
1.只是灯没有正常工作
原因分析:
三个LED指示灯有一个没有正常工作,经检查是坏的
结论:
在焊接元件前要进行元件检测,确保元件是好的。
2.步进电机不工作
在开发箱上别写的程序在移植到系统板上的时候没有修改所用的引脚。
在开发箱上的程序,移植到自己的功能电路中时要认真检查所用的引脚,把该修改的地方要正确修改,确保移植无误。
6结论与展望
6.1结论
该课程的主要任务是开发一个以AT89C52单片机为核心的红外遥控密码锁。
本设计主要分硬件部分和软件部分,硬件部分着重考虑硬件电路的简单性,故尽可能简单硬件电路,节省线路板的空间,达到硬件电路最优化设计。
软件采用C语言编写,采用模块化设计思想,程序可读性强,能满足设计要求,达到设计指标,实现了遥控开锁、关锁启动系统修改密码,多次输入错误报警等功能。
速度
本设计符合设计要求,操作简单,方便易用,功能性较强,具有一定的实践意义和使用价值,但也有一些不足,如没有设计忘记密码的应急措施和掉电保护功能,功能有待完善。
6.2展望
本操作简单,易于实现。
硬件部分采用的器件应用比较广泛,且价格低廉,如AT89C52单片机、红外遥控器、红外接收管、uln2003驱动芯片、步进电机、发光二极管等。
这意味着所用的器件功能比较强大、稳定,尤其是本次设计的核心元件的核心元件AT89C52单片机,软件技术成熟。
这类微处理器既可用作控制器有适合于做数据处理,而且成本低廉。
软件采用模块化设计,可读性强,方便二次开发。
这个红外要空密码锁系统,具有较低的成本和稳定的可靠性,具有较好的开发前景。
致谢
在本次设计过程中我获益匪浅,在当中我遇到了许多问题。
比如在画图过程中,封装不会画,没有根据实物画,在PCB图连线时,线的粗细,焊盘的大小都没有设定,在同学的帮助下,最后成功画出了PCB与,并制作出了PCB板。
调试过程中,在老师的帮助下,发现了不少问题,并都解决了。
在这我非常感谢他们,是他们帮助我顺利完成了我的设计。
参考文献
【1】李朝青.单片机原理与接口技术.北京航空大学出版社,1994
【2】刘灿军.使用传感器.国防工业出版社.2004
【3】何希才.传感器及其应用.国防工业出版社.2004
【4】童诗白华成英主编.模拟电子技术基础.高等教育出版社。
2006
【5】李金平沈明山姜余祥编著.电子系统设计.电子工业出版社2009
附录1
红外遥控锁元件清单
附录2
/**********************************************************************
红外遥控锁全部程序
***********************************************************************/
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
ucharcodetable1[]={0x80,0x40,0x20,0x10};
ucharcodetable2[]={0x10,0x20,0x40,0x80};
sbitP2_0=P2^0;
sbitP0_0=P0^0;
sbitP0_1=P0^1;
sbitP0_2=P0^2;
ucharhtime;
//红外时间变量
ucharstartflag;
//红外数据开始提取变量
ucharhdata[33];
//红外数据的数组
ucharbytenumber;
ucharendflag;
uchardate[4];
ucharhp;
uchardisp[8];
voiddelay1(uinta)
{while(a--);
}
voiddelay(uintdel)
{uinti,j;
for(i=0;
i<
del;
i++)
for(j=0;
j<
110;
j++);
voidtime0_init()
{TMOD=0x02;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
voidint1init()
{EA=1;
EX1=1;
IT1=1;
//红外数据提取函数
voidhpros()
{uchark=1,i,j;
ucharvalue;
4;
j++)
{
8;
{value=value>
>
1;
if(hdata[k]>
6)
{value=value|0x80;
}
k++;
date[j]=value;
hp=1;
//红外数据处理函数
voidhchuli()
{disp[0]=date[0]/16;
disp[1]=date[0]%16;
disp[2]=date[1]/16;
disp[3]=date[1]%16;
disp[4]=date[2]/16;
disp[5]=date[2]%16;
disp[6]=date[3]/16;
disp[7]=date[3]%16;
//蜂鸣器发声和Led亮
voidBEEP()
{ucharm=20;
P0_0=0;
while(m--)
{P2_0=1;
delay
(1);
P2_0=0;
P0_0=1;
voidmain()
{uinti=0,k,flag=0,b=0,d=0,FLAG=1,rflag=1,RFLAG=1,alarm=0,G=0,g=0,rag=0;
ucharkey[8]={4,5,4,6,4,7,4,4},key1[8],key2[8]={4,0,4,3,0,7,1,5};
//电控锁密码数组为key,key2为正转和反转,key1为转载红外数据的数组
time0_init();
int1init();
while
(1)
{if(endflag)
{hpros();
endflag=0;
if(hp)
{hchuli();
hp=0;
flag=1;
//按键按下蜂鸣器发声和led亮的标志
//电控锁复位标志
if((disp[4]==1)&
&
(disp[5]==6))
{uchara;