173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

51单片机设计新型电子秤

htxw 2023-03-14 资讯中心 20 ℃

求讲解51单片机电子秤的程序,分模块详细点

如果想知道更多的东西,建议看一本书:吴鉴鹰单片机实战精讲,网上能找到,代码我给你了。

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

*程序:吴鉴鹰基于单片机的电子秤的设计程序                                                      

** 这一讲的主要内容: 电子称是什么,讲的专业点就是:

利用物体的重力作用来确定物体质量的测量仪器,也可用来确定与物体质量相关的其他量的大小,

参数,或特性用我们自己话讲就是测重量的。                                                                                  

** 功能描述:  

** 输 入:         

** 内容:     

** 输 出: 

**         

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:     14.02.22

备注:有什么错误的地方,欢迎各大烧友指正

O(∩_∩)O~

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

#include reg51.h

#include intrins.h

#includestdlib.h

#includemath.h                

#define uchar unsigned char  //宏的定义变量类型 uchar 代替 unsigned char

#define uint  unsigned int  //宏的定义变量类型 uint  代替 unsigned int

#define delay_time_max   50   //按键去抖动延时阀值

sbit    RS = P2^0;

sbit    RW = P2^1;

sbit    SCLK = P2^2;

sbit    LCDRST = P2^3;

sbit         ST=P3^6;                //启动信号

sbit         EOC=P3^3;                //转换结束信号,连到外部中断1口,转换结束后进入外部中断

sbit         OE=P3^7;                //输出使能

uchar          KEY_VALUE;

uchar          key_data;

uchar          dis_buf;            //显示缓存

uchar          temp;

uchar          key;                //键顺序码

uchar         result;

uint         f;

void delay(uchar x);      //x*0.14MS

// 此表为 LED 的字模              0   1  2  3    4  5  6  7  8  9   a    b    c d   e   f

unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};

unsigned char  ADC0809[],KONGBVAI[],DANJIA[];

void ADC0809_change(); 

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

** 函数名称:  delayms

** 功能描述:  译码功能,将需要显示的数字转成相应的七段译码表

              如要显示的字符为“0”,则为7e ---0111 1111,就中间的一个LED不亮

** 输 入:    ms:需要延时的长度

**         

**        

** 输 出: 

**         

** 全局变量: 

** 调用模块: 

**

** 作 者:     吴鉴鹰

** 日 期:     14.02.22

**-----------------------------------------------------------------------------------

** 修改人:吴鉴鹰

** 日 期:

**----------------------------------------------------------------------------------

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

void delayms(uint ms)

{

        uchar i;

        while(ms--) for(i=0;i120;i++);

}

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

** 函数名称:   SendByte  

** 功能描述:   串口给液晶发送数据  

                                                         

** 输 入:  Dbyte

**         

**         

** 输 出: 

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:    14.02.28

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

void SendByte(uchar Dbyte)

{

     uchar i;

     for(i=0;i8;i++)

     {

           SCLK = 0;

           Dbyte=Dbyte1;      //左移一位

           RW = CY;            //移出的位给RW

           SCLK = 1;

           SCLK = 0;

     }

}

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

** 函数名称:   TransferCom  

** 功能描述:   串口给液晶发送命令  

                                                         

** 输 入:  data0

**         

**         

** 输 出: 

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:    14.02.28

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

void    TransferCom(uchar data0)  

{

   RS=1;

   SendByte(0xf8);            //11111ABC,RW(0),RS(1),0

   SendByte(0xf0data0);      //高四位

   SendByte(0xf0data04);   //低四位(先执行)

   RS=0;            

}

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

** 函数名称:   lcd_mesg  

** 功能描述:   写数据,

                                                          

** 输 入:  data1

**         

**         

** 输 出: 

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:    14.02.28

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

void    TransferData(uchar data1)  

{

   RS=1;

   SendByte(0xfa);            //11111ABC,RW(0),RS(1),0

   SendByte(0xf0data1);      //高四位

   SendByte(0xf0data14);   //低四位(先执行)

   RS=0;

}

关于51单片机电子秤设计需用哪些原件,运用哪些知识。

原件:压力传感器、A/D芯片、单片机、显示器,以及构建电路的电阻和芯片。

原理:利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,当前所称物品的重量,通过显示器显示。

实际放大电路跟仿真的会有些出入,需要自己调节电阻阻值从而达到放大要求。

我用51单片机做一个电子秤!采用什么型号的压力传感器啊!用的AD转化器是ADC0832,需要接放大电路么?

传感器很多 ,型号可以再查一下 一般来说都没多大问题 主要跟你的硬件电路有关

但你采用的ADC0832? 8bit的吧? 它的测量精度就不够 肯定做不到0.01kg的分辨率(更不用说精度)

ADC 选用 10位以上的吧 最好是12位以上

硬件电路还有好多设计的方面要注意 ,比如 电源纹波、AD采样参考电压 放大电路……这些设计好了 才能达到设计要求

可以采用电桥→差分放大 注意 模拟电源和数字电源要分开

1.C(138): error C267: 'lcd_display_shuzi': requires ANSI-style prototype基于51单片机电子称设计问题

这是你下载的程序,但其中的LCD驱动程序.h也要下载源文件的,否则编译时找不到就出错的。你肯定是没有下载这个程序,或者就没有吧。

如果你下载这些程序只是作为毕业设计,书面打印出来是没有什么问题。

可是你真的要用keilc来编译,那肯定是有错误的,因你并没有全部程序。

假如,你还想仿真就更不要想了,网上的这些像是论文的东西都是纸上谈兵的,也都不能给全部的资料的。

你就当是玩玩而已了。

另外,你给的链接是打不开的,原文件已经删掉了。

51单片机设计新型电子秤的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:51单片机设计新型电子秤

<