找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3467|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[求助]

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:40027 發(fā)表于 2012-5-10 19:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式

請(qǐng)高手幫忙改下這段程序(hx711和1602的現(xiàn)實(shí)程序)現(xiàn)實(shí)不了總是亂碼

#include<reg52.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
uchar i,ms,p,s;
void Delay_us(unsigned  char j);
void Delay_ms(unsigned  char i);
unsigned long ReadAD(void);

unsigned long xx,x,y;    //重量數(shù)值返回(十六進(jìn)制)
unsigned char xx2=0x30;   //多少單位重量數(shù)值 為0.1g
unsigned long xx3=0x82BD9A;   //零點(diǎn)值(十六進(jìn)制)
unsigned char xx4;

sbit ADDO=P1^0;
sbit ADSK=P1^1;
bit key_4z;

sbit rs=P2^5;
sbit rw=P2^6;
sbit e=P2^7;
uchar c[];
uchar tab[]="0123456789";
unsigned long dat[];
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}
void delayus(uint k)
{
   for(;k>0;k--);
}
void write1602_com(uchar deman)
{
 e=0;
 rs=0;
 rw=0;
 P0=deman;
 delay(2);
 e=1;
 delay(5);
 e=0;
}
void write_dat(uchar dat)
{
 
 e=0;
 rs=1;
 rw=0;
 P0=dat;
 delay(2);
 e=1;
 delay(5);
 e=0;
}
void init(void)
{
 delayus(15);
 write1602_com(0x38);
 delayus(5);
 write1602_com(0x38);
 delayus(5);
 write1602_com(0x38);
 write1602_com(0x38);
 write1602_com(0x08);
 write1602_com(0x01);
 write1602_com(0x06);
 write1602_com(0x0c);
}

void Delay_ms(unsigned  char i)

 do{
    Delay_us(0);
 i--;
 }
 while(i);
}
//--------------------------------------------------------------------------
//函數(shù)名稱:    Delay_us() 
//函數(shù)功能:    延時(shí)( 2*J+2)微秒
//其他說(shuō)明:     
//--------------------------------------------------------------------------
void Delay_us(unsigned  char j)

 do{j--;}
 while(j);
}
void delay_50ms(uint z)
{
 uint x;
 for(;z>0;z--)
 for(x=6245;x>0;x--);
}
void delay_50us(uint k)
{
   uint j;
   for(;k>0;k--)
    for(j=19;j>0;j--);
}


void display()
{  
  /*if(key_4z)
   c[0]=tab[11]; */ //為負(fù)加"-"前綴(tab[xx/10000]);   //串口發(fā)送ASCII碼十進(jìn)制千位
  
   c[5]=tab[xx/10000];
      //串口發(fā)送ASCII碼十進(jìn)制百位
   xx=xx%10000;
   c[6]=tab[xx/1000];   //串口發(fā)送ASCII碼十進(jìn)制十位
   xx=xx%1000;
   c[7]=tab[xx/100];
   xx=xx%100;
    xx=xx ;
   c[8]=tab[xx/10];
   /*
   c    //串口發(fā)送ASCII碼十進(jìn)制個(gè)位
  c[4]=tab[10];      //小數(shù)點(diǎn)
  c[5]=(tab[xx%10]);*/    //串口發(fā)送ASCII碼十進(jìn)制小數(shù)位
     
  
  
  init();
  write1602_com(0x80);
  for(i=0;i<16;i++)
  {
   write_dat(c);
   delay(5);
  }

     
}

void main()
{
   uchar i;
    
  delay_50ms(4);
   for(i=0;i<5;i++)
   {xx4=xx2;          //備份g換算值
   xx2=1;                     //取消g換算
    xx3=0;              //零點(diǎn)值置零
    xx3=ReadAD();            //取得新的零點(diǎn)值
    xx2=xx4;
   delay_50ms(1);
   }
   delay_50ms(2);
  
    
 while(1)
 { 
  unsigned int temp,j,min;
  unsigned long yy=0,yy1=0;

   for(i=0;i<6;i++)
  {
   dat=ReadAD();delay_50ms(2);
  }
  for(i=0;i<6;i++)
  {
   min=i;
   for(j=i+1;j<6;j++)
    if(dat[j]<dat[min])
    min=j;
    temp=dat[min];
    dat[min]=dat;
    dat=temp;
  }
   
  for(i=3;i<5;i++)
  {
   yy=dat;
   yy1+=yy;
  }
     xx=yy1/2;
   
   display();
  delay_50ms(2);
 
 }
}
unsigned long ReadAD(void){
unsigned long Count;
unsigned char j;
  ADSK=0;      // 使能AD(PD_SCK 置低)
  ADDO=1;     //51CPU 準(zhǔn)雙向I/0 輸入使能

  Count=0;
 //在這里一直等待有數(shù)據(jù)程序才會(huì)向下執(zhí)行,即ADDO為低電平
  
  while(ADDO);    // 判斷AD轉(zhuǎn)換是否結(jié)束,若未結(jié)束則等待否則開始讀取
  for(j=24;j>0;j--){
  ADSK=1;     //PD_SCK 置高(發(fā)送脈沖)
  Count=Count<<1;   //每個(gè)高電平到低電平的下降沿來(lái)時(shí),變量count左移一位,右側(cè)補(bǔ)零
ADSK=0;        //PD_SCK 置低
  if(ADDO)Count++;
}
  ADSK=1;
Count=Count^0x800000;  //第25個(gè)脈沖下降沿來(lái)時(shí),轉(zhuǎn)化數(shù)據(jù)。Count與0x800000按位做xor運(yùn)算。
ADSK=0;

//用的A通道 
//A通道  信號(hào)線是S+,S-//A通道

if (Count > xx3)
{
 Count=(Count - xx3)/xx2;//值為正_根據(jù) 重量數(shù)值 計(jì)算出有多少個(gè)0.1g (十六進(jìn)制)
 key_4z=0;      //正負(fù)標(biāo)志復(fù)位,表示值為正
}
else
{
 Count=(xx3 - Count)/xx2;//值為負(fù)_根據(jù) 重量數(shù)值 計(jì)算出有多少個(gè)0.1g (十六進(jìn)制)
 key_4z=1;    //正負(fù)標(biāo)志置位,表示值為負(fù)
}

return(Count);

[upload=c,hx711.c]viewFile.asp?ID=1071[/upload]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表