DS18B20温控电动机实验.docx
- 文档编号:12111824
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:10
- 大小:18.79KB
DS18B20温控电动机实验.docx
《DS18B20温控电动机实验.docx》由会员分享,可在线阅读,更多相关《DS18B20温控电动机实验.docx(10页珍藏版)》请在冰豆网上搜索。
DS18B20温控电动机实验
单片机课程设计论文
DS18B20温控电动机实验
学院:
**********
专业:
************
班级********
姓名:
*******8
学号:
*********8
DS18B20温控电动机实验
1、设计简介
本实验首先通过18B20测量温度,温度用数码管显示。
然后通过温度的高低控制电动机的转度。
本设计可用于温度的测控、室温的控制、温度调节、温度报警等方面。
二、18B20、数码管和电动机的简介
1.18B20单线数字温度传感器,即“一线器件”,其具有独特的优点:
(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
(2)测量温度范围宽,测量精度高DS18B20的测量范围为-55℃~+125℃;在-10~+85°C范围内,精度为±0.5°C。
(3)在使用中不需要任何外围元件。
(4)持多点组网功能多个DS18B20可以并联在惟一的单线上,实现多点测温。
(5)供电方式灵活DS18B20可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
(7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(8)掉电保护功能DS18B20内部含有EEPROM,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
18B20具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
2.数码管
数码管是一种半导体发光器件,其基本单元是发光二极管,是单片机系统中最常用的一种显示输出,主要用于单片机控制中的数据输出和状态信息显示。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
本实验用的是共阳八段数码管。
8段数码管示意图 动态驱动示意图
共阳数码管编码表
3.直流电动机
实验板上采用的是直流电机的经典控制电路H桥电路控制的可以使直流电机正转反转停止加速减速等各种那个操作。
下面介绍一下H桥电路的原理
H桥式电机驱动电路包括4个三极管和一个电机。
要使电机运转,必须导通对角线上的一对三极管。
根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。
要使电机运转,必须使对角线上的一对三极管导通。
例如,如下图所示,当Q1(或Q3)管和Q4(或Q2)管导通时,电流就从电源正极经Q1(或Q3)从左至右穿过电机,然后再经Q4(或Q2)回到电源负极。
按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。
当三极管Q1(或Q3)和Q4(或Q2)导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。
三、实现的主要功能
测温:
18B20测温,然后通过数码管显示出来。
温度上下线为20~-20,超过温度上下线相应的LED灯亮,电动机转动,则加相应的设备可以使温度降低或者升高到温控范围内。
四、设计过程
1.流程图
启动温度转换
初始化18b20
开始
转换出的温度
通过数码管显示
相应的LED灯亮,低温或者高温灯。
电动机转动
超过温度上下限
2.程序设计过程
本实验的核心元件是18B20,首先是对18B20的程序设计,设计好温度上下限值为【30,20-】,调用数码管显示温度的程序块,超过30度时调用定时器中断使电动机转动,提醒温度上限的LED灯亮。
引脚排列
1)18B20程序模块
DS18B20的一线工作协议流程是:
初始化→ROM操作指令→存储器操作指令→数据传输。
其工作时序包括:
*初始化时序
*写时序
*读时序
(1)初始化
单片机首先发出一个低电平脉冲,然后释放总线变为高电平,并在随后的时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。
若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有低电平出现,如果有,在总线转为高电平后将总线电平拉低做出响应存在脉冲,告诉单片机已做好准备。
若没有检测到就一直在检测等待。
(2)读、写一字节
各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。
因此首先要搞清主机是如何进行写0、写1、读0和读1的。
写周期最少为60微秒,最长不超过120微秒。
写周期一开始做为主机先把总线拉低1微秒表示写周期开始。
随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。
若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。
而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。
(3)所有程序:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^3;//18B20数据线
sbitDC=P3^0;//电动机端口
sbitHI_LED=P1^3;//高温报警灯
sbitLO_LED=P1^4;//低温报警灯
ucharcodeshumaguan[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//数码管对照表
ucharcodexiaoshu[]=
{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,
0x06,0x07,0x08,0x08,0x09,0x09};//小数位对照表
charfanwei[]={33,-20};//温控范围
ucharcurrentT=0;//当前温度值的整数部分
uchartemp[]={0x00,0x00};//从18B20读取的温度
uchardigit[]=(0X00,0X00,0X00);//待显示的小数位、个位、十位
bitHI=0,LO=0;//温控LED灯
bitDS18B20=1;//18B20正常的标志
//延时
voidDelay(uintx)
{
while(--x);
}
//初始化18B20
ucharInit_DS18B20()
{
ucharstatus;
DQ=1;Delay(8);
DQ=0;Delay(90);
DQ=1;Delay(8);
status=DQ;
Delay(100);
DQ=1;
returnstatus;//成功完成初始化时返回0
}
//读一字节
ucharReadOneByte()
{
uchari,dat=0;
DQ=1;_nop_();
//8个字节
for(i=0;i<8;i++)
{
DQ=0;dat>>=1;DQ=1;_nop_();_nop_();
if(DQ)dat|=0x80;Delay(30);DQ=1;
}
returndat;
}
//写一字节
voidWriteOneByte(uchardat)
{
uchari;
//8个字节
for(i=0;i<8;i++)
{
DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;
}
}
//读温度值
voidRead_Tempreature()
{
if(Init_DS18B20()==1)//18B20不存在,出现错误
DS18B20=0;
else
{
WriteOneByte(0xCC);//跳过序列号
WriteOneByte(0x44);//温度转换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 温控 电动机 实验