/* * 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 /************************************************************** 传感器相关参数输入 #define Max_Weight 300000 //最大工作重量单位 g #define Sensitivity 2 //灵敏度 mv/v #define Ex_U 5 //激励电压,adc默认选择内部vcc为激励 v #define ADC_PGA 128 //ADC芯片运放倍数 #define ADC_MAX_NUM 7FFFFF //ADC输出范围 STANDAED_K = (Ex_U/2/ADC_PGA/ADC_MAX_NUM) /(Sensitivity*Ex_U)*Max_Weight //为了避免精度丢失,请用计算器计算再手动输入 ***************************************************************/ bit Key0_flag = 0;//全局变量,定义在Function_Init.H,这里赋初值 bit Key1_flag = 0; /////////////中值滤波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) { //////////////该部分代码为采集ADC读数初始值 原始数据 // long read_buff[4]; // // IO_Init(); // Uart_Test(); // // CS1237_Init_all();//ADC初始化 // Delay_ms(300);//等待ADC芯片复位 // CS1237_Config_all();//ADC配置 // // while(1) // { // for(i=0;i<4;i++) // { // send_buff[i] = zero_buff[i]; // } // UART_SendAll(send_buff); // } //////////////该部分代码为采集并观察4路传感器的读数 long send_buff[4]; long zero_buff[4]; long data_buff[4]; long queue[4][3]; int queue_p; float k = STANDAED_K; //传感器系数 long uart_buff[4]=0; // uchar function_ret = 0; // long zero_sort[9]; uchar i,j; uchar a = 20; //一阶滤波系数,(1-100)越小越平滑,灵敏度越低 设置为50 1s就可以接近到千分之999 设置为20需要等待3s左右才能接近千分之999 IO_Init(); //IO初始化,先将默认的所有未使用引脚到设置成强推挽输出, Uart_Test(); //串口初始化 Timer_Test(); //定时器初始化 CS1237_Init_all();//ADC初始化 Delay_ms(300);//等待ADC芯片建立时间 CS1237_Config_all();//ADC配置 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