教室00004Word格式文档下载.docx
《教室00004Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《教室00004Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
通过两个光电开关的配合检测出教室的人数,由人数自动识别状态;
通过DHT11模块检测温湿度;
将人数和温湿度用12864液晶显示屏显示出来
操作步骤
设计电路图并领取元件
对元件进行组装和焊接
编写程序
调试功能
封装成品
2.1人数检测模块
功能介绍
光电开关
原理:
利用被检测物对光束的遮挡或反射,由同步回路选通电路,从而检测物体的有无。
物体不限于金属,所有能反射光线的物体均可以被检测。
光电开关将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线的强弱或有无对目标物体进行探测。
安防系统中常见的光电开关烟雾报警器,工业中经常用它来计数机械臂的运动次数。
参数
1、输出电流:
交直流200mA
继电器触点输出电流为1A、3A
2、应答频率:
DC<
2.5ms、AC<
30ms
3、工作环境:
-20~+55℃
4、继电器输出:
12~24V、90~250V
5、标准检测物:
透明或不透明实体
E3F-DS30C4型光电开关,光电传感器原理
E3F-DS30C4型光电传感器是利用光的各种性质,检测物体的有无及表面状态的变化等的一种传感器,E3F-DS30C4光电开关主要由发光的投光部和接受光线的爱光部构成,如果投向的光线因检测物体不同而被遮掩或者反射,到有受光的量将会发生变化,受光部将测出这种变化,并转换为电气信号,进行输出,大多使用可视光(主要为红色,也用绿色,蓝色来判断颜色)和红外光.
2.1.2人数检测软件设计
流程图
思路说明
通过两个相邻的光电开关组成识别门,每当有人经过光电开关2的时候,触发下降沿,然后判别人的去向,即如果门二再次下降沿信号,则不会增加人数,如果门一下降沿信号,人数加一;
当门一首先下降沿时,如果门一接着下降沿,则不会变,如果门二下降沿信号,人数减一。
部分程序分析
if(g2==0)
{
Gf=1;
delay1(500);
if(g1==0)
if(Gf==1)
temp++;
Gf=0;
}
if(g2==0)
Gf=0;
使用了变量GK使得每次只检测一个人,避免一人经过使人数一直上升的情况,逐层判断,使得思路更加清晰。
2.2.1硬件电路设计
电路图
Led:
它的基本结构是一块电致发光的半导体材料芯片,用银胶或白胶固化到支架上,然后用银线或金线连接芯片和电路板,然后四周用环氧树脂密封,起到保护内部芯线的作用,最后安装外壳,所以LED灯的抗震性能好。
运用领域涉及到手机、台灯、家电等日常家电和机械生产方面。
2.2.2状态显示的软件设计
设计思路:
使用两个判断结构,以0,35为三个状态的分割点,自动检测状态.
voidmode()
{
kx=1;
hy=1;
sk=1;
if(temp==0)
kx=0;
else{
led=0;
if(temp<
=35)
hy=0;
else
sk=0;
}
2.3温湿度检测设计
2.3.1温湿度检测硬件设计
原理图
元件介绍:
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。
产品为4针单排引脚封装,连接方便。
详细参数
条件
Min
Typ
Max
单位
湿度
分辨率
1
%RH
8
Bit
重复性
±
精度
25℃
4
0-50℃
5
互换性
可完全互换
量程范围
0℃
30
90
20
50℃
80
响应时间
1/e(63%)25℃,1m/s空气
6
10
15
S
迟滞
长期稳定性
典型值
%RH/yr
温度
℃
2
50
1/e(63%)
2.3.2温湿度检测软件设计
一、DHT11数据格式(40bit)
数据格式:
8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据
+8bit校验
说明:
1)、其中温度湿度小数部分带扩展,目前读出数据为0;
2)、校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
二、时序编程微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右。
DHT11的单总线编程相对于DS18B20的单总线编程简单很多,本文分析的DHT11编程所需要的条件是一个精度在+_5%的50us延时函数。
视角
6点钟
驱动方式
1/64DUTY1/9BIAS
背光
LED
控制器
KS0108或兼容IC
数据总线
8位并口/6800方式
温度特性
工作温度:
-20C----+70C储藏温度:
-30C----+80C
点阵格式
128x64
点尺寸
0.39x0.55mm
点中心距
0.44x0.60mm
视域
62.0x44.0mm
有效显示区域
56.27x38.35mm
外形尺寸
78.0x70.0x12.5mmMax.
净重
65g
流程图:
voidlcd_init()
{delay1(100);
write_com(0x30);
write_com(0x02);
write_com(0x06);
write_com(0x0c);
write_com(0x01);
write_com(0x80);
delay1(5);
}
voidlcd_pos(ucharx,uchary)
ucharpos;
if(x==1)
{x=0x80;
elseif(x==2)
{x=0x90;
elseif(x==3)
{x=0x88;
else
{x=0x98;
write_com(y|pos);
3.测试结果
4.心得体会
一周的电子工艺实习就要结束,它让我觉得这是一门非常有意思的课程,它能够把让我门把自己所学的用到实践上去,还能够充分的调动我们的积极性,通过自己的努力获取劳动成果,在此期间,以一个小白的姿态去做一个项目,什么都不懂,什么都要去问,去查。
老师对我们要求也非常严格,讲课也非常详细,大大的减小了我们犯错误的几率。
一、实习内容回顾及收获:
这次实习内容十分丰富,从安全用电,焊接基本练习,造型设计,印制电路板,再到产品设计,通过这次实习不仅自己动手完成了有趣的产品,更过的是学到了很多东西。
首先巩固了电子学理论,增强了识别电子元器件的能力,通过对元器件的测量,也增强了对万用表的使用能力。
其次,培养了我们的动手能力,实践是检验真理的唯一标准,理论的东西只有通过实践环节的检验,才是真实的。
通过做这个教室监控系统项目,我们明白了其工作原理、学会了焊接技术。
还有此次实习还锻炼了我们解决问题的能力,在实习中我们遇到了各种各样的问题,通过此次实习我们懂得了面对一个问题,要不慌不忙,理清思路,寻找问题的根源,然后一步一步的解决问题。
二、问题及心得
实习中也遇到了一些问题:
1电路板上的焊点有些不符合标准,尤其是导线焊接的不好,容易脱落;
焊锡量要适中,过多的焊锡会造成焊锡的浪费,焊接时间的增加,不易察觉的短路。
过少的话会造成焊点强度降低,虚焊。
2当烙铁头氧化后会引起烙铁头不粘锡,严重的不能进行焊接。
3注意安全问题。
4在焊接芯片时最好使用托焊,因为芯片的焊点又小又密。
5组装时由于东西都很小,我们必须小心不要丢失元件。
6程序写出来之后无法实现功能,我们尝试改了好多次,依旧没办法,后来在其他同学和老师的帮助下一点一点的改进了电路连接和程序,从数码管到12864,虽然对他不了解,但是已经可以尝试着去使用了。
在整个的实习中我学习了很多的东西,使我眼界打开,感受颇深。
简单的焊接使我了解到人生学习的真谛,课程虽然结束了,但学习还没结束,我知道作为信息时代的大学生,作为国家重点培育的高科技人才,仅会操作鼠标是不够的,基本的动手能力是一切工作和创造的基础和必要条件。
三、结语
总之,这次实习给我带来了很大的收获,同时也给我带来了很大的快乐,再一次感谢学校给我们提供了一个学习锻炼的机会,和老师对我们的辛勤付出,这对我们以后的工作和学习都有很好的作用。
附录一
附录二
#include<
reg52.h>
#include<
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
uchartemp=0;
sbitsid=P3^6;
sbitsclk=P3^7;
sbitsk=P2^5;
sbithy=P2^6;
sbitkx=P2^7;
sbitled=P1^3;
sbitgd1=P1^7;
sbitgd2=P1^6;
typedefunsignedcharU8;
typedefsignedcharS8;
typedefunsignedintU16;
typedefsignedintS16;
typedefunsignedlongU32;
typedefsignedlongS32;
typedeffloatF32;
typedefdoubleF64;
#defineuintunsignedint
#defineData_0_time4
sbitDATA=P2^4;
U8U8FLAG,k;
U8U8count,U8temp;
U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8U8comdata;
U8outdata[5];
U8indata[5];
U8count,count_r=0;
ucharmun;
ucharrenshu1[]={"
"
};
ucharrenshu2[]={"
unsignedcharstr1[]={"
unsignedcharstr2[]={"
unsignedcharcodelcd[]={"
温湿度检测系统"
unsignedcharcodelcd1[]={"
湿度:
unsignedcharcodelcd2[]={"
温度:
unsignedcharcodelcd3[]={"
℃"
unsignedcharcodelcd4[]={"
%RH"
U16U16temp1,U16temp2;
voidDelay(U16j)
{
U8i;
for(;
j>
0;
j--)
{
for(i=0;
i<
27;
i++);
voidDelay_10us(void)
i--;
//DHT11
voidCOM(void)
for(i=0;
8;
i++)
U8FLAG=2;
while((!
DATA)&
&
U8FLAG++);
Delay_10us();
Delay_10us();
U8temp=0;
if(DATA)U8temp=1;
while((DATA)&
if(U8FLAG==1)break;
U8comdata<
<
=1;
U8comdata|=U8temp;
voidRH(void)
DATA=0;
Delay(180);
DATA=1;
Delay_10us();
if(!
DATA)
U8FLAG=2;
while((!
while((DATA)&
COM();
U8RH_data_H_temp=U8comdata;
U8RH_data_L_temp=U8comdata;
U8T_data_H_temp=U8comdata;
U8T_data_L_temp=U8comdata;
U8checkdata_temp=U8comdata;
//数据校验
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
if(U8temp==U8checkdata_temp)
U8RH_data_H=U8RH_data_H_temp;
U8RH_data_L=U8RH_data_L_temp;
U8T_data_H=U8T_data_H_temp;
U8T_data_L=U8T_data_L_temp;
U8checkdata=U8checkdata_temp;
str1[0]=(char)(0x30+U8RH_data_H/10);
str1[1]=(char)(0x30+U8RH_data_H%10);
str2[0]=(char)(0x30+U8T_data_H/10);
str2[1]=(char)(0x30+U8T_data_H%10);
voiddelay1(uintz)
ucharx,y;
for(x=z;
x>
x--)
for(y=110;
y>
y--);
voidsend(ucharbyte)
{uchari;
for(i=0;
i++)
sid=byte&
0x80;
sclk=0;
sclk=1;
byte<
voidwrite_date(uchardate)
{ucharstar_date,hdate,ldate;
star_date=0xfa;
hdate=date&
0xf0;
ldate=(date<
4)&
send(star_date);
delay1
(1);
send(hdate);
send(ldate);
voidwrite_com(ucharcom)
star_date=0xf8;
hdate=com&
ldate=(com<
voidlcd_dis_code(uintcmd_addr,ucharnum,uchardis[])
uinti;
write_com(cmd_addr);
num;
write_date(dis[i]);
voidgk()
uchara,b;
while(gd1==0)
{
delay1(400);
if(gd2==0)
{
delay1(200);
temp++;
renshu1[0]=(char)(0x30+temp/10);
renshu1[1]=(char)(0x30+temp%10);
write_com(0x95);
for(a=0;
a<
2;
a++)
{
write_date(renshu1[a]);
}
while(gd2==0)
if(gd1==0)
delay1(200);
temp--;
renshu1[1]=(char)(0x30+temp%10);
write_com(0x95);
for(b=0;
b<
b++)
write_date(renshu1[b]);
}
voidmain()
uchark,j,b,a,i;
uchark1,i1;
lcd_init();
while
(1)
gk();
mode();
lcd_dis_code(0x80,16,lcd);
lcd_dis_code(0x88,9,lcd1);
lcd_dis_code(0x98,9,lcd2);
lcd_dis_code(0x9e,5,lcd3);
lcd_dis_code(0x8e,3,lcd4);
RH();
write_com(0x8b);
for(k=0;
k<
k++)
write_date(str1[k]);
write_com(0x9b);
for(j=0;
j<
j++)
write_date(str2[j]);
Delay(2500);
}