[51 汇编例程]用DS18B20做温度表实验 - 单片机应用 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 单片机应用

TOP

[51 汇编例程]用DS18B20做温度表实验
发表日期:2012-03-02 08:46:18 来源:麦克鼠单片机学习网 作者: 【 】 浏览:4046次 评论:0

单总线(1-Wire)系列实验

 
实验目的
1-Wire 网络也称为单总线,是Maxim旗下的Dallas公司的专利技术,具有严谨的控制结构,一般通过双绞线与1-Wire 元件进行数据通信。有关单总线的介绍文章和书籍很多,但是,与单片机的其他技术一样,要实实在在地理解和掌握这门技术,都需要实践。本实验完全用超简单单片机实验板搭建,初学者可以很轻松地、很廉价地学习和掌握单总线的技术,学会单总线温度检测元件DS18B20的使用和编程。这里给出的是BASCOM的BASIC语句编写的适合初学者的例程,简单易学。
难度等级:中级
硬件搭建
将超简单单片机实验套材中的DS18B20传感器实验板C型3位跳线按伺服电机的插法直接插入AVR主板的伺服电机端口(PORTC)的PC0组插针,即黑线接地,红线接正5V,白线接PC0。数码管的接插参见8段数码管实验,将端口PB0 - PB7 分别与1号实验板上排针A - G和O 搭接,端口PC0和PC1 分别与实验板上排针1、2 搭接即可 。
程序代码
'----------------------------------------------------------------------------------------------------
$regfile = "m48def.dat"
$crystal = 8000000
Config 1wire = Portc.0
'1-WIRE 指令常数定义
Const 1w_readrom = &H33
Const 1w_matchrom = &H55
Const 1w_skiprom = &HCC
Const 1w_searchrom = &HF0
Const 1w_alarmsrc = &HEC

Const 1w_readmem = &HBE
Const 1w_writemem = &H4E
Const 1w_copymem = &H48
Const 1w_convertt = &H44
Const 1w_recalle2 = &HB8
Const 1w_readpowerspl = &HB4
'结束 1-WIRE 指令常数定义
Dim I As Byte
Dim Ar(2) As Byte
Dim A(10) As Byte
Dim Temp_value As Single
Dim T As Integer
Config Portb = Output
Config Portc.1 = Output
Config Portc.2 = Output
Restore Daima
For I = 1 To 10
Read A(i)
Next I
Do
1wreset
1wwrite 1w_skiprom
1wwrite 1w_convertt
Waitus 800
1wreset
1wwrite 1w_skiprom
1wwrite 1w_readmem
For I = 1 To 2
Ar(i) = 1wread()
Next
1wreset

Temp_value = Ar(2)
Shift Temp_value , Left , 8
Temp_value = Temp_value + Ar(1)
Temp_value = Temp_value * 0.0625

T = Temp_value
Ar(1) = T / 10
Incr Ar(1)

Ar(2) = T Mod 10
Incr Ar(2)
For I = 1 To 100
Portb = A(ar(1))
Set Portc.2
Reset Portc.1
Waitms 10
Portb = A(ar(2))
Reset Portc.2
Set Portc.1
Waitms 10
Next
Loop
End
Daima:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99
Data &H92 , &H82 , &HF8 , &H80 , &H98
'
'
'使用端口PORTC.0
'
'读ROM
'匹配ROM
'跳过ROM匹配
'检索ROM
'告警检索
'
'读温度
'写温度
'复制温度数据至E2存贮器
'开始温度转换
'从E2存储器中调出温度数据
'读供电方式
'
'
'定义数码管显示数组
'定义字形数组
'有符号整形变量
'无符号整形变量
'配置端口PortB输出,做数码管显示端口
'配置端口PortC引脚1输出,控制个位数码显示
'配置端口PortC引脚2输出,控制十位数码显示
'初始化字形数组
'
'
'
'
'复位单总线设备
'发跳过序列号检测指令
'发开始温度转换指令
'等待完成转换,一般750微妙。
'
'
'发读温度指令
'先读出低8位温度数据
'再度高8位温度数据
'
'复位单总线设备
'
'将高8位数据存入变量Temp_value
'Temp_value 左移8位
'加入低8位数据
'乘0.0625,即DS18B20的测量精度为12位时
'的温度分辨率
'转换为无符号整形
'取整数得到十位数
'加1得到1 ~ 10 的字形数组的索引值,
'该索引从1开始
'取10的模得到个位数
'加1得到1 ~ 10 的字形数组的索引值
'
'十位数码管显示
'置Portc.2高电平,点亮十位数码管
'置Portc.1低电平,关闭个位数码管
'延时10毫秒
'个位数码管显示
'置Portc.2低电平,关闭十位数码管
'置Portc.1高电平,点亮个位数码管
'延时10毫秒
'循环显示100次,大约延时1秒
'返回,再次检测
'
'字形定义常量
'
'

