基于单片机的红外解码.温度及液晶显示

合集下载

基于51单片机的红外遥控+液晶LCD1602显示程序源代码

基于51单片机的红外遥控+液晶LCD1602显示程序源代码

基于51单片机的红外遥控+液晶LCD1602显示程序源代码/*******************红外遥控+液晶LCD1602测试程序源代码******************** 单片机型号:STC15W4K56S4,内部晶振:22.1184M。

功能:红外遥控+液晶LCD1602显示功能测试。

操作说明:按下红外遥控器上的“CH-”键,液晶LCD1602上显示“CH-”。

按下红外遥控器上的“CH”键,液晶LCD1602上显示“CH”。

按下红外遥控器上的“CH+”键,液晶LCD1602上显示“CH+”。

按下红外遥控器上的“|<<”键,液晶LCD1602上显示“|<<”。

按下红外遥控器上的“>>|”键,液晶LCD1602上显示“>>|”。

按下红外遥控器上的“>||”键,液晶LCD1602上显示“>||”。

按下红外遥控器上的“-”键,液晶LCD1602上显示“-”。

按下红外遥控器上的“+”键,液晶LCD1602上显示“+”。

按下红外遥控器上的“EQ”键,液晶LCD1602上显示“EQ”。

按下红外遥控器上的“0”键,液晶LCD1602上显示“0”。

按下红外遥控器上的“100+”键,液晶LCD1602上显示“100+”。

按下红外遥控器上的“200+”键,液晶LCD1602上显示“200+”。

按下红外遥控器上的“1”键,液晶LCD1602上显示“1”。

按下红外遥控器上的“2”键,液晶LCD1602上显示“2”。

按下红外遥控器上的“3”键,液晶LCD1602上显示“3”。

按下红外遥控器上的“4”键,液晶LCD1602上显示“4”。

按下红外遥控器上的“5”键,液晶LCD1602上显示“5”。

按下红外遥控器上的“6”键,液晶LCD1602上显示“6”。

按下红外遥控器上的“7”键,液晶LCD1602上显示“7”。

按下红外遥控器上的“8”键,液晶LCD1602上显示“8”。

基于单片机的智能家居控制系统设计

基于单片机的智能家居控制系统设计

基于单片机的智能家居控制系统设计
智能家居控制系统是利用现代信息技术和通信技术对家居生活环境进行监测、控制和
管理的系统。

随着科技的不断发展,智能家居控制系统成为了未来家居生活的重要组成部分。

在智能家居控制系统中,单片机作为控制中心,负责控制各个设备的运行和协调不同
设备之间的互通。

该智能家居控制系统由单片机(STC12C5A60S2)、温湿度传感器、红外遥控模块、液
晶显示屏、继电器和直流电机等组成。

它可以通过自动控制和手动控制两种方式来完成智
能家居的管理。

自动控制是该系统的一项重要功能。

系统中的温湿度传感器可以实时监测居室内的温
度和湿度,并在这些数据达到设定阈值时自动控制空调开启或关闭。

系统中还设置了热水
管的自动控制,当系统检测到水温低于设定值时,自动控制加热器开启。

手动控制则是在自动控制的基础上增加的一种控制方式。

通过液晶显示屏,用户可以
手动控制灯光的开关、窗帘的升降、风扇的状态等。

此外,该系统还增加了红外遥控功能,用户可以通过遥控器控制系统中的多个设备。

在该系统中,单片机起到了至关重要的作用。

它负责控制各个设备的运行和协调不同
设备之间的互通。

具体来说,单片机采取轮询方式查询不同设备的状态,这样可以确保系
统中各个设备正常运行。

此外,单片机还可以通过通信模块实现远程控制,用户可以通过APP或者网络远程控制智能家居。

总的来说,该基于单片机的智能家居控制系统设计实现了智能家居的自动化管理,提
高了家居生活的便捷程度和舒适度,对未来的智能家居生活有很大的推进作用。

基于单片机的温度检测系统硬件设计

基于单片机的温度检测系统硬件设计

基于单片机的温度检测系统硬件设计温度是工业生产和日常生活中常见的重要参数之一。

准确的温度检测对于许多应用场景至关重要,如医疗、化工、电力、食品等行业。

随着科技的不断发展,单片机作为一种集成了CPU、内存、I/O接口等多种功能于一体的微型计算机,被广泛应用于各种温度检测系统中。

本文将介绍一种基于单片机的温度检测系统硬件设计方法。

温度检测系统的主要原理是热电偶定律。

热电偶是一种测量温度的传感器,它基于塞贝克效应,将温度变化转化为电信号。

热电偶与放大器、滤波器等电路元件一起构成温度检测电路。

放大器将微弱的电信号放大,滤波器则消除噪声,提高信号质量。

将处理后的电信号输入到单片机中进行处理和显示。

在原理图设计中,我们选用了一种常见的温度检测芯片——DT-6101。

该芯片内置热电偶放大器和A/D转换器,可直接与单片机连接。

我们还选择了滤波电容、电阻等元件来优化信号质量。

原理图设计如图1所示。

软件设计是温度检测系统的核心部分。

我们采用C语言编写程序,实现温度的实时检测和显示。

程序主要分为初始化、输入处理、算法处理和输出显示四个模块。

初始化模块:主要用于初始化单片机、DT-6101等硬件设备。

输入处理模块:从DT-6101芯片读取温度电信号,并进行预处理,如滤波、放大等。

算法处理模块:实现温度计算算法,将电信号转化为温度值。

常用的算法有线性插值法、多项式拟合法等。

输出显示模块:将计算得到的温度值显示到液晶屏或LED数码管上。

硬件调试是确保温度检测系统可靠性和稳定性的关键步骤。

在组装过程中,需注意检查元件的质量和连接的正确性。

调试时,首先对硬件进行初步调试,确保各电路模块的基本功能正常;然后对软件进行调试,检查程序运行是否正确;最后进行综合调试,确保软硬件协调工作。

通过实验,我们验证了基于单片机的温度检测系统的准确性和稳定性。

实验结果表明,系统在-50℃~50℃范围内的误差小于±5℃,满足大多数应用场景的需求。

单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计

单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。

随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。

然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。

本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。

接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。

在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。

本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。

将总结本文的主要工作和创新点,并对未来的研究方向进行展望。

通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。

二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。

这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。

红外遥控器的工作原理主要基于红外辐射和光电器件的检测。

遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。

接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。

为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。

一种基于单片机的红外遥控信号解码新方法

一种基于单片机的红外遥控信号解码新方法

控 方 式 时 不 会 干 扰 其 他 电器 的正 常 使 用 , 不 会 影 响 临 近 也
的无 线 电设 备 。 另 外 , 外 遥 控 器 件 具 有 体 积 小 、 耗 ] 红 功 低 、 价 比高 的优 点 , 理 想 的人 机 输 入设 备 , 常 适 合 电 性 是 非 子 工 程 师 和 电子 爱 好 者 DI 开 发 与 制 作 。红 外 遥 控 系 统 Y
主 要 由发 射 和 接 收 两 大部 分 组 成 , 于 发 射 部 分 使 用 的是 由
I e Rr s
购 买 来 的遥 控 器 成 品 , 以本 文 的 重 点 是 红 外 接 收 、 码 所 解 部 分 。下 面 将 从 硬 件 结 构 和 软件 编 程 两 个 方 面 出发 , 绍 介
Absr c ta t:I f a e e ot o r lr r dey u e n us ho d e e t ia ppl nc s I f a e i na c di e hod r a i s i n r r d r m ec ntole s a e wi l s d i ho e l l c rc la i e . n r r d sg lde o ng m t a s a e v rou n
功 能 寄存 器单 元 进行 定 义 , 时 对 相 关 工 作 单 元 进 行 初 始 同
化 。初 始 化 代 码 如 下 :
; 定 义 , 存 器 定 义 位 寄 I Ke Re d B T R y ay I I oe RC d I i R: nt I Oh O ; 义 “ 得 到键 值 ” 志 位 定 已 标 ; 义 4字 节 红 外 码 寄 存 器 定 ; 开 外 部 中断 1 打 ; 降 沿 触 发 下

基于51单片机的红外线控制系统 2

基于51单片机的红外线控制系统 2

单片机原理结课项目项目题目基于51单片机的红外线控制系统基于51单片机的红外线控制系统一、概述:红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。

由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以在设计红外线遥控器时,不必要像无线电遥控器那样,每套( 发射器和接收器) 要有不同的遥控频率或编码( 否则,就会隔墙控制或干扰邻居的家用电器) ,所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。

这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方面。

由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。

基于51单片机的红外线控制系统。

要求通过单片机发送和接红外信号程序,根据接收的信号,执行有关动作的系统,能够实现近距离的无线通。

二、硬件设计1. 系统框图2. 电路原理图电路由五个模块构成(最小系统模块、红外接收模块、数码管显示模块、编程下载模块、电源模块)1) 最小系统STC12C5410AD 单片机红外接收头红外遥控器复位电路时钟振荡电路数码光显示最小系统由stc12c5410ad单片机,按键复位电路,时钟振荡电路构成。

a.电源电源采用5V直流电供电。

b.时钟、复位电路本电路选用12MHz晶振。

2)红外接收模块3)显示模块三、软件设计1.红外编解码原理红外线发射编码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制‘0’;以脉宽为0.565ms、间隔1.658ms、周期为2.25ms的组合表示二进制‘1’;红外接收头接收的信号和发射编码相反;一组编码由一个引导码,四个字节数据组成;引导码由9ms的高电位和4.5ms的地电位组成。

基于单片机的红外通信系统设计

基于单片机的红外通信系统设计

基于单片机的红外通信系统设计1 简介红外通信是指利用红外线进行信息传输的一种无线通讯方式。

其传输距离在10米以内,速度较快,常用于遥控器、智能家居、安防监控等领域。

本文将介绍基于单片机的红外通信系统设计。

2 系统原理红外通信系统需包含红外发射器、红外接收器和处理器三个部分。

通信原理是将信息编码成红外信号,通过红外发射器发出,再由红外接收器接收,经过解码后传输到处理器中处理。

3 系统设计步骤3.1 红外接收器电路设计红外接收器采用红外管接收器,其特点是灵敏度高,在不同角度能接收到较远的红外信号。

红外管接收器与电路板焊接,电路板再选用较长的电线接到处理器的端口上。

3.2 红外发射器电路设计红外发射器采用红外二极管,其工作电压一般为1.2-1.4V。

通过接通1kHz以上的方波信号控制二极管的导通,使其发出红外光。

为保证其稳定性和较远的有效距离,需在电路中添加反向电流保护二极管。

3.3 处理器设计处理器选用常用的单片机,如AT89C51等。

单片机内置了红外通信模块,可用来发送和接收红外信号。

同时,还需通过编程实现对红外信号的解码和编码,实现信息传输与处理。

4 系统测试测试时,可用遥控器模拟发送红外信号,系统接收并解码后显示在液晶屏幕上。

测试距离一般在10米以内,且需保持天空无其它遮挡物。

5 总结基于单片机的红外通信系统设计,具有灵敏度高、速度快、传输距离短等特点。

其应用广泛,在智能家居、安防监控、车载通信等领域均有应用。

但需注意遮挡物的影响,以及信号干扰等问题。

基于单片机的温度采集与液晶显示

基于单片机的温度采集与液晶显示

1 绪论1.1 本课题研究的背景和意义温度,一个在日常生活和生产过程甚至科学实验中普遍而且重要的物理参数。

近年来,随着社会的发展和科技的进步,温度控制系统以及测温仪器已经广泛应用于社会生活的各个领域,尤其是在工业自动化控制中占有非常重要的地位。

人们通过温度计来采集温度,经过人工操作进行加热、通风和降温。

从而来控制温度,但是对于这些控制对象惯性大,滞后性严重,而且还存在有许多不定的因素,从而根本难以建立精确的数学模型。

这样不仅控制精度低、实时性差,而且操作人员的劳动强度大,并且有许多工业生产环节是人们不能直接介入的。

因此智能化已然成为现代温度控制系统发展的主流方向。

针对这一种实际情况,设计个温度控制系统,具有非常广泛的应用前景和实际意义[1]。

随着电子信息技术和微型计算机技术的飞速发展。

单片机技术也得到了飞速的发展。

尤其是在高集成度、高速度、低功耗还有高性能方面取得了巨大的进展。

使得单片机在电子产品当中的应用越来越广泛。

使用单片机对温度进行控制的技术也油然而生。

它不仅可以克服温度控制系统中存在的严重的滞后现象,同时还可以在提高采样频率的基础上很大程度的提高控制的效果和控制的精度。

并且随着技术日益发展和完善,相信越来越能显现出它的优越性。

1.2 目前国内外研究现状在国内外温度控制成了一门广泛应用于很多领域的技术。

像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等。

温度控制系统虽然在国内各行各业的应用已十分广泛,但是从温度控制器的生产角度来看,总体的发展水平仍不高。

跟美德日等先进国家相比,仍有着较大的差距。

“点位”控制和常规的PID控制器占领了成熟产品的主体份额。

但它只可以适用于一般的温度系统控制,而难于控制复杂、滞后、时变的温度控制系统。

此外,适于较高控制场合的智能化、自适应控制仪表,目前在国内还没有取得较好的研究成果。

并且,在形成商品化和仪表控制参数的自整定方面,一些先进国家虽已经有一批成熟的产品。

基于单片机的红外计数器设计

基于单片机的红外计数器设计

基于单片机的红外计数器设计红外计数器是一种利用红外传感器来检测物体通过的数量的装置。

它通常用于人员或物品数量统计的应用中。

本文将介绍基于单片机的红外计数器的设计原理和实现方法。

首先,我们需要明确设计的目标。

本计数器将用于统计通过固定区域的物体数量。

而红外传感器将用于检测物体的通过。

当物体途经红外传感器时,传感器会发出红外光束,通过物体的遮挡程度来检测物体是否通过。

通过计数和记录每次检测到物体通过的事件,我们就可以实现数量的统计。

接下来,我们需要选择合适的单片机来实现红外计数器。

常见的单片机有AVR、PIC和ARM等。

考虑到我们的功能需求和成本效益,我们可以选择一款性能适中且价格合理的AVR单片机。

在硬件方面,我们需要准备以下器件:1. 红外传感器:选择一款可靠的红外传感器,具有较高的灵敏度和稳定性。

2. 单片机:选择合适的AVR单片机,能够满足计数和通信需求。

3. 显示屏:为了实时显示计数结果,我们可以选择一个小型LCD显示屏。

4. 其他电子元件:如电阻、电容、继电器等,用于连接和支持电路。

在软件方面,我们需要编写单片机的代码,以实现正确的计数和显示功能。

首先,我们需要初始化红外传感器和LCD显示屏。

然后,编写中断服务程序,当红外传感器检测到物体通过时,中断服务程序会触发,并对计数器进行更新。

最后,我们需要编写主程序,用于控制计数器的行为和LCD显示屏的更新。

需要注意的是,为了保证计数的准确性,我们可能需要考虑避免因传感器噪声、环境光干扰或物体堆叠而引起的计数错误。

我们可以通过设置适当的检测阈值、使用滤波算法或加入其他传感器辅助来解决这些问题。

综上所述,基于单片机的红外计数器设计包括硬件和软件两个方面。

在选择合适的单片机和红外传感器的基础上,通过合理编写代码和进行适当的优化,我们可以设计出一个功能稳定、准确计数的红外计数器。

一种基于单片机的智能红外遥控系统的解码方法

一种基于单片机的智能红外遥控系统的解码方法

本 文提 出 的对 红外 遥控 器 编码进 行“ 习” 学 的原理 是 不 考 虑信 号 的 红外 编 码 格 式 , 即不 去 判 断接 收 进 来 的逻辑 是“ ” 是“ ”, 0还 1 直接计 算 同一 种逻 辑 持 续 的 时间 , 根 据持 续 时 间 的 比例 判 断 出两 种 不 同的 逻 并

将大 多数 常用 电器 的红外遥 控 器 的键 码 事先存 储 在 所谓 的万 能 遥控 器 中 , 因每个 家庭 选 购 的 电器组 合 各 不相 同 , 种方式 不 仅浪 费遥控 器 的存储 器资 源 , 这 而且 遇到某 种 电器 的红外 遥控 器键 码 不属 于 其设 想 的范
围内, 就失 去 了“ 能” 万 的功 能 。另一 种方 法是 在 专 门定 制 的红 外 遥控 器 中通 过软 件 判 断某 个 红 外遥 控 器 的编码 格式 , 从而 以特 定 的格式 对遥 控器 编码 进行 解 码 , 就是 “ 习” 也 学 原有 的红 外 遥控 器 各键 的编 码 , 并 将 编码存 储 在该遥 控 器 中 , 这样 ,学 习” 少个 红 外遥 控 器 的编码 , 能取 代 多少 个 遥 控器 对 相 应 的家 电 “ 多 就 进行控制, 这种 方 式更 能体 现 “ 能 ” 万 的含 义 。但 是 , 若某 种红 外 遥控 器 的编码 格 式 不 是 内置 软 件能 判 断 的, 还是 无法 进行 “ 习” 所 以这 种方 式也 不是 真正 的“ 学 , 万能 ” 。
辑 , 0或“” 示 , 用“ ” 1 表 经解 码 后 得到 红 外遥 控 器上 各 按键 的发射 编 码 , 并将 这 些发 射 编码 存 储起 来 , 要 需 时, 再将 相应 的发 射编码 经 调制后 发射 出去 。

基于STM32单片机的非接触式红外测温系统设计

基于STM32单片机的非接触式红外测温系统设计

价值工程0引言随着新冠疫情的全球性发展,传统接触式测温的测量方法和测量速度都已无法满足需求[1,2]。

相比于接触式测温,非接触式红外测温耗时短、灵敏度高、测量范围宽,而且不会对被测物体造成影响,因此非接触式红外测温已成为测量体温的主流方式[3,4]。

但目前市面上主要应用的测温系统大多只显示温度,不能直观地显示具体的测量部位,因此本文设计一种能同时显示热像图和具体温度的测温系统。

本文设计的非接触式红外测温系统采用STM32F103MCU 作为主控芯片,采用AMG8833红外热成像模块作为传感器,实现非接触式快速测温,并能够实时显示热像图,当温度超过设定阈值时能够报警,该系统使用方便快捷,具有一定的实用性。

1总体方案设计本系统主要基于STM32F103ZET6单片机开发平台,获取AMG8833红外热成像传感器采集的信息,完成信息计算与处理并显示被测物体温度,系统的整体设计方案如图1所示。

本设计主要实现的功能如下:①在TFT-LCD 显示屏上显示动态热像图;②在热像图的右侧显示三个数据(图像中的最大温度、最小温度和中间位置温度);③当中间位置温度大于预设值(系统默认预设值为50℃,显示在热像图下方)时,LED 灯亮,蜂鸣器响,表示警报;④通过按下设置按钮,可增加或减少预设值,每次增加或减少1℃;⑤按下复位按钮,系统还原到初始状态。

2系统硬件设计非接触式红外测温系统的硬件设计分为6个子模块,分别是AMG8833红外热成像模块、TFT-LCD 液晶显示模块、复位模块、按键模块、LED 模块和蜂鸣器模块。

AMG8833红外热成像模块:该模块可测量产生8*8的热像矩阵,通过I2C 通讯将数据传至MCU 。

在设计时将IIC_SCL 引脚与STM32的GPIOB6引脚连接,SDA 引脚与GPIOB7引脚连接,达到I2C 通讯的目的。

TFT-LCD 液晶显示模块:该模块采用RGB565编码,接收MCU 通过热像矩阵计算出的RGB 颜色矩阵,并实时显示热像图,同时可显示图像中的最大温度、最小温度和中间位置温度。

基于单片机的红外测温仪的毕业设计

基于单片机的红外测温仪的毕业设计

A S1 A S2 A S3 A S4 A S5 A S6 A S7 A S8
P00 P01 P02 P03 P04 P05 P06 P07
39 AS1 38 AS2 37 AS3 36 AS4 35 AS5 34 AS6 33 AS7 32 AS8
P20 P21 P22 P23 P24 P25 P26 P27
“Program File”栏中,选择先前在Keil中编译产生的
“.HEX”文件;一切完成后,点击play按键,即开始进行
仿真。

观察仿真结果,其最终仿真调试结果如下图所示:
程序调试图
程序调试图:
环境温度测试仿真图
环境温度测试仿真图:
目标温度测试仿真图
目标温度测试仿真图:
结论

对于本次设计任务,最终所做出的方案设计在功能
按键电路
1602液晶 显示器
时钟电路



复位电路
红外测温模 块
工作原理

当系统上电后,首先需进行时间校准(通过键盘相
应按键即可实现),之后开始键盘扫描查询,当有相应
按键按下时,单片机通过判断键值转入相应处理程序,
不论是环境温度测量还是目标温度测量,其处理过程基
本相同,首先启动TN9红外测温模块,通过中断来同步
基于单片机的红外测温仪 的设计与实现
作者: 学号: 导师:
设计方案

该系统的硬件结构主要由AT89C51、复位电路、时
钟电路、按键电路、SMC1602A液晶显示器及TN9红外测
温模块六部分构成。本设计采用单片机作为数据处理及
控制核心并根据键值的输入,利用液晶显示电路输出温
度值和测量时间。系统的总体框图如下图所示。

基于单片机实现红外测温仪设计

基于单片机实现红外测温仪设计

摘要温度的测量应用十分广泛。

测温方式一般可分为接触式和非接触式。

接触式测温优点是简单、可靠、测量精度高,但它必须让它的测温传感器和被测物体接触测量它们之间达到热平衡之后的温度,所以缺点是响应时间长。

而且在很多应用领域中要求测量温度的传感器不能与被测物体接触,这就需要一种非接触式的测温方式来满足要求。

红外测温是根据被测物体的红外辐射能量来确定物体温度的,不需和被测物体接触且具有不影响被测物体温度场、温度分辨率高、响应速度快、测温范围广、稳定性好等特点。

本论文正是应上述实际需求而设计的红外测温仪。

本文介绍了红外测温仪测温的基本原理和实现方法,提出了以STC89C51单片机为其核心控制部件的红外测温系统。

详细介绍了该系统的实现方式和构成,给出了软件的设计流程图和硬件原理图。

该系统主要红外测温传感器、时钟芯片、单片机、液晶显示、电源管理等部分组成。

红外测温传感器汇集其视场内目标的红外辐射能量并把红外能量聚焦在光电探测仪上并转变为相应的电信号。

STC89C51单片机负责控制启动接受时钟电路的时钟信号、温度测量、接收测量数据、并按照单片机中的温度值计算算法计算出目标的温度值和日期时间再通过LCD把结果显示出来。

关键词:单片机,红外测温,设计ABSTRACTTemperature measurement is widely used. Temperature measurement methods can be divided into contact and non -contact . Contact temperature advantage is simple, reliable, high accuracy, but the temperature sensor and the object it must be allowed to reach a temperature of -contact measurement after thermal equilibrium between them, so the disadvantage is that the response time is long . And in many fields of application is not required to measure a temperature sensor in contact with the measured object , which requires a non-contact temperature measuring method to meet the requirements. Infrared temperature measurement is to determine the temperature of the object based on the object 's infrared radiation energy , and the object without touching the object and has no impact on the temperature field, temperature , high resolution, fast response, wide temperature range, stable good characteristics . This paper is designed to be above the actual needs of the infrared thermometer .This paper introduces the basic principle and method of infrared thermometer temperature measurement is proposed to STC89C51 microcontroller core control components for infrared temperature measurement system . Details of the implementation and composition of the system , given the software and hardware design flow diagram . The system is mainly infrared temperature sensor , clock chip, microcontroller, LCD , composed power management section. Infrared temperature sensor brings together its field of infrared radiation energy targets and the infrared energy is focused on the photoelectric detector and converted into a corresponding electrical signal . STC89C51 SCM is responsible for controlling start accepting clock circuit clock signal , temperature measurement, receive measurement data and calculation algorithm to calculate the target temperature and the date and time according to the microcontroller temperature value then the results are displayed via LCD .Keywords: microcontroller, infrared temperature measurement, design目录摘要 (I)ABSTRACT (II)目录 (II)1绪论 (1)1.1本课题的研究背景和意义 (1)1.2本课题的研究现状与发展趋势 (1)1.3设计的目的和意义 (3)1.4本课题研究的内容 (3)1.5 本课题设计的任务 (4)2方案分析与选择 (5)2.1设计方案 (5)2.2方案论证 (6)3系统的硬件设计 (7)3.1单片机模块 (7)3.2红外测温模块 (10)3.2.1红外测温仪的原理和性能分析 (10)3.2.2MLX90614的特性 (15)3. 2 .3MLX90614引脚及其功能 (15)3.2.4 MLX90614 原理图 (16)3.3 DS1302时钟模块 (16)3.4电源模块 (18)3.5 LCD显示模块 (18)4 系统的软件设计 (22)4.1 软件的设计架构 (22)4.2 主控程序 (22)4.3应用模块 (23)4.3.1 MLX90614部分软件设计 (23)4.3 .2DS1302部分软件设计 (25)5系统仿真 (26)5.1软件介绍 (26)5.1.1 keil介绍 (26)5.1.2protues介绍 (31)5.1.3 DXP介绍 (32)5.2仿真图 (34)6、PCB板 (35)7系统调试 (36)7.1电路的组装 (36)7.1硬件调试、 (36)7.2软件调试 (37)7.3软硬件联合调试 (37)结论 ........................................................................................ 错误!未定义书签。

一种基于单片机的红外遥控信号解码新方法

一种基于单片机的红外遥控信号解码新方法

一种基于单片机的红外遥控信号解码新方法黄海阳;吴锤红【摘要】Infrared remote controllers are widely used in household electrical appliances. Infrared signal decoding methods are various in the application of embedded system. The hardware structure and software programming ideas of infrared remote controller decoding are briefly introduced. Aiming at two conventional infrared coding structure, the specific method which uses gating control mode of 51 MCU's timer for decoding is described, and the coding paradigm and the software flowchart are given.%红外遥控器在家电产品中已广泛使用。

在嵌入式系统应用方面,红外信号解码的方法也是多种多样。

本文简要介绍红外遥控器解码的硬件构成与软件编程思路,然后针对两种常用的红外编码结构,阐述了使用51单片机定时器门控方式解码的具体方法,并给出了代码示例与软件流程。

【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2012(012)007【总页数】4页(P30-33)【关键词】红外解码;门控方式;51单片机【作者】黄海阳;吴锤红【作者单位】福建农林大学机电工程学院,福州350002;福建农林大学机电工程学院,福州350002【正文语种】中文【中图分类】TN219引言随着家用电器、试听产品的普及,红外遥控器已经被广泛应用在各种类型的家电产品中(如遥控开关、智能开关等)[1]。

基于单片机的红外测温仪设计

基于单片机的红外测温仪设计
的化学物 和敏感 的表面物 。这 样那 些难 以接触 到或运 动着
本文所涉及 的红外 测温仪是一种典型的智 能化仪表 , 它 以单 片机作 为核心 , 在软件控制下 , 与其它硬件 电路相结合 , 实现智能化的体温测量。系统硬件组成环节主要有 : 温度传 感器 、 放大电路 、/ A D转换 电路 、 片机 系统 、 单 液晶显示模块 、 按键 、 c机与单 片机 通信 部 分。其软 件部 分包 括 : / P A D转 换 、 字滤 波 、 数 智能功能 以及显示等程序 。
因此 , 过对 物体 自身辐 射的红外 能量 的测量 , 能准 确地 通 便
l 一l 噩 l
显示器l
图 1 系统 的 总体 结 构 框 图
测定它的表面 温度 , 就 是红外 辐 射测 温所 依据 的客观 基 这
础 。
红外测温是利用测 量物体所 辐射 出来 的辐射 能量来 测 量物体温度 , 的理 论依据 是斯蒂 芬 一玻 尔兹曼 定律 , 体 它 物 的温度越 高 , 它所辐射 出来 的能量越 多 ] 。当温度 为 时 , 物体在所 有波长上 ( 物体 的辐 射几乎包 括所有 的波长 ) 的总
摘 要: 设计 以单 片机作 为整个测温仪的核心 , 结合 A D转换器 、 / 液晶显 示器等外部 设备 , 在软 件设计和硬 件
设计 的基 础上 , 设计 出一种 拥有 汉字显示逻辑判断等 智能型 电子测 温计。它提供 了一种 新 的温度 测量方 案 , 采用 红外 温度传感 器来测量温度 信号 , 可同时测量 目标 温度 和环境温度 , 并将测 量的数据经过放 大器 , 转换器送给 单片
辐射强度 为 :

3 系统 硬件 电路 的设计
3 1 光学红外传 感器 .

基于单片机的红外热成像体温检测仪

基于单片机的红外热成像体温检测仪

佳木斯大学学报(自然科学版)Vol. 38 No. 6Nov. 2020第 38 卷 第 6 期2020 年 11 月Journal of Jiamusi University ( Natural Science Edition )文章编号:1008 -1402(2020 )06 -0029 -04基于单片机的红外热成像体温检测仪①时昊S 窦艳芳2,*,崔月莹2(1.三明学院机电工程学院电子系电子信息工程专业,福建三明365004;2.佳木斯大学,黑龙江佳木斯154002)摘 要:为了实现对人体体温的非接触式、快速监测,设计一种基于单片机的红外热成像体温 检测仪。

本着简便实用、易于维护和成本低廉的设计目标,该装置以红外热成像传感器作为核心器件,LCD 液晶屏显示检测温度,配合外围设计。

实现了实时体温显示、声光提示、超温图像采 集、存储和WIFI 访问功能。

此装置在500ms 内即可测出人体体温,保证了测温的快速性。

测量精度为0. 3C ,满足体温检测要求。

关键词:温度测量;STC8A8K64S4A12 ;红外传感器;声光报警中图分类号:TP311文献标识码:A0 引 言当前,全国疫情防控不断积极向好态势发展,但疫情仍在全球流行,周边国家和地区的疫情持续蔓延,国内疫情也时有发生。

习近平总书记在中共中央政治局常务委员会会议上特别强调,“要认清当前形势,做好较长时间应对疫情的思想准备和工 作准备。

”面对形势的不稳定、不确定,一定要认真研究,科学、合理、细致、周密的制定好学校疫情防控,确保复工复学万无一失。

新冠肺炎前期临床表现又主要包括:发热、干咳、乏力。

所以,必须对出 入密集场所关口的人员进行体温测量[1]。

目前,大多数场所一般采用的是手持式红外测温仪[2]。

该方法不仅增加了工作人员交叉感染的风险,而且在人流量密集时效率低。

本设计基于单片机的红外热成像人体温度测量仪,是以STC8A8K64S4A12作为微处理器,搭配红外非接触式热成像测温传感器,根据被测人员的红外辐射能量来确定其对应的体温值。

基于单片机红外遥控开关的设计

基于单片机红外遥控开关的设计

基于单片机红外遥控开关的设计一、引言随着科技的发展和人们对生活品质的追求,智能化家居逐渐成为人们生活中的一部分。

其中,红外遥控技术是实现智能化家居的重要手段之一、本文将介绍基于单片机的红外遥控开关的设计方案,通过学习该方案,读者可以了解到红外遥控技术的原理和应用。

二、设计方案1.硬件设计本设计方案采用AT89S52单片机作为控制核心,通过红外接收头接收红外信号,并通过解码,将信号转化为数字信号;同时,使用继电器作为开关,通过控制继电器的通断,实现对电器设备的开关控制。

2.红外信号解码红外信号解码是实现遥控开关的关键步骤。

当用户按下遥控器上的按键时,红外发射器会发射一组特定的红外信号。

这组信号会被红外接收头接收,并通过解码器进行解码。

解码器将解码后的信号与预设的数据进行比对,确认遥控指令是否有效。

如果有效,则向单片机发送指令,控制继电器通断。

3.程序设计在单片机中,需要编写相关的程序,实现对红外信号的解码和继电器的控制。

首先需要配置单片机的I/O口为输入和输出模式,然后初始化红外接收头,设置外部中断,以便能够接收到红外信号。

接收到红外信号后,将解码后的数据与预设的数据进行比对,如果相同,则通过单片机的输出口控制继电器的通断,实现开关控制。

三、实验结果通过实验验证,基于单片机红外遥控开关的设计方案可以正常工作。

用户可以通过按下遥控器上的按键,控制继电器的通断,从而实现对电器设备的开关控制。

四、应用展望基于单片机红外遥控开关的设计方案可以广泛应用于智能化家居中,通过设置不同的红外编码,可以实现对不同设备的开关控制。

例如,通过不同编码实现对灯光、电视、空调等设备的开关控制。

此外,还可以通过增加传感器模块,实现对环境的监测和控制。

比如,根据温度传感器的数据,自动控制空调的开关,实现智能化温度控制。

总结:基于单片机红外遥控开关的设计方案利用了红外遥控技术和单片机控制技术,实现了对电器设备的智能化控制。

通过学习该方案,读者可以了解到红外遥控技术的原理和应用,以及单片机的应用。

红外遥控系统毕业设计基于单片机的红外遥控系统设计

红外遥控系统毕业设计基于单片机的红外遥控系统设计

《单片机设计》课程设计题目:基于单片机的红外遥控系统设计专业:电气工程系班级:姓名:学号:指导教师:小组成员:成绩:摘要随着社会的进展、科技的进步和人们生活水平的慢慢提高,各类方便于生活的遥控系统开始进入了人们的生活。

采纳单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随意设定等优势。

由于单片机具有集成度高、体积小、靠得住性高、价钱廉价等优势,其在机电一体化、工业操纵、仪器仪表和家用电器等领域取得了普遍应用。

当前单片机对家用电器操纵呈现出外形简单化、功能多样化、产品智能化的进展趋向。

红外遥控技术具有利用方便、功耗低、抗干扰能力强、价钱廉价的特点,因此它的应用前景十分广漠。

本课题以延伸红外无线遥控技术为目的,提出了一种红外遥控器集中操纵的方案,核心是设计出一个红外接收系统。

本设计以红外线作为传递信息的载体,可对受控对象的工作状态进行短距离无线操纵,适用于遥控工业、医疗、家用电器等设备的开闭状态。

并含有设备计数模块,可对处于工作状态的设备进行计数,并显示出来。

课题的重点在于通过软件实现二进制数据的解码工作,然后通过红外收发头进行数据传输操纵系统。

关键词:红外遥控;单片机操纵;显示模块目录1 引言........................................................................................................................................ - 4 -1.1 课题研究的目的........................................................................................................... - 4 -............................................................................................................................................. - 4 - 2设计任务及要求....................................................................................................................... - 5 -2.1红外遥控系统的设计与实现任务,要紧完成:........................................................ - 5 -2.2 红外遥控系统的设计要求:....................................................................................... - 5 -3 红外遥控系统的硬件设计...................................................................................................... - 6 -3.1 本设计方案思路......................................................................................................... - 6 -3.2 研发方向和技术关键................................................................................................. - 6 - ..................................................................................................................................................... - 7 - ...................................................................................................................................... - 7 -3.3.3 红外接收模块.................................................................................................. - 11 -3.3.4 LED模拟外围设备模块.................................................................................. - 12 -.................................................................................................................................... - 13 - 4 红外遥控系统的软件设计.................................................................................................... - 14 -4.1 主控程序..................................................................................................................... - 14 -4.2 遥控发射部份............................................................................................................. - 14 -4.3 遥控接收处置部份..................................................................................................... - 15 -5 测试结果及分析.................................................................................................................... - 15 -5.1 实验仪与运算机的连接............................................................................................. - 15 -5.2 硬件系统的调试......................................................................................................... - 16 -5.3 软件系统的调试......................................................................................................... - 16 -6 总结与体会............................................................................................................................ - 16 - 参考文献.................................................................................................................................... - 17 - 7附录程序代码....................................................................................................................... - 18 -1 引言1.1 课题研究的目的本设计要紧研究并设计一个基于单片机的红外发射及接收系统,实现对温度操纵、蜂鸣器、LED灯的隔离操纵。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国矿业大学徐海学院技能考核培训姓名:顾嘉诚学号: 22110818专业:信息11-2班题目:基于单片机的红外解码.温度及液晶显示专题:红外解码指导教师:宥鹏老师翟晓东老师设计地点:电工电子实验室时间: 2014 年 4 月通信系统综合设计训练任务书学生姓名顾嘉诚专业年级信息11-2班学号22110818设计日期:2014年4 月5日至2014 年4 月10 日同组成员:姜怀修,刘剑桥,顾嘉诚,彭传锁,何子豪,王业飞设计题目:基于单片机的红外无线控制设计专题题目:红外解码设计主要内容和要求:1.主要内容:2.单片机内部结构红外遥控解码C语言程序设Ds18b20的使用Lcd1602的使用2. 功能扩展要求环境温度液晶显示指导教师签字:目录正文 (5)1.概述 (5)1.1功能描述 (5)1.2单片机资源 (5)2.1管脚图 (5)3.1. 使用资源 (5)2.原理篇 (6)2.1红外发送及接收 (6)2.1.1红外接收概述 (6)2.1.2硬件及原理图 (7)2.1.3红外中断接收部分程序 (8)2.2温度原理 (9)2.2.1 DS18B20 的主要特性 (9)2.2.2原理图与硬件 (10)2.2.3 DS18B20时序和程序 (10)2.3 QC1602A (12)2.3.1 1602外部结构及管脚说明 (12)2.3.2 写命令/数据时序与部分程序 (13)3.效果图 (15)4.软件篇 (15)4.1程序框图 (15)4.1.1 Main函数 (15)4.1.2 中断 (16)4.1.3 60ms定时中断 (16)4.2 完整程序 (16)4.2.1 Project.c文件 (16)4.2.2 onewire.c 文件 (23)5.参考文献 (26)技能考核培训摘要:利用单片机所学内容进行拓展,我们实现了基于单片机的红外解码.温度及液晶显示。

Lcd液晶显示实时环境温度和接收显示红外遥控器的键值,在收到红外信号时会用蜂鸣器作为反馈,以提醒红外一体接收头有接到信号。

关键词:单片机液晶显示红外解码正文1.概述1.1功能描述Lcd液晶显示实时环境温度和接收显示红外遥控器的键值,在收到红外信号时会用蜂鸣器作为反馈,以提醒红外一体接收头有接到信号。

1.2单片机资源2.0资源与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz~33Hz三级加密程序存储器32个可编程I/O口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符2.1管脚图3.1. 使用资源P1:用于连接LCD1602的数据线P3.5,P3.7:分别连接LCD1602的RS,R/W控制脚P3.2:使用第二功能,用于接收红外信号P2.7:DS18B20数据脚P2.5:用于控制蜂鸣器2.原理篇2.1红外发送及接收2.1.1红外接收概述NEC 标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。

一个完整的全码=引导码+用户码+用户码+数据码+数据反码。

其中,引导码高电平9ms,低电平4.5ms;系统码8 位,数据码8 位,共32 位;其中前16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。

后 16 位为 8 位的操作码和 8 位的操作反码,用于核对数据是否接收准确。

收端根据数据码做出应该执行什么动作的判断。

连发代码是在持续按键时发送的码。

它告知接收端,某键是在被连续地按着。

NEC 标准下的发射码表示发射数据时0 用“0.56ms 高电平+0.565ms 低电平=1.125ms”表示;数据1 用“高电平0.56ms+低电平1.69ms=2.25ms”表示。

遥控器发射的信号:一体化接收头接收到的信号:需要注意的是;一体化接收头输了的波形是与发射波形是反向的。

我的遥控器使用的是NEC标准的WD6122芯片,遥控器编码如下:2.1.2硬件及原理图2.1.3红外中断接收部分程序void IR_IN() interrupt 0 using 0 //外部中断0程序{unsigned char j,k,n=0; //先定义变量,记住n=0EX0=0; //禁止中断,以免再次进入中断delay(15); //延时0.14ms*15=2.1msif(IRIN==1) //如果在这期间有高电平说明{ //信号不是来自遥控的,返回主程序EX0=1;return;}while(!IRIN){delay(1);} //死循环,等待9ms前导低电平信号的结束//////////////////////////////////////////////////////for(j=0;j<4;j++) //一共有4组数据{for(k=0;k<8;k++) //每组数据有8位{while(IRIN) {delay(1);} //死循环,等待4.5ms前导高电平的结束while(!IRIN) {delay(1);} //等待0.56ms低电平的结束,准备采集数据,while(IRIN) //开始采集数据{delay(1); //延时0.14ms,每过0.14ms时n就加1n++; //用n记录一共有多少个0.14msif(n>=30) //如果超过0.14ms*30=4.2ms{ //说明是乱码,放弃不要EX0=1;return;}}IRCOM[j]=IRCOM[j]>>1; //右移1位,xxxx xxxx变成0xxx xxx if(n>=8){IRCOM[j]=IRCOM[j]|0x80;}//但是如果不是0呢,//0xxx xxxx和0x80相或后变成了1xxx xxxx//这样这一们数据就被记录为1了/*想一下这里为什么是8呢,0.14ms*8=1.12ms,知道了吧*//*这样反复执行8次,8位数据就存在IRCOM[j]中了*/中了*/n=0; //n计数后一定要记得清0,否则下一次就不能准确计数了}}////////////////////////////////////////////////////if(IRCOM[2]!=~IRCOM[3]) //这里我们判断数据码和数据反码是不是相反{ //因为相反才是正确的,否则就放弃EX0=1;return;}beep();EX0=1; //记得开中断,你可以去掉这句话试一试}2.2温度原理2.2.1 DS18B20 的主要特性(1)适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电。

