https://static.assets-stash.eet-china.com/album/old-resources/2009/5/14/6d7d22ff-38c2-4ed0-83d8-4fc70102a306.rar//描述:数字温度传感器DS18B20+LCD12232(ST7920)演示
//编写:微控设计网 DC版主 日期:2007.9.
//编译环境:IAR EW430 V3.42A
//验证平台: www.microcontrol.cn MC430F14+开发板 V2.0
//声明:此程序只供微控用户使用.在未得到DC版主的许可请勿将资料外公开和用于商业用途.
//******************************************************************************
#include <msp430x14x.h>
#include "DS1820.h"
#include "lcd_ch.h"
const unsigned char digit[10] = {'0','1','2','3','4','5','6','7',
'8','9'};
unsigned char temp_display [9] = {'x','0','0','0','.','0','0','0','\0'};
//******************************************************************************
void delay_temp(unsigned int j)
{ unsigned int i;
for (i=0; i!=j; i++);
}
//******************************************************************************
//将温度值转换成可显示十进制值
//取数范围整数3位,小数点后3位.
void display_number(float f_data)
{ unsigned long value;
float n;
n="f"_data *1000;
value = (unsigned long int)n;
//value = (unsigned long int)(value *1000); //将浮点数变为整型数
temp_display[1] = digit[value/100000]; //100位
value = value%100000;
temp_display[2] = digit[value/10000]; //10位
value = value%10000;
temp_display[3] = digit[value/1000]; //1位
value = value%1000;
temp_display[5] = digit[value/100]; //0.1位
value = value%100;
temp_display[6] = digit[value/10]; //0.01位
value = value%10;
temp_display[7] = digit[value/1]; //0.001位
}
//******************************************************************************
//说明:实验标题1,应用单实形式发送.
void send_title() //标题显示
{
sendCMD(off_cursor); //关光标
sendCMD(LCD_L11);
display(LCD_L13,0xce,0xc2); //温
display(LCD_L14,0xb6,0xc8); //度
display(LCD_L15,0xb2,0xe2); //测
display(LCD_L16,0xc1,0xbf); //量
display(LCD_L21,0xce,0xc2); //温
display(LCD_L22,0xd6,0xb5); //值
display(LCD_L27,0xb6,0xc8); //度
sendCMD(LCD_L21); //显示地址指回处
sendCMD(off_cursor); //关光标
}
//******************************************************************************
//MSP430F14初始化
void mcuinit(void)
{
P1DIR |=BIT1; //P1.1驱动LED
initlcm(); //LCD初始化
send_title(); //显示实验标题
}
//******************************************************************************
//MC430F14 DS18B20实验主程序
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止WDT
delay_temp(5000);
mcuinit();
while(1)
{ P5OUT &= ~BIT4;
GetTemp(); //读取温度
P5OUT |= BIT4;
if(symbol==1)
temp_display[0] = '+'; //处理正负符合
else
temp_display[0] = '-';
P1OUT ^= BIT1;
display_number(Temper); //数据变换显示数据
char_string (temp_display,LCD_L23);
}
}
//******************************************************************************
文章评论(0条评论)
登录后参与讨论