在这个温度测量系统中,通过SHT21温湿度传感器对空气进行采样,将采样空气的温湿度数据分析之后传输给TMS320F28027芯片,最后TMS320F28027芯片将相关数据传输给LM016L显示器并显示此时空气的温度。
系统框图:

程序流程图:

电路:

#include <ConfigDevice.h>
#include <TimeParam.h>
#include "sht21.h"
extern volatile struct TIME_DEV_DATA TimeDev;
volatile union FLAG_DATA FlagDev;
volatile union ERROR_DATA ErrorDev;
volatile int32 Debug[10];
void main(void)
{
int Beep;
//参数定义
value humi_val,temp_val;
unsigned char error,checksum;
unsigned int wendu,shidu;
//lcd初始化
LCD_init();
s_connectionreset();
//lcd显示
LCD_disp_str(4,1,"TE");
LCD_disp_str(4,2,"RH");
LCD_disp_str(7,1,"TTT.TC");
LCD_disp_str(7,2,"RRR.R%");
delay_n10us(20000);
IFR = 0x0000;
IER = 0x0000;
//打开看门狗
DisableWatchdog();
InitSysParameters();
InitSysTimer();
#if (USE_TEST1_PIN)
TEST_1_INI();
TEST_1_OFF();
#endif
#if (USE_TEST2_PIN)
TEST_2_INI();
TEST_2_OFF();
#endif
InitWatchdog();
InitXWatchdog();
InitIndicators();
InitSwitches();
SetTimer(T_LED, T_LED_D);
SetTimer(T_SEC, T_SEC_D);
SetTimer(T_SWT, T_SWT_D);
PieCtrlRegs.PIEACK.all = 0xFFFF;
EINT;
TimeDev.second = 0;
TimeDev.minute = 0;
TimeDev.hour = 0;
TimeDev.date = 0;
EnableWatchdog();
for(;;)
{
ServiceWatchdog();
if(CheckTimer(T_SEC))
{
SetTimer(T_SEC, T_SEC_D);
if (++TimeDev.second > 59)
{
TimeDev.second = 0;
if (++TimeDev.minute > 59)
{
TimeDev.minute = 0;
if (++TimeDev.hour > 23)
{
TimeDev.hour = 0;
TimeDev.date++;
}
}
}
}
if(CheckTimer(T_LED))
{
Debug[0]++;
SetTimer(T_LED, T_LED_D);
ControlLedWork(TOGGLE);
ControlLedOnboard4(TOGGLE);
error=0;
error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);
error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);
if(error!=0) s_connectionreset();
else
{
humi_val.f=(float)humi_val.i;
temp_val.f=(float)temp_val.i;
calc_dht90(&humi_val.f,&temp_val.f);
wendu=10*temp_val.f;
if((wendu > 400) || (shidu > 800) || (shidu < 500))
{
Beep = 1;
}
else
{
Beep = 0;
}
LCD_disp_char(7,1,wendu/1000+'0');
LCD_disp_char(8,1,(wendu%1000)/100+'0');
LCD_disp_char(9,1,(wendu%100)/10+'0');
LCD_disp_char(11,1,(wendu%10)+'0');
shidu=10*humi_val.f;
LCD_disp_char(7,2,shidu/1000+'0');
LCD_disp_char(8,2,(shidu%1000)/100+'0');
LCD_disp_char(9,2,(shidu%100)/10+'0');
LCD_disp_char(11,2,(shidu%10)+'0');
}
//延时
delay_n10us(80000);
}
}
}结果:

版权声明:本文为weixin_44688930原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。