【毕业设计】_基于STM32单片机的电子称重(原理图+源码)

一. 系统概述

该系统基于STM32单片机进行主控,通过按键来设定单价,并利用压力传感器进行重量测量。系统会根据实时的重量和设定的单价来计算总价。每次按下按键时,蜂鸣器会响起,以防止误操作。

在这里插入图片描述

二. 仿真概述

  1. 在仿真启动后,可以使用前8个按键来设置单价。显示屏将显示相应按键的序号。按键9用于确认设置,按键10用于清零。如果需要重新输入单价,按下清零按键即可。

在这里插入图片描述

  1. 设定单价为4后,可以通过滑动变阻器调整压力传感器的读数。

在这里插入图片描述

  1. 在完成单价和重量设置后,按下确认按键即可显示总价。如果需要重新输入单价,请按下清零按键进行重置。

在这里插入图片描述

三.课程设计

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "MPU6050.h"
#include "MyI2C.h"
#include "Key.h"
#include "LED.h"

uint8_t ad;
uint8_t analog;
uint8_t KeyNum;
uint8_t shu=0;
uint8_t yuan;
uint8_t danjia;
int main(void)
{
	/*模块初始化*/
	OLED_Init();		//OLED初始化
	MyI2C_Init();
	MatrixKey_Init();
	LED_Init();
	
	OLED_ShowString(1, 1,"weight: . kg");
	OLED_ShowString(2, 1,"danjian:");
	OLED_ShowString(3, 1, "yuan:  . ");
	OLED_ShowString(4, 1, "KeyNum:");
	while (1)
	{
		ad = PCF8591_ADin(0x01);
		analog=(int)ad/255.0*250;
		OLED_ShowNum(1, 8, analog/10, 1);
		OLED_ShowNum(1, 10, analog%10, 1);
		KeyNum = MatrixKey_GetValue();
		OLED_ShowNum(4, 9, KeyNum, 3);		
		
		if(KeyNum>0 && KeyNum<=9)
		{
			
			GPIO_ResetBits(GPIOA, GPIO_Pin_8 );
			Delay_ms(100);
			GPIO_SetBits(GPIOA, GPIO_Pin_8);
			switch(shu)
			{	
				case 0:
				{
					danjia = KeyNum;
					shu++;
				}break;
				case 2:
				{
					danjia *= 10;
					danjia +=KeyNum ;
					shu++;
				}break;
				case 4:
				{
					
					danjia *= 10;
					danjia +=KeyNum ;
					shu++;	
				}break;				
				
			}
			//shu++;
		}
			
		if(KeyNum==10)
		{
			GPIO_ResetBits(GPIOA, GPIO_Pin_8 );
			Delay_ms(100);
			GPIO_SetBits(GPIOA, GPIO_Pin_8);
			GPIO_ResetBits(GPIOB, GPIO_Pin_12 );
			yuan =danjia*analog;
		}
		 if(KeyNum==11)
		{
			GPIO_ResetBits(GPIOA, GPIO_Pin_8 );
			Delay_ms(100);
			GPIO_SetBits(GPIOA, GPIO_Pin_8);
			GPIO_ResetBits(GPIOB, GPIO_Pin_12 );
			danjia=0;
			yuan=0;
			shu = 0;
		}
		OLED_ShowNum(2, 9, danjia, 4);
		OLED_ShowNum(3, 6, yuan/10, 2);
		OLED_ShowNum(3, 9, yuan%10, 1);
	}
}

24-32f-58

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值