【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 leiji[6]; //定义第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++ )

{

leiji[t]=0;

}

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

key_operator=0;

number_count=0; //清零

all=0;

}

if(key == ' ')

{

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

{

number_1[t]=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_1[t]=0;

}

price=0;

key_operator=0;

number_count=0; //清零

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

break;

}

if(key == '-')

{

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

{

leiji[t]=0;

}

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

key_operator=0;

number_count=0; //清零

all=0;

}

if(key == '+')

{

leiji[s]=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+leiji[t];

}

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

}

}

}

if(key == ' ')

{

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

{

number_1[t]=0;

}

price=0;

key_operator=0;

number_count=0; //清零

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

}

}

}

五、实验现象

演示视频:

相关推荐
dump linux14 小时前
内核驱动调试接口与使用方法入门
linux·驱动开发·嵌入式硬件
项目題供诗15 小时前
51单片机入门(六)
单片机·嵌入式硬件·51单片机
代码游侠15 小时前
学习笔记——Linux内核与嵌入式开发1
linux·运维·前端·arm开发·单片机·嵌入式硬件·学习
宇钶宇夕16 小时前
CoDeSys入门实战一起学习(二十八):(LD)三台电机顺起逆停程序详解—上升、下降沿使用上
单片机·嵌入式硬件·学习
qq_4017004116 小时前
STM32晶振频率怎么选
stm32·单片机·嵌入式硬件
BackCatK Chen17 小时前
第 5 篇:TMC2240 寄存器体系详解|分类 + 读写逻辑 + 通用框架
单片机·嵌入式硬件·电机驱动·保姆级教程·tmc2240·寄存器详解·stm32实战
jingshaoqi_ccc17 小时前
使用GD32F103C8T6开发板的标准库实现硬件I2C协议通信(附源码下载地址)
单片机·嵌入式硬件
qq_25814297-npl17 小时前
三开门冰箱的接水盒(也称为储水盒或接水盘)正常情况下不会满水
单片机
宵时待雨17 小时前
STM32笔记归纳6:中断
笔记·stm32·嵌入式硬件
华清远见成都中心17 小时前
GPIO(通用输入输出)面试中高频问题
单片机·面试·职场和发展