基于 149芯片的简易温度计设计, 使用18B20可以精确到小数点后2位,理论上不止。18B20的最小单位是0.0625摄氏度,那么精确没必要,根据实际需要我们设计为2位小数就可以了。 18B20对时序要求非常严格,这里采用定时器定时比较精确。主时钟设置为8M,SMCLK8分频,选用SMCLK时钟为定时器时钟源,即得到1M,定时为us级别的。
贴下代码。
18B20程序:#include <msp430x14x.h>
#include "DS18B20.h"
extern void Delay(unsigned int dly);
unsigned char tem[]={0,0},Neg_flag;
/*******************************************************************************
* Function Name : void Delayus(unsigned int dly)
* Description : 延时 dly us
* Input : dly
* Output : None
* Return : None
*******************************************************************************/
void Delayus(unsigned int dly)
{
CCR0 = dly;
TACTL|= MC_1;
while(!(TACTL&BIT0)); //等待时间到
TACTL &= ~MC_1; //停止计数 &#