欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: HX712 電子秤程序 [打印本頁]

作者: saint_lee520    時間: 2017-12-12 17:32
標題: HX712 電子秤程序
#include "ATC12C5A60S2.h"
#include <intrins.h>

sbit ADDO = P4^2;
sbit ADSK = P4^3;
                                                               

void delayms(char ms);
void send_char(char txd);
void send_Achar(char *string);
void get_weight();
void init();

long a,weight;
char c[5],a1,a2,a3;
char tab[]="0123456789";
long ReadCount(void);

main()
{               
        delayms(500);
        init();
        while(1)
        {
        get_weight();         
    }
}


void init()
{
  TMOD = 0x20;                        // 定時器1工作于8位自動重載模式, 用于產生波特率
        TH1 = 0xFD;                                // 波特率9600
        TL1 = 0xFD;
        SCON = 0x50;                        // 設定串行口工作方式
        PCON &= 0xef;                        // 波特率不倍增       
        TR1 = 1;                                // 啟動定時器1
        IE = 0x0;                                //禁止任何中斷
}


void send_char(char txd)
// 傳送一個字符
{
        SBUF = txd;                                                                                                                                                                                                          
        while(!TI);                                // 等特數據傳送
        TI = 0;                                        // 清除數據傳送標志
}

/**********************發送一個字符串******************************/
void send_Achar(char *string)
{
  while(*string!='\0')
   {
    send_char(*string);
    string++;
   }
}
void delayms(char ms)           // 延時子程序

{                                               
        char i;
        while(ms--)
        {
                for(i = 0; i < 120; i++);
        }
}

long ReadCount(void)
{
   long Count;
   char i;
   ADSK=0; //使能AD(PD_SCK 置低)
   Count=0;
   while(ADDO); //AD轉換未結束則等待,否則開始讀取
   for (i=0;i<24;i++)
   {
                 ADSK=1; //PD_SCK 置高(發送脈沖)
                 Count=Count<<1; //下降沿來時變量Count左移一位,右側補零
                 ADSK=0; //PD_SCK 置低
                 if(ADDO) Count++;                                                                                                                                                  
   }
    ADSK=1;           //第25個脈沖到來
    _nop_();  //延長一個機器周期
    ADSK=0;           //第25個脈沖結束
   return(Count);
}

void get_weight()   //獲取被測物體重量
{
   long count=0;
   long sum=0;
   for (count=0;count<5;count++)                                                                                  
        {
                a=ReadCount();
                a=a>>8;
                sum+=a;
        }
        a=sum/5;
//        a1=a&0xff;//a低8位賦值給a1
//        a2=a>>8;//a右移8位后再把此時的a的低八位賦值給a2
//        send_char(a2); //串口輸出a2
//        send_char(a1);//串口輸出a1
//        send_char(0xab);//串口輸出AB  
                         
                weight=(long)((float)(a-791)*0.0378);//重量轉換函數,傳感器型號不同此函數要適當修改               
                c[0] = tab[weight/10000];
                c[1] = tab[weight%10000/1000];
                c[2] = tab[weight%1000/100];
                c[3] = tab[weight%100/10];
                c[4] = tab[weight%10];
        //                c[0] = tab[a/10000];
        //                c[1] = tab[a%10000/1000];
        //                c[2] = tab[a%1000/100];
        //                c[3] = tab[a%100/10];
        //                c[4] = tab[a%10];
                if(c[0]==0x30)
                {
                        send_char(0x20);
                }
                else
                {
                        send_char(c[0]);
                }
                if((c[1]==0x30)&&(c[0]==0x30))
                {
                        send_char(0x20);
                }
                else
                {
                        send_char(c[1]);
                }               
                if((c[2]==0x30)&&(c[1]==0x30)&&(c[0]==0x30))
                {
                        send_char(0x20);
                }
                else
                {
                        send_char(c[2]);
                }
                if((c[3]==0x30)&&(c[2]==0x30)&&(c[1]==0x30)&&(c[0]==0x30))
                {
                        send_char(0x20);
                }
                else
                {
                        send_char(c[3]);
                }
                send_char(c[4]);                                                                                                               
                send_char(0x20);                                                                                                               
                send_char(0x67);
                send_Achar("\r\n");
}         
/************************************************/
/*  由于稱重傳感器線性度參數的不同,而對獲得的重量數據處理,
此處可能會根據不同稱重傳感器,程序的代碼會有所不同      */
/************************************************/


          






10kghx711完整程序C語言.rar

103.23 KB, 下載次數: 48, 下載積分: 黑幣 -5






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1