智能门禁系统1.docx

上传人:b****7 文档编号:24048960 上传时间:2023-05-23 格式:DOCX 页数:42 大小:285.52KB
下载 相关 举报
智能门禁系统1.docx_第1页
第1页 / 共42页
智能门禁系统1.docx_第2页
第2页 / 共42页
智能门禁系统1.docx_第3页
第3页 / 共42页
智能门禁系统1.docx_第4页
第4页 / 共42页
智能门禁系统1.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

智能门禁系统1.docx

《智能门禁系统1.docx》由会员分享,可在线阅读,更多相关《智能门禁系统1.docx(42页珍藏版)》请在冰豆网上搜索。

智能门禁系统1.docx

智能门禁系统1

智能门禁系统

实训报告

 

姓名:

戚振勇、王丹丹、翟欣欣、何西涛、刘裕鹏

学号:

201032010116、201032010121、201032010129、201032010105、201032010114

班级:

10级应用电子一班

指导老师:

金桂梅

2012年6月

 

目录

一、摘要……………………………………………………3

二、总体设计方案…………………………………………4.

2.1硬件方案…………………………………………4

2.2软件方案…………………………………………5

三、硬件模块设计…………………………………………5

3.1单片机最小系统………………………………….5

3.2语音芯片模块………………………………………7

3.3声光信号处理模块…………………………………9

3.4红外信号处理电路…………………………………9

四、程序设计…………………………………………………10

4.1ISD4002-120P录音程序……………………………….10

4.2项目综合C语言程序……………………………………10.

五、系统测试与结论………………………………………………11

六、参考文献………………………………………………………11.

七、附录……………………………………………………………12

附录1:

ISD4002-120P录音程序………………………………12

附录2:

项目综合C语言程序…………………………………23

 

一、摘要

智能门禁系统以STC89C52单片机为控制核心,采用热释电传感器,利用压电陶瓷将温度变化转换为电压输出的变化,并将其结果送入到12864液晶显示屏显示,并控制ISD4002-120P语音芯片播报当前状态。

并利用DS1307时钟芯片

本项目主要以学习使用单片机控制热释电传感器和ISD4002系列语音芯片、DS1307时钟芯片以及12864点阵液晶模块来实现不同功能为目的。

通过热释电传感器以及光敏二极管来将温度、声音、光这些模拟量直接转换成数字信号送至STC89C52单片机进行处理。

语音芯片接收单片机处理后的数据后,进行处理转化为模拟量传给扬声器,读出数据。

系统设计框图如下:

系统设计框图

二、总体设计方案

2.1硬件连接方案

产品的主要特色是体现语音功能和红外感应,本意是制作智能门禁系统,来解决无人看守时,外人进入的问题,但由于红外感应需要单独电源供电,存在一定干扰的问题,感应灵敏度不够。

但是对于方案的总体进行并无太大影响,所以仍然使用该方案。

在硬件连接方面,我们没有焊成一个成品,而是用导线将各模块连接起来,主要是基于下面考虑,本次实训项目主要是促使同学们学习相关专业知识,而非设计某种产品,既然实现了既定目标,就不必连接在一起,避免浪费。

各个模块在拆开后还可以多次应用,便于学习。

语音模块采用了ISD4002-120P,录放时间长达120秒,足以满足我们的需要。

该芯片对我们学习电路的时序很有帮助。

2.2软件设计方案

由单片机将各部分电路的信号进行处理,并将处理好的数字信号传送给12864液晶显示芯片,驱动液晶显示屏的动态显示,ISD4002语音芯片则将数据处理并通过功放电路进行语音播报。

使用C52语言进行编程

三、硬件模块设计

3.1STC89C52单片机

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:

8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。

另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35Mhz,6T/12T可选。

单片机最小系统

 

3.2ISD4002-120P语音芯片

ISD4002系列工作电压3V,单片录放时间2分钟至四分钟,音质好,适用于移动电话及其他便携式电子产品中。

操作指令可通过串行通信接口(SPI或Microwire)送入。

能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。

采样频率可为4.0,5.3,6.4,8.0Hz,频率越低,录放时间越长,而音质有所下降,片内信息存于闪烁存贮器中,可在断电的情况下保存100年反复录音10万次。

ISD4002—120P设计电路图:

录音模块电路设计图:

3.3声光信号处理模块

3.4红外信号处理电路

红外信号处理电路采用红外热释电处理芯片BISS0001,它是一款高性能的传感信号处理集成电路。

静态电流小,配以热释电红外传感器和少量外围元器件即可构成被动式的热释电红外传感器。

广泛应用与安防、自控等领域。

其主要特点如下:

1、CMOS工艺

2、数模混合

3、具有独立的高输入阻抗运算放大器

4、内部的双向鉴幅器可有效抑制干扰

5、内设延迟时间定时器和封锁时间定时器

6、采用16脚DIP封装

红外信号处理电路图:

四、程序设计

4.1ISD4002-120P录音程序

见附录1

