请问一下这个程序为什么只能显示数据00.00(1580那个数据可能不对,我测量1kg的物品),谢谢
c51程序如下
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code table[]="welcome to use!";
uchar table1[]="shiwu= . g";
long HX711_Buffer,HX711_Buffer0,Weight_Maopi, Weight_Shiwu;
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P2^5;
sbit DT=P2^0;
sbit SCK=P2^1;
sbit DU=P2^6;
sbit WE=P2^7;
void Get_Maopi();
void Get_Weight();
void Delayms(uint ms)
{
uchar a ;
while(ms--)
{
for(a=0;a<120;a++);
}
}
void write_com(uchar com)//写命令
{
RS=0;
P0=com;
Delayms(5);
EN=1;
Delayms(5);
EN=0;
}
void write_date(uchar date)//写数据
{
RS=1;
P0=date;
Delayms(5);
EN=1;
Delayms(5);
EN=0;
}
void init_1602()//初始化
{
uchar y,z;
EN=0;
RW=0;
DU=0;
WE=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(y=0;y<15;y++)
{
write_date(table[y]);
}
write_com(0x80+0x40);
for(z=0;z<15;z++)
{
write_date(table1[z]);
}
}
void Delayus()
{
_nop_();
_nop_();
}
ulong getdate()
{
ulong count;
uchar i;
count=0;
DT=1;
Delayus();
SCK=0;
while(DT);
for(i=0;i<24;i++)
{
SCK=1;
count=count<<1;
SCK=0;
if(DT)
count++;
}
SCK=1;
count=count^0x800000;
SCK=0;
DT=1;
return(count);
}
void Get_Maopi()
{
HX711_Buffer0 =getdate();
}
void Get_Weight()
{
HX711_Buffer =getdate();
if(HX711_Buffer >= HX711_Buffer0)
{
Weight_Shiwu = HX711_Buffer;
Weight_Shiwu = Weight_Shiwu - HX711_Buffer0;
Weight_Shiwu = (unsigned long)((float)Weight_Shiwu/1530);
}
}
void gsbq()
{
uchar ge,shi,bai,qian;
qian=Weight_Shiwu/1000;
bai=Weight_Shiwu%1000/100;
shi=Weight_Shiwu%100/10 ;
ge=Weight_Shiwu%10;
write_com(0x80+0x40+7);
write_date(0x30+qian);
write_date(0x30+bai);
write_date('.');
write_date(0x30+shi);
write_date(0x30+ge);
}
void main()
{
init_1602();//初始化
getdate();
Get_Maopi();
while(1)
{
getdate();
Get_Weight();
gsbq();
}
}
|