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