历史上的今天
今天是:2024年10月16日(星期三)
2019年10月16日 | ATMEGA16A单片机的多点测温系统完成版 Proteus仿真程序
2019-10-16 来源:eefocus
0.png?imageView2/2/w/550
下载附件 保存到相册
单片机源程序如下:
/**************************************************************************
*实验名 :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; }
史海拾趣
|
在wince下,很多视频无法播放,mp4,wmv,mpeg,avi的也有不能播放的,公司要解决这问题,花钱也可以,要是有能解决此问题的,联系我dsl000522@hotmail.com… 查看全部问答> |
|
单片机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算上人力成本,严重赔钱了 现在依然开始准备团购的事宜 团购产品考虑贴上EEWorld的标, SOSO帮问问看可不可以呀 团购说明: 目前,我的净器件成本约为100元左右,为什么不是五六十,咱没量,你懂的 团购打算出去贴,这样 ...… 查看全部问答> |
|
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 ...… 查看全部问答> |
|
本帖最后由 digitaltek 于 2014-10-31 11:58 编辑 A:概述 在考试的时候,特别是英语考试的时候都有选择题,一般我们都是涂答题卡,然后上交后,由读卡器来读取答 ...… 查看全部问答> |
|
本帖最后由 daxigua 于 2015-10-26 16:50 编辑 大西瓜《FPGA开发实战手册》 大西瓜FPGA开发团队,自创8万多字图文教程,基于FPGA的基础+进阶+综合实验,助你一板一教程就将FPGA搞定!废话少说,直接上图 下载链接 ...… 查看全部问答> |




