历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2019年10月16日 | ATMEGA16A单片机的多点测温系统完成版 Proteus仿真程序

2019-10-16 来源:eefocus

 

0.png?imageView2/2/w/550 (38.96 KB, 下载次数: 18)

下载附件  保存到相册

2019-6-29 04:45 上传


 

单片机源程序如下:

/**************************************************************************

*实验名   :DS18B20模块

*实验效果 :单总线调试,此代码可用于测多点温度

*显示     :此代码用了LCD显示读取地址位

*平台     : Atmega16,基于8MHz

*调试时间 :2019年6月7日 23:14

**************************************************************************/

#include

#include

#include "ds18b20.h"

//#include "lcd1602.h"

//微妙级延迟函数avr 16 以8MHz为例加上for循环,他需要执行1142条指令才是1ms,

void delay_1us(void)

{

  asm("nop");

}

void Delay_1us(unsigned int x)//所以这里存在一定的偏差。

{

   unsigned int i=0;     

   for( i=0;i}

//DS18B20复位函数

void DS18B20_Reset(void)

{ /*

    DQ_1;   //输出低电平

DQ_OUT;   //DQ为输出状态

DQ_0;   //输出低电平

Delay_1us(500);   //延迟500微妙

DQ_1;    //释放总线

Delay_1us(60);   //延迟60微妙

DQ_IN;   //DQ位输入状态

while(DQ_RD); //等待从机DS18B20应答(低电平有效)

while(!(DQ_RD));*/ //等待从机DS18B20释放总线机DS18B20释放总线 

    //这里要加个括号判断优先级 

  while(1)

{

       DQ_OUT;

    DQ_0;

    Delay_1us(480);   //延时480us

    DQ_1;

    Delay_1us(60); 

    DQ_IN;  //设置为输入端,接收应答信号

    if(!(DQ_RD))      //收到应答信号

   {

  DQ_1;

  Delay_1us(240);

  break; 

   }  //延时240us

}  

}

//DS18B20写字节函数

void DS18B20_Write(unsigned char Data)

{

unsigned char i;

DQ_OUT;  //DQ为输出

for(i=0;i<8;i++)

{

  DQ_0;   //拉低总线

  Delay_1us(10);     //延迟10微妙(最大15微妙)

  if(Data&0x01)DQ_1;

  else DQ_0;   

  Delay_1us(40);      //延迟40微妙(最大45微妙)

  DQ_1;     //释放总线

  Delay_1us(1);     //稍微延迟

  Data>>=1;

}

}

//DS18B20读字节函数

unsigned char DS18B20_Read(void)

{

unsigned char i,Temp;          

for(i=0;i<8;i++)

{

    Temp>>=1;      //数据右移

    DQ_OUT;     //DQ为输出状态

    DQ_0;    //拉低总线,启动输入

    DQ_1;     //释放总线

    DQ_IN;     //DQ为输入状态

    Delay_1us(2); 

    if(DQ_RD) Temp|=0x80; 

    Delay_1us(60);      //延迟45微妙(最大45微妙)

}


return Temp;

}

/*void GetROMSequence()//读地址号代码,用lcd1602显示

{

unsigned char i,temp;

DS18B20_Reset();

DS18B20_Write(READ_ROM);

for (i = 0; i < 8; i++)

ROMData1[i] = DS18B20_Read();

lcd_com(0x80);   

for(i=0;i<8;i++)

    {

       temp=ROMData1[i]>>4;

       if(temp<10)

       {

         lcd_dat(0x30+temp);

       }

       else

       {

         lcd_dat(0x37+temp);

       }

       temp=ROMData1[i]&0x0f;

       if(temp<10)

       {

         lcd_dat(0x30+temp);

       }

       else

       {

         lcd_dat(0x37+temp);

       }

    }

}*/

//读温度,然后拆字用结构体存起来。

TEMPDATA ReadTemperature(const unsigned char *pMatchData)

{

TEMPDATA TempData;

unsigned int iTempDataH;

unsigned char btDot, iTempDataL;

static unsigned char i = 0;

TempData.btNegative = 0;      //为0温度为正


DS18B20_Reset();   //DS18B20复位

DS18B20_Write(SKIP_ROM);  //跳过ROM

DS18B20_Write(TEMP_SWITCH);  //温度转换


DS18B20_Reset();   //DS18B20复位

DS18B20_Write(MATCH_ROM);//读取地址

for (i = 0; i < 8; i++) DS18B20_Write(*(pMatchData + i)); 

//DS18B20_Write(SKIP_ROM);  //跳过ROM,单个读取直接跳过ROM

DS18B20_Write(READ_MEMORY);  //读取RAM      //读数据


iTempDataL = DS18B20_Read();

iTempDataH = DS18B20_Read();

DS18B20_Reset(); //读取数值完要复位,要不然读取不了数值

iTempDataH <<= 8;

iTempDataH |= iTempDataL;

if (iTempDataH & 0x8000)

{

  TempData.btNegative = 1;

  iTempDataH = ~iTempDataH + 1;    //负数求补

}

//为了省去浮点运算带来的开销,而采用整数和小数部分分开处理的方法(没有四舍五入)

btDot = (unsigned char)(iTempDataH & 0x000F); //得到小数部分

iTempDataH >>= 4;        //得到整数部分

btDot *= 5;          //btDot*10/16得到转换后的小数数据

btDot >>= 3;

//数据处理

TempData.btThird   = (unsigned char)iTempDataH / 100;

TempData.btSecond  = (unsigned char)iTempDataH % 100 / 10;

TempData.btFirst   = (unsigned char)iTempDataH % 10;

TempData.btDecimal = btDot; 

return TempData;

}



推荐阅读

史海拾趣

Achronix Semiconductor Corporation公司的发展小趣事

Achronix Semiconductor Corporation是一家专注于FPGA(现场可编程门阵列)和eFPGA(嵌入式FPGA)技术的公司,以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: Achronix Semiconductor Corporation成立于2004年,总部位于美国加利福尼亚州圣克拉拉市。公司最初的目标是开发高性能、低功耗的FPGA芯片,以满足日益增长的计算需求和数据中心的要求。起初,公司主要关注FPGA技术的研发和市场定位。

  2. 技术突破和产品推出: 随着公司的不断发展,Achronix取得了一系列技术突破,并成功推出了一系列创新的FPGA产品。其中,公司的Speedster系列FPGA以其出色的性能、低功耗和高集成度而备受关注,成为了市场上的竞争力量。这些产品被广泛应用于网络设备、数据中心、通信、汽车等领域。

  3. 市场扩张和国际合作: Achronix积极拓展国内外市场,并与全球各地的客户建立了合作关系。公司的FPGA产品在全球范围内得到了广泛的应用,并与众多知名企业展开合作,共同推动技术进步和市场发展。同时,Achronix还与各大半导体制造商合作,共同研发新一代FPGA技术。

  4. 持续投入研发和创新: Achronix不断加大研发投入,致力于技术创新和产品升级。公司在硬件设计、架构优化、软件开发等方面进行持续的研究和探索,推动FPGA技术的发展。同时,Achronix还与国内外高校和研究机构合作,共同开展前沿技术的研究。

  5. 未来发展展望: Achronix将继续致力于FPGA和eFPGA技术的研发和应用,不断推出更先进、更高性能的产品和解决方案,满足客户在各个领域的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

Herga公司的发展小趣事

进入21世纪后,Herga公司意识到全球化市场的重要性,开始实施积极的国际化战略。公司首先在欧洲市场建立了稳固的根据地,随后通过并购和合资等方式,逐步进入北美、亚洲等新兴市场。在这个过程中,Herga公司不仅提供了符合当地市场需求的产品和服务,还积极融入当地文化,建立了良好的品牌形象。这些努力使得Herga公司的全球市场份额逐年上升,成为国际电子行业中不可忽视的力量。

Akahane Electronics Ind Corp公司的发展小趣事

Akahane深知人才是企业发展的核心动力。因此,公司一直注重人才培养和引进。通过建立健全的培训机制和激励机制,Akahane吸引了一批批优秀的研发人才和管理人才。这些人才为公司的技术创新和市场拓展提供了有力支撑。同时,公司还积极与高校和研究机构合作,共同培养电子行业的后备力量。

Endicott Research Group Inc (ERG)公司的发展小趣事

进入21世纪,随着LED技术的快速发展,ERG看到了固态照明市场的巨大潜力。2008年,公司决定成立一个新的部门——ERG Lighting,专注于为固态照明市场设计、制造和分销LED驱动器和其他照明配件。这一举措极大地拓展了公司的业务范围,并使其在市场上占据了有利地位。ERG Lighting的成立,不仅为公司带来了新的增长点,还进一步巩固了其在电源转换产品领域的领先地位。

Elma Electronic Inc公司的发展小趣事

在Covid-19疫情期间,Elma展现了其应对挑战的能力。公司引入了良好的保护措施,并不断调整和改进以适应疫情带来的变化。同时,Elma还积极响应市场需求,为医疗领域提供了大量旋转开关等关键设备,为欧洲和东南亚的医院做出了重大贡献。此外,公司还为瑞士的客户开发和制造了消毒设备,帮助当地进行疫情防控。

以上5个故事涵盖了Elma Electronic Inc公司在电子行业发展的多个方面,展现了其强大的实力和应对挑战的能力。

C.K Magma公司的发展小趣事

为了进一步提升技术水平和市场竞争力,C.K Magma公司积极寻求国际合作。他们与国外的知名科研机构和企业建立了战略合作关系,共同开展技术研发和市场拓展。这些合作不仅为公司带来了先进的技术和管理经验,还拓宽了公司的国际视野,为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

购买 wince下视频解码器

在wince下,很多视频无法播放,mp4,wmv,mpeg,avi的也有不能播放的,公司要解决这问题,花钱也可以,要是有能解决此问题的,联系我dsl000522@hotmail.com…

查看全部问答>

8051+MAC,请教MAC驱动怎么写啊

单片机ip210w(8051+Mac) 我要在该单片机上实现Tcp/IP协议,借助了一个uip的东西 uip最终的发送,需要mac来完成 驱动至少包括3个方法:mac_init,mac_send,mac_recv. 我没有写过这种驱动,请大家给点意见。 关于Mac的寄存器很多,看不太明白啊, ...…

查看全部问答>

初学Zigbee(MiWi),有前辈给指点下如何快速上手不?

-Micrchip MiWi solution. -Demo board都有了 -相关文档也看了不少,总觉得比较浅,望有经验的前辈指点下接下来怎样更全面的学习…

查看全部问答>

准备发起xds-mini(xds100v2改进版)团购

虽然前面做的xds-mini算上人力成本,严重赔钱了 现在依然开始准备团购的事宜 团购产品考虑贴上EEWorld的标, SOSO帮问问看可不可以呀 团购说明: 目前,我的净器件成本约为100元左右,为什么不是五六十,咱没量,你懂的 团购打算出去贴,这样 ...…

查看全部问答>

跟您一起做实验——ADUC系列的调试报告

ADuC8XX UART Emulation Many customers have puzzles about the application of the ADuC8XX UART Emulation. This document introduces the steps about how to realize it. Using UART Emulation can save cost and make emulation easy ...…

查看全部问答>

封贴

封贴了,不传了。 [ 本帖最后由 南盗 于 2013-12-15 14:33 编辑 ]…

查看全部问答>

【TI 无线主题征集】+CC2500在无线答题器中的应用

本帖最后由 digitaltek 于 2014-10-31 11:58 编辑      A:概述            在考试的时候,特别是英语考试的时候都有选择题,一般我们都是涂答题卡,然后上交后,由读卡器来读取答 ...…

查看全部问答>

《FPGA开发实战手册》

本帖最后由 daxigua 于 2015-10-26 16:50 编辑 大西瓜《FPGA开发实战手册》      大西瓜FPGA开发团队,自创8万多字图文教程,基于FPGA的基础+进阶+综合实验,助你一板一教程就将FPGA搞定!废话少说,直接上图 下载链接 ...…

查看全部问答>