标题:
STM32数控源设计原理图加代码
[打印本页]
作者:
1512992980
时间:
2019-5-25 11:23
标题:
STM32数控源设计原理图加代码
电路图:
0.png
(114.37 KB, 下载次数: 39)
下载附件
2019-5-26 01:59 上传
** 调用相应的子模块文件
**********************************************************/
#include"LCD12864.H"
#include"eeprom.h"
#include"usart.h"
#include"ad.h"
#include"pwm_10BIT.h"
extern void calc_voltage_current();
void OUT_VOLTAGE_1()
{
if(VOL_OUT_FLAG==1)
{
OUT_Voltage_PWM=ADJ_VOL;
OUT_Current_PWM=ADJ_CUR;
}
else
{
OUT_Voltage_PWM=1;
OUT_Current_PWM=1;
}
}
/*********************************************************
** 将电压发送到串口
**********************************************************/
//void Voltage_Send(U8 Voltage_num,U16 Voltage_dat)
//{
// SendData('A');
// SendData('D');
// SendData(Voltage_num+'0');
// SendData('=');
// SendData(Voltage_dat/1000+'0');
// SendData(Voltage_dat%1000/100+'0');
// SendData('.');
// SendData(Voltage_dat%100/10+'0');
// SendData(Voltage_dat%10+'0');
// SendData('V');
// SendData(' ');
// SendData(' ');
// SendData(' ');
// SendData(' ');
//}
//void data_Send(U16 Voltage_dat)
//{
// SendData('d');
// SendData('a');
// SendData('t');
// SendData('a');
// SendData(':');
// SendData(Voltage_dat/10000+'0');
// SendData(Voltage_dat%10000/1000+'0');
// SendData(Voltage_dat%1000/100+'0');
// SendData(Voltage_dat%100/10+'0');
// SendData(Voltage_dat%10+'0');
// SendData(' ');
// SendData(' ');
// SendData(' ');
// SendData(' ');
//}
/*********************************************************
**中值滤波
**算法:先进行排序,然后将数组的中间值作为当前值返回。
**********************************************************/
U16 Error_Correct(U16 *str,U8 num)
{
unsigned char i=0;
unsigned char j=0;
U16 Temp=0;
U16 shu;
//排序
for(i=0;i<num-1;i++)
{
for(j=i+1;j<num;j++)
{
if(str[i]<str[j])
{
Temp=str[i];
str[i]=str[j];
str[j]=Temp;
}
}
}
shu=str[3]+str[4]+str[5]+str[6];
//去除误差,取中间值
return shu/4;
}
/*********************************************************
** 检测10次电压
**********************************************************/
U16 ADC_Caculate(U8 channel)
{
U16 ADC_Voltage=0;
U8 i;
for(i=0;i<10;i++) //检测5次取平均值返回
{
ADC_TEMP[i]=Get_ADC10bitResult(channel);
}
ADC_Voltage=Error_Correct(ADC_TEMP,10);
return ADC_Voltage;
}
/*********************************************************
******电压采集及计算
**********************************************************/
void Voltage_Gath_calc()
{
U8 i,k;
for(k=0;k<7;k++)
{
VOL_TEMP2[k]=ADC_Caculate(k);
}
for(i=0;i<7;i++)
{
VOL_TEMP[i]=((((VOL_TEMP2[i]*2.5*10)/VOL_TEMP2[0])*100)+5)/10;
}
VOL_TEMP[1]*=111; //输出电流显示微调
VOL_TEMP[2]*=82; //输出电压显示微调
VOL_TEMP[1]/=100;
VOL_TEMP[2]/=100;
}
复制代码
全部资料51hei下载地址:
程序和电路图.rar
(364.81 KB, 下载次数: 30)
2019-5-26 01:59 上传
点击文件名下载附件
原理图+代码
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1