标题:
STM32 HX711+LCD12864电子秤程序
[打印本页]
作者:
z102656274
时间:
2017-8-1 16:20
标题:
STM32 HX711+LCD12864电子秤程序
从别处找的电子秤程序STM32单片机主控 hx711芯片+12864液晶显示 希望对大家有帮助
0.png
(53.45 KB, 下载次数: 54)
下载附件
2017-8-1 19:23 上传
stm32单片机主程序如下:
/******************** (C) COPYRIGHT 2012 WildFire Team **************************
* 文件名 :main.c
* 描述 :3个LED在 SysTick 的控制下,以500ms的频率闪烁。
* 实验平台:野火STM32开发板
* 库版本 :ST3.5.0
* 作者 :wildfire team
**********************************************************************************/
#include "stm32f10x.h"
#include "SysTick.h"
#include "12864.h"
#include "HX711.h"
uint32_t ticktime;
unsigned long HX711_Buffer = 0;
unsigned int Weight_Maopi = 0,Weight_Shiwu = 0;
char Price_Count = 0;
unsigned char KEY_NUM = 0;
unsigned char Price_Buffer[5] = {0x00,0x00,0x00,0x00,0x00};
unsigned long Money = 0;
unsigned char Flag_OK = 0;
unsigned char temp = 0,temp1 = 0xf7;
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*/
void Key_GPIO_Config(void)
{ GPIO_InitTypeDef GPIO_InitStructTRIG;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructTRIG.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;
GPIO_InitStructTRIG.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructTRIG.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructTRIG);
GPIO_SetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2 );
}
/********************************************************/
void Led_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC, GPIO_Pin_3 );
}
/************************************************************/
void Get_Weight()
{
HX711_Buffer = HX711_Read();
HX711_Buffer = HX711_Buffer/100;
if(HX711_Buffer >= Weight_Maopi)
{
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/2.135+0.05); //计算实物的实际重量
//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的2.15这个除数。
//当发现测试出来的重量偏大时,增加该数值。
//如果测试出来的重量偏小时,减小改数值。
//该数值一般在2.15附近调整之间。因传感器不同而定。
//+0.05是为了四舍五入百分位
if( Weight_Shiwu > 20000 )
{
GPIO_ResetBits(GPIOC, GPIO_Pin_3 ); //打开警报
}
else
{
GPIO_SetBits(GPIOC, GPIO_Pin_3 ); //关闭警报
}
}
else if(HX711_Buffer < Weight_Maopi - 30)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_3 ); //负重量报警
}
}
//****************************************************
//获取毛皮重量
//****************************************************
void Get_Maopi()
{
HX711_Buffer = HX711_Read();
Weight_Maopi = HX711_Buffer/100;
}
/******************************************************************/
/******************************************************************/
int main(void)
{
Led_GPIO_Config();
Key_GPIO_Config();
/* 配置SysTick 为10us中断一次 */
SysTick_Init();
/*********************************************************************/
/************************************************************************/
LCD12864_InitPort(); //端口初始化
LCD12864_Init(); //液晶初始化
HX711_init();
// LCD12864_Pos(3,5);
LCD_ShowString(1,0,"初始化……");
/* LCD12864_NoWaitIdle_COM_Write(0x80); //指针设置
LCD12864_write_word("※※※※※※※※");
LCD12864_NoWaitIdle_COM_Write(0x90); //指针设置
LCD12864_write_word("※※欢迎使用※※");
LCD12864_NoWaitIdle_COM_Write(0x88); //指针设置
LCD12864_write_word("※20公斤电子秤※");
LCD12864_NoWaitIdle_COM_Write(0x98); //指针设置
LCD12864_write_word("※※※※※※※※"); */
Get_Maopi(); //称毛皮重量
delay_ms(10000); //延时10s,等待传感器稳定
Price_Count = 0;
Price_Buffer[0] = 0;
Price_Buffer[1] = 0;
Price_Buffer[2] = 0;
Price_Buffer[3] = 0;
Price_Buffer[4] = 0;
Money = 0;
Flag_OK = 0;
Get_Maopi(); //称毛皮重量
LCD12864_Clr(); //清空
while(1)
{
delay_ms(500);
LCD12864_Clr();
LCD_ShowString(1,0,"上海工程技术大学");
LCD_ShowString(2,0,"大学生创新项目");
// LCD12684_Wdat(i+0x30);
Get_Weight(); //称重
//显示当前重量
LCD_ShowString(3,0,"重量");
LCD12864_Pos(3,2);
// LCD12684_Wdat('');
if( Weight_Shiwu/10000 != 0)
{
LCD12684_Wdat(Weight_Shiwu/10000 + 0x30);
}
else
{
LCD12684_Wdat(' ');
}
LCD12684_Wdat(Weight_Shiwu%10000/1000 + 0x30);
LCD12684_Wdat('.');
LCD12684_Wdat(Weight_Shiwu%1000/100 + 0x30);
LCD12684_Wdat(Weight_Shiwu%100/10 + 0x30);
LCD12684_Wdat(Weight_Shiwu%10 + 0x30);
LCD_ShowString(3,6,"kg");
}
}
/******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
复制代码
完整源码51黑下载地址:
HX711+lcd12864.rar
(286.38 KB, 下载次数: 166)
2017-8-1 19:25 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
746228432
时间:
2018-3-7 09:37
串行还是并行
作者:
wjh_004
时间:
2019-1-3 16:48
正需要这样的程序,下来看看
作者:
菜鸟鸿
时间:
2019-4-27 20:29
wjh_004 发表于 2019-1-3 16:48
正需要这样的程序,下来看看
能给我发一份吗。谢谢
1799835116@qq.com
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1