(2)独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。

(3)DS18B20 支持多点组网功能,多个DS18B20 可以并联在唯一的三线上,实现组网多点测温。

(4)DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

(6)可编程的分辨率为9~12 位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

(7)在9 位分辨率时最多在93.75ms 内把温度转换为数字,12 位分辨率时最多在750ms 内把温度值转换为数字,速度更快。

(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力。

(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

2.2.2原理图与硬件2.2.3 DS18B20时序和程序2.2.3.1初始化时序及程序//DS18B20初始化bit init_ds18b20(void){bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80); // 延时大于480usDQ = 1;Delay_OneWire(10); // 14initflag = DQ; // initflag等于1初始化失败Delay_OneWire(5);return initflag;}2.2.3.2写/读时序及写/读一字节程序//从DS18B20读取一个字节unsigned char Read_DS18B20(void) {unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}Delay_OneWire(5);}return dat;}//通过单总线向DS18B20写一个字节void Write_DS18B20(unsigned char dat) {unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);}2.3 QC1602A2.3.1 1602外部结构及管脚说明RAM 地址映射图控制器内部带有80*8位的RAM缓冲区2.3.2 写命令/数据时序与部分程序//写命令void write_com(uchar com) //液晶写命令{lcdrs=0;P1=com;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;}//写数据void write_data(uchar date) //液晶写数据{lcdrs=1;P1=date;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;}3.效果图4.软件篇4.1程序框图4.1.1 Main函数4.1.2 中断4.1.3 60ms定时中断4.2 完整程序4.2.1 Project.c文件#include<reg52.h>#include <absacc.h>#include "onewire.h" //单总线函数库#define uchar unsigned char#define uint unsigned intuchar code table[]="temperature:"; //液晶uchar code table1[]="infrared value:"; //液晶unsigned char IRCOM[7]; //定义数组,用来存储红外接收到的数据sbit lcden=P3^7; //液晶sbit lcdrs=P3^5; //液晶sbit IRIN=P3^2; //定义红外接收头的外部接口,即外部中断0 sbit BEEP=P2^5; //定义蜂鸣器接口,我的在P1^5uchar num; //液晶char show_clock; //显示周期控制char now_tem; //存得到的温度char shinow,genow; //当前温度的十个位char wendu_show_shi,wendu_show_ge; //温度送入液晶的ASCALL码 char hongwai_jian_zhi ; //红外送入液晶的ASCALL码void delay_lcd(uint z) //液晶延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//写命令void write_com(uchar com) //液晶写命令{lcdrs=0;P1=com;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;}//写数据void write_data(uchar date) //液晶写数据{lcdrs=1;P1=date;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;}void init_lcd() //液晶初始化{lcden=0;write_com(0x38);write_com(0x0e);write_com(0x06);write_com(0x10);write_com(0x80+0x00);}void init_show() //液晶初始显示{for(num=0;num<12;num++){write_data(table[num]);delay_lcd(5);}write_com(0x80+0x40);for(num=0;num<15;num++){write_data(table1[num]);delay_lcd(5);}ET0=1; //开定时中断EX0=1;}/*void init_infrared() // 红外初始化{IE=0x81;TCON=0X01;BEEP=1;IRIN=1;} *//******************************************/// 红外延时/*****************************************/void delay(unsigned char x){ //延时子程序unsigned char i; //延时约x*0.14mswhile(x--) //不同遥控器应设置不同的参数{for(i=0;i<13;i++){}} //参数的选择咱们先不管,先看这个}/*******************************************************/// 蜂鸣器/*******************************************************/void beep(){unsigned char i; //蜂鸣器发声子程序for(i=0;i<100;i++){delay(4); //这个得看你的蜂鸣器内部是否有振荡源BEEP=~BEEP;} //如果没有振荡源就应该输入脉冲信号BEEP=1;}/****************************************************/// 温度服务程序/****************************************************/void dis_work() // 温度显示处理{shinow=now_tem/10;genow= now_tem%10;//温度switch (shinow){case 0 :wendu_show_shi=0x30;break;case 1 :wendu_show_shi=0x31;break;case 2 :wendu_show_shi=0x32;break;case 3 :wendu_show_shi=0x33;break;case 4 :wendu_show_shi=0x34;break;case 5 :wendu_show_shi=0x35;break;case 6 :wendu_show_shi=0x36;break;case 7 :wendu_show_shi=0x37;break;case 8 :wendu_show_shi=0x38;break;case 9 :wendu_show_shi=0x39;break;}switch (genow){case 0 :wendu_show_ge=0x30;break;case 1 :wendu_show_ge=0x31;break;case 2 :wendu_show_ge=0x32;break;case 3 :wendu_show_ge=0x33;break;case 4 :wendu_show_ge=0x34;break;case 5 :wendu_show_ge=0x35;break;case 6 :wendu_show_ge=0x36;break;case 7 :wendu_show_ge=0x37;break;case 8 :wendu_show_ge=0x38;break;case 9 :wendu_show_ge=0x39;break;}//红外switch (IRCOM[2]){case 0x16 :hongwai_jian_zhi=0x30;break;case 0x0c :hongwai_jian_zhi=0x31;break;case 0x18 :hongwai_jian_zhi=0x32;break;case 0x5e :hongwai_jian_zhi=0x33;break;case 0x08 :hongwai_jian_zhi=0x34;break;case 0x1c :hongwai_jian_zhi=0x35;break;case 0x5a :hongwai_jian_zhi=0x36;break;case 0x42 :hongwai_jian_zhi=0x37;break;case 0x52 :hongwai_jian_zhi=0x38;break;case 0x4a :hongwai_jian_zhi=0x39;break;default:hongwai_jian_zhi= 0x21;break;}}/****************************/// 显示函数/*****************************/void show (){write_com(0x80+0x0d);write_data(wendu_show_shi);write_com(0x80+0x0e);write_data(wendu_show_ge);write_com(0x80+0x4F);write_data(hongwai_jian_zhi);}/*************************************************/// 主函数/**************************************************/void main(){TMOD=0X01;TH0=(65536-60000)/256; //定时TL0=(65536-60000)%256;EA=1; //定时器0BEEP=1;IRIN=1;EA=1;//开总中断//开外部中断0IT0=1;//边沿触发方式TR0=1;///////init_lcd();// init_infrared();init_show();while(1);}/***********************************************************/// 外部中断0 红外键值获取/***********************************************************/void IR_IN() interrupt 0 using 0 //外部中断0程序{unsigned char j,k,n=0; //先定义变量,记住n=0EX0=0; //禁止中断,以免再次进入中断delay(15); //延时0.14ms*15=2.1msif(IRIN==1) //如果在这期间有高电平说明{ //信号不是来自遥控的,返回主程序EX0=1;return;}while(!IRIN){delay(1);} //死循环,等待9ms前导低电平信号的结束for(j=0;j<4;j++) //一共有4组数据{for(k=0;k<8;k++) //每组数据有8位{while(IRIN) {delay(1);} //死循环,等待4.5ms前导高电平的结束while(!IRIN) {delay(1);} //等待0.56ms低电平的结束,准备采集数据,while(IRIN) //开始采集数据{delay(1); //延时0.14ms,每过0.14ms时n就加1n++; //用n记录一共有多少个0.14msif(n>=30) //如果超过0.14ms*30=4.2ms{ //说明是乱码,放弃不要EX0=1;return;}}IRCOM[j]=IRCOM[j]>>1; //右移1位,xxxx xxxx变成0xxx xxx//我们先认为这一位数据是0,现在已经送入一位数据了/*你肯定知道_cror_(x,1)和x>>1的区别吧*/if(n>=8){IRCOM[j]=IRCOM[j]|0x80;}//但是如果不是0呢,//0xxx xxxx和0x80相或后变成了1xxx xxxx//这样这一们数据就被记录为1了/*想一下这里为什么是8呢,0.14ms*8=1.12ms,知道了吧*//*这样反复执行8次,8位数据就存在IRCOM[j]中了*//*外层再循环4次,4*8=32位数据码全都在IRCOM[0],IRCOM[1],IRCOM[2],IRCOM[3]中了*/n=0; //n计数后一定要记得清0,否则下一次就不能准确计数了}}////////////////////////////////////////////////////if(IRCOM[2]!=~IRCOM[3]) //这里我们判断数据码和数据反码是不是相反{ //因为相反才是正确的,否则就放弃EX0=1;return;}beep();EX0=1; //记得开中断,你可以去掉这句话试一试}/**********************************************************/ // 定时中断服务程序/**************************************************************/void timer0() interrupt 1 //定时器0{TH0=(65536-60000)/256;TL0=(65536-60000)%256;show_clock++;//第一个周期 //获得温度if(show_clock==1)now_tem= rd_temperature(); //得到当前温度//第二个周期 //显示处理if(show_clock==2)dis_work();//第三个周期 //显示if(show_clock==3){show();show_clock=0;}}4.2.2 onewire.c 文件#include "reg52.h"sbit DQ = P2^7;//单总线延时函数#ifndef STC12void Delay_OneWire(unsigned int t){}#elsevoid Delay_OneWire(unsigned int t) {unsigned char i;while(t--){for(i=0;i<12;i++);}}#endif//通过单总线向DS18B20写一个字节void Write_DS18B20(unsigned char dat) {unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);}//从DS18B20读取一个字节unsigned char Read_DS18B20(void){unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}Delay_OneWire(5);}return dat;}//DS18B20初始化bit init_ds18b20(void){bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80); // 延时大于480usDQ = 1;Delay_OneWire(10); // 14initflag = DQ; // initflag等于1初始化失败Delay_OneWire(5);return initflag;}//DS18B20温度采集程序:整数unsigned char rd_temperature(void){unsigned char low,high;char temp;init_ds18b20();Write_DS18B20(0xCC);Write_DS18B20(0x44); //启动温度转换Delay_OneWire(200);init_ds18b20();Write_DS18B20(0xCC);Write_DS18B20 (0xBE); //读取寄存器low = Read_DS18B20(); //低字节high = Read_DS18B20(); //高字节temp = high<<4;temp |= (low>>4);return temp;}5.参考文献【1】Changing 博文/content/13/0629/23/10906019_296460021.shtml 【2】DS18B20 datasheet【3】AT89s52 datasheet【4】QC1602A datasheet【5】郭天祥网络教程。

相关文档
最新文档