基于51单片机的红外发射接收温度传感装置Word格式文档下载.docx
- 文档编号:14245211
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:25
- 大小:35.06KB
基于51单片机的红外发射接收温度传感装置Word格式文档下载.docx
《基于51单片机的红外发射接收温度传感装置Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的红外发射接收温度传感装置Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
本次大赛设计内容从主办方所给的题目出发,参赛者应了解单片机实际的应用系统,并自学红外信号编码,弄清结构和功能,结合单片机课程知识及其他相关课程知识,充分发挥自己的想象力和创造力,实现主办方题目要求并适当发挥,团队合作完成本次比赛。
3、具体要求:
1)确定应用系统功能参数
2)设计合理的电路原理图
3)Proteus仿真原理图
4)制作电路板并检测
5)设计程序
6)电路板调试运行
7)技术报告
单片机技术报告
一、项目简介
单片机被广泛应用于仪器仪表、工业自动控制、家用电器、医用设备、办公自动化设备、安全监控等领域,涵盖了人类生活的方方面面。
二、系统功能描述
这是一款基于STC89C52RC单片机的简易红外光数字通信装置。
它可以分为六个部分:
(1)红外功能,可以红外传送数据
(2)音阶功能,在发射板上按动七个音阶,在接收板上可以响出duoraimifasuonaixi七个音阶
(3)温度检测,在发射板上可以检测温度,在接收板上可以显示温度,每隔0.5秒更新一次温度。
三、设计思路
红外模块设计思路:
1:
对输入的数据进行编码。
2:
对编码进行脉冲调制。
3:
信号放大后,通过发射管发送38khz信号。
4:
接收信号,进行解码。
5:
让51对信号进行处理(显示,统计,分析)。
音阶模块设计思路:
1:
计算音阶响应相应延时
建立延时数组,按键控制取数组里的值。
用延时控制发出不同声音
温度模块设计:
温度测出数据,读取温度感应数据,计算成十进制数。
在数码管上显示十进制数
延时控制发射更新温度数据
四、程序部分
1.红外部分,红外部分分为,发射和接收部分,发射部分,通过定时器0产生38k载波,通过定时器1发送信号。
接收部分,通过外部中断(下降沿触发)接收信号,通过定时器计算两个下降沿之间的时间来确定收到的是0还是1。
2.音阶部分:
按键1~7,每次按键按下,发送控制数据,控制接收蜂鸣器根据不同频率发出不同声音。
3.温度部分:
发射端温度传感器,测出温度,通过计算得到温度具体数值,发送数据,接收端,根据接收的数据,显示在数码管上。
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharm,inform;
uinttemp;
//variableoftemperature//signoftheresultpositiveornegative
sbitDS=P0^3;
sbitIR_OUT=P1^1;
sbitkey1=P2^4;
sbitkey2=P2^5;
sbitkey3=P2^6;
sbitkey4=P2^7;
sbitkey5=P2^0;
sbitkey6=P2^1;
sbitkey7=P2^2;
sbitkey8=P2^3;
/*--------三个延迟函数的定义-------*/
voiddelay_ms(uintms)
{
uinti,j;
for(i=0;
i<
120;
i++)
{
for(j=0;
j<
ms;
j++);
}
}
voiddelay(uintcount)//delay
uinti;
while(count)
i=200;
while(i>
0)
i--;
count--;
/*——————————温度传感器函数定义——————————————————*/
voiddsreset(void)//sendresetandinitializationcommand
DS=0;
i=103;
0)i--;
DS=1;
i=4;
//------------------------------------------------------------
bittmpreadbit(void)//readabit
bitdat;
i++;
//i++fordelay
dat=DS;
i=8;
while(i>
return(dat);
//---------------------------------------------------------------------
uchartmpread(void)//readabytedate
uchari,j,dat;
dat=0;
for(i=1;
=8;
j=tmpreadbit();
dat=(j<
<
7)|(dat>
>
1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
return(dat);
//---------------------------------------------------------------------------
voidtmpwritebyte(uchardat)//writeabytetods18b20
ucharj;
bittestb;
for(j=1;
j++)
testb=dat&
0x01;
dat=dat>
1;
if(testb)//write1
i++;
else
//write0
voidtmpchange(void)//DS18B20beginchange
dsreset();
delay
(1);
tmpwritebyte(0xcc);
//addressalldriversonbus
tmpwritebyte(0x44);
//initiatesasingletemperatureconversion
uinttmp()//getthetemperature
floattt;
uchara,b;
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<
//twobytecomposeaintvariable
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
returntemp;
voidreadrom()//readtheserial
ucharsn1,sn2;
tmpwritebyte(0x33);
sn1=tmpread();
sn2=tmpread();
/*--------温度传感器函数定义-----------*/
//T113us产生一次中断用于产生38K载波
//T0方式116位用于定时
voidInit_Timer()
TMOD=0x21;
//T0mode1T1mode2
TH1=256-13;
//定时产生13us
//特殊
TL1=TH1;
ET1=1;
EA=1;
//发送引导码发送方:
9ms高电平4.5ms低电平
voidSend_Start_Bit()//TR1的值=发送的电平
//9ms1
TH0=(65536-9000)/256;
TL0=(65536-9000)%256;
TR0=1;
TR1=1;
while(!
TF0);
TR1=0;
TF0=0;
TR0=0;
IR_OUT=1;
//4.5ms0
TH0=(65536-4500)/256;
TL0=(65536-4500)%256;
//发送0
voidSend_Bit_0()
//0.565ms1
TH0=(65536-565)/256;
TL0=(65536-565)%256;
//0.565ms0
//发送1
voidSend_Bit_1()
//1.685ms0
TH0=(65536-1685)/256;
TL0=(65536-1685)%256;
voidSend_over()//发送一个结束码,因为最后一个位只有遇到下降沿才能读取(发射端的上升沿)
//0.500ms1//小于0.5ms接收端很难识别到
TH0=(65536-500)/256;
TL0=(65536-500)%256;
//0.500ms0
voidkeyscan()
if(key1==0)
delay_ms(5);
if(key1==0)
{
m=1;
while(!
key1);
}
if(key2==0)
if(key2==0)
m=2;
w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 红外 发射 接收 温度 传感 装置