//不是乘以0.0625的原因是为了把小数点后一位数据也转化为可以显示的数据 return i; }
//*************************************************************************
// 温度数据处理函数
//*************************************************************************
void data_do(int temp_d) {
int A2t;
A1=temp_d/100; //分出百,十,和个位 A2t=temp_d0; A2=A2t/10; A3=A2t; }
//***********************************************************************
// 主程序
//***********************************************************************
void main(void) {
const unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; const unsigned char zww[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; uchar j;
WDT_Init(); //看门狗初始化 Clock_Init(); //时钟初始化
Port_Init(); //端口初始化,用于控制IO口输入或输出
DS18B20_Reset(); //复位D18B20 while(1) {
ds1820_start(); //启动一次转换 ds1820_read_temp(); //读取温度数值 data_do(temp_value); //处理数据,得到要显示的值
if(A1==zww[0]) A1=seg[0]; // 以下将DS18B20反馈的数值换成数码管的字符编码以显示
else if(A1==zww[1]) A1=seg[1]; else if(A1==zww[2]) A1=seg[2];
else if(A1==zww[3]) A1=seg[3]; else if(A1==zww[4]) A1=seg[4]; else if(A1==zww[5]) A1=seg[5]; else if(A1==zww[6]) A1=seg[6]; else if(A1==zww[7]) A1=seg[7]; else if(A1==zww[8]) A1=seg[8]; else if(A1==zww[9]) A1=seg[9]; else A1=A1;
if(A2==zww[0]) A2=seg[0];
else if(A2==zww[1]) A2=seg[1]; else if(A2==zww[2]) A2=seg[2]; else if(A2==zww[3]) A2=seg[3]; else if(A2==zww[4]) A2=seg[4]; else if(A2==zww[5]) A2=seg[5]; else if(A2==zww[6]) A2=seg[6]; else if(A2==zww[7]) A2=seg[7]; else if(A2==zww[8]) A2=seg[8]; else if(A2==zww[9]) A2=seg[9]; else A2=A2;
if(A3==zww[0]) A3=seg[0];
else if(A3==zww[1]) A3=seg[1]; else if(A3==zww[2]) A3=seg[2]; else if(A3==zww[3]) A3=seg[3]; else if(A3==zww[4]) A3=seg[4]; else if(A3==zww[5]) A3=seg[5]; else if(A3==zww[6]) A3=seg[6]; else if(A3==zww[7]) A3=seg[7]; else if(A3==zww[8]) A3=seg[8]; else if(A3==zww[9]) A3=seg[9]; else A3=A3;
for(j=0;j<8;j++) { P4OUT=A1; duan_h; duan_l; P4OUT=0Xfe; wei_h; wei_l;
delay_ms(0.4); P4OUT=A2+BIT7; duan_h; duan_l; P4OUT=0xfd; wei_h;
wei_l;
delay_ms(0.4); P4OUT=A3; duan_h; duan_l; P4OUT=0xfb; wei_h; wei_l;
delay_ms(0.4); P4OUT=0x39; duan_h; duan_l; P4OUT=0xf7; wei_h; wei_l;
delay_ms(0.4);
P4OUT=0x00; //缺少该句,数码管会有微弱重影,有该句无重影 duan_h;
duan_l; } } }
五、系统调试
调试步骤:
(1)通过“IAR For MSP430”软件导入C语言程序,下载到实验板上进行相关调试。如下图所示:
(2)用手在其周围扇风,使其周围温度降低,则发现温度示数减小,如下图所示: