【51单片机】【protues仿真】基于51单片机多功能电子秤系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示

2、矩阵键盘输入单价和计算价格

3、可以去皮,校准,累计价格,清除,清零

4、称重范围为0~50Kg,超重报警

二、使用步骤

基于51单片机的多功能电子秤设计过压力传感器采集重量数据,支持单价输入、总价计算及去皮功能‌。LCD1602显示重量、单价、总价等信息。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、称重传感器传感器、数模转换模块

4、蜂鸣器模块

5、继电器模块

6、LCD1602显示模块

四、软件设计

#include <reg52.h>

#include "function.h"

#include "setting.h"

#include "lcd.h"

#include "key.h"

#include "adc0804.h"

sbit Beep=P2^6; //IO口定义

sbit LED=P2^7; //IO口定义

uchar quantity_analog=0; //存放物体质量数据_ADC读取的模拟量

float quantity_digital=0; //存放物体质量数据_ADC转换后的数字量

float price=0; //存放价格参数

float leiji6; //定义第1,2组数据

float all=0;

char code str\[\] = "Wd:";

uint t=0,s=0;

void main(void)

{

Beep=1; //IO口定义

LED=1; //IO口定

lcd_init(); //初始化lcd

init_interrupt(); //中断打开、选择函数

write_com(0x80); //数据指针定位到第一行第一个字处

write_com(0x80+8); //将光标移到 距离数字的位置

delay_ms(100);

// print_string_location(0,2,string); //显示Price 字符串

print_string_location(0,2,"Total:"); //显示Price 字符串

while(1)

{

key_scan(); //扫描按键函数

if(key == '-')

{

for(t=0;t<6;t++ )

{

leijit=0;

}

system_init(); //系统复位函数

key_operator=0;

number_count=0; //清零

all=0;

}

if(key == ' ')

{

for(t=0;t<6;t++ )

{

number_1t=0;

}

system_init(); //系统复位函数

key_operator=0;

number_count=0; //清零

}

quantity_digital=quantity_count()-qupi; //获取物体质量---------------------------------------------浮点型(float)

if(quantity_count()>45)

{

Beep=0; //IO口定义

LED=0; //IO口定

}

else

{

Beep=1; //IO口定义

LED=1; //IO口定

}

price=price_count(); //获取键盘输入,计算后的价格------浮点型(float)

print_weight(0,1); //显示质量

if(price>0) //大于0时显示价格

{

print_price(0,2); //显示价格

while(1) //计算结束,等待清零键按下

{

key_scan();

if(key == ' ')

{

for(t=0;t<6;t++ )

{

number_1t=0;

}

price=0;

key_operator=0;

number_count=0; //清零

system_init(); //系统复位函数

break;

}

if(key == '-')

{

for(t=0;t<6;t++ )

{

leijit=0;

}

system_init(); //系统复位函数

key_operator=0;

number_count=0; //清零

all=0;

}

if(key == '+')

{

leijis=price;

all=0;

price=0;

key_operator=0;

number_count=0; //清零

system_init(); //系统复位函数

s++;

if(s==5) s=0;

for(t=0;t<6;t++ )

{

all=all+leijit;

}

print_all(0,2); //显示价格

}

}

}

if(key == ' ')

{

for(t=0;t<6;t++ )

{

number_1t=0;

}

price=0;

key_operator=0;

number_count=0; //清零

system_init(); //系统复位函数

}

}

}

五、实验现象

演示视频:

相关推荐
清风6666666 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
azwsm8 小时前
电路元器件和GPIO控制器
单片机·嵌入式硬件
kebidaixu11 小时前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客11 小时前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
点灯小铭12 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽12 小时前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊14 小时前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
进击的小头14 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习
点灯小铭15 小时前
基于单片机的多模式智能洗衣机设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
项目題供诗15 小时前
STM32-AD单通道&AD多通道(十九)
stm32·单片机·嵌入式硬件