历史上的今天

今天是:2024年10月21日(星期一)

正在发生

2019年10月21日 | Atmega16单片机实验:DS18B20和ad采集显示程序

发布者:数字探险家 来源: eefocus关键字:Atmega16  单片机  DS18B20  ad采集  显示 手机看文章 扫描二维码
随时随地手机看文章

rem Main.bas file generated by New Project wizard
rem
rem Created:   周日 9月 16 2018
rem Processor: ATmega16
rem Compiler:  BASCOM-AVR

rem Write your code here

$regfile = "m16def.dat"
$crystal = 2000000
Config 1wire = Portb.0                               '定义BS18B20接在PB0上
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 20 * 4
$baud = 19200
Cls

'Dim SysDS18B20_1 As Byte
'Dim SysDS18B20_2 As Byte

Dim Cgqidi_1(8) As Byte                                    '传感器id1数组变量
Dim Cgqidi_2(8) As Byte                                    '传感器id2数组变量
Dim Cgqidi_3(8) As Byte                                    '传感器id3数组变量
Dim Cgqidi_4(8) As Byte                                    '传感器id4数组变量
Dim Cgqidi_5(8) As Byte                                    '传感器id5数组变量
Dim Cgq_zhuangtai(5) As Byte                               '传感器——状态变量
Dim Xianzai__wendu(5) As Single                            '现在——温度变量

Declare Sub SUAXIN___WENDU()    '声明刷新转换温度过程子程序
Declare Sub FAXIAN_CGQs()        '声明发现传感器过程子程序

Call FAXIAN_CGQs()                 '调用发现——传感器过程子程序
Cls
Waitms 500





Do
  Call SUAXIN___WENDU()'转到刷新转换温度过程子程序
  Locate 1 , 1
  Lcd Fusing(XIANZAI__WENDU(1) , "#.##");"C    DS18B20-1"
  Locate 2 , 1
  lcd Fusing(XIANZAI__WENDU(2) , "#.##") ; "C   DS18B20-2"
  Locate 3 , 1
  Lcd Fusing(xianzai__wendu(3) , "#.##") ; "C    DS18B20-3"
   Locate 4 , 1
   Lcd Fusing(xianzai__wendu(4) , "#.##") ; "C    DS18B20-4"
  Waitms 1500

Config Adc = Single , Prescaler = Auto , Reference = avcc
  Start Adc
  Dim W As Word , Channel As Byte , B As Single , D1 As Single , D2 As Single                                                '加插 5V 的短路块

  Channel = 1
  W = Getadc(channel)
  b=5*w                       'B = 2.98 * W
  D1 = B / 1023
  Locate 2 , 1
'Lcd  "AD1= "
  Locate 4 , 1
  Lcd Fusing (d1 , "#.###");    "V     ADC"

  Loop
  End

'刷新转换温度过程子程序
  Sub SUAXIN___WENDU()
  Dim Readdata(9) As Byte
  Dim Temperature As Word
  Dim WENDU As Single
  Dim SysDS18B20_1 As Byte
  Dim CGQidI_ As Byte
'启动温度转换
  1wreset
  1wwrite &HCC
  1wwrite &H44
  Waitms 800
  For Cgqidi_ = 1 To 5
    If CGQ_ZHUANGTAI(CGQidI_) = 1 Then
       1wreset
       1wwrite &H55
'匹配总线ID
  For SysDS18B20_1 = 1 To 8
          If CGQidI_ = 1 Then : 1wwrite CGQidI_1(sysDS18B20_1)
          Elseif CGQidI_ = 2 Then : 1wwrite CGQidI_2(sysDS18B20_1)
          Elseif Cgqidi_ = 3 Then : 1wwrite Cgqidi_3(sysds18b20_1)
          Elseif Cgqidi_ = 4 Then : 1wwrite Cgqidi_4(sysds18b20_1)
          Elseif Cgqidi_ = 5 Then : 1wwrite Cgqidi_5(sysds18b20_1)
          End If
       Next
       1wwrite &HBE
       For SysDS18B20_1 = 1 To 9
          Readdata(sysDS18B20_1) = 1wread()
   Next
   Temperature = Readdata(2) * 256
   Temperature = Temperature + Readdata(1)
   If Readdata(2) > 15 Then
          Temperature = Not Temperature
          Temperature = Temperature + 1
          WENDU = Temperature * 0.0625
          WENDU = 0 - WENDU
       Else
          WENDU = Temperature * 0.0625
       End If
       XIANZAI__WENDU(CGQidI_) = WENDU
    Else
    XIANZAI__WENDU(CGQidI_) = -255                      '如果传感器不存在则设置为-255度
    End If
Next
End Sub







'查找传感器,总线上必须挂有至少一个传感器
Sub FAXIAN_CGQs()
  Dim SysDS18B20_4 As Byte
  Dim FAXIAN_CGQ As Byte

  Locate 1 , 1
  Lcd "FAXIAN_ CGQ"

  FAXIAN_CGQ = 0
  CGQidI_1(1) = 1wsearchfirst()'开始寻找第一个传感器
  CGQ_ZHUANGTAI(1) = 1
  Incr FAXIAN_CGQ


  For Sysds18b20_4 = 2 To 5
    If SysDS18B20_4 = 2 Then CGQidI_2(1) = 1wsearchnext()
    If SysDS18B20_4 = 3 Then CGQidI_3(1) = 1wsearchnext()
     If Sysds18b20_4 = 4 Then Cgqidi_4(1) = 1wsearchnext()
      If Sysds18b20_4 = 5 Then Cgqidi_5(1) = 1wsearchnext()