程序讲解

DS18B20温度传感器
DS18B20温度传感器是Dallas Semiconductor公司出品的单总线温度传感器。在温度控制系统中被广泛采用,也是单片机学习入门时的主要学习对象,不但可以设计诸多与温度有关的实验,还可以学习单总线的使用。给器件的主要特点如下。
  1. 单总线接口。
  2. 测量温度范围为-55℃ ~ 125℃,在 -10℃ ~ 85℃ 范围内测量精度为0.5℃。
  3. 其测量精度可以程序控制为9至12位。
  4. 能用数据线即DQ端供电,并有内部EEPROM,可以在掉电的情况下保存相关数据。
1-Wire 单总线
1-Wire 单总线是一种主要应用在DS公司产品的串行通讯总线。BASCOM提供了一组语句专门处理单总线的通讯,下面一一介绍。

  1. 单总线配置语句
    语法: CONFIG 1WIRE = pin
    说明:
    配置单总线使用单片机的某个引脚,该语句覆盖开发系统中[选项] → [编译]菜单中的相关设置。一条语句只可以配置一个引脚用于单总线,因为你可以在一根单总线上挂接多个单总线设备。如此一来,你可以使用多个引脚配置成多个单总线。该语句自动配置相关的DDR和PORT寄存器的状态,无须人工配置。重要的是,配置成为单总线的引脚需外接4.7KΩ 电阻,单片机内部的上拉电阻不够。
  2. 单总线复位语句
    语法:
    1WRESET
    1WRESET ,PORT,PIN   其中:PORT=端口,PIN=端口引脚
    说明:
    该语句复位单总线,使单总线处于正确的状态。当配置了多个单总线时,需使用第二种语法来指定端口和引脚。

    例子:1wreset Pinb , 2 

  3. 单总线写语句
    语法:
    1WWRITE var1
    1WWRITE var1, bytes
    1WWRITE var1 , bytes , port , pin
    其中:
    var1=存放写入总线的数据变量
    bytes=写入字节数
    port=单总线端口
    pin=单总线引脚
    说明 :
    该语句向总线写入数据,当有多个单总线时,需指定端口和引脚。
  4. 单总线读语句
    语法:
    var2 = 1WREAD( [ bytes] )
    var2 = 1WREAD( bytes , port , pin)
    其中:
    var2=从总线读入的数据写入该变量
    bytes=写入字节数
    port=单总线端口
    pin=单总线引脚
    说明 :
    该语句将单总线上的数据如入一个变量,当有多个单总线时,需指定端口和引脚。
程序功能
该实验使用AVR单片机实验板配合DS18B20温度传感器模块和两位数码管模块共同完成。系统显示周围的温度变化,可以仅作温度测量实验,也可以用于其它单片机学习或是机器人或是创新制作中涉及温度测量的部分。视频材料中演示先是用烙铁头靠近DS18B20,温度迅速升高,然后移开烙铁头,用占酒精的棉签贴近DS18B20,温度开始迅速下降。
该实验程序实现两个目的:练习单总线,练习温度传感器DS18B20。比较用热敏电阻做温度计的实验可以看出,在A/D转换方面该实验较前者简单了许多,而且精度和稳定性是前者无法比的。但编程方面,为遵循单总线的读写规则,其程序要比热敏电阻的复杂的多。使用BASCOM的BASIC编程已大大简化了编程量,这也是我们选用BASCOM作为入门的首选的原因。当然我们也准备了相关的C和汇编的例程共学习者参考,请参见相关页面。


观看演示>>

 

 > 相关内容:

 
Tags:汇编 DS18B20 温度表 实验 责任编辑:博趣
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[51 汇编例程]I2C类 DS1307芯片做.. 下一篇[51 汇编例程]用热敏电阻做温度表

赞助商链接

最新文章

热门文章

推荐文章