【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
相关推荐
Aaron1588几秒前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
所见即所得1111125 分钟前
stm32烧录过程中串口问题(串口被占用无法使用)
stm32·单片机·嵌入式硬件
Freak嵌入式34 分钟前
WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发
arm开发·人工智能·python·嵌入式硬件·机器人·嵌入式·micropython
Ligocious1 小时前
stm32---1.两种开发方式点亮LED
stm32·单片机
黑白园1 小时前
STM32F103C8TC使用ST-Link下载
stm32·单片机·嵌入式硬件
时空自由民.1 小时前
嵌入式MCU的中断系统工作流程及其原理
单片机·嵌入式硬件
LCG元1 小时前
STM32实战:基于STM32F103的智慧教室环境监控系统(CO₂+光照+人数统计)
前端·stm32·嵌入式硬件
振南的单片机世界2 小时前
推挽输出:上管推、下管拉,驱动强但不“合群”
arm开发·stm32·单片机·嵌入式硬件
森利威尔电子-2 小时前
森利威尔SL7140|2.5–24V 宽压 / 10mA–2A / PWM 调光 线性 LED 恒流驱动
单片机·嵌入式硬件·集成电路·芯片·电源芯片
VALENIAN瓦伦尼安教学设备3 小时前
填补国内空白!瓦伦尼安发布首台船机机械故障诊断振动实验台
大数据·人工智能·嵌入式硬件