基于-51单片机的红外发射接收温度传感装置
基于51单片机的红外遥控设计-毕业设计论文
基于51单片机的红外遥控设计摘要很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?本文将介绍其原理和设计方法。
红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
常用的红外遥控系统一般分发射和接收两个部分。
红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的,在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。
也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。
接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。
“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。
一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。
这种输出形式一般用于与单片机或微机接口。
除以上输出形式外,还有“锁存”和“暂存”两种形式。
所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。
关键词:80c51单片机、红外发光二极管、晶振目录第一章1、引言 (3)2、设计要求与指标 (3)3、红外遥感发射系统设计 (4)4、红外发射电路设计 (4)5、调试结果及分析 (9)6、结论 (10)第二章1、引言 (10)2、设计要求与指标 (11)3、红外遥控系统设计 (11)4、系统功能实现方法 (15)5、红外接收电路 (16)6、软件设计 (17)7、调试结果及分析 (18)8、结论 (19)参考文献附录绪论人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。
比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。
基于51单片机的红外接收发送器
机电信息工程学院单片机系统课程设计报告系:电子工程系专业:通信工程班级:051班设计题目:红外收发器学生姓名:王建茶李晓艳指导教师:董玉华李厚杰李婷杨亚宁完成日期:2008年3月21日目录一、设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)二、设计方案 (1)三、系统硬件设计 (2)3.1 红外发射模块设计 (2)(一)单片机的最小系统 (2)(二)键盘电路 (4)(三)红外线发射编码 (4)3.2 红外接收模块设计 (4)(一)红外接收器设计 (4)(二)显示电路的设计 (5)(三)键盘接口的设计 (5)四、系统软件设计 (5)五、调试及性能分析 (8)5.1调试步骤 (8)5.2性能分析 (8)六、心得体会 (9)参考文献 (10)附录 (10)1程序清单 (10)2硬件原理图 (17)一、设计任务和性能指标1.1设计任务红外遥控技术是一种利用红外线进行点对点通信的技术,其相应的软件和硬件技术都已比较成熟。
它是把红外线作为载体的遥控方式。
在现代电子工程应用中,红外线常常被用做近距离视线范围内的通讯载波,最典型的应用就是家电遥控器。
使用红外线做信号载波的优点很多:成本低、传播范围和方向可以控制、不产生电磁辐射干扰,也不收干扰等等。
因此被广泛地应用在各种技术领域中。
红外线遥控具有结构简单,制作方便,成本低廉,抗干扰能力强,工作可靠性高等一系列优点,特别是室内遥控的优先遥控方式。
同时,由于采用红外线遥控器件时,工作电压低,功耗小,外围电路简单,因此它在日常工作生活中的应用越来越广泛。
1.2性能指标1.基本要求(1)能够实现利用红外线实现无线数据的收发;(2)能够将发送的数据或接收的数据进行显示,或根据接收的命令执行相应的功能。
2. 选做(1)所发送的数据利用PC机进行控制;(2)能够实现的数据通信采用一对多的主从模式;(3)能够实现远程的参数数据传送,如实现远程抄表、温度、湿度等。
基于单片机的红外发射和接受装置的设计
目录一、设计任务与设计要求 (3)设计任务 (3)利用单片机、红外线发射管和一体化接收头以及键盘接口和显示接口电路实现数据的收发。
(3)设计要求 (3)二、设计的目的意义和主要功能 (4)设计的目的和意义 (4)主要功能 (4)三、设计方案 (4)总体方案 (4)工作原理 (5)二进制的编码 (5)二进制的调制 (5)二进制的解调 (6)二进制的解码 (6)基于字节传输的红外收发数据格式 (7)四、系统硬件设计 (7)红外发射硬件设计 (7)AT89S52单片机的最小系统 (8)振荡电路 (9)复位电路 (9)键盘接口电路 (10)红外发射器件 (10)红外发射二极管(SE304) (10)图11.红外发射二极管电路 (10)红外接收硬件设计 (10)红外接收头 (11)液晶1602显示部分 (11)1602字符型液晶是一种专门用来显示字母、数字、符号等的点阵型液晶模块,能分两行显示,它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,使整个发送和接受过程更直观。
(11)如图13所示。
(11)五、系统软件设计 (11)发射模块 (11)键盘管理: (12)编码管理: (12)接收模块 (13)调试 (14)硬件调试 (14)软件调试 (14)六、心得体会 (15)附图.1 发射接收模块原理图 (16)PCB版图 (17) (17)附图.2 发射接收模块仿真电路图 (18) (18)一、设计任务与设计要求设计任务利用单片机、红外线发射管和一体化接收头以及键盘接口和显示接口电路实现数据的收发。
设计要求1. 应用STC89C52单片机设计简单红外收发器;2. 选用红外发射、红外接收器,红外发射;二、设计的目的意义和主要功能设计的目的和意义训练学生综合运用已学课程的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。
简单红外收发器是在红外遥控的基础上,利用红外线进行点对点的数据通信装置。
单片机基于51单片机的温度传感器设计
未来展望
技术升级
智能化发展
应用拓展
安全性考虑
随着技术的进步,未来可以 采用更高精度的温度传感器 ,提高系统的监测和控制精 度。同时,可以采用更先进 的单片机,提高数据处理速 度和控制效果。
未来可以增加更多的人工智 能算法,如神经网络、模糊 控制等,以实现更智能的温 度调控。此外,可以通过增 加传感器种类和数量,实现 对环境因素的全面监测与调 控。
03
02
传感器接口
将DS18B20温度传感器与单片机相 连,实现温度信号的采集。
通讯接口
通过UART串口通讯,实现单片机与 上位机之间的数据传输。
04
软件设计
温度采集
通过DS18B20温度传感器采集 温度信号,并转换为数字信号 。
数据显示
将处理后的温度数据通过 LCD1602液晶显示屏实时显示 出来。
温度传感器选择
选用常用的DS18B20温度传感器, 具有测量精度高、抗干扰能力强等优 点。
显示模块
选用LCD1602液晶显示屏,用于实 时显示温度值。
通讯接口
采用UART串口通讯,实现单片机与 上位机之间的数据传输。
硬件设计
01
电源电路
为单片机和传感器提供稳定的电源 。
显示接口
将LCD1602液晶显示屏与单片机相 连,实现温度的实时显示。
它能够检测环境中的温度变化,并将 其转换为电信号或其他可测量的物理 量,以便进一步处理和控制。
温度传感器的工作原理
温度传感器通常由敏感元件和转换电路组成。敏感元件负责 感知温度变化,而转换电路则将温度变化转换为电信号。
常见的温度传感器工作原理有热电效应、热电阻、热敏电阻 等。
温度传感器的分类
51单片机-毕业设计基于单片机设计的红外线遥控器
ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire学生毕业设计(论文)报告系别:专业:班号:学生姓名:学生学号:设计(论文)题目:基于单片机设计的红外线遥控器指导教师:设计地点:起迄日期:ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire常州信息职业技术学院电子与电气工程学院毕业设计论文毕业设计(论文)任务书专业电子信息工程班级电子085 姓名傅浩一、课题名称:基于单片机设计的红外线遥控器二、主要技术指标:1.遥控距离:0~10m2.额定工作电压:直流3V(普通5号干电池2节);红外光平均辐照度≥40μW/cm2;指向性(辐照度为20μW/cm2)≥30度3.欠压条件下(直流2.4v):红外光平均辐照度≥20μW/cm2,指向性(辐照度为10μW/cm2)≥30度三、工作内容和要求:1.以AT89C2051单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外光的优点2.遥控发射器通过对红外光发射频率的控制来区别不同的操作3.遥控接收器通过对红外光接收频率的识别,判断出控制操作,来完成整个红外遥控发射、接收过程四、主要参考文献:[1] 梅丽凤,王艳秋,张军等. 单片机原理及接口技术,北京:清华大学出版社,2004年.[2] 戴峻峰,付丽辉. 多功能红外线遥控器的设计,传感器世界.2002,8(12):16~18.[3] 李光飞,楼然苗,胡佳文等. 单片机课程设计实例指导,北京:北京航空航天出版社,2004年.[4] 苏长赞. 红外线与超声波遥控,北京:人民邮电出版社.1995年.学生(签名)2010 年 5 月7 日指导教师(签名)2010 年5 月10 日教研室主任(签名)2010 年5 月10 日系主任(签名)2010 年5 月12 日ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire毕业设计(论文)开题报告设计(论文)题目基于单片机设计的红外线遥控器一、选题的背景和意义:随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。
51单片机基于红外线的发射与接收控制机顶盒和电视机一体化遥控方案
/****************************************************************************** ******************************************************************************* 51单片机基于红外线的发射与接收控制机顶盒和电视机一体化遥控方案实验平台:51单片机开发板实验目的:通过机顶盒遥控器控制与单片机连接的继电器控制机顶盒的电源切断同时单片机的红外发射管控制电视机关闭。
实验连线:红外线一体接收管IR接P3^2;继电器0,1,2分别接P2^7;P2^6,P2^5,采用低电平触发,红外发射管P1^5;实验要点:注意接收管采用的是NEC协议,而发射使用的是TP9012的协议,且载波不同。
NEC协议的载波占空比为1/2,TP9012的协议载波占空比为1/3,可使用逻辑分析仪对载波进行调节。
******************************************************************************* ******************************************************************************/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned intsbit IR=P3^2; //红外接口标志bit jdq;sbit jdq0=P2^7;sbit jdq1=P2^6;sbit jdq2=P2^5;sbit out=P1^5;//红外线发射端口/*------------------------------------------------全局变量声明------------------------------------------------*/unsigned char irtime;//红外用全局变量bit irpro_ok,irok;unsigned char IRcord[4];unsigned char irdata[33];//************************************************//// 红外线发射程序部分////************************************************///*------------------------------------------------延时函数1ms------------------------------------------------*/void delay(uint xms){uint i,j;for(i=xms;i>0;i--) //i=xms即延时约xms毫秒for(j=120;j>0;j--);}void delay9us(void) //误差0us{unsigned char a;for(a=1;a>0;a--);}void delay560us(void) //560us延迟函数{unsigned char a,b,c;for(c=1;c>0;c--)for(b=2;b>0;b--)for(a=130;a>0;a--);}void delay4500us(void) //4.5ms延迟函数{unsigned char a,b,c;for(c=3;c>0;c--)for(b=136;b>0;b--)for(a=4;a>0;a--);}void khz_2(uint num) //38KHZ脉冲占空比1:3{for(;num>0;num--){out=1;delay9us();out=0;delay9us();}}void send0_a(void) //发送0{khz_2(21) ;out=1;delay560us();}void send1_a(void) //发送1{khz_2(21) ;out=1;delay560us();delay560us();delay560us();}void leadcode_a(void) //发送引导码{khz_2(150) ;out=1;delay4500us();}void overcode(void){out=0;delay(46);leadcode_a();khz_2(12) ;out=1;delay560us();delay560us();delay560us();khz_2(12) ;out=0;}const uchar TabHL1[4]={0x70,0x70,0x30,0xcf};//电视机客户码+用户码+用户反码void Send8Bit(uchar d) //发送一字节数据{if(d&0x80){ send1_a();}else{ send0_a();}if(d&0x40){ send1_a();}else{ send0_a();}if(d&0x20){ send1_a();}else{ send0_a();}if(d&0x10){ send1_a();}else{ send0_a();}if(d&0x08){ send1_a();}else{ send0_a();}if(d&0x04){ send1_a();}else{ send0_a();}if(d&0x02){ send1_a();}else{ send0_a();}if(d&0x01){ send1_a();}else{ send0_a();}}void usercode() //发送用户码{Send8Bit(TabHL1[0]);Send8Bit(TabHL1[1]);}void fashe(){leadcode_a();usercode();Send8Bit(TabHL1[2]);Send8Bit(TabHL1[3]);khz_2(12) ;out=0;}//************************************************// // 红外线接收程序部分////************************************************///*------------------------------------------------函数声明------------------------------------------------*/void Ir_work(void);void Ircordpro(void);/*------------------------------------------------定时器0中断处理------------------------------------------------*/void tim0_isr (void) interrupt 1 using 1{irtime++; //用于计数2个下降沿之间的时间}/*------------------------------------------------外部中断0中断处理------------------------------------------------*/void EX0_ISR (void) interrupt 0 //外部中断0服务函数{static unsigned char i; //接收红外信号处理static bit startflag; //是否开始处理标志位if(startflag){if(irtime<63&&irtime>=33)//引导码TC9012的头码,9ms+4.5ms 63 33i=0;irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;startflag=1;}}/*------------------------------------------------定时器0初始化------------------------------------------------*/void TIM0init(void)//定时器0初始化{TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值TH0=0x00; //重载值TL0=0x00; //初始化值ET0=1; //开中断TR0=1;}/*------------------------------------------------外部中断0初始化------------------------------------------------*/void EX0init(void){IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)EX0 = 1; //使能外部中断EA = 1; //开总中断}/*------------------------------------------------键值处理------------------------------------------------*/void Ir_work(void)//红外键值散转程序{switch(IRcord[2])//判断第三个数码值{case0x45:jdq=~jdq;if(jdq){delay(100);jdq0=0;jdq1=0;jdq2=0;fashe();delay(100);}break;//1 显示相应的按键值default:break;}irpro_ok=0;//处理完成标志}/*------------------------------------------------红外码值处理------------------------------------------------*/void Ircordpro(void)//红外码值处理函数{unsigned char i, j, k;unsigned char cord,value;k=1;for(i=0;i<4;i++) //处理4个字节{for(j=1;j<=8;j++) //处理1个字节8位{cord=irdata[k];if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1}/*------------------------------------------------主函数------------------------------------------------*/void main(void){EX0init(); //初始化外部中断TIM0init();//初始化定时器jdq=0;while(1)//主循环{//if(work==1)//{delay(5);if(work==1){if(!jdq){jdq0=1;jdq1=1;jdq2=1;}if(irok) //如果接收好了进行红外处理{Ircordpro();irok=0;}if(irpro_ok) //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等{Ir_work();}}}// else//{// jdq0=1;// jdq1=1;// jdq2=1;// ET0=0;// PCON=0x02;//}//}}。
基于51单片机的红外通信设计报告
基于51单片机的红外通信设计报告研究方案:基于51单片机的红外通信设计报告摘要:本研究旨在通过对基于51单片机的红外通信的研究与实践,对红外通信协议进行优化和改进,提高通信的可靠性和稳定性。
通过设计红外发射器和接收器,并利用51单片机进行编程控制,实现了红外信号的发送与接收。
在实验中,采集了一系列数据,通过对这些数据的整理和分析,发现了现有研究成果的不足之处,并提出了一种新的观点和方法,为解决实际问题提供了有价值的参考。
1. 引言红外通信是一种常见的无线通信方式,具有传输速度快、安全可靠等优点,在家庭电器控制、遥控玩具、无线数据传输等领域广泛应用。
本研究基于51单片机进行红外通信协议的设计与实践,旨在优化和改进红外通信的性能。
2. 研究设计2.1 硬件设计2.1.1 红外发射器设计通过使用红外发光二极管作为发射器,并连接到51单片机的IO口,控制IO口的高低电平来实现对发射器的开关控制。
2.1.2 红外接收器设计通过使用红外接收头作为接收器,并将其连接到51单片机的IO口,通过检测接收器的信号电平变化来判断接收到的红外信号。
2.2 软件设计2.2.1 红外信号解析与发送在51单片机上编写红外信号解析与发送的程序,通过对输入信号的解析,将需要发送的红外信号编码成特定协议的数据帧,再通过IO口的控制将数据帧发送出去。
2.2.2 红外信号接收与解析在51单片机上编写红外信号接收与解析的程序,通过IO口的状态变化检测,获取红外接收器接收到的信号,并对接收到的信号进行解析,还原成原始数据。
3. 实验与调查情况在本研究中,我们通过实验和调查采集了一系列的数据来评估所设计的红外通信系统的性能。
3.1 实验设置我们设置了一个包含发射器和接收器的实验平台。
通过按下遥控器上的按键,触发发射器发送特定红外信号,在接收器上探测到红外信号,并通过51单片机进行信号解析。
3.2 数据采集与分析通过对实验中采集到的数据进行整理和分析,我们可以得到以下结论:(1)在传输距离较近的情况下,信号的可靠性和稳定性良好。
基于51单片机红外测温的设计
基于51单⽚机红外测温的设计前⾔体温是⼈体⽣命活动的基本特征,也是观察⼈体机能是否正常的重要标志之⼀。
⽬前,⼈们使⽤最⼴泛的⽔银体温计是根据⽔银等随温度升降的热胀冷缩的性质,通过读取刻度值来判断温度值,它有诸多的缺陷:传统温度计在使⽤时要和被测量者接触,⽽且往往要等待较长的时间,以让其充分受热,当测量结束后还要将⽔银重新甩⼊⽔银泡中,由于⽔银泡是由很薄的玻璃制成的,极易破碎,⽽且其中的⽔银蒸汽对⼈体有极强的毒害作⽤,因此普通的温度计有⾮常严重的安全隐患。
红外测温为测量⼈体温度提供了快速,⾮接触测量⼿段,可⼴泛,有效的⽤于密集⼈群的体温测量。
⽽且可以以数字的⽅式显⽰出测量结果,使测量过程变得直观,⽽且耗时短,往往在⼏秒钟之内就能测得结果,⽽且寿命长,是较为理想的测温仪器。
红外测温的设计,其内容包含了电⼦技术,检测技术,单⽚机等多⽅⾯的内容,红外测温技术是⼀门很实⽤和前沿的技术,做此课题,有利于理论联系实际,更好的掌握这⼀⽅⾯的知识体系,是对学习内容的升华,特别是对单⽚机控制技术知识的深⼊理解,对于⾃⾝综合素质与⼯程能⼒的培养也有重要意义。
⽬录⼀.概述 (1)1.红外测温概况 (1)1.1红外测温的基础理论 (1)1.2红外测温的特点 (1)1.3设计的⽬的和意义 (2)⼆.设计的整体思路和框架 (2)2.1总体设计 (2)2.2系统总体结构框图 (3)三.AT89S52单⽚机简介 (3)四.红外传感器简介 (4)五.显⽰模块简介 (5)六.软硬件调试 (6)6.1 系统硬件调试 (6)6.2 系统软件调试 (6)七.总结 (7)⼋.参考⽂献 (8)⼀.概述1.红外测温概况1.1红外测温的基础理论红外线是电磁波谱的⼀个部分,这⼀波段位于可见光和微波之间,根据普朗克辐射定理,凡是绝对温度⼤于零度的物体都能辐射电磁能,物体的辐射强度与温度表⾯的辐射能⼒有关,辐射的光谱分布也与物体温度密切相关。
在电磁波谱中,我们把⼈眼可直接感知的0.4~0.75微⽶破段称为可见光波段,⽽把波长从0.75⾄1000微⽶的电磁波称为红外波段,红外波段的短波段与可见光红光相邻,长波端与微波相接。
单片机基于51单片机的温度传感器设计共52页PPT资料
引脚图
引脚功能说明
Vcc:电源电压
GND:地
P0口:P0口是一组8 位漏极开路型双向I/O口, 即地址/数据总线复位口。 作为输出口用时,每位 能吸收电流的方式驱动8 个逻辑门电路,对端口
ADC0809应用说明
(1) ADC0809内部带有输出锁存器,可以与51单片 机直接相连。
(2) 初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4) 在ST端给出一个至少有100ns宽的正脉冲信号。 (5) 是否转换完毕,我们根据EOC信号来判断。 (6) 当EOC变为高电平时,这时给OE为高电平,转
换的数据就输出给单片机了。
ADC0809电路连接
电压输入选择IN0通道 转换数据从OUT1~OUT7口输 出至单片机的P1口 START与ALE一起接P3.0 OE接P3.1 CLOCK接P3.3 A、B、C三条地址线接单片 机的P3.4 P3.5 P3.6
ADC0809模块
开始
初始化
利用AD590集成温度传感器及其接口电路完 成温度的测量并转换成模拟电压信号。经由模 数转换器ADC0809转换成单片机能够处理的 数字信号,然后送到单片机中进行处理变换, 最后将温度值显示在LED显示器上。
硬件原理图
温度显示 超量程报警 按键控制 电源及复位电路
AT89C51
ADC0809 模数转换
基于AD590温度显示器设计
小组成员 22019311 22019312 22019313
刘森林 俱子研 孙业飞
设计要求
自动显示当前温度。 设置温度上下限报警功能。 温度上下限调整可通过串行通信接口实现。 当前温度可通过串行通信接口送给计算机。 温度超限报警。
基于51单片机红外发射程序
基于51单片机红外发射程序#include "reg52.h"sbit ir=P2^0;//红外发射管控制脚,使用24M晶振sbit led = P2^1;sbit ka=P1^0;sbit kb=P1^1;sbit kc=P1^2;sbit kd=P1^3;unsigned int count, set_count; //中断计数,设定中断次数bit irflag,keyflag; //红外发送标志位,按键标志位unsigned char irsys[]={0x00,0xff};//16位用户码unsigned char irdata,ircode; //发送的红外数据//---------------------------------------------------------------------------void delay(unsigned int a)//延时约1ms,晶振24M ,此处延时不需很精确{unsigned char i;while(--a!=0)for(i=300;i>0;i--); //若是12M晶振i=125}//---------------------------------------------------------------------------void keyscan() // 按键扫描{if(ka==0){ delay(5);while(!ka);keyflag=1;irdata=0x0a;} //a键按下,则发射数据0x0aif(kb==0){ delay(5);while(!kb);keyflag=1;irdata=0x0b;} //a键按下,则发射数据0x0aif(kc==0){ delay(5);while(!kc);keyflag=1;irdata=0x0c;} //a键按下,则发射数据0x0aif(kd==0){ delay(5);while(!kd);keyflag=1;irdata=0x0d;} //a键按下,则发射数据0x0a}//---------------------------------------------------------------------------void ir_sendbyte() //红外发送一个字节数据{unsigned char i;for(i=0;i<8;i++) //发送8位数据{set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值)irflag=1; //启动红外发射二极管发射count=0; //中断计数先清0TR0=1; //开启定时器0while(count<="">TR0=0; //关闭定时器0if(ircode&0x01) set_count=130;//130; //判断红外编码最低位,若为1则1.69ms的低电平(//后为12M晶振下的数值)else set_count=43;//35; //为0则0.565ms的低电平(//后为12M 晶振下的数值) irflag=0; //低电平则不发射count=0; //中断计数清0TR0=1; //开启定时器0while(count<="">TR0=0; //关闭定时器0ircode=ircode>>1; //将数据右移,即从低位到高位发送}}//---------------------------------------------------------------------------void ir_send() //发送红外数据{set_count=692;//672; //发送编码中的引导码(9ms高电平+4.5ms低电平) (//后为12M晶振下的数值) tc9012irflag=1; //启动红外发射二极管发射count=0; //中断计数清0TR0=1;while(count<set_count);< p="">TR0=0;set_count=346;//336; //发送编码中的4.5ms低电平(//后为12M晶振下的数值)irflag=0; //低电平则不发射count=0;TR0=1;while(count<="">TR0=0;ircode=irsys[0]; //发送16位用户码的前1-8位ir_sendbyte();ircode=irsys[1]; //发送16位用户码的前9-16位ir_sendbyte();ircode=irdata; //发送8位数据码ir_sendbyte();ircode=~irdata; //发送8位数据反码ir_sendbyte();set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值)irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;ir=1;delay(23); //延时23ms(编码中的23ms低电平)set_count=692;//670; //发送编码中的引导码(9ms高电平+4.5ms低电平) (//后为12M晶振下的数值)irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;set_count=346;//336; //发送编码中的4.5ms低电平(//后为12M晶振下的数值)irflag=0;count=0;TR0=1;while(count<set_count);< p="">TR0=0;set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值) irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;ir=1; //发射完了关闭红外发射二极管}//---------------------------------------------------------------------------void timer0_init() //定时器初始化{EA=1;TMOD=0x02; //定时0 8位自动重装模式ET0=1;TH0=0xe6;//0xf3; //定时13us,38K红外矩形波,晶振24M (//后为12M晶振下的数值) TL0=0xe6;}//---------------------------------------------------------------------------void main(){timer0_init(); //定时0初始化count=0; //中断计数先清0irflag=0; //红外发射标志先置0while(1){keyscan(); //键值扫描if(keyflag) //若有按键按下{led = 0;delay(10);ir_send(); //发送红外编码delay(500);keyflag=0; //按键标志清零delay(100);}else{led = 1;}}}//---------------------------------------------------------------------------void timer0() interrupt 1 //定时器0中断{count++;if(irflag==1) ir=~ir; //有发射标志,则发射38khz的矩形波else ir=1; //否则不发射,即相当于发射编码中的低电平}</set_count);<></set_count);<></set_count);<></set_count);<></set_count);<>。
单片机基于51单片机的温度传感器设计ppt课件
引脚介绍
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3 口输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。 对P3口写入“1”时,他们被内部上拉电阻拉高并可作为输 入口。此时,被外部拉低的P3口将用上拉电阻输出电流。
RST:复位输入。当振荡器工作时,RST引脚出现两个机器 周期以上高电平将使单片机复位。
温度传感器AD590
1脚接VCC 2脚接电流输出端 3脚一般不用
AD590温度与电流关系
AD590模块
电阻选用9.6K 滑动变阻器 选用1K 通过微调使 得总电阻精确 到10K
AD590模块
选用运放741做电压跟随器,提高输入阻抗。 仿真时,用滑动变阻器改变电压,模拟实际中的温度变化。
放大电路
XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2 :振荡器反相放大器的输出端。
数码管显示模块
开始
初始化
P2.0=1
读P0口
P2.1=1
读P0口
P2.2=1
读P0口 结束
P2.3=1 读P0口
数码管显示流程图
数码管动态显示代码部分
/*****************************************
优点: 便于迅速进行大范围的调节
缺点: 增大调节到某一精确值的难度
温度超限报警
2024/2/12
具体思路
1 用LED灯和蜂鸣器共同实现报警功能 2 用软件程序实现单片机输出控制信号 3 搭建外围电路,实现信号对报警器的控制
硬件连接图
2024/2/12
程序代码
2024/2/12
if(temp>highlimt||temp<lowlimt)
基于51单片机的DS18B20温度传感器的应用毕业设计(论文) 精品
毕业设计(论文)题目:基于51单片机的DS18B20温度传感器的应用题目类型:工程设计软件开发桂林电子科技大学毕业设计(论文)报告用纸 1摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。
在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。
温控系统通过传感器检测温度将温度数据输入到处理器处理,可以在数码管或LCD等显示出来。
然后由控制器可以控制加热或者制冷,从而达到控温的目的。
本毕业设计就是利用STC89C52单片机和DS18B20温度传感器对目标温度进行检测,使用了单位数码管对检测到温度的显示,通过串口和上位机进行通信,利用VB软件显示温度数据,从而对各空间温度进行远程实时监控,使用LED灯闪烁进行模拟加热和制冷。
本文对各部分的硬件原理图进行了分析,还对各功能程序进行概述。
通过51单片机控制DS18B20检测温度,具有硬件电路简单,编程容易,测温准确,稳定等优点。
而且可以多点检测(本毕设只是单点测温),几个传感器连接也很简单。
关键词:单片机;温控;传感器AbstractTemperature measurement and control of human daily life, industrial production, weather forecast, material storage and so on all play a very important role. On many occasions, timely and accurate to obtain the temperature of the target is very important, in recent years, the temperature measurement and control field is developing rapidly, and with the development of digital technology, the corresponding temperature measurement and control chip mounted on the stage of history, can be widely used in industry, agriculture and so on various areas. Temperature control system through the temperature sensor to detect temperature data input to processing, can be in the digital tube or LED display, etc. And then by the controller to control the heating or cooling, so as to achieve the purpose of temperature control.This graduation design is the use of STC89C52 MCU and DS18B20 temperature sensor to test the room temperature, for testing temperature using digital tube display, through a serial port and PC communication, using VB software display temperature data, thus to remote real-time monitoring of the room temperature, use LED lights to simulate the heating and cooling. By 51 single chip microcomputer control temperature DS18B20 detection, it has a simple hardware circuit, programming easily, temperature measurement accuracy, stability, etc. And can be more testing (this project is only a single point temperature measurement), several sensor connection is also very simple.Keywords: MCU;temperature control;sensor目录引言 (1)1 绪论 (2)1.1 单片微机的发展 (2)1.2 温度检测的意义及发展形势 (2)1.3温控系统设计的核心 (2)2 单片机的简述 (3)2.1单片机的特点及引脚介绍 (3)2.2单片机的电平特性 (5)2.3C51复位电路 (6)2.4时钟电路 (6)3 温控系统的硬件设计 (7)3.1 温度检测模块 (7)3.1.1 温度传感器的概述 (7)3.1.2DS18B20的工作原理及工作时序图 (9)3.2 显示模块 (12)3.3 温超报警模块 (14)3.4 串口通信模块 (15)4 软件设计 (17)4.1 系统整体设计 (17)4.2 温度获取并转换 (19)4.3 温度控制 (20)5 单片机与上位机通信 (21)总结 (23)谢辞 (24)参考文献 (25)附录1电路原理图 (26)附录2 完整C程序代码 (28)附录3 模块调试代码 (34)桂林电子科技大学毕业设计(论文)报告用纸第1页共34 页引言上世纪90年代以来,单片机就进入了一个高速发展的阶段,大部分半导体厂商都注重新型单片机的研制、生产和推广。
基于51单片机的红外遥控器设计
基于51单片机的红外遥控器设计近年来,随着智能家居的兴起,红外遥控器在我们的生活中扮演着越来越重要的角色。
本文将基于51单片机,设计一个简单的红外遥控器。
首先,我们需要了解红外遥控器的工作原理。
红外遥控器使用红外线来传输指令。
当用户按下遥控器上的按键时,红外发射器发射一个特定的红外信号。
接收器接收到这个信号后,将其转换成电信号,并将其发送到电子设备中,实现对设备的控制。
接下来,我们需要选择合适的红外发射器和接收器。
常见的红外发射器有红外LED,常见的红外接收器有红外接收头。
在选择红外发射器和接收器时,要根据其工作频率、传输距离、灵敏度等因素进行选择。
在本设计中,我们选择了工作频率为38kHz的红外发射器和接收器。
接下来,我们需要设计电路,并进行程序开发。
首先,我们需要连接红外发射器和接收器到51单片机上。
红外发射器的一个引脚连接到51单片机的I/O口,另一个引脚连接到正极电源,第三个引脚连接到电源的接地端。
红外接收器的输出引脚连接到51单片机的I/O口,电源和接地端分别连接到正负电源。
接下来,我们需要编写程序。
首先,我们需要设置51单片机的I/O 口为输入或输出。
然后,我们需要编写程序来发送红外信号。
我们可以使用PWM技术来模拟红外信号的脉冲。
当用户按下遥控器上的按键时,我们可以发送一个特定的脉冲序列,来控制电子设备。
同时,我们还需要编写程序来接收红外信号。
当红外接收器接收到红外信号时,会输出一个特定的电平信号。
我们可以使用外部中断来检测这个信号,并进行相应的处理。
在程序开发过程中,我们需要注意红外信号的协议。
常见的红外信号协议有NEC、SONY等。
我们需要根据所使用的红外接收器的协议来编写相应的程序。
最后,我们需要测试代码的功能和稳定性。
可以通过连接电子设备,按下遥控器上的按键,来测试红外信号的发送和接收功能。
如果一切正常,我们的红外遥控器设计就完成了。
总结起来,基于51单片机的红外遥控器设计是一个简单而有趣的项目。
基于51单片机的红外遥控水温控制系统的设计
【摘要】本设计基于AT89C51单片机为控制核心,片外配合红外线遥控模块、水温加热模块开关、基于Dallas单线数字式的DS18B20温度传感器模块、蜂鸣器报警模块、按键模块、LCD1602液晶显示器模块、晶振电路模块、复位电路模块以及电源模块为一体构成无线水温控制系统。
本水温控制系统设计采用自上而下的模块化设计,具有形象直观、操作简单、结构紧凑、温度控制灵活等优点。
本系统能够对水温进行实时并且快速地温度采集、温度值显示、超温报警以及加热等功能,并且能够通过红外线遥控器实现对温度值的设定。
经过大量实验测试,本次设计的系统通用性强、功能齐全、简单实用,值得在工控领域被大量推广,它能够将实现水加热系统的自动化,对企业及社会的发展具有重要意义。
【关键词】:AT89C51,DS18B20温度传感器,LCD1602液晶显示器ABSTRACTThe design is based on AT89C51 single chip microcomputer as control core, chip with infrared remote control module, the temperature of the water heating module switch, based on Dallas digital DS18B20 temperature sensor module, buzzer alarm module, a key module, LCD1602 liquid crystal display module, crystal oscillator circuit module, reset circuit module and power module are integrated to form a wireless temperature control system. The water temperature control system design uses the modular design from top to bottom, has the advantages of visual image, simple operation, compact structure, flexible temperature control. The system can real-time temperature and rapid temperature acquisition, temperature display, temperature alarm, heating and other functions, and can realize the setting temperature value through the infrared remote controller. After a lot of experiments testing, the design of the system has strong universality, complete function, simple and practical, it is worth to be popularized in the field of industrial control, it will be able to realize automatic water heating system, has important significance to the development of enterprises and society.【KEY WORD】:AT89C51,DS18B20,LCD1602目录一、引言 (1)(一)选题背景 (1)(二)设计意义 (1)(三)设计任务 (2)二、总体方案设计 (3)(一)方案的选择 (3)(二)方案简述 (3)三、元器件介绍 (5)(一)AT89C51单片机 (5)(二)DS18B20温度传感器 (7)(三)红外遥控系统介绍 (8)四、系统硬件设计 (11)(一)原理图描述 (11)(二)DS18B20温度传感器模块 (12)(三)加热器开关模块 (12)(四)蜂鸣器报警模块 (12)(五)LCD1602液晶显示器模块 (13)(六)按键模块 (13)五、系统软件设计 (15)(一)主程序设计 (15)(二)子程序设计 (15)总结 (18)致谢 (19)参考文献 (20)附录一系统原理图 (21)附录二PCB (22)附录三元器件清单 (23)附录四系统程序 (24)一、引言(一)选题背景对于温度的控制在工业活动中非常普遍,温度参数是一个最常用的被控参数,在化工、食品、燃料以及钢铁产业中都涉及到温控过程。
单片机课程设计基于51单片机温度传感器设计
单片机课程设计报告基于51单片机温度传感器设计姓名:阮晓健学号:200905020118任课教师:林凡强成都理工大学信科院2012年5系统概述摘要:本设计是以51单片机为核心的温度传感器设计,该系统以STC89C52单片机为中心控制单元,由数码管显示模块,蜂鸣器警报模块组成,并预设温度报警上下限,系统启动后可以实时采集环境中的温度,并且当温度超出上下限的值以后蜂鸣器报警.关键词:STC89C51、数码管、蜂鸣器、DS18B20温度传感器系统框图:原理概述:STC89C52单片机为主控制器,用于处理采集的温度值以及相关报警值。
本设计采用DALLAS公司的DS18b20温度传感器采集温度,通过主控制器进行温度的采样以及转换并在数码管上进行相应的显示,当外界温度值超出预设的报警温度值时,通过蜂鸣器报警提示。
实验要求:(1)温度读取(2)LED数码管或LCD显示(3)定时读取数据(4)报警实验设备:51学习开发板,STC89C52单片机,DS18B20 设计内容:软件流程图:N设计方法:DS18B20特性• 独特的单线接口仅需一个端口引脚进行通讯 • 简单的多点分布应用 • 无需外部器件 • 可通过数据线供电 • 零待机功耗• 测温范围-55---+125℃,以0.5℃递增。
华氏器件-67---+257℉,以0.9℉递增 • 温度以9 位数字量读出• 温度数字量转换时间 200ms (典型值) • 用户可定义的非易失性温度报警设置• 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 • 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统温度传感器说明:DS1820 数字温度计以 9 位数字量的形式反映器件的温度值。
DS1820通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820 之间仅需一条连接线(加上地线)。
用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。
基于51单片机红外发射与接收C程序(word文档良心出品)
}
//khz(116);//3.028ms精确的时间
//khz(64);//2.006ms
//khz(40); //1.052ms
//delayms(125);//2.012ms这里是一些时间的介绍
//delayms(65);//1.054ms
//delayms(93);//1.5ms
void fashu(uchar num)
}
}
void main()
{
init();
//delayms(45);//0.642ms
//delayms(35);//0.502ms
//delayms(115);//1.623ms
//delayms(72);//1.02ms
//delayms(84);//1.188ms
//delayms(31);//0.446ms
sbit key1=P3^3;
sbit key2=P3^4;
sbit key3=P3^5;
sbit LED=P1^0; //发射指示灯
sbit out=P3^7;
uchar i,a,num1;
void init()//初始化作用
{
key1=1;
key2=1;
key3=1;
}
void delay(uchar aa)
tishi();
}
}
}
void main()
{
init();
while(1)
{
keyscan();
}
}
红外接收程序
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
基于51单片机的红外传感器原理
基于51单片机的红外传感器原理下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于51单片机的红外传感器原理1. 简介红外传感器是一种常用于检测物体距离、障碍物识别等的传感器。
基于51单片机的红外遥控
基于51单片机的红外遥控本讲内容:介绍红外遥控的知识,通过例程展示红外遥控程序的编写方法。
红外线简介:在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。
目前几乎所有的视频和音频设备都可以通过红外遥控的方式进行遥控,比如电视机、空调、影碟机等,都可以见到红外遥控的影子。
这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。
接收头输出的波形正好和遥控芯片输出的相反。
在这里红外通信采用NEC协议,它的特征如下:信号调制红外遥控信号接收管接口电路:红外信号发射电路 红外信号接收电路例程:红外遥控信号发射:/*****************红外通信——发射*******************单片机型号:STC89C52RC*开发环境:KEIL*名称:红外通信发射*功能:按下按键S4,S5,S6,S8,S9,S10,S11,S13,S14发射对应键值,可以与红外通信——接收程序配套使用***************************************************/#include <REG51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define SBM 0x80 //识别码#define m9 (65536-8294) //约9mS#define m4_5 (65536-4147) //约4.5mS#define m1_6 (65536-1521) //约1.65mS#define m_65 (65536-599) //约0.65mS#define m_56 (65536-516) //约0.56mS#define m40 (65536-36864) //约40mS#define m56 (65536-51610) //56mS#define m2_25 (65536-2074) //约2.25mSconst uchar TabHL1[9]={0x0c,0x18,0x5e,0x08,0x1c,0x5a,0x42,0x52,0x4a};sbit IR=P1^5; //定义发射引脚sbit BEEP=P2^3;void keyscan();void ZZ(uchar x);void Z0(uchar temp);void TT0(bit BT,uint x);void delay(int In,int Out);/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:主函数┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void main(void){TMOD=0x01; //T0 16位工作方式IR=1; //发射端口常态为高电平while(1){keyscan();}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:发送主程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void ZZ(uchar x){TT0(1,m9); //高电平9mSTT0(0,m4_5); //低电平4.5mS/*┈发送4帧数据┈*/Z0(SBM);Z0(~SBM);Z0(x);Z0(~x);/*┈┈结束码┈┈*/TT0(1,m_65);TT0(0,m40);}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:单帧发送程序入口参数:1帧数据┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void Z0(uchar temp){uchar v;for (v=0;v<8;v++) //循环8次移位{TT0(1,m_65); //高电平0.65mSif(temp&0x01) TT0(0,m1_6); //发送最低位else TT0(0,m_56);temp >>= 1; //右移一位}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:38KHz脉冲发射 + 延时程序入口参数:(是否发射脉冲,延时约 x (uS))┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/void TT0(bit BT,uint x){TH0=x>>8; //输入T0初始值TL0=x;TF0=0; //清0TR0=1; //启动定时器0if(BT==0)while(!TF0);//BT=0时不发射38KHz脉冲只延时;BT=1发射38KHz脉冲且延时;else while(1) //38KHz脉冲,占空比5:26{IR = 0;if(TF0)break;if(TF0)break;IR=1;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;}TR0=0; //关闭定时器0TF0=0; //标志位溢出则清0IR =1; //脉冲停止后,发射端口常态为高电平}void keyscan() //按键扫描函数{uchar buffer;/***************************************************/P3=0xfe; //扫描S3,S4,S5,S6;buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xee:{;}break;case 0xde:{ZZ(TabHL1[0]);}break;case 0xbe:{ZZ(TabHL1[1]);}break;case 0x7e:{ZZ(TabHL1[2]);}break;}while(buffer != 0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfd; //扫描S8,S9,S10,S11buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xed:{ZZ(TabHL1[3]);}break;case 0xdd:{ZZ(TabHL1[4]);}break;case 0xbd:{ZZ(TabHL1[5]);}break;case 0x7d:{ZZ(TabHL1[6]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfb; //扫描S13,S14,S15,S16buffer=P3;buffer=buffer&0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xeb:{ZZ(TabHL1[7]);}break;case 0xdb:{ZZ(TabHL1[8]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}}void delay(int In,int Out) //定义延时函数{int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}红外遥控信号接收:/*****************红外通信--接收*******************单片机型号:STC89C52RC*开发环境:KEIL*功能:在液晶LCD1602上显示接收到的数值*************************************************/#include<reg52.h>#define LCD_Data P0#define Busy 0x80sbit IR=P3^2;sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E=P2^5;void TIM0init(void);void EX0init(void);void SYSinit(void);void delay(int In,int Out);void Delay5Ms(void);void Ir_work(void);void Ircordpro(void);void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);unsigned char ReadDataLCD(void);unsigned char ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); void Info_display(void);bit IRpro_ok;bit IR_ok;unsigned char IRcord[4];unsigned char IRdata[33];unsigned char codedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char irtime;unsigned char speed_num=0;unsigned char codemb_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char code welcome[]={"YOU ARE WELCOME"};unsigned char code ir_reve[]={"IR_RECEIVE: "};/*******************5ms延时函数*********************/void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}void delay(int In,int Out){int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}/***********************写数据函数***********************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/**********************写指令函数************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC){if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/***********************读状态函数************************/ unsigned char ReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while(LCD_Data & Busy);return(LCD_Data);}/************************LCD初始化************************/ void LCDInit(void){LCD_Data=0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}/*******************按指定位置显示一个字符******************/void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData){Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X,0);WriteDataLCD(DData);}/*******************按指定位置显示一串字符******************/void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}}/***********************定时器0初始化***********************/void TIM0init(void){TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;TR0=1;}/**********************外部中断0初始化**********************/void EX0init(void){IT0=1;EX0=1;EA=1;}/*************************系统初始化*************************/void SYSinit(void){TIM0init();EX0init();LCDInit();}/********************红外信号接收相关函数********************/void Ir_work(void){switch(IRcord[2]){case 0x0C:{DisplayOneChar(12,1,0x31);}break;case 0x18:{DisplayOneChar(12,1,0x32);}break;case 0x5e:{DisplayOneChar(12,1,0x33);}break;case 0x08:{DisplayOneChar(12,1,0x34);}break;case 0x1c:{DisplayOneChar(12,1,0x35);}break;case 0x5a:{DisplayOneChar(12,1,0x36);}break;case 0x42:{DisplayOneChar(12,1,0x37);}break;case 0x52:{DisplayOneChar(12,1,0x38);}break;case 0x4a:{DisplayOneChar(12,1,0x39);}break;default:break;}}void Ircordpro(void){unsigned char i,j,k;unsigned char cord,value;k=1;for(i=0;i<4;i++){for(j=1;j<=8;j++){cord=IRdata[k];if(cord>7)value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}IRpro_ok=1;}/********************红外信号接收相关函数********************/ void main(void){SYSinit();delay(5,100);DisplayListChar(0,0,welcome);DisplayListChar(0,1,ir_reve);while(1){if(IR_ok){Ircordpro();IR_ok=0;}if(IRpro_ok){Ir_work();}}}/********************定时器0中断处理函数********************/ void tim0_isr (void) interrupt 1 using 1{irtime++;}/*******************外部中断0中断处理函数*******************/ void EX0_ISR (void) interrupt 0{static unsigned char i;static bit startflag;if(startflag){if(irtime<63&&irtime>=33)i=0;IRdata[i]=irtime;irtime=0;i++;if(i==33){IR_ok=1;i=0;}}else{irtime=0;startflag=1;}}。
基于51单片机的温湿度传感器的设计与制作
摘要:温湿度使我们生产生活中很重要的参数,本设计为基于51单片机的温湿度检测与控制系统,采用模块化、层次化设计。
如今采纳新技术,使用新式智能的温湿度传感器DHT11来实现对温度、湿度的监测,运用DHT11来完成湿度信号的收集并将其转换为数字式信号,接着使用单片机AT89C52分析、处置数据,提供信号给报警及显示电路,从而完成对温湿度的检测与监控。
依据设定的报警高低限值来体现报警体系的报警功效,采纳LCD1602液晶显示所测得的温湿度值。
优点是系统的电路简单、集成度高、运行稳定、调试方便、检测精度很高,有一定的实用价值。
关键词:单片机;DHT11温湿度传感器;LCD1602显示Abstract:Temperature and humidity that we are important parameters in production and living, this design is based on 51 single chip microcomputer temperature and humidity detection and control system, adopts the modular, hierarchical design. Now adopt new technology, the use of new intelligent temperature and humidity sensor DHT11 to realize the monitoring of temperature, humidity, using DHT11 to humidity signal collection and convert them into digital signals, then using microcontroller AT89C52 analysis and treatment of data, provides the signal to alarm and display circuit, so as to complete the detection and monitoring of temperature and humidity. According to set the alarm of high and low limit to reflect the alarm function of the alarm system, adopt LCD1602 LCD display the measured temperature and humidity values. Advantage is simple circuit, high integration, stable running, convenient debugging and testing precision is high, has certain practical value.Key words:Single chip microcomputer; DHT11 temperature and humidity; LCD1602 display目录第一章引言 (4)1.1课题的研究背景 (4)1.2课题的研究内容及目标 (4)1.3本文的组织结构 (4)第二章设计要求及目的 (4)1.1 设计目的 (4)1.2 设计要求 (4)第三章系统方案设计及论证 (4)3.1总体方案设计 (5)3.2方案比较与论证 (5)3.2.1温湿度检测 (5)3.2.2主从机通信 (6)3.2.3显示部分 (6)第四章系统的硬件设计与实现 (6)4.1 单片机介绍 (6)4.1.1 单片机主要性能 (6)4.1.2 单片机各引脚功能介绍 (7)4.1.3 单片机特殊功能寄存器介绍 (7)4.2 DHT11数字温湿度传感器介绍 (11)4.2.1 DHT11产品概述 (7)4.2.2 串行接口 (7)4.3 红外发射电路 (11)4.4红外接收电路 (13)第五章软件设计 (14)5.1主机程序 (14)5.2从机程序 (15)总结 (17)致谢 (18)参考文献 (19)附录一主机电路图 (20)附录二从机电路图 (21)附录三程序代码 (22)第一章引言1.1 课题的研究背景温度与湿度与人们的生活息息相关。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015年高校联盟电子制作大赛题目(数字类)技术报告队长:黄文杰学号:2014212652学院:自动化学院队员:嘉伟学号:2014212650学院:自动化学院唐泓学号:2014212640学院:自动化学院题目名称:简易红外光数字通信装置1、设计题目:单片机应用系统设计基于单片机的——简易红外光数字通信装置2、总体要求:本次大赛设计容从主办方所给的题目出发,参赛者应了解单片机实际的应用系统,并自学红外信号编码,弄清结构和功能,结合单片机课程知识及其他相关课程知识,充分发挥自己的想象力和创造力,实现主办方题目要求并适当发挥,团队合作完成本次比赛。
3、具体要求:1)确定应用系统功能参数2)设计合理的电路原理图3)Proteus仿真原理图4)制作电路板并检测5)设计程序6)电路板调试运行7)技术报告单片机技术报告一、项目简介单片机被广泛应用于仪器仪表、工业自动控制、家用电器、医用设备、办公自动化设备、安全监控等领域,涵盖了人类生活的方方面面。
二、系统功能描述这是一款基于STC89C52RC单片机的简易红外光数字通信装置。
它可以分为六个部分:(1)红外功能,可以红外传送数据(2)音阶功能,在发射板上按动七个音阶,在接收板上可以响出duorai mi fasuonai xi 七个音阶(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<reg52.h>#define uchar unsigned char#define uint unsigned intucharm,inform;uint temp; // variable of temperature // sign of the result positive or negativesbit DS=P0^3;sbit IR_OUT=P1^1;sbit key1=P2^4;sbit key2=P2^5;sbit key3=P2^6;sbit key4=P2^7;sbit key5=P2^0;sbit key6=P2^1;sbit key7=P2^2;sbit key8=P2^3;/*--------三个延迟函数的定义-------*/void delay_ms(uintms){uinti,j;for(i=0;i<120;i++){for(j=0;j<ms;j++);}}void delay(uint count) //delay{uinti;while(count){i=200;while(i>0)i--;count--;}}/*——————————温度传感器函数定义——————————————————*/void dsreset(void) //send reset and initialization command{uinti;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;}//------------------------------------------------------------bit tmpreadbit(void) //read a bit{uinti;bit dat;DS=0;i++; //i++ for delayDS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return (dat);}//--------------------------------------------------------------------- uchartmpread(void) //read a byte date{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT 里}return(dat);}//---------------------------------------------------------------------------void tmpwritebyte(uchardat) //write a byte to ds18b20{uinti;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //write 1{DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0; //write 0i=8;while(i>0)i--;DS=1;i++;i++;}}}void tmpchange(void) //DS18B20 begin change{dsreset();delay(1);tmpwritebyte(0xcc); // address all drivers on bustmpwritebyte(0x44); // initiates a single temperature conversion}uinttmp() //get the temperature{float tt;uchara,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8; //two byte compose a int variable temp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;}void readrom() //read the serial{uchar sn1,sn2;dsreset();delay(1);tmpwritebyte(0x33);sn1=tmpread();sn2=tmpread();}/*--------温度传感器函数定义-----------*///T1 13us产生一次中断用于产生38K载波//T0 方式1 16位用于定时void Init_Timer(){TMOD=0x21; //T0 mode 1 T1 mode 2TH1=256-13; //定时产生13us//特殊TL1=TH1;ET1=1;EA=1;}//发送引导码发送方:9ms高电平 4.5ms低电平void Send_Start_Bit() //TR1的值=发送的电平{//9ms 1TH0=(65536-9000)/256;TL0=(65536-9000)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;//4.5ms 0TH0=(65536-4500)/256; TL0=(65536-4500)%256; TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;}//发送0void Send_Bit_0(){//0.565ms 1TH0=(65536-565)/256; TL0=(65536-565)%256; TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;//0.565ms 0TH0=(65536-565)/256; TL0=(65536-565)%256; TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;}//发送1void Send_Bit_1(){//0.565ms 1TH0=(65536-565)/256; TL0=(65536-565)%256;TR0=1;TR1=1;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;//1.685ms 0TH0=(65536-1685)/256;TL0=(65536-1685)%256;TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;}void Send_over() //发送一个结束码,因为最后一个位只有遇到下降沿才能读取(发射端的上升沿){//0.500ms 1 //小于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.500ms 0TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;TR1=0;while(!TF0);TR1=0;TF0=0;TR0=0;IR_OUT=1;}void keyscan(){if(key1==0){delay_ms(5);if(key1==0){m=1;while(!key1);}}if(key2==0){delay_ms(5);if(key2==0){m=2;while(!key2);}}if(key3==0){delay_ms(5);if(key3==0){m=3;while(!key3);}}if(key4==0){delay_ms(5);if(key4==0){m=4;while(!key4);}}if(key5==0){delay_ms(5);if(key5==0){m=5;while(!key1);}}if(key6==0){delay_ms(5);if(key6==0){m=6;while(!key6);}}if(key7==0){delay_ms(5);if(key7==0){m=7;while(!key7);}}if(key8==0){delay_ms(5);if(key8==0){m=8;while(!key8);}}switch(m){case 1:inform=0x7e;break;case 2:inform=0x18;break;case 3:inform=0x3c;break;case 4:inform=0x42;break;case 5:inform=0xe7;break;case 6:inform=0x5a;break;case 7:inform=0x99;break;case 8:inform=0x24;break;default:break;}}void Send_Char(ucharinform,uchar flag) //发送一字节 8位{uchar i,j1,j2,j3,j4;j1=flag;j2=0x41;j3=inform;j4=0x20;Send_Start_Bit();for(i=0;i<8;i++){if(j1&0x01)Send_Bit_1();elseSend_Bit_0();j1=j1>>1;//先发射低位}for(i=0;i<8;i++){if(j2&0x80)Send_Bit_0();elseSend_Bit_1();j2=j2<<1;//先发射低位}for(i=0;i<8;i++){if(j3&0x01)Send_Bit_1();elseSend_Bit_0();j3=j3>>1;//先发射低位}for(i=0;i<8;i++){if(j4&0x80)Send_Bit_0();elseSend_Bit_1();j4=j4<<1;//先发射低位}Send_over();//结束符}void T1_ISR() interrupt 3{IR_OUT=~IR_OUT;}void delay_send(){uchari,j;for(i=120;i>1;i--)for(j=500;j>1;j--){keyscan();if(m)Send_Char(inform,0);m=0;}}void main(){Init_Timer();while(1){m=0;IR_OUT=0;tmpchange();if(tmp()>250){inform=0x7e;Send_Char(inform,0);}delay_send();Send_Char(tmp(),0xff);}}#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit IR=P3^2; //红外接口标志sbit Beep=P2^0;sbit A1=P2^1;sbit A2=P2^2;sbit A3=P2^3;/*------------------------------------------------全局变量声明------------------------------------------------*/ucharirtime;//红外用全局变量bit irpro_ok,irok; //是否进行接收和是否接受完毕ucharIRcord[4];ucharirdata[33];uchar Th1,Tl1; //分别给TH0,TH1赋值uchar key=0;uchar code KeyCode[]={0XFF,0XFF,0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B, 0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05, 0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02, };uchar code table[]={0x5f,0x06,0x9b,0x97,0xc6,0xd5,0xdd,0x07,0xdf,0xd7};uchar code table1[]={0x7f,0x26,0xbb,0xb7,0xe6,0xf5,0xfd,0x27,0xff,0xf7};/*------------------------------------------------函数声明------------------------------------------------*/void Ir_work(void);void Ircordpro(void);//音阶函数声明void PlayKey(void);void DisPlay(void);void delay_ms(ucharms){uchari,j;for(i=0;i<120;i++)for(j=0;j<ms;j++);}/*------------------------------------------------定时器0初始化------------------------------------------------*/void TIM0init(void)//定时器初始化{TMOD=0x12;//定时器0工作方式2,TH0是重装值,TL0是初值 ,定时器1工作方式1TH0=0x00; //重载值TL0=0x00; //初始化值ET0=1; //开中断TR0=1;ET1=1;}/*------------------------------------------------外部中断0初始化------------------------------------------------*/void EX0init(void){IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)EX0 = 1; //使能外部中断EA = 1; //开总中断}/*------------------------------------------------定时器0中断处理------------------------------------------------*/void tim0_isr (void) interrupt 1 using 1{irtime++; //用于计数2个下降沿之间的时间}/*------------------------------------------------定时器1中断处理------------------------------------------------*/void time1() interrupt 3{TH1=Th1;TL1=Tl1;Beep=~Beep;}/*------------------------------------------------外部中断0中断处理------------------------------------------------*/void EX0_ISR (void) interrupt 0 //外部中断0服务函数{static unsigned char i; //接收红外信号处理 static bit startflag; //是否开始处理标志位if(startflag){if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5msi=0;irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1 irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;startflag=1;}}/*------------------------------------------------键值处理------------------------------------------------*/void Ir_work(void)//红外键值散转程序{switch(IRcord[2])//判断第三个数码值{case 0x7e:key=1;break;//1 显示相应的按键值case 0x18:key=2;break;//2case 0x3c:key=3;break;//3case 0x42:key=4;break;//4case 0xe7:key=5;break;//5case 0x5a:key=6;break;//6case 0x99:key=7;break;//7case 0x24:key=8;break;//8default:break;}irpro_ok=0;//处理完成标志}void ledisplay(){ucharbai,shi,ge;bai=IRcord[2]/100;shi=IRcord[2]%100/10;ge=IRcord[2]%10;A1=0;P0=table[bai];delay_ms(5);P0=0x00;A1=1;A2=0;P0=table1[shi];delay_ms(5);P0=0x00;A2=1;A3=0;P0=table[ge];delay_ms(5);P0=0x00;A3=1;}/*------------------------------------------------红外码值处理------------------------------------------------*/void Ircordpro(void)//红外码值处理函数{unsigned char i, j, k;unsigned char cord,value;k=1;for(i=0;i<4;i++) //处理4个字节{for(j=1;j<=8;j++) //处理1个字节8位{cord=irdata[k];if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1}//————————————音阶处理函数————————————————————————————//void PlayKey(void) //按键播放程序{if(key==0)return;else{Th1=KeyCode[key*2];Tl1=KeyCode[key*2+1];TR1=1;delay_ms(187);TR1=0;key=0;}}/*------------------------------------------------主函数------------------------------------------------*/void main(void){EX0init(); //初始化外部中断TIM0init();//初始化定时器while(1)//主循环{if(irok) //如果接收好了进行红外处理{Ircordpro();irok=0;}if(irpro_ok){if(IRcord[0]>125){ledisplay();}else{Ir_work();PlayKey();}}}}五、Proteus仿真发射proteus图接收proteus图:六、结束语通过这个比赛,真的时对自己思维的一次很大的挑战,算法想不出来,焊接后不能实现功能。