历史上的今天
返回首页

历史上的今天

今天是:2024年12月22日(星期日)

2020年12月22日 | 51HX711+单片机10kg电子秤源程序+上线报警设置(加继电器)

2020-12-22 来源:51hei

电子秤的制作,能够去皮,范围10KG


单片机源程序如下:

/************************************************

功能:

     按键K1为去皮功能,K2和K3是修改报警参数值。K2加,K3减。当所测重量大于设置的报警值时,P3.0驱动继电器工作,继电器可以接报警装置等。

         校正方法:如果所测重量偏小。则按住K3键不放,再按下K1键。 直到显示重量为正确重量时再放开K1和K3按键。

                        如果所测重量偏大。则按住K2键不放,再按下K1键。 直到显示重量为正确重量时再放开K1和K2按键。。 校正系数具有断电保存功能。

时间:2018.4.25

作者:Obligation

*************************************************/


#include "main.h"

#include "LCD1602.h"

#include "HX711.h"

#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255

#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535



#include "eeprom52.h"

//定义变量

unsigned char KEY_NUM = 0;   //用来存放按键按下的键值

unsigned long HX711_Buffer = 0;  //用来存放HX711读取出来的数据

unsigned long Weight_Maopi = 0; //用来存放毛皮数据

long Weight_Shiwu = 0;          //用来存放实物重量

unsigned char Max_Value;             //用来存放设置最大值


unsigned char state = 0;    //用来存放设置状态

unsigned char Blink_Speed = 0;

#define Blink_Speed_Max 6          //该值可以改变设置指针闪烁频率



uint GapValue= 210;           //传感器曲率


unsigned char num1,num2,times; //num1 和 num2  是存储在单片机eeprom内部的。


sbit JDQ=P3^0;


//报警值,单位是g

#define AlarmValue 10000                       




/******************把数据保存到单片机内部eeprom中******************/

void write_eeprom()

{  

    num1=GapValue/256;

        num2=GapValue%256;


    SectorErase(0x2000);

        byte_write(0x2001,Max_Value);

        byte_write(0x2002,  num1);

        byte_write(0x2003,  num2);


    byte_write(0x2060, a_a);       

}


/******************把数据从单片机内部eeprom中读出来*****************/

void read_eeprom()

{

        Max_Value = byte_read(0x2001);

        num1   = byte_read(0x2002);

        num2   = byte_read(0x2003);

       

    a_a      = byte_read(0x2060);

        GapValue= num1*256+num2;

}


/**************开机自检eeprom初始化*****************/

void init_eeprom()

{

        read_eeprom();                //先读

        if(a_a != 3)                //新的单片机初始单片机内问eeprom

        {

           a_a =3;

           Max_Value = 10;

           GapValue= 210;

       write_eeprom();

        }       

       

       

       

}



//扫描按键

void Scan_Key()

{

        if(KEY1 == 0 && KEY2 ==1 && KEY3 ==1 )

        {

                Delay_ms(5);

                if(KEY1 == 0 && KEY2 ==1 && KEY3 ==1 )

                {

                        while(KEY1 == 0 && KEY2 ==1 && KEY3 ==1 );

                    Get_Maopi();

                        Buzzer_Di();

                }       

        }


        if(KEY2 == 0 && KEY1 ==1 && KEY3 ==1 )

        {

                Delay_ms(5);

                if(KEY2 == 0 && KEY1 ==1 && KEY3 ==1 )

                {

                        while(KEY2 == 0 && KEY1 ==1 && KEY3 ==1 );

                    if(Max_Value<10)         { Max_Value++;}

                    write_eeprom();       //保存数据

                        Buzzer_Di();

                        LCD1602_write_com(0x80+0x40);

            LCD1602_write_word("JDQ=");

            LCD1602_write_data(Max_Value/100 + 0x30);

            LCD1602_write_data(Max_Value%100/10 + 0x30);

            LCD1602_write_data(Max_Value%10 + 0x30);

                }       

        }


        if(KEY3 == 0 && KEY1 ==1 && KEY2 ==1 )

        {

                Delay_ms(5);

                if(KEY3 == 0 && KEY1 ==1 && KEY2 ==1)

                {

                        while(KEY3 == 0 && KEY1 ==1 && KEY2 ==1);

                    if(Max_Value>1)         { Max_Value--; }

                         write_eeprom();       //保存数据

                         Buzzer_Di();

                         LCD1602_write_com(0x80+0x40);

            LCD1602_write_word("JDQ=");

            LCD1602_write_data(Max_Value/100 + 0x30);

            LCD1602_write_data(Max_Value%100/10 + 0x30);

            LCD1602_write_data(Max_Value%10 + 0x30);

                }       

        }



   //=======================对实物进行重量校正================================

        if( KEY1 == 0 && KEY2 ==0)

        {

                Delay_ms(25);

                if( KEY1 == 0 && KEY2 ==0)

                {

                    times=0;

                        Buzzer =0;

                        Delay_ms(25);

                        Buzzer =1;

                    if(GapValue<999)  { GapValue++; }

                        write_eeprom();       //保存数据

                        LCD1602_write_com(0x80+0x40+11);

            LCD1602_write_word("K=");

                LCD1602_write_data(GapValue/100 + 0x30);

            LCD1602_write_data(GapValue%100/10 + 0x30);

            LCD1602_write_data(GapValue%10 + 0x30);


                }       

        }


        if(KEY1 == 0 && KEY3 ==0)

        {

                Delay_ms(25);

                if(KEY1 == 0 && KEY3 ==0)

                {       

                    times=0;

                        Buzzer =0;

                        Delay_ms(25);

                        Buzzer =1;

                    if(GapValue>1)  {         GapValue--; }

                         write_eeprom();       //保存数据

                        LCD1602_write_com(0x80+0x40+11);

            LCD1602_write_word("K=");

                LCD1602_write_data(GapValue/100 + 0x30);

            LCD1602_write_data(GapValue%100/10 + 0x30);

            LCD1602_write_data(GapValue%10 + 0x30);


                }       

        }


}




