芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片解密STM32与HX711作200KG电子秤源码

芯片解密STM32单片机源程序如下:

  1. 芯片解密//传感器用的是8Kg  2.0mV/V的如果其它规格,更改转换公式即可。
  2. 芯片解密//检测参数通过串口发送的电脑。
  3. 芯片解密//可以做程序在电脑上直接显示。
  4. //串口选用USART1
  5. //PB11接HX711数据口浮空输入
  6. //PB12接HX711CLK
  7. //PA11为测试程序时用过的。可删除
  8. //HX711输入电子称电压调称为22K 10K 调压为4V输出
  9. //输出结果最后一位为0.1g

  10. //我们的传感器50kg,灵敏度1mv/v
  11. //HX711模块R1=20k欧,R2=8.2k欧,所以HX711给传感器供电电压为(20+8.2)/8.2*1.25=4.3V,注意万用表测得会比这个值低,模块为了降低功耗只在采样时会用到4.3输出电压
  12. /*Include---------------------------*/
  13. #include <stm32f10x.h>                //包含所有的头文件
  14. #include <stdio.h>
  15. #include "sys.h"
  16. #include "usart.h"
  17. #include "lcd.h"
  18. //#include "adc.h"
  19. //#include "led.h"
  20. //#include "delay.h"

  21. //----------------函数声明--------------------
  22. void Delay_MS(u16 dly);
  23. void delay_us(u16 dly1);
  24. void RCC_Configuration(void);
  25. void GPIO_Configuration(void);
  26. unsigned long Read_HX711(void);
  27. void USART_Configuration(void);
  28. int fputc(int ch,FILE *f);
  29. int GetKey (void);
  30. long double filter(void);
  31. USART_InitTypeDef USART_InitStructure;
  32. ErrorStatus HSEStartUpStatus;


  33. //void u32tostr(unsigned long dat,char *str) ;

  34. /*******************************************************************************
  35. * Function Name  : main
  36. * Description    : Main program.
  37. * Input          : None
  38. * Output         : None
  39. * Return         : None
  40. *******************************************************************************/
  41. int main(void)
  42. {

  43.     u32 adcx;
  44.         float weight;
  45.         
  46.         #ifdef DEBUG
  47.     debug();
  48.     #endif   //执行主函数之前的调试函数,不影响最终的release版

  49.     //------------初始化------------下面三个初始化
  50.         delay_init();
  51.         LCD_Init();
  52.     RCC_Configuration();//RCC指时钟控制预分频器
  53.     GPIO_Configuration();//初始化GPIO口状态
  54.     USART_Configuration( );  //初始化串口配置
  55.        
  56.         //uart_init(9600);                 //串口初始化为9600
  57.        
  58.                 POINT_COLOR=RED;//设置字体为红色
  59.             LCD_ShowString(60,50,200,16,16,"Mini STM32");       
  60.                 LCD_ShowString(60,70,200,16,16,"WEIGHT SCALE");       
  61.                 LCD_ShowString(60,90,200,16,16,"ZHILV@EIGER");
  62.                 LCD_ShowString(60,110,200,16,16,"2017/11/25");       

  63.                 POINT_COLOR=BLUE;//设置字体为蓝色
  64.                 LCD_ShowString(60,130,200,16,16,"ADC_CH1_VAL:");       
  65.                 LCD_ShowString(60,150,200,16,16,"ADC_CH1_WEI:000.000kg");                        
  66.                
  67.         while(1)  //恒运行下面的程序
  68.     {
  69.         Delay_MS(1000);//延时1s,可能是为了等读数稳定(这个延时是为了稳定,也可以留时间滤波)
  70.         
  71.                 adcx=filter();//adcx值由这个子函数读出,这个数需要由下面两句转kg值
  72.                 adcx=8388608-adcx;
  73.                 LCD_ShowxNum(156,130,adcx,8,16,0);//显示ADC转换后的24位二进制数转十进制数值
  74.                
  75.                 adcx=adcx/100;//为节省运算量,将AD值固定缩小100倍
  76.                 weight=(float)adcx/429.496+0.005;  //实际用的时候需要调试,429.496由于传感器差异这个系数一般在400到500之间,加0.005是为了四舍五入
  77.                 adcx=weight;
  78.                 LCD_ShowxNum(156,150,adcx,3,16,0);//显示重量值整数部分
  79.         
  80.                 weight-=adcx;
  81.                 weight*=1000;
  82.                 LCD_ShowxNum(188,150,weight,3,16,0X80);//显示重量值小数部分
  83.                
  84.                
  85.         //GPIO_SetBits(GPIOA,GPIO_Pin_11);   //没看懂,大概是对PA11进行设置,但不清楚作什么设置  从后面推敲应该set置1,reset置0           
  86.         //printf("%d\n",weight);   //打印weight值,串口调试用的       
  87.         }               
  88. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信