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

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

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

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

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

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

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

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

** 功能描述:  

** 输 入:         

** 内容:     

** 输 出: 

**         

** 全局变量:

** 明茄调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:     14.02.22

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

O(∩_∩)O~

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

#include <reg51.h>

#include <intrins.h>

#include<stdlib.h>

#include<math.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=0i<120i++)

}

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

** 函数名称:   SendByte  

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

                                                         

** 输 入:  Dbyte

**         

**         

** 输 出: 

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:    14.02.28

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

void SendByte(uchar Dbyte)

{

     uchar i

     for(i=0i<8i++)

     {

           SCLK = 0

           Dbyte=Dbyte<<1      //左移一位

           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(0xf0&data0)      //高四位

   SendByte(0xf0&data0<<4)   //低四位(先执行<<)

   RS=0            

}

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

** 函数名称:   lcd_mesg  

** 功能描述:   写数据,

                                                          

** 输 入:  data1

**         

**         

** 输 出: 

** 全局变量:

** 调用模块: 

**

** 作 者:    吴鉴鹰

** 日 期:    14.02.28

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

void    TransferData(uchar data1)  

{

   RS=1

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

   SendByte(0xf0&data1)      //高四位

   SendByte(0xf0&data1<<4)   //低四位(先执行<<)

   RS=0

}

L-PS

iii型号

压力传感器

输出的是0-5V的信号,可以通过

电态带压跟随器埋闭局

后输弯让入

ADC0809

,再进入单片机即可实现采集信号了。

1:校电子渣陪基秤 *** 作

开机预热10分钟,再一次开机,在电子秤进行笔划自检的过程中,按“清零”键,显示将停止,再按“去皮”键,“起动”、“置零”键,就进入校电子秤程序,显示零位内码值,正常值在于11000以上,这时按“去皮”显示窗显示零,最右下角显示三角符号,说明进入1/3满量程调校程序,在如谨电子秤秤盘上放1/3满量程砝码,重量窗显示对应1/3满量程砝码的值,如果为砝码值,就说明已调校好,否则按“置零”键,此时重量窗将显示砝码值,再按一下“去皮”键,显示窗右下角的三符号将上跳一行,说明进入2/3满量程调校程序,在电子秤盘上放2/3满量程砝码,重量窗将显示对应砝码值,如果为砝码值,说明已校好,否则按“置零”键,此时重量窗将显示砝码值,再按一下“去皮”键,显示窗右下角的符号将上跳一行,说明进入江量程调校程序,在电子秤盘上放满量程砝码,重量窗显示对应砝码值,如果为砝码值,说明已校好,否则按“置零”键,此时重量窗将显示砝码值,重复上述乱改 *** 作直到对应1/3、2/3、3/3满量程的砝码分别显示正确。去皮如需去除器皿皮重,则先将器皿放于称盘上,待显示稳定后按“去皮”键,则天平显示“0.0g或0.00g”,然后将需称重物品放于器皿上,此时显示的数字为物品的净重,拿掉物品及器皿,天平显示的负值,仍按“去皮”键使天平显示回到“0.0g或0.00g”。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12452173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存