?? example.c
字號:
#include "..\includes.h"
// MAX186控制字節配置:通道0,單極性,差分輸入,外部時鐘模式
#define MAX186_CONTROL_BYTE 0x8B
#define FILTER_COEFFICIENT 15//入:5,反;15
INT8U prompt[32];
INT8S DigitalLed[8];
void main()
{
INT16U cnt;
INT16U sample_value;
INT32U voltage;
INT32U power;
INT16U value;
Delay(60000);
Delay(60000);
Delay(60000);
SPI_Init();
SPI_INT_DIS();
Digital_LED_Init();
// sprintf( DigitalLed, "%5d", (INT16U)Led);
// Digital_LED_DispStr( DigitalLed );
CommInit( UART0, 9600 );
CommSendString( UART0, "System init complete\n" );
// Digital_LED_DispTest( );
// while(1);
//取得value的初值
SPI_CS = 0;
SPI_SendByte(MAX186_CONTROL_BYTE);
sample_value = SPI_SendByte(0);
sample_value <<= 8;
sample_value |= SPI_SendByte(MAX186_CONTROL_BYTE);
sample_value >>=3;
value = sample_value;
SPI_SendByte(0);
SPI_SendByte(0);
SPI_CS = 1;
sprintf( prompt, "SAM:%u\n", (INT16U)value ); //輸出電壓值,單位mv
CommSendString(UART0,prompt);
while(1)
{
voltage = 0;
SPI_CS = 0;
SPI_SendByte(MAX186_CONTROL_BYTE);
for( cnt=0; cnt<8192; cnt++ )
{
sample_value = SPI_SendByte(0);
sample_value <<= 8;
sample_value |= SPI_SendByte(MAX186_CONTROL_BYTE);
sample_value >>=3;
//限幅濾波
if( abs(sample_value-value)<FILTER_COEFFICIENT)
{
value = value;
}
else
{
value = sample_value;
}
//value = (100-FILTER_COEFFICIENT)*value + FILTER_COEFFICIENT*sample_value; //一階滯后濾波
voltage += value;
}
SPI_SendByte(0);
SPI_SendByte(0);
SPI_CS = 1;
voltage = voltage>>13;
power = voltage*voltage/24; //入
if(power>9999)// 大于9999時為9999
{
power = 9999;
}
// power = voltage*voltage/440; //反
sprintf( DigitalLed, "%4u", (INT16U)power);//LED功率值顯示,單位W
Digital_LED_DispStr( DigitalLed );
// sprintf( prompt, "---V:%u\n", (INT16U)voltage ); //輸出電壓值,單位mv
// CommSendString(UART0,prompt);
//sprintf( prompt, "---P:%u\n", (INT16U)power );//輸出功率值 ,單位W
// CommSendString(UART0,prompt);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -