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

发布于:2025-09-13 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

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

五、实验现象

演示视频:


网站公告

今日签到

点亮在社区的每一天
去签到