基于单片机的红外遥控智能小车设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的红外遥控智能小车设计报告
毕业设计(论文)题目:基于单片机的红外遥控智能小车
西安邮电学院
毕业设计(论文)任务书
学生姓名指导教师职称工程师学院电子工程学院系部光电子技术
专业光电信息工程
题目基于单片机的红外遥控智能小车
任务与要求
任务:以51单片机为控制核心,实现具有自动避障、加速、减速等功能的红外遥控智能小车。
要求:1 搜集资料,熟悉单片机开发流程;熟悉红外传感器等相关器件;
掌握单片机接口和外围电路应用;具备一定的单片机开发经
验。
2 学会电路设计、仿真等相关软件的使用;
3 具备一定的硬件调试技能。
4 学会查阅资料;
5 学会撰写科技论文。
开始日期2010年3月22日完成日期2010年6月27日主管院长(签字) 年月日
西安邮电学院
毕业设计 (论文) 工作计划
学生姓名赵美英指导教师崔利平职称工程师学院电子工程学院系部光电子技术
专业光电信息工程
题目基于单片机的红外遥控智能小车
工作进程
主要参考书目(资料)
1、何立民,单片机应用系统设计,北京:航天航空大学出版社;
2、李广弟,单片机基础,北京:北京航空航天大学出版社,2001;
3、何立民,MCS-51系列单片机应用系统设计系统配置与接口技术,北
京航空航天大学出版社,1990.01;
4、赵负图,传感器集成电路手册,第一版,化学工业出版社,2004;
5、Atmel.AT89S51数据手册.
主要仪器设备及材料
1.普通计算机一台,单片机开发环境;
2.电路安装与调试用相关仪器和工具。
(如示波器、万用表、电烙铁、镊子、钳子等)。
论文(设计)过程中教师的指导安排
每周四进行交流与总结;其余时间灵活安排,及时解决学生问题。
对计划的说明
依学生实际情况,适当调整工作进度。
西安邮电学院
毕业设计(论文)开题报告
电子工程学院光电子技术系(部)
光电信息工程专业2006 级光电0601班课题名称:基于单片机的红外遥控智能小车
学生姓名:赵美英学号:05064028
指导教师:崔利平
报告日期: 2010年3月25日
说明:
本报告必须由承担毕业论文(设计)课题任务的学生在毕业论文(设计) 正式开始的第1周周五之前独立撰写完成,并交指导教师审阅。
西安邮电学院毕业设计 (论文)成绩评定表
西安邮电学院毕业论文(设计)成绩评定表(续表)
目录
摘要 (I)
Abstract.................................................................................................................................... I I 第1章引言.. (1)
第2章系统硬件设计及原理简介 (2)
2.1 单片机控制系统 (2)
2.1.1 AT89S52各引脚描述 (2)
2.1.2 定时器/计数器2 (4)
2.1.3 单片机最小系统 (6)
2.2 液晶显示 (6)
2.2.1 1602LCD接口引脚说明 (7)
2.2.2 LCD的控制方法 (7)
2.2.3 液晶与单片机连接电路 (10)
2.3 温度测量电路 (10)
2.3.1 DS18B20产品的主要特点 (10)
2.3.2 DS18B20的引脚介绍 (11)
2.3.3 DS18B20的使用方法 (12)
2.3.4 DS18B20控制电路 (13)
2.4 红外遥控 (14)
2.4.1 红外遥控器 (14)
2.4.2 红外接收头 (15)
2.5 直流电机驱动 (16)
2.6 按键中断电路 (18)
2.7 避障电路 (18)
第3章系统软件设计 (19)
3.1 主程序 (19)
3.2 液晶驱动子程序 (19)
3.3 温度检测子程序 (20)
3.4 电机驱动子程序 (21)
3.5 速度调整子程序 (22)
3.6 红外解码子程序 (23)
第4章硬件安装及调试总结 (25)
第5章结论 (26)
致谢 (27)
参考文献 (28)
附录1:源程序 (29)
1 main.c (29)
2 1602c.h (31)
3 ds18b20.c (33)
4 TC9012.h (36)
5 speed.h (38)
附录2: (40)
1 电路原理图 (40)
2 PCB图 (41)
3 元件清单 (42)
摘要
主要介绍了一款具有红外遥控、自动避障、温度检测等功能的智能小车的设计与制作,并详细介绍了单片机、温度传感器、1602LCD的原理及应用。
该小车以玩具小车为车体,以AT89S52单片机为整个系统的控制核心,控制由三极管组成的桥电路来驱动直流电机。
使小车运动,采用
HS0038红外一体接收头接收遥控信号,由单片机解码,实现对小车的遥控控制,红外二极管及HS0038红外接收头组成小车的自动避障电路。
为了实时观察小车运行状态,还配备了指示灯以显示小车行进方向。
另外,温度检测及显示电路可实现温度的实时监测。
本系统采用模块化设计,软件用C语言编写,采用了软件的多任务结构,提高了CPU的利用率和系统的灵活性。
本设计结构简单,较容易实现,具有高度的智能化和自动化。
关键词:AT89S52 直流电机红外遥控HS0038 解码
Abstract
This article introduces an infrared remote control with automatic obstacle avoidance, the temperature detection function of the intelligent car design and production. The Principle and Application of microcontroller, temperature sensor and 1602LCD is the focus of the system.
The car to toy car for the body to AT89S52 microcontroller core of the w- hole system of control, control the composition of the bridge from the transis- tor to drive the DC Circuit. Make car movement, one infrared receiver with HS0038 first to receive remote control signals for the MCU decoding, achiev- ing control of the car's remote control, infrared diode and the composition of car HS0038 infrared receiving circuit of automatic obstacle avoidance. In or- der to observe the car running real-time, is also equipped with lights to show the car moving direction. In addition, the temperature detection and display circuit can realize real-time monitoring of temperature.
The system is modular in design, software written using C language, using the software's multi-task structure, increase the CPU utilization and system flexibility. The design is simple, relatively easy to implement, with a high degree of intelligence and automation.
Key words:MCU DC motor Infrared Remote Control HS0038 Decode
第1章引言
单片机以其强大的控制能力已经被广泛应用于诸多领域,配以各种外部接口及传感器可以实现系统的智能化与自动化。
无论是在工业控制、医疗卫生,还是在国防军事、航天航空领域,微控制器都起着举足轻重的作用。
从最初的8位控制器到现在的16位、32位控制器都还有很大的发展和应用空间。
随着经济的不断发展,人们的生活水平也在不断的提高,车已经成为生活水平高低的一种象征。
大人想要一辆真正的车,小孩子也想要一辆属于自己的车。
此次设计的遥控小车,具有遥控的功能,可以模拟真的小车,更是小朋友们心中理想的玩具。
今天,电子行业也发展的非常快,电子产品的价格在不断的下调,所以这款遥控小车的电子元件的成本已经不是很高,集成芯片的工艺也不断更新,功能也非常强大,所以设计这种遥控小车已经不是难事。
智能遥控车的设计包含机械系统构建、控制系统硬件配置、传感技术、控制算法的程序编写等。
通过对这些技术的研究讨论,能更进一步了解现代智能技术。
本次设计的这款智能遥控小车在普通玩具车小车的机械部分做了改进,使之可以实现左右转向和前进速度控制,因此更加接近真实的车辆。
“智能遥控车”运用单片机和红外传感器控制小车运动。
遥控器采用普通电视遥控器,接收部分采用专用的红外接收头接收,能够将接收到的信号解调去掉载波,输出脉宽不等的脉冲,将信息送给单片机进行处理,送出控制信号来控制小车的前进、后退、左右转弯、加减速,H桥电路来控制电机的正反转来实现小车的前进后退。
另外该小车还具有检测温度并显示的功能,可实现温度的实时监测。
第2章系统硬件设计及原理简介
按照设计要求,系统可以分为以下几个基本功能模块:遥控接收模块、液晶显示模块、电机驱动模块、避障模块、温度检测模块等。
系统结构框图如图2-1所示。
图2-1 系统结构
框图
有些模块的功能是由硬件完成,有些模块的功能由软、硬件配合完成。
下面将详细介绍各模块的基本原理及设计方法。
2.1 单片机控制系统
AT89S52 是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程Flash。
2.1.1 AT89S52各引脚描述
1 P0口:P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具
有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,
输出指令字节。
程序校验时,需要外部上拉电阻。
2 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1口输出缓冲器能驱动4个TTL 逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如表1所示。
表1 AT89S52单片机P1口第二功能
在flash编程和校验时,P1口接收低8位地址字节。
3 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
4 P3口:P3口是一个具有内部上拉电阻的8 位双向I/O口,p2 输出缓冲器能驱动4个TTL 逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如表2所示。
在flash编程和校验时,P3口也接收一些控制信号。
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
5 RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲,在此期间当访问外部数据存储器,将跳过两次PSEN
信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
表2 AT89S52 P3口特殊功能
2.1.2 定时器/计数器2
定时器/计数器2是一个16位定时器/计数器,是定时器或外部事件计数器。
定时器2有三种操作方式:捕获方式、自动重装方式和波特速率发生器方式。
工作方式由T2CON的控制位选择。
1 定时器/计数器2控制寄存器T2CON
T2CON可位寻址,地址为0C8H。
其各位定义如表3所示。
表3 T2CON位定义
1,TF2置位后只能用软件清除。
当RCLK=1或TCLK=1时,TF2将不被置位。
EXF2:在捕捉/重装模式下,T2的外部触发标志。
当EXEN2=1时,引脚T2EX/P1.1的负跳变,使EXF2=1,并产生T2中断。
EXF2只能用软件清除。
当DCEN=1时,T2处于向上/向下计数模式,EXF2部引起中断。
RCLK:接收时钟允许。
当RCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的接收时钟;
当RCLK=0时,T1的溢出脉冲将作为串行接收时钟。
TCLK:发送时钟允许。
当TCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的发送时钟;
当TCLK=0时,T1的溢出脉冲将作为串行发送时钟。
EXEN2:T2外部允许。
当EXEN2=1时,T2EX的负跳变引起T2捕捉或重装,此时T2不能用做串行口的串行时钟。
当EXEN2=0时,T2EX的负跳变将不起作用。
TR2:T2启动控制位。
当TR2=1时,启动T2;TR2=0时,停止T2。
C/T2:定时器/计数器2工作方式选择位。
C/ T2=0,为定时工作方式;C/ T2=1,为计数工作方式。
CP/RL2:T2捕捉/重装功能选择位。
当CP/ RL2=1且EXEN2=1时,引脚T2EX/P1.1的负跳变引起捕捉操作。
当CP/ RL2=0且EXEN2=1时,引脚T2EX/P1.1的负跳变引起自动重装操作。
当CP/ RL2=0且EXEN2=1时,T2溢出将引起捕捉自动重装操作。
2定时器/计数器2模式寄存器T2MOD
表4 T2MON位定义
位序D7D6D5D4D3D2D1D0
位标志——————T2OE DCEN
T2MOD不可位寻址,地址为0C9H。
其各位定义如表4所示。
T2OE:定时器2输出允许位。
当T2OE=1时,允许时钟输出至引脚T2/P1.0;
当T2OE=0时,禁止引脚T2/P1.0输出。
DCEN:计数器方向控制。
当DCEN=0时,T2自动向上计数;
当DCEN=1时,T2向上/向下计数方式,由引脚T2EX状态决定计数方向。
3 定时器/计数器2操作方式选择见表5
表5 定时器/计数器2操作模式C/ T2 RCLK+TCLK CP/ RL2 T2OE TR2 模式
X 0 0 0 1 16位自动重装模式
X 0 1 0 1 16位捕捉模式
X 1 X X 1 波特率发生器模式
X 1 X 1 1 时钟输出模式
X X X X 0 T2停止
2.1.3 单片机最小系统
单片机最小系统包括振荡电路和复位电路,见图2-2所示。
晶振采用12M 晶振,指令周期为1us,复位电路采用上电复位和手动按键复位。
图2-2 单片机最小系统
2.2 液晶显示
液晶显示在电子产品设计中使用率相当高,普通的七段数码管显示器只能显示数字,若遇到要显示英文字符时,则一定会选择使用液晶显示器我们所用的LCD模块,其背面含有控制电路,其上面有专门的IC来完成LCD的动作控制,在自行设计的接口中,只要送入适当的命令码和欲显示的数据,LCD便会将字符显示出来,控制方法非常简单。
其基本特性如下:
A.容易和4Bit/8Bit MPU相连;
B.可选择5×7或5×10点阵字符;
C.显示数据RAM容量:80×8Bit (80字符);
D.字符发生器ROM能提供用户所需字符库或标准库; 字库容量:192个字符(5
×7点字型); 32个字符(5×10点字型);
E.DDRAM和CGRAM都能从MCU读取数据;
2.2.1 1602LCD接口引脚说明
一般市售的LCD都有统一的引脚,共有16个引脚,其外观如图2-3所示,其中有8个是数据引脚、3个控制引脚、5个接地和电源脚。
各引脚号及其功能如表6所示。
表6 1602LCD引脚说明
图2-3 1602LCD外观
2.2.2 LCD的控制方法
通过单片机来控制LCD模块,方法十分简单,LCD模块其内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚来控制。
所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志(busy flag),此标志用来告知LCD内部正在工作,当此位为0时,才可以写入指令或数据。
1602模块的设定,读写,与光标控制都是通过指令来完成,共有11条指令,如表7所示。
表7 1602LCD指令码
RS R/W D7 D6 D5 D4
D3 D2 D1 D0
功能
0 0 0 0 0 0
0 0 0 1
清屏
0 0 0 0 0 0
0 0 1 *
复位
0 0 0 0 0 0
0 1 I/D S
内部方式设置
0 0 0 0 0 0
1 D C B
显示开关控制
具体描述如下:
指令1:清显示,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。
R/L,高向左,低向右。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:
低电平时为单行显示,高电
平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。
指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数 (将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符) 。
指令8:置显示地址,第一行为:00H——0FH,第二行为:40H——4FH。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
1602LCD的读写操作包括:读状态、写指令、读数据、写数据,且每种操作都遵循严格的操作时序。
读写操作时序如表8所示,读操作时序图如图2-4所示,写操作时序如图2-5所示。
基本时序参数如表9所示。
表8 1602LCD读写操作时序
图2-4 读操作时序
图2-5 写操作时序
表9 1602LCD操作时序参数
时序参数符号极限值单
位测试条件
最小值典
型
值
最大
值
E信号周期t
C
400 - - ns 引脚E
E脉冲宽度t
PW
150 - - ns
E上升沿/t
R ,t
F
- - 25 ns
下降沿时间
地址建立时间t
SP1
30 - - ns 引脚E、
RS、R/W
地址保持时间t
HD1
10 - - ns
数据建立时间(读操作)t
D
- - 100 ns 引脚
DB0
~
DB7
数据保持时间(读操作)t
HD2
20 - - ns
数据建立时间(写操作)t
SP2
40 - - ns
数据保持时间(写操作)t
HD2
10 - - ns
2.2.3 液晶与单片机连接电路
1602可与单片机相连的引脚有11个,其中3个控制端、8个数据端,3个控制端RS、RW、E分别接单片机的P15、P16、P17脚,8个数据端DB0—DB7依次接单片机的P20—P27。
如图2-6所示。
图2-6 1602LCD 于单片机连接图
2.3 温度测量电路
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
2.3.1 DS18B20产品的主要特点
●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电
●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
● DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、
0.125℃和0.0625℃,可实现高精度测温
●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
●测量结果直接输出数字温度信号,以串行总线传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力
●负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2.3.2 DS18B20的引脚介绍
TO-92封装的DS18B20的引脚排列见图2-7,引脚说明如表10所示。
表10 DS18B20详细引脚功能描述
图2-7 DS18B20底视图
2.3.3 DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
1. DS18B20的复位时序
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
2.DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
3.DS18B20的写时序
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO 总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
2.3.4 DS18B20控制电路
DS18B20与单片机的连接电路非常简单,只需将传感器的数据端与单片机相连,并接4.7K的上拉电阻即可实现单片机与传感器的通信。
电路如图2-8:
图2-8 DS18B20
与单片机连接图
2.4 红外遥控
红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
本次设计采用普通电视遥控器,其处理器为TC9012。
2.4.1 红外遥控器
红外遥控器是以红外发光二极管发射940nm的红外光,来传送信号。
下面将详细介绍红外遥控器发射的信号格式及“0”、“1”信号的定义方式。
1. 数据格式
当我们按下遥控器的按键时,遥控器将发出如图2-9的一串二进制代码,我们称它为一帧数据。
根据各部分的功能。
可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
由图2-9分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。
当接收到此码时.表示一帧数据的开始。
单片机可以准备接收下面的数据。
地址码由8位二进制组成,共256种.图中地址码重发了一次。
主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
图中的地址码为十六进制的0EH(注意低位在前)。
在同一个遥控器中.所有按键发出的地址码都是相同的。
数据码为8位,可编码256种状态,代表实际所按下的键。
数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。
如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。
在同一个遥控器上.所有按键的数据码均不相同。
在图2-9中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前),两者之和应为0FFH。
2. 位定义
不同的芯片对“O”和“1”的编码有所不同。
通常有曼彻斯特编码和脉冲宽度编码。
TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其“O”码和“1”码如图2-10所示(以遥控接收输出的波形为例)。
“O”码由O.56ms低电平和0.56ms高电平组合而成,脉冲宽度为1.12ms。
“1”码由0.56ms低电平和1.69ms高电平组合而成,脉冲宽度为2.25ms。
在编写解码程序时,通过判断脉冲的宽度,即可得到“O”或“1”。
图2-9 按键的编码
波形图。