//****************************************************

//主函数

//****************************************************

void main()

{

        Init_LCD1602();                                                //初始化LCD1602

推荐阅读

史海拾趣

Deltrol Controls公司的发展小趣事

随着电子设备的日益复杂,对内部连接件的要求也越来越高。Deltrol Controls意识到,传统的连接方式已经无法满足行业的需求。为此,公司投入大量资金研发新型软管组件,该组件不仅具有优异的耐温、耐压性能,而且安装简便、维护方便。这一突破性的产品迅速赢得了客户的青睐,Deltrol Controls在电子行业的影响力也进一步扩大。

CMOSIS公司的发展小趣事

近年来,随着人工智能、物联网等技术的快速发展,CMOS图像传感器行业也面临着深刻的变革。CMOSIS公司敏锐地把握住了这一趋势,积极调整战略方向,加大了在人工智能算法、低功耗设计等方面的研发投入。通过不断创新和优化产品,公司成功应对了行业变革带来的挑战,保持了稳健的发展态势。

Adam Tech公司的发展小趣事

Adam Tech公司成立于1987年,总部位于美国新泽西州。创业初期,公司面临着资金短缺、市场竞争激烈等诸多困难。然而,创始人凭借对电子连接器行业的深刻理解和执着追求,带领团队克服重重困难,逐渐在市场上站稳脚跟。公司最初的产品线相对单一,但凭借着高品质和可靠的性能,逐渐赢得了客户的信任。

Glow-Lite Corp公司的发展小趣事

随着全球环保意识的提高,Adam Tech也积极响应绿色制造的号召。公司在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还加大了对绿色产品的研发力度,推出了一系列符合环保标准的产品。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

这五个故事只是Adam Tech在电子行业发展过程中的一部分缩影。正是凭借着对技术的不断追求、对品质的严格把控以及对市场的敏锐洞察,Adam Tech得以在激烈的竞争中脱颖而出,成为电子连接器行业的佼佼者。

CET Technology公司的发展小趣事

随着数字化转型的深入,CET Technology紧跟时代步伐,成功研发出数字化安全生产管控平台。该平台通过整合配电、给水、电梯、消防、空调、安防等各系统,建立统一的安全物联感知平台,实现对安全生产各要素的在线监测。利用3D可视化技术,关键信息得以直观呈现,为企业的安全生产管理提供了有力支持。此外,CET还引入了AI技术,对安全风险进行精准预测,助力企业防范和应对各类安全事件。

APTA Group Inc公司的发展小趣事

APTA Group Inc在电子行业中崭露头角,得益于其一次重要的技术突破。公司在研发新型半导体材料方面取得了重大进展,这种材料不仅性能稳定,而且成本大大降低。这一创新使得APTA的产品在市场上具有极强的竞争力,吸引了众多合作伙伴。随着技术的逐步推广和应用,APTA的业绩迅速攀升,逐渐在行业中占据了一席之地。

问答坊 | AI 解惑

有利用单片机实现数据采集之后再串口传输的实例吗?

因为接触单片机应用的时间不常,想看看有没有这方面的实例可以参考的 谢谢啦!!…

查看全部问答>

VS.NET 2005开发PDA用程序

有这么一个小程序,就是当数据库有数据的时候,会弹出一个对话框,在弹出对话框的同时,我想加上一段提示音,但是试了好几种方法,都不行,哪位高手能指教下啊,小弟感激不敬!!…

查看全部问答>

哪位在本本上用并口连接过H-Jtag 调试?

这样的是: 在PC上我跑IAR, 和 ADS 的两个工程文件,都没有问题, 用自己做的调试板+H-JTAG,都能正常 而换到本本上,在H-JTAG时,检测硬件都没问题,但调试时,分别出了问题: 1 在ADS 上, 按F5后,跑不到,MAIN() 函数那,发现死在 PLL初 ...…

查看全部问答>

WINCE驱动程序是否可以同时开启SPI中断和DMA中断?

请教一下,一个驱动程序程序中,可不可以同时存在SPI中断和DMA中断?还是只能用一个中断? 当驱动程序使用了DMA中断后,SPI中断是否起作用?…

查看全部问答>

【求助】关于延时的问题!

我用C写延时子程序,请问怎么样才可以算出延时了多久呀!好像430讲时序方面也讲的很少,哪位高手有这方面的资料或程序,可否借光参考一下。…

查看全部问答>

基于TMS320F28335的光伏并网模拟装置

基于TMS320F28335的光伏并网模拟装置…

查看全部问答>

0-10mv交流经过运放输出0-5v的直流

本帖最后由 dontium 于 2015-1-23 13:11 编辑 设计电路,在模电书上看到信号放大的电路,是三个运放,有没有两个运放的还有就是单电源运放放大的 …

查看全部问答>

TI M4处理器

以前主要搞PIC单片机软件,现在想学习TI  M4处理器 能给点的建议吗?(最好能推荐款开发板)。…

查看全部问答>

病人/老人身体状况监测系统

采用Ti SensorTag,安卓手机 , 能实时连续采集病人/老人的身体状况,比如体温脉搏,心率,皮肤电阻等信息,实实传到具有蓝牙设备的手持安卓终端上(手机),来进行监测,分析,并给病人/老人提醒,建议。危险或异常情况下可以通过监测端短信给监护 ...…

查看全部问答>