单片机课设报告红外密码锁.docx

上传人:b****1 文档编号:2921076 上传时间:2023-05-05 格式:DOCX 页数:44 大小:289.83KB
下载 相关 举报
单片机课设报告红外密码锁.docx_第1页
第1页 / 共44页
单片机课设报告红外密码锁.docx_第2页
第2页 / 共44页
单片机课设报告红外密码锁.docx_第3页
第3页 / 共44页
单片机课设报告红外密码锁.docx_第4页
第4页 / 共44页
单片机课设报告红外密码锁.docx_第5页
第5页 / 共44页
单片机课设报告红外密码锁.docx_第6页
第6页 / 共44页
单片机课设报告红外密码锁.docx_第7页
第7页 / 共44页
单片机课设报告红外密码锁.docx_第8页
第8页 / 共44页
单片机课设报告红外密码锁.docx_第9页
第9页 / 共44页
单片机课设报告红外密码锁.docx_第10页
第10页 / 共44页
单片机课设报告红外密码锁.docx_第11页
第11页 / 共44页
单片机课设报告红外密码锁.docx_第12页
第12页 / 共44页
单片机课设报告红外密码锁.docx_第13页
第13页 / 共44页
单片机课设报告红外密码锁.docx_第14页
第14页 / 共44页
单片机课设报告红外密码锁.docx_第15页
第15页 / 共44页
单片机课设报告红外密码锁.docx_第16页
第16页 / 共44页
单片机课设报告红外密码锁.docx_第17页
第17页 / 共44页
单片机课设报告红外密码锁.docx_第18页
第18页 / 共44页
单片机课设报告红外密码锁.docx_第19页
第19页 / 共44页
单片机课设报告红外密码锁.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课设报告红外密码锁.docx

《单片机课设报告红外密码锁.docx》由会员分享,可在线阅读,更多相关《单片机课设报告红外密码锁.docx(44页珍藏版)》请在冰点文库上搜索。

单片机课设报告红外密码锁.docx

单片机课设报告红外密码锁

华侨大学

 

单片机课程设计报告

题目红外密码锁

班级09电子C班

 

一、总体设计思路

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

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

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

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

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

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

1、本设计主要硬件功能部分

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

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

2)LCD显示电路模块;

3)红外接收模块;

4)LED指示灯和蜂鸣器模块;

2、总体电路仿真图

二、模块电路设计思路

1、STC89C52介绍

STC89C52是由深圳宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。

STC89C52主要功能如表2.1所示,其PDIP封装如图2.1所示

主要功能特性

兼容MCS51指令系统

8K可反复擦写FlashROM

32个双向I/O口

256x8bit内部RAM

3个16位可编程定时/计数器中断

时钟频率0-24MHz

2个串行中断

可编程UART串行通道

2个外部中断源

共6个中断源

2个读写中断口线

3级加密位

低功耗空闲和掉电模式

软件设置睡眠和唤醒功能

表2.1STC89C52主要功能

STC89C52引脚介绍

①主电源引脚(2根)

VCC(Pin40):

电源输入,接+5V电源

GND(Pin20):

接地线

②外接晶振引脚(2根)

XTAL1(Pin19):

片内振荡电路的输入端

XTAL2(Pin20):

片内振荡电路的输出端

③控制引脚(4根)

RST/VPP(Pin9):

复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):

地址锁存允许信号

PSEN(Pin29):

外部存储器读选通信号

EA/VPP(Pin31):

程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):

8位双向I/O口线,名称为P0.0~P0.7

P1口(Pin1~Pin8):

8位准双向I/O口线,名称为P1.0~P1.7

P2口(Pin21~Pin28):

8位准双向I/O口线,名称为P2.0~P2.7

P3口(Pin10~Pin17):

8位准双向I/O口线,名称为P3.0~P3.7

2、红外接收模块

遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们使用的超薄型红外线遥控器使用的就是6121编码。

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

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

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

其波形如图7所示。

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

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

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

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

