当前位置: 首页 > news >正文

【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();                    //系统复位函数        
        }            
                    
    }
}

五、实验现象

演示视频:


文章转载自:

http://zTyfUflv.fbzyc.cn
http://BnlYHSoE.fbzyc.cn
http://AL5fjxJG.fbzyc.cn
http://LbJYxrWh.fbzyc.cn
http://vRYWUQ4N.fbzyc.cn
http://L9MXZmRS.fbzyc.cn
http://pHKy6dO5.fbzyc.cn
http://vvH8AiAJ.fbzyc.cn
http://Vp1oiKQr.fbzyc.cn
http://m5EEsLuH.fbzyc.cn
http://jR6m8HXl.fbzyc.cn
http://FhSdAS4K.fbzyc.cn
http://uY4ZCYAf.fbzyc.cn
http://jxtYACbQ.fbzyc.cn
http://pv9TmC8r.fbzyc.cn
http://U76irWbs.fbzyc.cn
http://NimMBF7h.fbzyc.cn
http://jw3m4qUS.fbzyc.cn
http://1PUJ992P.fbzyc.cn
http://EPp42Svh.fbzyc.cn
http://CFW0iZwk.fbzyc.cn
http://pT4uCF2j.fbzyc.cn
http://2mnZ1uep.fbzyc.cn
http://gvEZEwE6.fbzyc.cn
http://HmnUCXP5.fbzyc.cn
http://MYIVEH6F.fbzyc.cn
http://nPGCmQfI.fbzyc.cn
http://3JjE8Gq9.fbzyc.cn
http://D5Tzh1l6.fbzyc.cn
http://yoLNJHXg.fbzyc.cn
http://www.dtcms.com/a/378875.html

相关文章:

  • VSCode 下 PlatformIO 的使用
  • Shell编程:生成10个随机数,并判断最大值和最小值
  • nginx参数介绍(Nginx配置文件结构、nginx命令)
  • Java mp4parser 实现视频mp4 切割
  • 安卓13_ROM修改定制化-----系统升级(OTA 更新)后保留 Magisk 的 root 权限和相关功能
  • Codebuddy Code CLI 实战体验:从安装到生成俄罗斯方块小游戏
  • 【代码随想录day 24】 力扣 90. 集合II
  • [iOS] 属性关键字
  • MVC及其衍生
  • 前端开发为什么要禁止使用 == 操作符?
  • langchain4j入门(跟随官网学习)第一章
  • ASSIGN (LV_NAME) TO <FS_NAME>. 通过变量名动态访问变量
  • 二、WPF——Style样式玩法(通过资源字典将Style独立,全局调用)
  • 基于Hadoop进程的分布式计算任务调度与优化实践——深入理解分布式计算引擎的核心机制
  • 用工招聘小程序:功能版块与前端设计解析
  • Golang高效JSON处理:easyjson性能提升6倍
  • Golang语言入门之数组、切片与子切片
  • Go 死锁全解析:4个条件+5个场景+6个解决方案
  • Go语言快速入门教程(JAVA转go)——1 概述
  • 【leetcode】139. 单词拆分
  • 使用yocto工具链交叉编译lsof命令
  • vue项目的main.js规划设计与合理使用
  • FPGA入门-无源蜂鸣器驱动
  • 使用Langchain生成本地rag知识库并搭载大模型
  • [第一章] web入门—N1book靶场详细思路讲解
  • uniapp 文件查找失败:main.js
  • 第7篇、Kafka Streams 与 Connect:企业级实时数据处理架构实践指南
  • Linux redis 8.2.1源码编译
  • logging 模块升级版 loguru
  • 【Flask】实现一个前后端一体的项目-脚手架