DS18B20--MSP430--4位数码管显示温度

上传人:206****923 文档编号:91846774 上传时间:2019-07-02 格式:DOCX 页数:6 大小:12.44KB
返回 下载 相关 举报
DS18B20--MSP430--4位数码管显示温度_第1页
第1页 / 共6页
DS18B20--MSP430--4位数码管显示温度_第2页
第2页 / 共6页
DS18B20--MSP430--4位数码管显示温度_第3页
第3页 / 共6页
DS18B20--MSP430--4位数码管显示温度_第4页
第4页 / 共6页
DS18B20--MSP430--4位数码管显示温度_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《DS18B20--MSP430--4位数码管显示温度》由会员分享,可在线阅读,更多相关《DS18B20--MSP430--4位数码管显示温度(6页珍藏版)》请在金锄头文库上搜索。

1、DS18B20 MSP430 4位数码管显示温度/实验材料:MSP430F149开发板,DS18B20一个,杜邦线15条,3元普通4位共阴极数码管一个/由于本人没有排阻,没有采用灌电流方式给4位共阴极数码管供电,MSP430的I/O口直接接4位共阴极数码管的12个脚/接线说明:DS18B20数据口接P17,电源接3.3V直流;P40P47接数码管a、b、c、d、e、f、g、dp/ P50P53接位1、位2、位3,位4,数码管接线图请百度/Made By Zhong Sir From Wuhan University#include /延时函数#define CPU_F (double)8000

2、000) /外部高频晶振8MHZ/#define CPU_F (double)32768) /外部低频晶振32.768KHZ#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) #define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0) /自定义数据结构#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/DS18B20控制脚,单脚控制#def

3、ine DQ_IN P1DIR &= BIT7 / DS18B20接单片机P17口#define DQ_OUT P1DIR |= BIT7 /设置输出#define DQ_CLR P1OUT &= BIT7 /置低电平#define DQ_SET P1OUT |= BIT7 /置高电平#define DQ_R P1IN & BIT7 /读电平int temp_value;int temp; /定义的变量,显示数据处理int A1,A2,A3;/*/ 系统时钟初始化,外部8M晶振/*void Clock_Init() uchar i; BCSCTL1&=XT2OFF; /打开XT2振荡器 BCS

4、CTL2|=SELM1+SELS; /MCLK为8MHZ,SMCLK为8MHZ do IFG1&=OFIFG; /清楚振荡器错误标志 for(i=0;i480uS) if (i) return 0x00; else return 0x01; /* /DS18B20读一个字节函数/* unsigned char ds1820_read_byte(void) unsigned char i; unsigned char value = 0; for (i = 8; i != 0; i-) value = 1; DQ_OUT; DQ_CLR; delay_us(4); /*延时4uS DQ_SET;

5、 DQ_IN; delay_us(10); /*延时10uS if (DQ_R) value|=0x80; delay_us(60); /*延时60uS return(value);/* /向18B20写一个字节函数/* /*DS18B20字节写入函数*/void ds1820_write_byte(unsigned char value) unsigned char i; for (i = 8; i != 0; i-) DQ_OUT; DQ_CLR; delay_us(4); /延时4uS if (value & 0x01) DQ_SET; delay_us(80); /延时80uS DQ_

6、SET; /位结束 value = 1; /*/发送温度转换命令/* /*启动ds1820转换*/void ds1820_start(void) DS18B20_Reset(); ds1820_write_byte(0xCC); /勿略地址 ds1820_write_byte(0x44); /启动转换/*/DS8B20读取温度信息/* unsigned int ds1820_read_temp(void) unsigned int i; unsigned char buf9; DS18B20_Reset(); ds1820_write_byte(0xCC); /勿略地址 ds1820_writ

7、e_byte(0xBE); /读取温度 for (i = 0; i 9; i+) bufi = ds1820_read_byte(); i = buf1; i = 8; i |= buf0; temp_value=i; temp_value=(uint)(temp_value*0.625); /不是乘以0.0625的原因是为了把小数点后一位数据也转化为可以显示的数据 return i;/*/温度数据处理函数/* void data_do(int temp_d) int A2t; A1=temp_d/100; /分出百,十,和个位 A2t=temp_d%100; A2=A2t/10; A3=A2t%10;/*

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号