下图为发射波形

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

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

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

1)位定义

2)单发代码格式

3)连发代码格式

电路实现

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

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

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

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

它能与TTL、COMS电路兼容。

HS0038为直立侧面收光型。

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

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

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

图表为HS0038硬件结构

3、LCD1602液晶显示模块

各个引脚功能名称及作用

电路图如下

4、LED指示及蜂鸣器模块

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

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

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

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

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

蜂鸣器硬件如下图:

LED指示模块由三个LED灯组成,分别为红、绿、黄三种颜色。

当红灯亮时,密码锁处于锁紧状态;绿灯亮时,密码锁开启状态,当黄灯亮时,则输入密码错误提示,同时若三次输入错误,三灯全亮,同时蜂鸣器响。

LED指示模块如下:

4、密码模块(STC89C52内部存储自带EEPROM)

1、内置EEPROM简介

单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?

这就需要使用EEPROM或FLASHROM等存储器来实现。

在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。

这样不光会增加开发成本,同时在程序开发上也要花更多的心思。

在STC单片机中内置了EEPROM(其实是采用IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。

下面就详细介绍STC单片机内置EEPROM及其使用方法。

要使用IAP功能,与以下几个特殊功能寄存器相关:

ISP_DATA:

ISP/IAP操作时的数据寄存器。

ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处

ISP_ADDRH:

ISP/IAP操作时的地址寄存器高八位。

ISP_ADDRL:

ISP/IAP操作时的地址寄存器低八位。

ISP_CMD:

ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。

ISP_TRIG:

ISP/IAP操作时的命令触发寄存器。

单片机芯片型号起始地址内置EEPROM容量(每扇区512字节)

STC89C51RC,STC89LE51RC0x2000共八个扇区

TSC89C52RC,STC89LE52RC0x2000共八个扇区

STC89C54RD+,STC89LE54RD+0x8000共五十八个扇区

STC89C55RD+,STC89LE55RD+0x8000共五十八个扇区

STC89C58RD+,STC89LE58RD+0x8000共五十八个扇区

寄存器标识地址名称76543210初始值

ISP_DATA0xE2ISP/IAP闪存数据寄存器11111111

ISP_ADDRH0xE3ISP/IAP闪存地址高位00000000

ISP_ADDRL0xE4ISP/IAP闪存地址低位00000000

ISP_CMD0xE5ISP/IAP闪存命令寄存器MS2MS1MS0xxxxx000

ISP_TRIG0xE6ISP/IAP闪存命令触发xxxxxxxx

ISP_CONTR0xE7ISP/IAP控制寄存器ISPENSWBSSWRSTWT2WT1WT000xx000

B7B6B5B4B3B2B1B0命令/操作模式选择

保留命令选择

-----000待机模式,无ISP/IAP操作

-----001对用户的应用程序Flash区及数据Flash区字节读

-----010对用户的应用程序Flash区及数据Flash区字节编程

-----011对用户的应用程序Flash区及数据Flash区扇区擦除

2、EEPROM在密码锁中的使用

因为EEPROM具有掉电数据不丢失的功能,在密码锁中用于存储密码信息是再好不过的了。

这次设计使用了EEPROM的第一个扇区,地址开始为0x2000,连续存储8位密码。

应用EEPROM时应该主义一个问题,在reg52头文件中,未定义EEPROM中的ISP_DATA:

ISP_ADDRH:

ISP_ADDRL:

ISP_CMD:

等寄存器,需在reg52头文件中定义,如下图所示:

三、功能简介

关于红外密码锁的功能,下面我将简单地描述一下:

1、对于密码锁首次开机,里面是未设密码的,此时CPU首先读取EEPROM内的8位密码数据,当全为0xff时则表示未写入任何数据,此时会提示设置密码。

2、确认设置密码,进入设置界面,此时用户可以自行设置8位的密码,按确认键,密码存入EEPROM中,同时返回。

3、设置密码完毕后,进入输入密码界面。

此时用户可以输入8位密码进行开锁操作。

此时三个LED灯都不亮。

4、若输入密码错误,则黄色LED灯亮,页面提示剩余开锁机会,1秒后返回密码输入界面。

此密码锁有三次的输入机会,若三次输入均错误,则密码锁锁死,红色LED灯亮,同时报警声想起,持续1分中后,重新返回输入界面。

5、当输入密码正确,则密码锁打开,此时绿色LED灯亮,表示密码锁打开,此时LCD显示开锁状态的8秒时间倒计时,同时提示是否进入修改密码设置。

6、若倒计时为0或按下返回键,LED灯灭,密码锁锁住,返回输入界面。

7、若按下确认,则进入设置密码的界面,操作同2;

四、设计过程中的问题及改进

在这次的课程设计中,遇到过许多的问题,幸运的时都顺利地解决,一下是所遇的问题及解决方法:

1、EEPROM数据写入时与读出的数据不一样。

运用EEPROM时,在数据写入后,必须立即进行数据对比,看是否正确写入,因为有时写入EEPROM的数据会发生错误。

在我经过数据写入再读出校验后,很好地解决了这个问题。

2、首次输入密码可以进行开锁,再次输入时则一直提示输入错误。

进过检验,发现程序中密码进行对比时,有一变量未重新置0;导致一直提示错误。

后在每次进行密码对比时,将此变量重新置0,密码锁正常工作。

五、心得

通过本次论文设计,使我加深了对单片机的认识,并且熟悉了单片机系统的设计流程,收获丰硕。

功能上基本达标,硬件设施基本合乎要求,软件设计可以配合硬件实现其功能。

这次的课程设计,我了解了红外发射的各种编码格式,对红外接收电路有了初步的认识。

在运用C语言编程方面,我初步熟悉了C51编程步骤,对于模块化的编程有了初步的认知和能够初步地编写基本程序。

这次的实践设计,极大地增加了我对电子方面的兴趣,对于我们所学地理论知识的理解也进行了加深。

从这次的论文设计中,我真正的体会到,知识的重要性,特别是要理论联系实际,把我们所学的理论知识运用到实际生活当中,要用知识改变一切。

六、参考文献

1、《51单片机计数与运用系统开发案例精选》江志红编著清华大学出版社

2、《单片机原理与运用》张毅刚主编高等教育出版社

3、《STC89C52中文资料.PDF》宏晶科技:

专业单片机/存储器供应商www.MCU-M

4、红外遥控编码资料明浩(pnzwzw@)收集整理

5、STC89C51RC,STC89C52RC,STC89C54RD+EEPROM例程

出自viviFire,

本程序参考宏晶公司提供的STC5Axx系列EEPROM例子程序

附录一、程序

1、主程序头文件------------------------------------------

#ifndef_main_h_

#define_main_h_

#ifndefuint

#defineuintunsignedint

#endif

#ifndefuchar

#defineucharunsignedchar

#endif

externucharlock_code1[8];

externucharlock_code2[8];

externucharcode_num1,code_num2,v_num,daoji_num;

externvoidreadbus_eeprom();

#endif

主程序------------------------------------------------------------------------------------------

#include

#include"decoding.h"

#include"eeprom.h"

#include"1602.h"

#include"set_code.h"

#include

#defineucharunsignedchar

#defineuintunsignedint

#definesure11

#defineback12

ucharcodestr1_main[]="thereisnothe";

ucharcodestr2_main[]="codehere";

ucharcodestr3_main[]="inputthecode?

";

ucharcodestr4_main[]="sure";

ucharcodestr5_main[]="thelockisopen";

ucharcodestr6_main[]="setcode:

sure";

ucharcodestr7_main[]="warming!

!

!

!

";

ucharlock_code1[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

ucharlock_code2[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

ucharcode_num1,code_num2,jishi_num=8,count=0,v_num,daoji_num=3,min_daoji;

bitdaoji_flag1=1,daoji_flag2=0;

sbitLED5=P1^5;

sbitLED6=P1^6;

sbitbeep=P3^7;

voidreadbus_eeprom();

voiddelay();

ucharComparision_code();

externunsignedcharbyte_read(unsignedintbyte_addr);

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

延时程序

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

voiddelay()

{uinti,j;

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

for(j=0;j<30000;j++);

}

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

主函数

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

voidmain()

{TMOD=0x11;//设置定时器T1工作方式1,T0方式1

TH1=(65536-50000)/256;//赋初值(50ms初值)

TL1=(65536-50000)%256;

ET1=1;//使能定时器1

TR1=0;

EX0=1;//开红外接收中断1,

IT0=1;//下降沿触发

PX0=1;//红外接收级别最高

EA=1;

lcd_init();

readbus_eeprom();//读出密码

code_num1=Comparision_code();

while(code_num1==8)//count=8;没有存储密码;则写入密码

{write_str(0x80,str1_main);

write_str(0xc0,str2_main);

delay();//延时1s左右

set_code();

}

while

(1)//请输入密码进入主程序

{write_str(0x80,str3_main);

write_str(0xc0,str4_main);

delay();

input_code();//输入8位密码并比较返回code_num2

while(code_num2==1)//输入8位密码密码正确code_num=1;执行开锁

{TR1=1;daoji_num=3;//开计时中断输入错误变量置3;

write_str(0x80,str5_main);

write_str(0xc0,str6_main);

write_position(2,14);

lcd_wdat(jishi_num/10+0x30);//开启时间倒计时显示

lcd_wdat(jishi_num%10+0x30);

LED6=0;//绿灯亮

if(key==back||jishi_num==0)//时间到或按下返回键

{code_num2=0;TR1=0;jishi_num=8;LED6=1;}

if(key==sure)//sure键,进入密码修改

{TR1=0;jishi_num=8;

LED6=1;

set_code();

code_num2=0;

}

}

while(daoji_num==0)//三次输入错误,锁死

{TR1=1;

daoji_flag2=1;daoji_flag1=0;

write_str(0x80,str7_main);

beep=0;//蜂鸣器响

LED5=0;//红灯亮

write_position(2,14);

lcd_wdat(min_daoji/10+0x30);//开启时间倒计时60s显示

lcd_wdat(min_daoji%10+0x30);

if(min_daoji==0)//倒计时=0;关定时中断,程序返回输入界面

{TR1=0;

daoji_num=3;

daoji_flag2=0;daoji_flag1=1;

min_daoji=60;

}

}

}

}

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

1s计时中断

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

voidT1_time1s()interrupt3

{

TH1=(65536-50000)/256;//赋初值(50ms初值)

TL1=(65536-50000)%256;

count++;//计时满50ms溢出一次

if(count==20)//溢出20次即50ms*20=1000ms=1s

{count=0;

if(daoji_flag1==1)//开启时间倒计时8s

{jishi_num=jishi_num-1;}

if(daoji_flag2==1)//锁死时间倒计时60s

{min_daoji=min_daoji-1;}

}

}

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

读出eeprom中密码数组

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

voidreadbus_eeprom()

{

uintaddress=0x2000;

uchari=0;

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

{lock_code1[i]=byte_read(address);

address=address+1;

}

}

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

判断是否有密码存在

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

unsignedcharComparision_code()

{uchari,j=0;

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

{if(lock_code1[i]==0xff)

{j++;}

}

returnj;

}

2、红外解码程序--------------------------------

头文件---------------

#ifndef_decoding_h

#define_decoding_h

#ifndefuint

#defineuintunsignedint

#endif

#ifndefuchar

#defineucharunsignedchar

#endif

externvoidencode();

externunsignedcharkey;

externunsignedcharuser_code,uuser_code,data_code,udata_code;

#endif

解码主程序--------------------------------------------------------------------

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

*红外解码保存相关函数及变量

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

#include

#defineucharunsignedchar

#d

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

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

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

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