4.2项目综合C语言程序

见附录2

五、系统测试与结论

由于开始我们的经验相对缺乏,所以调试用了较多时间。

主要研究语音芯片的的使用。

调试时,软件部分问题不大,但由于硬件热释电部分的电源出现干扰的问题,导致热释电传感器的感应不太精确。

在查阅了大量资料后,经过仔细调试,最终克服了这个问题。

但可能是因为软件部分过多而导致“欢迎光临”只能出现“光临”两个字的问题。

不过经过最终的努力,所有的部分均能正常工作,我们的作品基本符合我们的预期。

六、参考文献

【1】《新概念51单片机C语言教程.入门、提高、开发》郭天祥著【2】《AVR单片机嵌入式系统原理与应用实践》马潮著【3】网友文章《玩转12864液晶》【4】《智能语音数字温度计技术报告》

七、附录

附录1:

ISD4002-120P录音程序

#include

sbitSS=P1^0;//片选

sbitSCLK=P1^1;//ISD4003时钟

sbitMOSI=P1^2;//数据输入

sbitMISO=P1^3;//数据输出

sbitLED=P1^7;//指示灯

sbitISD_INT=P3^2;//中断

sbitAN=P1^6;//执行

sbitSTOP=P1^5;//复位

sbitPR=P1^4;//PR=1录音?

PR=0放音

unsignedcharcount1=0,count2=0;

voiddelay(unsignedinttime)//延迟n微秒

{

while(time!

=0)

{

time--;

}

}

voiddelayms(unsignedinttime)//延迟n毫秒

{

TMOD=0x01;

for(time;time>0;time--)

{

TH0=0xfc;

TL0=0x18;

TR0=1;

while(TF0!

=1);

TF0=0;

TR0=0;

}

}

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

//ISD4002spi串行发送子程序,8位数据

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

voidspi_send(unsignedcharisdx)

{

unsignedcharisx_counter;

SS=0;//ss=0,打开spi通信端

SCLK=0;

for(isx_counter=0;isx_counter<8;isx_counter++)//先发低位再发高

//位,依次发送。

{

if((isdx&0x01)==1)

MOSI=1;

else

MOSI=0;

isdx=isdx>>1;

SCLK=1;

delay

(2);

SCLK=0;

delay

(2);

}

}

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

//发送stop指令

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

voidisd_stop(void)

{

delay(10);

spi_send(0x30);

SS=1;

delayms(50);

}

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

//发送上电指令,并延迟50ms

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

voidisd_pu(void)

{

delay(10);

SS=0;

spi_send(0x20);

SS=1;

delayms(50);

}

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

//发送掉电指令,并延迟50ms

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

voidisd_pd(void)

{

delay(10);

spi_send(0x10);

SS=1;

delayms(50);

}

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

//发送play指令

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

voidisd_play(void)

{

LED=0;

spi_send(0xf0);

SS=1;

}

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

//发送rec指令

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

voidisd_rec(void)

{

LED=0;

spi_send(0xb0);

SS=1;

}

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

//发送setplay指令

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

voidisd_setplay(unsignedcharadl,unsignedcharadh)

{

spi_send(adl);//发送放音起始地址低位

adh=adh|0xe0;

spi_send(adh);//发送放音起始地址高位

SS=1;

}

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

//发送setrec指令

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

voidisd_setrec(unsignedcharadl,unsignedcharadh)

{

spi_send(adl);//发送放音起始地址低位

adh=adh|0xa0;

spi_send(adh);//发送放音起始地址高位

SS=1;

}

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

//芯片溢出,LED闪烁提醒停止录音

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

voidisd_overflow(void)

{

while(AN==0)

{

LED=1;

delayms(300);

LED=0;

delayms(300);

}

}

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

//检查芯片是否溢出(读OVF,并返回OVF值)

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

unsignedcharchk_isdovf(void)

{

SS=0;

delay

(2);

SCLK=0;

delay

(2);

SCLK=1;

SCLK=0;

delay

(2);

if(MISO==1)

{

SCLK=0;

SS=1;//关闭spi通信端

isd_stop();//发送stop指令

return1;//OVF为1,返回1

}

else

{

SCLK=0;

SS=1;//关闭spi通信端

isd_stop();//发送stop指令

return0;//OVF为0,返回0

}

}

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

voidmain(void)

