找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1615|回复: 0
收起左侧

STM32数控源设计原理图加代码

[复制链接]
ID:546757 发表于 2019-5-25 11:23 | 显示全部楼层 |阅读模式
电路图:
0.png
  1. ** 调用相应的子模块文件   
  2. **********************************************************/
  3. #include"LCD12864.H"
  4. #include"eeprom.h"
  5. #include"usart.h"
  6. #include"ad.h"
  7. #include"pwm_10BIT.h"
  8. extern void calc_voltage_current();
  9. void OUT_VOLTAGE_1()
  10. {
  11. if(VOL_OUT_FLAG==1)
  12. {
  13.    OUT_Voltage_PWM=ADJ_VOL;
  14.   OUT_Current_PWM=ADJ_CUR;
  15. }
  16. else
  17. {
  18.   OUT_Voltage_PWM=1;
  19.   OUT_Current_PWM=1;

  20. }
  21. }
  22. /*********************************************************
  23. **    将电压发送到串口   
  24. **********************************************************/
  25. //void Voltage_Send(U8 Voltage_num,U16 Voltage_dat)
  26. //{   
  27. //  SendData('A');
  28. // SendData('D');
  29. // SendData(Voltage_num+'0');
  30. // SendData('=');
  31. // SendData(Voltage_dat/1000+'0');
  32. // SendData(Voltage_dat%1000/100+'0');
  33. // SendData('.');
  34. // SendData(Voltage_dat%100/10+'0');
  35. // SendData(Voltage_dat%10+'0');
  36. // SendData('V');
  37. // SendData(' ');
  38. // SendData(' ');
  39. // SendData(' ');
  40. // SendData(' ');
  41. //}
  42. //void data_Send(U16 Voltage_dat)
  43. //{   
  44. //  SendData('d');
  45. // SendData('a');
  46. // SendData('t');
  47. // SendData('a');
  48. // SendData(':');
  49. // SendData(Voltage_dat/10000+'0');
  50. // SendData(Voltage_dat%10000/1000+'0');
  51. // SendData(Voltage_dat%1000/100+'0');
  52. // SendData(Voltage_dat%100/10+'0');
  53. // SendData(Voltage_dat%10+'0');
  54. // SendData(' ');
  55. // SendData(' ');
  56. // SendData(' ');
  57. // SendData(' ');
  58. //}
  59. /*********************************************************
  60. **中值滤波
  61. **算法:先进行排序,然后将数组的中间值作为当前值返回。   
  62. **********************************************************/
  63. U16 Error_Correct(U16 *str,U8 num)
  64. {
  65. unsigned char i=0;
  66. unsigned char j=0;
  67. U16 Temp=0;
  68. U16 shu;
  69. //排序
  70. for(i=0;i<num-1;i++)
  71. {
  72.   for(j=i+1;j<num;j++)
  73.   {
  74.    if(str[i]<str[j])
  75.    {
  76.     Temp=str[i];
  77.     str[i]=str[j];
  78.     str[j]=Temp;
  79.    }
  80.   }
  81. }
  82. shu=str[3]+str[4]+str[5]+str[6];
  83. //去除误差,取中间值
  84. return shu/4;
  85. }
  86. /*********************************************************
  87. ** 检测10次电压   
  88. **********************************************************/
  89. U16 ADC_Caculate(U8 channel)
  90. {
  91. U16 ADC_Voltage=0;
  92. U8 i;
  93. for(i=0;i<10;i++)   //检测5次取平均值返回
  94. {
  95.   ADC_TEMP[i]=Get_ADC10bitResult(channel);
  96. }
  97. ADC_Voltage=Error_Correct(ADC_TEMP,10);
  98. return ADC_Voltage;   
  99. }

  100. /*********************************************************
  101. ******电压采集及计算
  102. **********************************************************/
  103. void Voltage_Gath_calc()
  104. {  
  105. U8 i,k;
  106. for(k=0;k<7;k++)
  107. {
  108.    VOL_TEMP2[k]=ADC_Caculate(k);
  109. }
  110. for(i=0;i<7;i++)
  111. {
  112.   VOL_TEMP[i]=((((VOL_TEMP2[i]*2.5*10)/VOL_TEMP2[0])*100)+5)/10;
  113. }
  114. VOL_TEMP[1]*=111;   //输出电流显示微调
  115. VOL_TEMP[2]*=82;   //输出电压显示微调
  116. VOL_TEMP[1]/=100;   
  117. VOL_TEMP[2]/=100;
  118. }

复制代码


全部资料51hei下载地址:
程序和电路图.rar (364.81 KB, 下载次数: 30)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表