【TB作品】msp430f149单片机,读取ds18b20温度,显示到数码管,串口发送温度到电脑

功能

msp430f149单片机

读取ds18b20温度,显示到数码管,串口发送温度到电脑

部分程序

cpp 复制代码
/*************************************************
*  程序功能:用DS18B20测量室温并在数码管上显示。
*  -------------------------------------------------
*  测试说明:观察显示温度数值。
*************************************************/
#include <msp430x14x.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/* 延时函数,IAR自带,经常使用到 */
#define CPU_F ( (double) 8000000)   /* 外部高频晶振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


/****************主函数****************/
void main( void )
{



	/*下面六行程序关闭所有的IO口*/
	P5DIR	= 0xff;
	P5OUT	= 0xff; P1DIR = 0XFF; P1OUT = 0XFF;
	P2DIR	= 0XFF; P2OUT = 0XFF;
	P3DIR	= 0XFF; P3OUT = 0XFF;
	P4DIR	= 0XFF; P4OUT = 0XFF;
	P5DIR	= 0XFF; P5OUT = 0XFF;
	P6DIR	= 0XFF; P6OUT = 0XFF;


	WDTCTL = WDTPW + WDTHOLD;


	Clock_Init();

	UART_Init();


	P6DIR	|= BIT6; P6OUT |= BIT6; /* 关闭电平转换 */
	P5DIR	|= BIT5; P5OUT |= BIT5; /* 关闭电平转换 */
	P6DIR	|= BIT7; P6OUT |= BIT7; /* 关闭蜂鸣器 */

	/* 设置看门狗定时器,初始化控制数码管的IO */
	WDTCTL	= WDT_ADLY_1_9;
	IE1	|= WDTIE;


	/* 计数时钟选择SMLK=8MHz,1/8分频后为1MHz */
	TACTL |= TASSEL_2 + ID_3;
	/* 打开全局中断 */
	_EINT();
	/* 循环读数显示 */
	while ( 1 )
	{
		wendu = Do1Convert();                   /* 读取温度s */
		Disp_Numb( wendu );                     /* 显示温度 */

		/* 串口发送温度 wendu */
		memset( fasong, 0, sizeof(fasong) );    /* 清空发送数组 */
		sprintf( fasong, "%d%d.%d  \r\n", (int)dN[5],(int)dN[4] ,(int)dN[3]  );
		Print_Str( fasong );

	}
}


/*******************************************
 * 函数名称:watchdog_timer
 * 功    能:看门狗定时器中断服务函数,进行数码
 *        管动态扫描
 * 参    数:无
 * 返回值  :无
 ********************************************/
#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer( void )
{
	/*
	 * P4OUT = 0xFF;
	 *  wei_h;
	 * wei_l;
	 */

	P4OUT = scandata[dN[5 - cnt]];

	if ( cnt == 1 )
		P4OUT &= ~BIT7;  /* 在第二位显示小数点 */
	duan_h;
	duan_l;
	P4OUT = ~(1 << cnt);
	wei_h;
	wei_l;

	cnt++;
	if ( cnt == 3 )
		cnt = 0;
}


/*******************************************
 * 函数名称:Disp_Numb
 * 功    能:将从DS18B20读取的11bit温度数据转换
 *        成数码管显示的温度数字
 * 参    数:temper--11bit温度数据
 * 返回值  :无
 ********************************************/
void Disp_Numb( uint temper )
{
	uchar i;

	for ( i = 0; i < 6; i++ )
		dN[i] = 0;          /* 初始化显示变量 */

	/* 数值转换 */
	if ( temper & BIT0 )
	{
		dN[0]	= 5;
		dN[1]	= 2;
		dN[2]	= 6;
	}
	if ( temper & BIT1 )
	{
		dN[1]	+= 5;
		dN[2]	+= 2;
		dN[3]	+= 1;
	}
	if ( temper & BIT2 )
	{
		dN[2]	+= 5;
		dN[3]	+= 2;
		if ( dN[2] >= 10 )
		{
			dN[2]	-= 10;
			dN[3]	+= 1;
		}
	}
	if ( temper & BIT3 )
	{
		dN[3] += 5;
	}
	if ( temper & BIT4 )
	{
		dN[4] += 1;
	}
	if ( temper & BIT5 )
	{
		dN[4] += 2;
	}
	if ( temper & BIT6 )
	{
		dN[4] += 4;
	}
	if ( temper & BIT7 )
	{
		dN[4] += 8;
		if ( dN[4] >= 10 )
		{
			dN[4]	-= 10;
			dN[5]	+= 1;
		}
	}
	if ( temper & BIT8 )
	{
		dN[4]	+= 6;
		dN[5]	+= 1;
		if ( dN[4] >= 10 )
		{
			dN[4]	-= 10;
			dN[5]	+= 1;
		}
	}
	if ( temper & BIT9 )
	{
		dN[4]	+= 2;
		dN[5]	+= 3;
		if ( dN[4] >= 10 )
		{
			dN[4]	-= 10;
			dN[5]	+= 1;
		}
	}
	if ( temper & BITA )
	{
		dN[4]	+= 4;
		dN[5]	+= 6;
		if ( dN[4] >= 10 )
		{
			dN[4]	-= 10;
			dN[5]	+= 1;
		}
		if ( dN[5] >= 10 )
		{
			dN[5] -= 10;
		}
	}
}

全部程序

cpp 复制代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
相关推荐
智商偏低3 小时前
单片机之helloworld
单片机·嵌入式硬件
青牛科技-Allen4 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森6 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白6 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D7 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术10 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt11 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘11 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang11 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c
几个几个n13 小时前
STM32-第二节-GPIO输入(按键,传感器)
单片机·嵌入式硬件