自动称量参考程序Word下载.docx

上传人:b****5 文档编号:17609762 上传时间:2022-12-07 格式:DOCX 页数:58 大小:25.05KB
下载 相关 举报
自动称量参考程序Word下载.docx_第1页
第1页 / 共58页
自动称量参考程序Word下载.docx_第2页
第2页 / 共58页
自动称量参考程序Word下载.docx_第3页
第3页 / 共58页
自动称量参考程序Word下载.docx_第4页
第4页 / 共58页
自动称量参考程序Word下载.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

自动称量参考程序Word下载.docx

《自动称量参考程序Word下载.docx》由会员分享,可在线阅读,更多相关《自动称量参考程序Word下载.docx(58页珍藏版)》请在冰豆网上搜索。

自动称量参考程序Word下载.docx

feng_ming[8]={0XEE,0X61,0X32,0XFF,0XFC,0XFF,0XFF,0XCC};

**********声明无需存入EEPROM的变量******************/

unsignedcharsend_message[20]=0;

//发送帧消息专用数组

unsignedcharread_message[20]=0;

//接收消息专用缓冲区

unsignedcharuart_read_f=0;

unsignedcharuart_read_count=0;

unsignedlonghx711_ad=0;

//HX711AD转换结果

unsignedlongad_bi_jiao=0;

unsignedintstep_f=0;

//存放频率计算结果

unsignedintlin_step_f=10;

unsignedcharhua_mian_id=0;

floatxi_shu_xiao=0.0;

floatxi_shu_da=0.0;

unsignedlongmu_biao_liang_1=0;

//实际进料时,去掉提前量的数值

第1页

unsignedlongmu_biao_liang_8=0;

//X0.8的数值

unsignedlongshi_shi_zhi_liang=0;

//动态,实时质量

/***********声明需要存入EEPROM的变量**********/

unsignedintmi_ma=0;

unsignedintstep_fast=0;

//步进电机快速运行的频率

unsignedintstep_low=0;

//步进电机慢速运行的频率

unsignedlongmu_biao_liang=0;

//目标量

unsignedlongpian_yi=0;

//质量偏移

unsignedcharlv_bo=0;

//滤波系数

unsignedintfa_ma_da=0;

//校准时大砝码的

unsignedintfa_ma_zhong=0;

//校准时中砝码质量

unsignedintfa_ma_xiao=0;

//校准时小砝码质量

unsignedlongcai_yang_da=0;

//校准时,大砝码采样值

unsignedlongcai_yang_zhong=0;

//较准时,中砝码采样值

unsignedlongcai_yang_xiao=0;

//较准时,小砝码采样值

unsignedcharliang_du=130;

//默认亮度130

floatpi_zhong=0;

//定义皮重

/************声明子函数********************/

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,unsignedchar

control_id,unsignedlongdat,unsignedcharcounter);

voidying_jian_ce_shi(void);

unsignedinttft_read_txt(unsignedcharhua_mian,unsignedchar

txt);

voidshu_ru_mi_ma(void);

voidtft_show_6bit(unsignedcharhua_mian,unsignedchar

txt,unsignedlongnum);

voidcan_shu_she_zhi(void);

voidtft_show_4bit(unsignedcharhua_mian,unsignedchar

txt,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页

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);

/*************主函数**********************/

voidmain()

P0M1=0;

P0M0=0;

jd1=0;

jd2=0;

P1M1=0;

P1M0=0xff;

P2M1=0x10;

P2M0=0;

P3M1=0;

P3M0=0;

P4M1=0;

P4M0=0;

P5M1=0;

P5M0=0;

SCON=0x50;

AUXR=0x15;

//COM1,COM2,控制波特率发生器

T2L=0xD0;

T2H=0xFF;

//波特率设置

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页

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;

****************停留在开机画面*****************/

while(hua_mian_id==0)

send_str1(read_hua_mian_id);

/获取有效的画面ID结果

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

(read_message[2]==0x01))

hua_mian_id=read_message[4];

}

*********发送亮度控制信号**********/

send_zhen_tou;

send_data1(0x60);

send_data1(liang_du);

send_zhen_wen;

//将亮度调暗到130

delay_1ms(100);

//200ms,使传感器电源供给稳定

get_xi_shu();

//计算称重系数

pi_zhong=hx711_10();

set_txt(1,6,mu_biao_liang,6);

//工作界面的目标量

mu_biao_liang_1=mu_biao_liang-pian_yi;

//计算去掉提前量

的值

mu_biao_liang_8=mu_biao_liang_1*8/10;

//0.8

send_str1(feng_ming);

jd1=1;

/*****************主循环*******************/

while

(1)

delay_1ms(5);

第4页

else

hua_mian_id=0xfe;

switch(hua_mian_id)

//工作界面

case0x01:

use_k();

//处理按键按下结果

updata_zhong_liang(shi_ji_zhong_liang());

break;

/输入密码界面,设置各项参数

case0x02:

shu_ru_mi_ma();

/硬件功能测试

case0x03:

ying_jian_ce_shi();

/参数设置

case0x04:

can_shu_she_zhi();

/传感器校准

case0x05:

jiao_cheng();

/特别密码界面

case0x06:

te_shu_mi_ma();

}break;

case0xfe:

;

voidPCA_isr()interrupt7

第5页

CCF0=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_count<

20;

uart_read_count++)

read_message[uart_read_count]=0;

uart_read_count=0;

if(uart_read_f==1)

read_message[uart_read_count]=

SBUF;

uart_read_count++;

if(SBUF==0XFF)

uart_read_f=0;

uart_read_count=19;

RI=0;

if(TI)

TI=0;

busy=0;

voidsend_data1(unsignedchardat)

while(busy);

busy=1;

SBUF=dat;

voidsend_str1(unsignedchar*s)

第6页

do

while(*s!

=0xcc);

send_data1(*s++);

/1ms

voiddelay_1ms(unsignedchark)

unsignedchari,j,m;

for(m=0;

m<

k;

m++)

_

nop_();

i=22;

j=128;

while(--j);

while(--i);

//50ms

voiddelay_50ms(unsignedintm)

unsignedchari,j,k;

unsignedintn=0;

for(n=0;

n<

m;

n++)

i=5;

j=52;

k=195;

while(--k);

/按键扫描程序,返回5个按键值的某一个

unsignedcharscan_k(void)

第7页

unsignedchari=0x38;

//什么都没有按,则返回8

if(k_1==0)

delay_1ms(70);

//70ms

i=0x31;

if(k_2==0)

i=0x32;

if(k_3==0)

i=0x33;

if(k_4==0)

i=0x34;

if(k_5==0)

i=0x35;

returni;

/读取HX711数值,25个脉冲

unsignedlongread_hx711(void)

unsignedlongcount=0;

unsignedchari=0;

sck=0;

//AD转换准备。

AD结束后,电平也为0;

count=0;

//接收存储区清零

第8页

while(d_out==1);

//等待芯片准备好.

sck=1;

NOP2();

//芯片上升沿读取数据。

for(i=0;

i<

23;

i++)

NOP1();

if(d_out)count++;

//上升沿读取数据

count=count<

<

1;

1;

returncount;

voidmao_pao_pai_xu(unsignedlong*a,unsignedcharchang_du)

unsignedchari=0,j=0;

unsignedlongtemp=0;

for(j=0;

j<

(chang_du-1);

j++)

(chang_du-1-j);

if(a[i]>

a[i+1])

temp=a[i];

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

a[i+1]=temp;

/读取HX711

unsignedlonghx711_10(void)

unsignedlongcount[3]=0;

第9页

unsignedchari=0;

3;

count[i]=read_hx711();

mao_pao_pai_xu(count,3);

returncount[1];

//返回中间值

//获取称重系数

voidget_xi_shu(void)

longa[2]=0.0;

a[0]=fa_ma_zhong-fa_ma_xiao;

a[1]=cai_yang_zhong-cai_yang_xiao;

xi_shu_xiao=a[0]/a[1];

a[0]=fa_ma_da-fa_ma_zhong;

a[1]=cai_yang_da-cai_yang_zhong;

xi_shu_da=a[0]/a[1];

/返回当前质量

floatget_zhi_liang(void)

floata=0;

a=hx711_10();

if(a<

pi_zhong)

a=pi_zhong;

cai_yang_zhong)

a=(a-pi_zhong)*xi_shu_xiao;

a=(a-pi_zhong)*xi_shu_da;

returna;

//返回实际重量

unsignedlongshi_ji_zhong_liang(void)

floata=0;

a=get_zhi_liang();

a*=100;

//步进电机处理函数,开关和频率

voidstep_control(unsignedchark,unsignedintf)

if(f==0)

第10页

step_f=FOSC/4/f+0.5;

if(k==1)

CR=1;

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);

//更新某画面,某号控件,某个字节长度的数字

control_id,unsignedlongdat,unsignedcharcounter)

unsignedcharp[8]=0;

unsignedchari=0;

if(counter==1)

第11页

send_data1(0XB1);

send_data1(0X10);

sen

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1