'寻找下一个传感器
  If Err = 1 Then Exit For         '错误代码为1则退出循环
    CGQ_ZHUANGTAI(sysDS18B20_4) = 1
    Incr FAXIAN_CGQ
   Waitms 1000
   Next
  Cls
  Waitms 500
  Locate 1 , 1
  Lcd "FAXIAN_ " ; FAXIAN_CGQ ; " CGQs"
  Waitms 1000
End Sub


 

关键字:Atmega16  单片机  DS18B20  ad采集  显示 引用地址:Atmega16单片机实验:DS18B20和ad采集显示程序

上一篇:ATmega2560单片机12路PWM输出的程序 每路PWM可独立控制
下一篇:控制单个单片机IO的按键+定时器10ms定时器程序

推荐阅读

1.接出来一个I/O口,然后设置反转,用示波器查看反转周期。2.软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK)便是执行时间。
丰田汽车宣布要在 2020 年冬季在日本销售超小型纯电动汽车,而且车型分成了一个系列,目的是往超小型往日本家用购物等日常的近距离交通。这台车长约 2.5 米,宽约 1.3 米,最高时速为 60 公里,续航里程为 100 公里,在东京车展进行展出。 外面看上去真是方方的 虽然这车看起来就是一台老头乐,但是丰田在屏幕和仪表显示方面也是力求满足年轻...
10月19日,中兴终端有限公司成立,注册资本1亿人民币,法定代表人为倪飞。图片来源:企查查企查查显示,该公司经营范围含信设备制造;软件开发;移动通信设备销售;通讯设备销售;电子产品销售;移动通信设备制造;互联网销售(除销售需要许可的商品);信息技术咨询服务;国内贸易代理;移动终端设备销售;移动终端设备制造;软件销售;货物进出口;物联...
10月20日,瑞声科技发布公告称,公司的间接全资附属公司益增投资与株式会社东阳理化学研究所订立股权转让协议,根据股权转让协议的条款及条件,株式会社东阳理化学研究所同意出售而益增投资同意购买东阳精密机器(昆山)有限公司的100%股权,代价为人民币4.5亿元。于收购事项完成后,目标公司将成为公司的间接全资附属公司,其财务业绩亦将于公司综合财务报...

史海拾趣

问答坊 | AI 解惑

ISE调用modelsim进行仿真的实用的设置

安装的是ISE10.1和ModelSim6.2b,先安装的ISE,然后安装的ModelSim。之前用了好几种方法都连接不上,最后用了以下的方法使得ISE能够正常调用Modelsim了,步骤如下:3 S5 Z+ t0 E) n& I$ M3 H* n首先将modelsim.ini文件只读模式去掉,存档前面打对 ...…

查看全部问答∨

密码登陆界面Cancel按键功能实现的问题

编写一个登陆界面,目标是输入密码过程中按Cancel按键可以取消一位密码的输入,这样的函数应该如何编写? 谢谢大家噢   o(∩_∩)o... void CPasswordDialog::OnCancel() {         // TODO: Add extra cleanup h ...…

查看全部问答∨

大家过来试用下这个串口调试软件——SuperCom 号称是世界上最酷的

设计者:X 邮箱:lin_yu_cheng@126.com (注:用户有任何建议或使用问题欢迎联系作者) 软件简介: SuperCom是广州信先行电子科技有限公司(www.xxxmcu.com)自主开发的免费开放软件,专门设计贡献给广大电子开发者,堪称为世界上最酷的串口调 ...…

查看全部问答∨

关于ListBox

请问能不能编程改变列表框的那个多列样式LBS_MULTICOLUMN? 我在创建的时候选择了LBS_MULTICOLUMN,后面能不能改变呢?? 没看到有改变列表框样式的消息啊!…

查看全部问答∨

信号翻转

请问各路高手们,有没有什么电路芯片,比如比较器什么的,可以使图1 的信号变成图2的信号(每个脉冲的信号周期都是一样的)。还有一个就是产生了正弦波正半周的信号,把正半周的信号翻转为负半周信号,变成一个完整的正弦波信号 请电路高手指点 ...…

查看全部问答∨

使用STM32外设固件库构建一个项目(IAR)环境-update

https://bbs.eeworld.com.cn/upfiles/img/200711/2007112313648108.rar文档还差点东西,先用只读方式提供阅读,等全部补充完成后再提供PDF格式的文档。…

查看全部问答∨

相邻端口改变后不能进串口中断?

刚刚碰到这样的问题,请教大家啦 P3OUT=0XFE; P3DIR|=0Xff;//set pin as output P3SEL |= 0xf0;//P3.4、3.5 uart0, 3.6、3.7 uart1 端口初始化如上,如果之后有 P3OUT &=~ BIT0; 或者 P3OUT |= BIT0; 的语句就会不能进串口的中断,如果 ...…

查看全部问答∨

【转帖】XILINX FPGA用LabVIEW开发

这个和我先前用LabVIEW开发TI的LM3S8962的步骤和方法基本都是一样的。 一:板子会从天上掉下来吗?  一个好消息就是,xilinx Spartan-3e 这块官板子可以免费申请!!我在网上查到了,这是申请地址http://www.eepw.com.cn/ev ...…

查看全部问答∨

STM32内部flash读写

怎样读写stm32的内部flash啊 我看了keil编译器的设置  0x8000000————0x8040000 这里是代码的存储空间吧? 如果要将数据写到别的地方怎么做啊 比如我要将一个数组 uint8_t  ubuntu[5]={1,2,3,4,5};写道 flash的 0x90000 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved