自動(dòng)稱量參考程序_第1頁(yè)
自動(dòng)稱量參考程序_第2頁(yè)
自動(dòng)稱量參考程序_第3頁(yè)
自動(dòng)稱量參考程序_第4頁(yè)
自動(dòng)稱量參考程序_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——自動(dòng)稱量參考程序自動(dòng)稱量參考程序.c

#include#defineFOSC22118400L/***定義通訊協(xié)議***/#definesend_zhen_tousend_data1(0xEE);#definesend_zhen_wen

send_data1(0xFF);send_data1(0xFC);send_data1(0xFF);send_data1(0xFF);

/*************定義程序必需有的變量********************************/bitbusy=0;//COM1使用

sbitsck=P0^3;//定義HX711的SCK

sbitd_out=P0^2;//定義HX711的D_0UT引腳sbitk_1=P3^2;sbitk_2=P3^3;sbitk_3=P3^4;sbitk_4=P3^5;

sbitk_5=P2^0;//定義了5個(gè)開關(guān)量輸入sbitstep_en=P2^2;sbitstep_dir=P2^3;

//sbitstep_pul=P2^4;//定義步進(jìn)電機(jī)驅(qū)動(dòng)引腳sbitjd1=P1^7;

sbitjd2=P1^6;//定義繼電器驅(qū)動(dòng)引腳

/************通信使用命令********************/xdataunsignedcharread_hua_mian_id[8]=

{0XEE,0XB1,0X01,0XFF,0XFC,0XFF,0XFF,0xcc};xdataunsignedchar

shua_xin_off[8]={0xee,0xb3,0x00,0xff,0xfc,0xff,0xff,0xcc};xdataunsignedchar

shua_xin_on[8]={0xee,0xb3,0x01,0xff,0xfc,0xff,0xff,0xcc};xdataunsignedchar

feng_ming[8]={0XEE,0X61,0X32,0XFF,0XFC,0XFF,0XFF,0XCC};/**********聲明無(wú)需存入EEPROM的變量******************/unsignedcharsend_message[20]=0;//發(fā)送幀消息專用數(shù)組unsignedcharread_message[20]=0;//接收消息專用緩沖區(qū)unsignedcharuart_read_f=0;

unsignedcharuart_read_count=0;

unsignedlonghx711_ad=0;//HX711AD轉(zhuǎn)換結(jié)果unsignedlongad_bi_jiao=0;

unsignedintstep_f=0;//存放頻率計(jì)算結(jié)果unsignedintlin_step_f=10;unsignedcharhua_mian_id=0;floatxi_shu_xiao=0.0;floatxi_shu_da=0.0;

unsignedlongmu_biao_liang_1=0;//實(shí)際進(jìn)料時(shí),去掉提前量的數(shù)值

第1頁(yè)

自動(dòng)稱量參考程序.c

unsignedlongmu_biao_liang_8=0;//X0.8的數(shù)值unsignedlongshi_shi_zhi_liang=0;//動(dòng)態(tài),實(shí)時(shí)質(zhì)量/***********聲明需要存入EEPROM的變量**********/unsignedintmi_ma=0;

unsignedintstep_fast=0;//步進(jìn)電機(jī)快速運(yùn)行的頻率unsignedintstep_low=0;//步進(jìn)電機(jī)慢速運(yùn)行的頻率unsignedlongmu_biao_liang=0;//目標(biāo)量unsignedlongpian_yi=0;//質(zhì)量偏移unsignedcharlv_bo=0;//濾波系數(shù)

unsignedintfa_ma_da=0;//校準(zhǔn)時(shí)大砝碼的

unsignedintfa_ma_zhong=0;//校準(zhǔn)時(shí)中砝碼質(zhì)量unsignedintfa_ma_xiao=0;//校準(zhǔn)時(shí)小砝碼質(zhì)量

unsignedlongcai_yang_da=0;//校準(zhǔn)時(shí),大砝碼采樣值unsignedlongcai_yang_zhong=0;//較準(zhǔn)時(shí),中砝碼采樣值unsignedlongcai_yang_xiao=0;//較準(zhǔn)時(shí),小砝碼采樣值unsignedcharliang_du=130;//默認(rèn)亮度130floatpi_zhong=0;//定義皮重

/************聲明子函數(shù)********************/voiduse_k(void);

voidsend_data1(unsignedchardat);voidsend_str1(char*s);

voidnum_to_message(unsignedlongdat);unsignedlonghx711_10(void);

voidstep_control(unsignedchark,unsignedintf);voidupdata_zhong_liang(unsignedlongke);voiddelay_1ms(unsignedchark);voiddelay_50ms(unsignedintm);

voidset_txt(unsignedcharscreen_id,unsignedcharcontrol_id,unsignedlongdat,unsignedcharcounter);voidying_jian_ce_shi(void);

unsignedinttft_read_txt(unsignedcharhua_mian,unsignedchartxt);

voidshu_ru_mi_ma(void);

voidtft_show_6bit(unsignedcharhua_mian,unsignedchartxt,unsignedlongnum);

voidcan_shu_she_zhi(void);

voidtft_show_4bit(unsignedcharhua_mian,unsignedchartxt,unsignedintnum);voidjiao_cheng(void);

unsignedintass_to_num_4bit(unsignedchar*p);unsignedlongass_num_dot(unsignedchar*p);voidte_shu_mi_ma(void);

voidsave_eeprom(unsignedintadd,unsignedlongdat);unsignedlongread_eeprom(unsignedintadd);

第2頁(yè)

自動(dòng)稱量參考程序.c

voidget_xi_shu(void);floatget_zhi_liang(void);

unsignedlongshi_ji_zhong_liang(void);

voidmao_pao_pai_xu(unsignedlong*a,unsignedcharchang_du);voidzheng_chang_xia_liao(void);voidkuai_su_qing_liao(void);voidset_mu_biao_liang(void);

/*************主函數(shù)**********************/voidmain(){

P0M1=0;P0M0=0;jd1=0;jd2=0;

P1M1=0;P1M0=0xff;jd1=0;jd2=0;

P2M1=0x10;P2M0=0;P3M1=0;P3M0=0;P4M1=0;P4M0=0;P5M1=0;P5M0=0;SCON=0x50;

AUXR=0x15;//COM1,COM2,控制波特率發(fā)生器T2L=0xD0;

T2H=0xFF;//波特率設(shè)置AUXR1|=0X40;PS=1;

ES=1;//允許串行口中斷AUXR1|=0X20;CMOD=0X02;

step_f=FOSC/4/3000;CCON=0;CH=0;

CL=0;

CCAP0L=step_f;

CCAP0H=step_f>>8;CCAPM0=0x4d;CR=0;

/**********************************/EA=1;//允許CPU總中斷

step_en=1;step_dir=1;

delay_1ms(250);//250ms/

*********讀取**EEPROM**********/

mi_ma=read_eeprom(1);step_fast=read_eeprom(2);step_low=read_eeprom(3);

mu_biao_liang=read_eeprom(4);

第3頁(yè)

自動(dòng)稱量參考程序.c

pian_yi=read_eeprom(5);lv_bo=read_eeprom(6);

fa_ma_da=read_eeprom(7);fa_ma_zhong=read_eeprom(8);fa_ma_xiao=read_eeprom(9);cai_yang_da=read_eeprom(10);cai_yang_zhong=read_eeprom(11);cai_yang_xiao=read_eeprom(12);liang_du=read_eeprom(13);pi_zhong=read_eeprom(14);

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

k_1=1;k_2=1;k_3=1;k_4=1;

/k_5=1;

****************停留在開機(jī)畫面*****************/while(hua_mian_id==0){

send_str1(read_hua_mian_id);//獲取有效的畫面ID結(jié)果

if((read_message[1]==0xB1)

}

/*********發(fā)送亮度控制信號(hào)**********/

send_zhen_tou;send_data1(0x60);send_data1(liang_du);

send_zhen_wen;//將亮度調(diào)暗到130

delay_1ms(100);//200ms,使傳感器電源供給穩(wěn)定get_xi_shu();//計(jì)算稱重系數(shù)pi_zhong=hx711_10();

set_txt(1,6,mu_biao_liang,6);//工作界面的目標(biāo)量delay_1ms(100);

mu_biao_liang_1=mu_biao_liang-pian_yi;//計(jì)算去掉提前量

的值

mu_biao_liang_8=mu_biao_liang_1*8/10;//0.8send_str1(feng_ming);jd1=1;

/*****************主循環(huán)*******************/while(1){

send_str1(read_hua_mian_id);delay_1ms(5);

if((read_message[1]==0xB1)

switch(hua_mian_id)hua_mian_id=0xfe;

{

//case0x01:工作界面{

use_k();//處理按鍵按下結(jié)果}/break;

updata_zhong_liang(shi_ji_zhong_liang());

case0x02:/輸入密碼界面,設(shè)置各項(xiàng)參數(shù){

}break;

shu_ru_mi_ma();

/case0x03:/硬件功能測(cè)試{

}break;ying_jian_ce_shi();

/case0x04:/參數(shù)設(shè)置{

}break;

can_shu_she_zhi();

/case0x05:/傳感器校準(zhǔn){

}break;

jiao_cheng();

/case0x06:/特別密碼界面{

}break;te_shu_mi_ma();

case0xfe:{

}

}break;

;

第5頁(yè)

自動(dòng)稱量參考程序.c

CCF0=0;

CH=0;CL=0;

}

voiduart1_inte(void)interrupt4using1{

if(RI){

if(SBUF==0XAA)

IAP_CONTR=0X60;

if(SBUF==0XEE)

{

uart_read_f=1;

for(uart_read_count=0;uart_read_counta[i+1]){

temp=a[i];a[i]=a[i+1];a[i+1]=temp;

}

}

}

}

//讀取HX711

unsignedlonghx711_10(void){

unsignedlongcount[3]=0;

第9頁(yè)

自動(dòng)稱量參考程序.c

while(d_out==1);//等待芯片準(zhǔn)備好.sck=1;

NOP2();//芯片上升沿讀取數(shù)據(jù)。sck=0;NOP2();

for(i=0;i自動(dòng)稱量參考程序.c

else{

CR=0;

step_f=FOSC/4/f+0.5;CH=0;CL=0;

CCAP0L=step_f;

CCAP0H=step_f>>8;

}

if(k==1){}else{}

CR=1;CR=0;

}

voidupdata_zhong_liang(unsignedlongke){

unsignedlongi=0;

unsignedchara,b,c,d,e;i=ke;

a=i/10000;

b=i/1000%10;c=i/100%10;d=i/10%10;e=i%10;

//send_str1(shua_xin_off);set_txt(1,1,a,1);set_txt(1,2,b,1);set_txt(1,3,c,1);set_txt(1,4,d,1);set_txt(1,5,e,1);

//send_str1(shua_xin_on);

}

//更新某畫面,某號(hào)控件,某個(gè)字節(jié)長(zhǎng)度的數(shù)字

voidset_txt(unsignedcharscreen_id,unsignedcharcontrol_id,unsignedlongdat,unsignedcharcounter){

unsignedcharp[8]=0;unsignedchari=0;if(counter==1){

send_zhen_tou;

第11頁(yè)

自動(dòng)稱量參考程序.c

send_data1(0XB1);send_data1(0X10);send_data1(0X00);send_data1(screen_id);send_data1(0X00);send_data1(control_id);

send_data1(dat+0x30);send_zhen_wen;

}else{

p[7]=dat%10+0x30;//

p[6]=dat%100/10+0x30;//p[5]=dat%1000/100+0x30;//p[4]=dat%10000/1000+0x30;//p[3]=dat%100000/10000+0x30;//p[2]=dat%1000000/100000+0x30;//p[1]=dat%10000000/1000000+0x30;//p[0]=dat/10000000+0x30;//

}

if(counter==8){

send_zhen_tou;send_data1(0XB1);send_data1(0X10);send_data1(0X00);send_data1(screen_id);send_data1(0X00);send_data1(control_id);

for(i=0;i>8;IAP_DATA=dat;IAP_TRIG=0x5a;IAP_TRIG=0xa5;_nop_();close_iap();}

unsignedcharread_byte(unsignedintaddr){

unsignedchardat=0;

IAP_CONTR=0x82;IAP_CMD=0x01;IAP_ADDRL=addr;

IAP_ADDRH=addr>>8;IAP_TRIG=0x5a;IAP_TRIG=0xa5;_nop_();_nop_();_nop_();_nop_();dat=IAP_DATA;

close_iap();

第15頁(yè)

自動(dòng)稱量參考程序.c

unsignedintnum=0;//組合好的數(shù)字unsignedchari=0;//循環(huán)使用tong_xin[4]=hua_mian;tong_xin[6]=txt;send_str1(tong_xin);

if(read_message[4]==hua_mian){

for(i=0;i自動(dòng)稱量參考程序.c

}

//在某扇區(qū)寫入一個(gè)4字節(jié)數(shù)據(jù)

voidsave_eeprom(unsignedintadd,unsignedlongdat){

unsignedintaddr=0;unsignedlongdat1=0;unsignedcharp[4]=0;unsignedchari=0;addr=add*512+1;dat1=dat;p[0]=dat1;dat1>>=8;p[1]=dat1;dat1>>=8;p[2]=dat1;dat1>>=8;p[3]=dat1;for(i=0;i}

//慢進(jìn)料速度設(shè)置

if((read_message[6]==4)while(read_message[i+8]){

p[i]=read_message[i+8]-0x30;i++;

}

for(k=0;k}

//中砝碼值

if((read_message[6]==2)read_message[6]=0xff;while(read_message[i+8]){

p[i]=read_message[i+8]-0x30;i++;

}

for(k=0;kmu_biao_liang_8){

step_control(1,step_low*80);break;

}

//假使按鍵按了K3,則馬上終止本次進(jìn)料if(scan_k()=='3'){

i=0;

step_control(0,0);

send_str1(feng_ming);break;

}

}

while(i){

shi_shi_zhi_liang=shi_ji_zhong_liang();

updata_zhong_liang(shi_shi_zhi_liang);//畫面更新if(shi_shi_zhi_liang>mu_biao_liang_1){

step_control(0,0);break;

}

//假使按鍵按了K3,則馬上終止本次進(jìn)料if(scan_k()=='3'){

第30頁(yè)

}

自動(dòng)稱量參考程序.c

send_zhen_wen;break;

}

//清料程序??焖偾辶?0分鐘,按取消鍵中止voidkuai_su_qing_liao(void){

unsignedintm=0;

step_control(1,step_fast*80);while(1){

m++;

if(scan_k()=='3'){

send_str1(feng_ming)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論