找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4529|回复: 3
收起左侧

STM32 HX711+LCD12864电子秤程序

[复制链接]
ID:223876 发表于 2017-8-1 16:20 | 显示全部楼层 |阅读模式
从别处找的电子秤程序STM32单片机主控 hx711芯片+12864液晶显示 希望对大家有帮助
0.png

stm32单片机主程序如下:
  1. /******************** (C) COPYRIGHT 2012 WildFire Team **************************
  2. * 文件名  :main.c
  3. * 描述    :3个LED在 SysTick 的控制下,以500ms的频率闪烁。         
  4. * 实验平台:野火STM32开发板
  5. * 库版本  :ST3.5.0
  6. * 作者    :wildfire team
  7. **********************************************************************************/
  8. #include "stm32f10x.h"
  9. #include "SysTick.h"
  10. #include "12864.h"
  11. #include "HX711.h"

  12. uint32_t ticktime;
  13. unsigned long HX711_Buffer = 0;
  14. unsigned int Weight_Maopi = 0,Weight_Shiwu = 0;
  15. char Price_Count = 0;
  16. unsigned char KEY_NUM = 0;
  17. unsigned char Price_Buffer[5] = {0x00,0x00,0x00,0x00,0x00};
  18. unsigned long Money = 0;
  19. unsigned char Flag_OK = 0;

  20. unsigned char temp = 0,temp1 = 0xf7;
  21. /*
  22. * 函数名:main
  23. * 描述  :主函数
  24. * 输入  :无
  25. * 输出  :无
  26. */

  27. void Key_GPIO_Config(void)
  28. {         GPIO_InitTypeDef GPIO_InitStructTRIG;
  29.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
  30.           GPIO_InitStructTRIG.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;        
  31.           GPIO_InitStructTRIG.GPIO_Mode = GPIO_Mode_Out_PP;      
  32.           GPIO_InitStructTRIG.GPIO_Speed = GPIO_Speed_50MHz;
  33.           GPIO_Init(GPIOA, &GPIO_InitStructTRIG);
  34.         GPIO_SetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2 );
  35. }
  36. /********************************************************/

  37. void Led_GPIO_Config(void)
  38. {
  39.                 GPIO_InitTypeDef GPIO_InitStructure;
  40.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
  41.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;        
  42.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  43.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  44.           GPIO_Init(GPIOC, &GPIO_InitStructure);
  45.         GPIO_SetBits(GPIOC, GPIO_Pin_3 );        
  46. }
  47. /************************************************************/
  48. void Get_Weight()
  49. {
  50.         HX711_Buffer = HX711_Read();
  51.         HX711_Buffer = HX711_Buffer/100;
  52.         if(HX711_Buffer >= Weight_Maopi)                        
  53.         {
  54.                 Weight_Shiwu = HX711_Buffer;
  55.                 Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                //获取实物的AD采样数值。
  56.         
  57.                 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/2.135+0.05);         //计算实物的实际重量
  58.                                                                                                                                                 //因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的2.15这个除数。
  59.                                                                                                                                                 //当发现测试出来的重量偏大时,增加该数值。
  60.                                                                                                                                                 //如果测试出来的重量偏小时,减小改数值。
  61.                                                                                                                                                 //该数值一般在2.15附近调整之间。因传感器不同而定。
  62.                                                                                                                                                 //+0.05是为了四舍五入百分位
  63.                
  64.                 if(  Weight_Shiwu > 20000 )
  65.                 {
  66.                 GPIO_ResetBits(GPIOC, GPIO_Pin_3 );                                //打开警报        
  67.                 }
  68.                 else
  69.                 {
  70.                         GPIO_SetBits(GPIOC, GPIO_Pin_3 );                        //关闭警报
  71.                 }
  72.         }
  73.         else if(HX711_Buffer < Weight_Maopi - 30)
  74.         {
  75.                 GPIO_ResetBits(GPIOC, GPIO_Pin_3 );                                //负重量报警
  76.         }

  77. }

  78. //****************************************************
  79. //获取毛皮重量
  80. //****************************************************
  81. void Get_Maopi()
  82. {
  83.         HX711_Buffer = HX711_Read();
  84.         Weight_Maopi = HX711_Buffer/100;                                 
  85. }
  86. /******************************************************************/
  87. /******************************************************************/

  88. int main(void)
  89. {        

  90.         Led_GPIO_Config();
  91.         Key_GPIO_Config();

  92.         /* 配置SysTick 为10us中断一次 */
  93.         SysTick_Init();
  94.         /*********************************************************************/
  95.         /************************************************************************/
  96.     LCD12864_InitPort(); //端口初始化
  97.         LCD12864_Init();         //液晶初始化
  98.         HX711_init();

  99.   //  LCD12864_Pos(3,5);
  100.     LCD_ShowString(1,0,"初始化……");

  101. /*        LCD12864_NoWaitIdle_COM_Write(0x80);                                                //指针设置
  102.         LCD12864_write_word("※※※※※※※※");
  103.         LCD12864_NoWaitIdle_COM_Write(0x90);                                                //指针设置
  104.         LCD12864_write_word("※※欢迎使用※※");                        
  105.         LCD12864_NoWaitIdle_COM_Write(0x88);                                                //指针设置
  106.         LCD12864_write_word("※20公斤电子秤※");
  107.         LCD12864_NoWaitIdle_COM_Write(0x98);                                                //指针设置
  108.         LCD12864_write_word("※※※※※※※※");                   */

  109.         Get_Maopi();                                //称毛皮重量
  110.                                 
  111.         delay_ms(10000);                 //延时10s,等待传感器稳定
  112.         Price_Count = 0;
  113.         Price_Buffer[0] = 0;
  114.         Price_Buffer[1] = 0;
  115.         Price_Buffer[2] = 0;
  116.         Price_Buffer[3] = 0;
  117.         Price_Buffer[4] = 0;
  118.         Money = 0;
  119.         Flag_OK = 0;

  120.         Get_Maopi();                                //称毛皮重量
  121.         LCD12864_Clr();                        //清空
  122.         
  123.         while(1)
  124.         {
  125.                 delay_ms(500);
  126.                 LCD12864_Clr();
  127.                 LCD_ShowString(1,0,"上海工程技术大学");
  128.                 LCD_ShowString(2,0,"大学生创新项目");
  129.         //        LCD12684_Wdat(i+0x30);
  130.                         Get_Weight();                        //称重
  131.         
  132.                         //显示当前重量
  133.                         LCD_ShowString(3,0,"重量");
  134.                         LCD12864_Pos(3,2);
  135.                 //        LCD12684_Wdat('');
  136.                         if( Weight_Shiwu/10000 != 0)
  137.                         {
  138.                                 LCD12684_Wdat(Weight_Shiwu/10000 + 0x30);
  139.                         }
  140.                         else
  141.                         {
  142.                                 LCD12684_Wdat(' ');        
  143.                         }
  144.                         LCD12684_Wdat(Weight_Shiwu%10000/1000 + 0x30);
  145.                         LCD12684_Wdat('.');
  146.                         LCD12684_Wdat(Weight_Shiwu%1000/100 + 0x30);
  147.                         LCD12684_Wdat(Weight_Shiwu%100/10 + 0x30);
  148.                         LCD12684_Wdat(Weight_Shiwu%10 + 0x30);

  149.                 LCD_ShowString(3,6,"kg");

  150.                 }  


  151. }


  152. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
复制代码

完整源码51黑下载地址:
HX711+lcd12864.rar (286.38 KB, 下载次数: 164)

评分

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

查看全部评分

回复

使用道具 举报

ID:148337 发表于 2018-3-7 09:37 | 显示全部楼层
串行还是并行
回复

使用道具 举报

ID:290014 发表于 2019-1-3 16:48 | 显示全部楼层
正需要这样的程序,下来看看
回复

使用道具 举报

ID:395289 发表于 2019-4-27 20:29 | 显示全部楼层
wjh_004 发表于 2019-1-3 16:48
正需要这样的程序,下来看看

能给我发一份吗。谢谢1799835116@qq.com
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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