×
单片机 > 单片机程序设计 > 详情

一个简单的18B20程序

发布时间:2020-08-25 发布时间:
|
   '//////////////////////////////////////

'读取DS18B20温度数据,并在LCD上显示出来

'设计者 啊艺

'编译器BASCOM-AVR1.11.8.1

'//////////////////////////////////////

$regfile = "M16def.dat"

$crystal = 1000000

Config 1wire = Portb.7                                      '定义单总线器件的接口

Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0       '定义单片机与LCD的接口,请书写在同一行

Config Lcd = 20 * 2

'*************************************************

Dim I As Byte

Dim C(2) As Byte

Dim T As Word

Dim Wendu As Single

Dim G As String * 10

Do

  Cls

 Cursor Off

  1wreset                                                   '单总线初始化

  1wwrite &HCC                                              '主机向单总线器件发送跳过ID码指令

  1wwrite &H44                                              '主机向单总线发送温度转换指令

  Waitms 800                                                '精度不同时间也不同,9位93.75ms,10位187.5ms,11位375ms,12位750ms

  1wreset                                                   '单总线初始化

  1wwrite &HCC                                              '主机向单总线器件发送跳过ID码指令

  1wwrite &HBE                                              '主机向单总线发送读取RAM指令

'单总线器收到读RAM指令后会跟着输出自己的9个字节的RAM数据,主机用数组C(i)保存前两个字节的温度数据

  For I = 1 To 2

    C(i) = 1wread()

  Next

'把两个单字节的温度数据合并为一个双字节,得到原始温度数据

  T = C(2) * 256

  T = T + C(1)

'在LCD上把16位的原始温度数据以十六进制的方式显示出来

  'Lcd Hex(t)

'如果温度为正,则T的最高位的4位都为0,否则为1

'负温度的计算:原始数据取反、加1、再乘以 0.0625

'正温度的计算:原始数据乘以 0.0625

  Locate 2 , 1

  If C(2) > 15 Then

    T = Not T

    T = T + 1

    Wendu = T * 0.0625

    'G = Fusing(wendu , "#.##")

    'Lcd "-" ; G ; "C"

    Lcd "-" ; Wendu

    Else

    Wendu = T * 0.0625

     'G = Fusing(wendu , "#.##")

    'Lcd "+" ; G ; "C"

    Lcd "+" ; Wendu

  End If

Wait 1                                                      '等待一秒钟,目的是让LCD显示清晰一点

Loop

End


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析