{

unsignedcharovflog;

while

(1)

{

P0=P1=P2=P3=0xff;//初始化

while(AN==1)//等待AN键按下

{

if(AN==0)//按键防抖动

{

delayms(20);

}

}

isd_pu();//AN键按下,ISD上电并延迟50ms

isd_pd();

isd_pu();

if(PR==1)//如果PR=1则转入录音部分

{

delayms(500);//延迟录音

isd_setrec(0x00,0x00);//发送0x0000h地址的setplay指令

do

{

isd_setrec(0x00+16*count1,0x00);

count1++;

isd_rec();//发送rec指令

delay(20);

while(AN==0)//等待录音完毕

{

if(ISD_INT==0)//如果芯片溢出,进行LED闪烁

//提示,

isd_overflow();//如果取消录音(松开AN键)

//则停止录音,芯片复位

}

if(ISD_INT==0)

break;

LED=1;//录音完毕,LED熄灭

isd_stop();//发送停止命令

while(AN==1)//如果AN再次按下,开始录制下一

//段语音

{

if(STOP==0)//如果按下STOP按键,则芯片复位

break;

if(AN==0)

delayms(500);

}

}while(AN==0);

}

else//如果PR==0则转入放音部分

{

while(AN==0);

isd_setplay(0x00,0x00);//发送setplay指令,从0x0000地

//址开始放音

do

{

isd_setplay(0x00+16*count2,0x00);

count2++;

isd_play();//发送放音指令

delay(20);

while(ISD_INT==1);//等待放音完毕的EOM中断信号

LED=1;

isd_stop();//放音完毕,发送stop指令

if(ovflog=chk_isdovf())//检查芯片是否溢出,如溢出则停止

//放音,芯片复位

break;

while(AN==1)//等待AN键再次按下

{

if(STOP==0)

delayms(20);

if(STOP==0)

break;

if(AN==0)

delayms(20);

}

LED=0;

}while(AN==0);//AN键再次按下,播放下一段语音

}

isd_stop();

isd_pd();

}

}

附录2:

项目综合C语言程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitlcd_en=P2^2;

sbitlcd_rw=P2^1;

sbitlcd_rs=P2^0;

sbitlcd_psb=P2^3;

sbitlcd_beiguang=P2^4;//液晶背光

sbitss=P3^0;

sbitsclk=P3^1;

sbitmosi=P3^2;

sbitmiso=P3^3;

sbitisd_int=P3^4;

sbitbeep=P3^5;//蜂鸣器

sbithongwai=P2^7;//热释电传感器

sbitguangmin=P2^6;//光敏电阻传感器

sbitsheng=P2^5;//声敏元件

ucharmiao1,eat,keya,keyf,aa,bb,cc,dd,ee,ff;

intmiao2;

ucharcodetable[]={"0123456789"};

uchardis1[]={"请输入密码"};

uchardis2[]={"身份确认!

"};

uchardis3[]={"密码错误!

"};

ucharcodedis4[]={"欢迎光临"};

ucharcodedis5[]={"欢迎使用振勇电子"};

ucharcodedis6[]={"已上锁"};

ucharcodedis7[]={"夜间上锁模式"};

ucharcodedis8[]={"白天上锁模式"};

ucharcodedis9[]={"请注意"};

ucharcodedis10[]={"初始化中%"};

ucharcodedis11[]={"初始化完成已上锁"};

ucharcodedis12[]={"时间"};

voiddelay_ms(uintz)

{

uinti,j;

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

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

}

voiddelay(uintz)

{

ucharx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddelayms(ucharx)

{

uchari,j;

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

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

}

voidspi_send(ucharisdx)//串行发送子程序

{

uchari;

ss=0;

sclk=0;

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

{

if((isdx&0x01)==1)

mosi=1;

else

mosi=0;

isdx=isdx>>1;

sclk=1;

delay

(2);

sclk=0;

delay

(2);

}

}

voidisd_setplay(ucharadl,ucharadh)//发送STEPLAY指令

{

spi_send(adl);

adh=adh|0xe0;

spi_send(adh);

ss=1;

}

voidisd_play()//发送PLAY指令

{

ss=0;

spi_send(0xf0);

ss=1;

}

voidwrite_com(ucharcom)

{

lcd_en=0;

lcd_rw=0;

lcd_rs=0;

P0=com;

delay_ms(3);

lcd_en=1;

delay_ms(3);

lcd_en=0;

}

voidwrite_dat(uchardat)

{

lcd_en=0;

lcd_rs=1;

lcd_rw=0;

P0=dat;

delay_ms(3);

lcd_en=1;

delay_ms(3);

lcd_en=0;

}

voidlcd_init()

{

lcd_psb=1;

write_com(0x30);

delay_ms(3);

write_com(0x0c);

delay_ms(3);

write_com(0x01);

delay_ms(3);

}

voidbaojing()

{

ucharj;

lcd_init();

write_com(0x93);

write_dat('b');

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

{

isd_setplay(0x40,0x00);

isd_play();

delayms(200);

while(isd_int==1);

delay_ms(500);

}

}

voidpanduan()

{

uchari,j,u;

if(aa==1&&bb==2&&cc==3&&dd==4&&ee==5&&ff==6)

{

lcd_init();

u=0;//计数器清零

write_com(0x92);

keya=0;

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

{

write_dat(dis2[i]);

}

isd_setplay(0x30,0x00);

isd_play();

delayms(200);

while(isd_int==1);

eat=2;//开锁状态

}

else

{

lcd_init();

write_com(0x92);

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

{

write_dat(dis3[i]);

}

isd_setplay(0x20,0

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

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1