基于MSP430G2553的DS18B20测温程序.docx
- 文档编号:25976314
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:21
- 大小:17.82KB
基于MSP430G2553的DS18B20测温程序.docx
《基于MSP430G2553的DS18B20测温程序.docx》由会员分享,可在线阅读,更多相关《基于MSP430G2553的DS18B20测温程序.docx(21页珍藏版)》请在冰豆网上搜索。
基于MSP430G2553的DS18B20测温程序
/*
*main.c
*/
/*********************************************************************************************************
includeheaderfile
*********************************************************************************************************/
#include
#include"system.h"
#include"uart.h"
#include"ds18b20.h"
unsignedinttemp;
chartx_buf[6]={0,0,0,0,'\n','\0'};
/*********************************************************************************************************
**Functionname:
main
**Descriptions:
mainfunction
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidmain(void)
{
System_Init();
UartInit();
_EINT();
if(DS18B20_Init())
{
P1OUT|=BIT0;
}
else
{
P1OUT|=BIT6;
}
while
(1)
{
__delay_cycles(800000);
__delay_cycles(800000);
temp=DS18B20_GetTemp();
//x_buf[0]=temp%10000/1000+'0';
//tx_buf[1]=temp%1000/100+'0';
//tx_buf[2]=temp%100/10+'0';
//tx_buf[3]=temp%10+'0';
tx_buf[0]=temp%100/10+'0';
tx_buf[1]=temp%10+'0';
Uart_SendStr(tx_buf);
}
}
/*********************************************************************************************************
Includeheaderfile
*********************************************************************************************************/
#include
#include"system.h"
/*********************************************************************************************************
FunctionDeclaration
*********************************************************************************************************/
voidConfig_WDT(void);
voidConfig_Clock(void);
voidConfig_IO(void);
/*********************************************************************************************************
**Functionname:
Config_WDT
**Descriptions:
WatchDogTimerConfiguration
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidConfig_WDT(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer
}
/*********************************************************************************************************
**Functionname:
Config_Clock
**Descriptions:
SystemClockConfiguration
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidConfig_Clock(void)
{
BCSCTL1=CALBC1_8MHZ;//SetDCO1M8M12M16M
DCOCTL=CALDCO_8MHZ;
BCSCTL2=SELM_1+DIVM_1+DIVS_3;//MCLK=8M;SMCLK=1M
BCSCTL2&=~SELS;
if(CALBC1_8MHZ==0xFF||CALDCO_8MHZ==0xFF)
{
while
(1);//hang-up
}
}
/*********************************************************************************************************
**Functionname:
Config_IO
**Descriptions:
IOPortConfiguration
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidConfig_IO(void)
{
//setallIOportoutputs
P1DIR=0xFF;//AllP1.xoutputs
P1OUT=0x00;//AllP1.xreset
P2DIR=0xFF;//AllP2.xoutputs
P2OUT=0x00;//AllP2.xreset
}
/*********************************************************************************************************
**Functionname:
System_Init
**Descriptions:
WatchDogTimerConfiguration
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidSystem_Init(void)
{
Config_WDT();
Config_Clock();
Config_IO();
__delay_cycles(800000);
__delay_cycles(800000);
}
#ifndefSYSTEM_H_
#defineSYSTEM_H_
/*********************************************************************************************************
ExternFunctionDeclaration
*********************************************************************************************************/
externvoidSystem_Init(void);
#endif/*SYSTEM_H_*/
*********************************************************************************************************/
#include
#include
#include"uart.h"
/*********************************************************************************************************
**Functionname:
UartInit
**Descriptions:
Serialportinitialization
**inputparameters:
none
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidUartInit(void)
{
P1SEL=BIT1+BIT2;//P1.1=RXD,P1.2=TXD
P1SEL2=BIT1+BIT2;//P1.1=RXD,P1.2=TXD
UCA0CTL1|=UCSSEL_1;//CLK=ACLK
UCA0BR0=0x03;//32kHz/9600=3.41
UCA0BR1=0x00;//
UCA0MCTL=UCBRS1+UCBRS0;//ModulationUCBRSx=3
UCA0CTL1&=~UCSWRST;//**InitializeUSCIstatemachine**
IE2|=UCA0RXIE;//EnableUSCI_A0RXinterrupt
}
/*********************************************************************************************************
**Functionname:
Uart_SendHexInt
**Descriptions:
Serialportsenddatabyinterrupt
**inputparameters:
_data:
data
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidUart_SendHexInt(unsignedchar_data)
{
IE2|=UCA0TXIE;//enableUSCI_A0TXinterrupt
UCA0TXBUF=_data;
}
/*********************************************************************************************************
**Functionname:
Uart_SendStr
**Descriptions:
Serialportsendstring
**inputparameters:
*pBuffer:
thebufferwillbetransmitted
**outputparameters:
none
**Returnedvalue:
none
*********************************************************************************************************/
voidUart_SendStr(char*pBuffer)
{
unsignedintq0;
unsignedintn_Byte;
n_Byte=strlen(pBuffer);
for(q0=0;q0 { while((IFG2&UCA0TXIFG)==0); UCA0TXBUF=*pBuffer; pBuffer++; } } /********************************************************************************************************* InterruptResponseFunction *********************************************************************************************************/ /********************************************************************************************************* **Functionname: USCI0TX_ISR **Descriptions: Serialporttransmitinterruptfunction **inputparameters: none **outputparameters: none **Returnedvalue: none *********************************************************************************************************/ #pragmavector=USCIAB0TX_VECTOR __interruptvoidUSCI0TX_ISR(void) { while((IFG2&UCA0TXIFG)==0); IE2&=~UCA0TXIE;//closeUSCI_A0TXinterrupt } /********************************************************************************************************* **Functionname: USCI0RX_ISR **Descriptions: Serialportreceiveinterruptfunction **inputparameters: none **outputparameters: none **Returnedvalue: none *********************************************************************************************************/ #pragmavector=USCIAB0RX_VECTOR __interruptvoidUSCI0RX_ISR(void) { unsignedcharRcvBuf=0; RcvBuf=UCA0RXBUF; Uart_SendHexInt(RcvBuf); } #ifndefUART_H_ #defineUART_H_ /********************************************************************************************************* ExternFunctionDeclaration *********************************************************************************************************/ externvoidUartInit(void); externvoidUart_SendHexInt(unsignedchar); externvoidUart_SendStr(char*); #endif/*USART_H_*/ /********************************************************************************************************* FunctionDeclaration *********************************************************************************************************/ #defineDS18B20_Delay(us)__delay_cycles(8*us) voidDS18B20_WriteByte(unsignedchar); unsignedcharDS18B20_ReadByte(void); voidDS18B20_ReadBytes(unsignedchar,unsignedchar*); voidDS18B20_ReadID(unsignedchar*id); voidDS18B20_Config(void); unsignedintDS18B20_ReadTemp(void); unsignedcharDS18B20_CRC(unsignedchar,unsignedchar*); unsignedcharCrcTable[256]= { 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65, 157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220, 35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98, 190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255, 70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7, 219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154, 101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36, 248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185, 140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205, 17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80, 175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238, 50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115, 202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139, 87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22, 233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168, 116,42,200,150,21,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MSP430G2553 DS18B20 测温 程序