DSP技术:基于TMS320F28027芯片的温度测量系统

在这个温度测量系统中,通过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版权协议,转载请附上原文出处链接和本声明。