Proteus仿真实例_基于STM32单片机的电子称重系统设计(仿真文件+程序)24-32f-58

一.系统概述

系统使用STM32单片机进行主控,系统内通过按键进行单价的设定,使用压力传感器进行称重,根据实时重量和单价计算总价,另外每次按下按键时都会通过蜂鸣器进行响应,防止虚按。

二.仿真概述

1.进入系统启动仿真,此时按下前8个按键就能直接进行单价的设定,显示屏会显示按下按键的序号,按键9是确认按键,按键10是清零按键,确定单价后按下清零按键就能重新输入。

2. 此时设置单价为4,可以对压力传感器的滑动变阻器进行调节。

3. 设定好单价和重量后按下确认按键就会显示总价,此时按下清零按键就需要重新输入单价

三.课程设计

#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);
	}
}
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小常硬件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值