历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-10-21 来源:eefocus

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


 

推荐阅读

史海拾趣

Analog Modules Inc公司的发展小趣事

Analog Modules Inc. 是一家总部位于美国马萨诸塞州的公司,专注于设计和生产高性能模拟电子模块和系统,为军事、航空航天、医疗和工业等领域提供解决方案。以下是 Analog Modules Inc. 公司发展的相关故事:

  1. 创立与初期阶段:Analog Modules Inc. 成立于1970年,由一群电子工程师创办。公司最初的目标是满足军事和航天领域对高性能模拟电子模块的需求。在成立初期,公司致力于开发和生产高精度的模拟信号处理模块和系统,以满足客户对于高可靠性和高性能的要求。

  2. 技术创新与产品优化:Analog Modules Inc. 在技术方面不断进行创新,并持续优化其产品线。公司的产品涵盖了广泛的领域,包括模拟信号处理、数据采集、激光驱动、通信和雷达等。这些产品具有高精度、高可靠性和耐用性,得到了客户的广泛认可和信赖。

  3. 市场拓展与全球业务:随着业务的不断发展,Analog Modules Inc. 将市场重点逐渐扩展到了全球范围。公司与全球各地的客户建立了长期稳定的合作关系,拓展了产品的销售渠道和市场份额。同时,公司还积极参与国际展会和行业交流活动,提升了品牌知名度和影响力。

  4. 应用领域与客户合作:Analog Modules Inc. 的产品广泛应用于军事、航空航天、医疗和工业等多个领域。公司与各类客户进行紧密合作,包括政府军方、航空航天机构、医疗设备制造商和工业自动化企业等。通过与客户的合作,公司不断了解市场需求,提供定制化的解决方案,满足客户的特定需求。

  5. 持续发展与未来展望:Analog Modules Inc. 将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,不断拓展业务领域,进一步提升产品性能和服务水平。在未来,Analog Modules Inc. 将继续保持行业领先地位,为客户提供更加优质和可靠的解决方案。

DCX-CHOL Enterprises公司的发展小趣事

为了进一步拓展业务领域和提升竞争力,DCX-CHOL Enterprises开始积极探索跨界合作的可能性。公司与多家知名企业和研究机构建立了战略合作关系,共同开展技术研发和产品创新。通过跨界合作,DCX-CHOL Enterprises不仅获得了更多的技术支持和市场资源,还拓宽了视野和思路,为公司未来的发展注入了新的活力。同时,公司还积极参与行业协会和组织的活动,加强与其他企业的交流与合作,共同推动电子行业的发展和进步。

General Industrial Controls ( GIC )公司的发展小趣事
确保所有元件均为合格产品,无损坏或老化现象。特别是电感器,其载流能力、Q值和工作频率等参数需满足要求。
Defense Logistics Agency公司的发展小趣事

在成功整合供应链之后,DLA开始拓展其业务领域。除了为美军提供后勤保障服务外,DLA还开始向各州、当地政府组织、外国政府和国际组织提供后勤保障服务。这一拓展不仅拓宽了DLA的业务范围,也增强了其国际影响力。

佰鸿(BrtLed)公司的发展小趣事

面对市场的不断变化和技术的不断进步,佰鸿公司始终保持着敏锐的洞察力和应变能力。近年来,随着LED行业的竞争日益激烈,公司开始积极寻求转型升级之路。通过调整产品结构、优化生产流程、拓展市场渠道等措施,佰鸿成功实现了从传统LED制造商向综合解决方案提供商的转型。这一转型不仅提升了公司的盈利能力,也为其未来的发展注入了新的活力。

以上五个故事从不同角度展示了佰鸿(BrtLed)公司在电子行业中的发展历程和成就。通过坚持市场导向、扩大生产规模、深耕再生医学领域、坚持技术创新以及积极应对市场变化等措施,佰鸿成功地在激烈的市场竞争中脱颖而出,成为了电子行业的佼佼者。

Barnbrook Systems Limited公司的发展小趣事

为了保持技术上的领先地位,Barnbrook积极寻求与高校、研究机构的合作。通过与这些机构的深入合作,Barnbrook不仅获得了最新的科研成果和人才支持,还成功研发出了一系列具有创新性的电子产品。这些产品不仅提升了公司的技术实力,也为公司的长期发展注入了新的活力。

问答坊 | AI 解惑

自己写得一个DDS 效果不错!!

自己前段时间学习得时候写得一个DDS   希望大家喜欢!!!!!!!!…

查看全部问答>

现在貌似找工作时都没要求同时得会arm和fpga

如果同时掌握了arm和cpld会不会有所帮助? 来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj…

查看全部问答>

求ADC0809资料,电路图或小程序

那位大哥有的话发一个到我邮箱行吗?谢谢! sodik@126.com…

查看全部问答>

请教:X 开N次方在硬件上如何实现?

请教:X 开N次方在硬件上如何实现?…

查看全部问答>

NDIS的一点疑问?

我的是一个协议层驱动,有个疑问就是 A.使用CreateService,OpenService,QueryServiceStatus及StartService等一系列API安装起来的驱动 B.使用Inf文件及INetCfg的COM接口安装的驱动 问题是 1.这两种方式有什么不同? 2.为什么A安装后\"本地连接\" ...…

查看全部问答>

当我开辟一个大的数组到外部sram,lcd就不能正常显示了

我现在做图片解码显示,用的是ze的片子,我开辟了的一个大的数组在sram里,请放心这个数组确实在外部,我去过地址查看,0x6800xxx位置,现在的问题是,我如果把这个数组开辟的小一点,比如几百字节,lcd显示正常,开辟大来人比如几百k &n ...…

查看全部问答>

全国电子设计竞赛A题交流群101126312

本帖最后由 paulhyde 于 2014-9-15 04:03 编辑 全国电子设计竞赛A题交流群101126312  …

查看全部问答>

初学者求助C54x程序运行结果

请各位大侠帮忙看一下如下三条语句,已知(80H)=20H,(81H)=30H, LD #0,DP LD 80H,16,B ADD 81H,B 运行后B等于多少?这到底是属于绝对地址寻址还是直接寻址啊?谢谢!…

查看全部问答>

想买msp430开发板,坛里有吗?

想买msp430开发板,坛里有吗?谢谢,麻烦贴个网址! 另外建议斑竹开辟一个关于购买开发板的小版块,呵呵!…

查看全部问答>

msp430f5418的DCO最高倍频是多少

msp430f5418的DCO最高倍频多少?能不能倍到40MHz或以上?尝试过没成功…

查看全部问答>