Weight_Bed/main.c

139 lines
2.8 KiB
C
Raw Normal View History

2024-05-17 15:11:04 +08:00
/*
* Copyright (c) 2011 ITE Tech. Inc. All Rights Reserved.
*/
/**
* @author Jim Tan
* @version 1.0
*/
#include "H/Function_Init.H"
#define STANDAED_K 0.069849
#define Maxsize 3
/**************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Max_Weight 300000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ g
#define Sensitivity 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mv/v
#define Ex_U 5 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ,adcĬ<63><C4AC>ѡ<EFBFBD><D1A1><EFBFBD>ڲ<EFBFBD>vccΪ<63><CEAA><EFBFBD><EFBFBD> v
#define ADC_PGA 128 //ADCоƬ<D0BE>˷ű<CBB7><C5B1><EFBFBD>
#define ADC_MAX_NUM 7FFFFF //ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
STANDAED_K = (Ex_U/2/ADC_PGA/ADC_MAX_NUM) /(Sensitivity*Ex_U)*Max_Weight //Ϊ<>˱<EFBFBD><CBB1><EFBFBD>ȶ<EFBFBD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
***************************************************************/
bit Key0_flag = 0;//ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Function_Init.H,<2C><><EFBFBD><EFBFBD><EFB8B3>ֵ
bit Key1_flag = 0;
/////////////<2F><>ֵ<EFBFBD>˲<EFBFBD>3
long Bubble_Sort_3(long* Data)
{
uchar i,j;
long temp;
for(i=0;i<2;i++)
{
for(j=0;j<2-i;j++)
{
if(Data[j]>Data[j+1])
{
temp = Data[j];
Data[j] = Data[j+1];
Data[j+1] = temp;
}
}
}
return Data[1];
}
void main(void)
{
//////////////<2F>ò<EFBFBD><C3B2>ִ<EFBFBD><D6B4><EFBFBD>Ϊ<EFBFBD>ɼ<EFBFBD>ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
// long read_buff[4];
//
// IO_Init();
// Uart_Test();
//
// CS1237_Init_all();//ADC<44><43>ʼ<EFBFBD><CABC>
// Delay_ms(300);//<2F>ȴ<EFBFBD>ADCоƬ<D0BE><C6AC>λ
// CS1237_Config_all();//ADC<44><43><EFBFBD><EFBFBD>
//
// while(1)
// {
// for(i=0;i<4;i++)
// {
// send_buff[i] = zero_buff[i];
// }
// UART_SendAll(send_buff);
// }
//////////////<2F>ò<EFBFBD><C3B2>ִ<EFBFBD><D6B4><EFBFBD>Ϊ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>۲<EFBFBD><34><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
long send_buff[4];
long zero_buff[4];
long data_buff[4];
long queue[4][3];
int queue_p;
float k = STANDAED_K; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
long uart_buff[4]=0;
// uchar function_ret = 0;
// long zero_sort[9];
uchar i,j;
uchar a = 20; //һ<><D2BB><EFBFBD>˲<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-100<30><30>ԽСԽƽ<D4BD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD> <20><><EFBFBD><EFBFBD>Ϊ50 1s<31>Ϳ<EFBFBD><CDBF>Խӽ<D4BD><D3BD><EFBFBD>ǧ<EFBFBD><C7A7>֮999 <20><><EFBFBD><EFBFBD>Ϊ20<32><30>Ҫ<EFBFBD>ȴ<EFBFBD>3s<33><73><EFBFBD>Ҳ<EFBFBD><D2B2>ܽӽ<DCBD>ǧ<EFBFBD><C7A7>֮999
IO_Init(); //IO<49><4F>ʼ<EFBFBD><CABC>,<2C>Ƚ<EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>δʹ<CEB4><CAB9><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>ó<EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Uart_Test(); //<2F><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
Timer_Test(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
CS1237_Init_all();//ADC<44><43>ʼ<EFBFBD><CABC>
Delay_ms(300);//<2F>ȴ<EFBFBD>ADCоƬ<D0BE><C6AC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
CS1237_Config_all();//ADC<44><43><EFBFBD><EFBFBD>
for(i=0;i<4;i++)
{
zero_buff[i] = Read_CS1237_all(i);
send_buff[i] = zero_buff[i];
}
for(i=0;i<4;i++)
{
for(j=0;j<Maxsize;j++)
{
queue[i][j] = Read_CS1237_all(i);
}
}
while(1)
{
for(i=0;i<4;i++)
{
queue[i][queue_p] = Read_CS1237_all(i);
data_buff[i] = Bubble_Sort_3(queue[i]);
}
queue_p = (queue_p+1)%3;
for(i=0;i<4;i++)
{
send_buff[i] = ((100-a)*send_buff[i] + a*data_buff[i])/100; //һ<><D2BB><EFBFBD>˲<EFBFBD>
}
if(Key0_flag)//ȥƤ<C8A5><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3s
{
Key0_flag=0;
for(i=0;i<4;i++)
{
zero_buff[i] = send_buff[i];
}
}
for(i=0;i<4;i++)
{
uart_buff[i] =(send_buff[i]-zero_buff[i])*k;
UART_Send_VOFA(uart_buff[i]);
if(i<3)
UART_SendByte(44);//','<27><><EFBFBD>ŷָ<C5B7>
}
UART_SendByte(10);//'\r'<27>ӻس<D3BB><D8B3><EFBFBD>
UART_SendByte(13);//'\n'<27>ӻ<EFBFBD><D3BB>з<EFBFBD>
}
}