智能电子称设计-毕业论文 - 图文(7)

2019-06-05 13:30

智能电子称的设计 uint idata fendushu;//分度数

uchar weight_led[6] ;//重量窗显示缓存 uchar idata temp_var;

uchar weight_dp;//小数点位数 uchar fu_number;//负号显示位置 uchar wdcount;//稳定计数

uchar adup_count;//异常值计数 uchar addcount3;//累加次数

/******************************************************/ extern void key_scan(void);//按键扫描

extern void weight_disp(void);//重量计算,超载报警 extern void start_set(void);//单片机初始化设置 extern void adc (void);//读取AD值

extern void ad_processor(void);//AD数据滤波处理 extern void fun_weight(void);//正常称重状态 extern void bd_start(void);//重量或电压标定选择 extern void dy_disp(void);//电压显示

extern void led_disp(ulong temp,uchar num);

extern uchar get_jiaoyan(uchar *address,uchar num);//计算校验字 extern void neima(void);

void delay60ms(uchar time);//40ms延时 void fendu_val(void);//分度数运算

void check_canshu(void);//读参数,并校验是否正确 void ver_disp(void);//显示版本号 void seg_check(void);//笔画检测

/******************************************/ void main (void) {

start_set(); //单片机初始化 beep_time=3; //开机鸣叫 flash_num=6; //没有闪烁位 spi_sys(); //ad芯片初始化

check_canshu(); //读参数,并校验是否正确 if(bdf.shuduval>2) //若是异常值,用默认值 bdf.shuduval=1; addcount3=4;

bdf_dp_temp=bdf.dp; //保存小数点(标定修改参数时用)单片机初始化 开机鸣叫 没有闪烁位 ad芯片初始化

读参数,并校验是否正

25

智能电子秤设计

保存小数点(标定修改参数 时用)

bdf_dsel_temp=bdf.dsel;// 用)

bdf_dsel_temp=bdf.dsel;//保存分度值(标定修改参数时用) key_scan(); //标定按键扫描

switch(key_temp) //功能键处理函数 {

case 0xc0:b_biaoding=1;task=bd_start ; break;//

default: bdf.dp=0;

ver_disp();//显示版本号 seg_check();//笔画检测 fendu_val();//分度数运算

zero_current=ad_steady;//保存当前零位值 task=fun_weight; break; } do

{ //主循环程序

adc(); //A/D采样 ad_processor();//数据处理 zero_follow(); //零位跟踪程序 neima(); //内码计算 weight_disp(); //重量显示 key_scan(); //按键扫描 (* task)(); //单片机初始化 开机鸣叫 没有闪烁 ad芯片初始

读参数,并校验是否正确 若是异常值,用默认值

保存小数点(标定修改参数时用)单片机初始 开机鸣叫 没有闪烁位 ad芯片初始化

读参数,并校验是否正 保存小数点(标定修改参数 时用)

26

智能电子称的设计 保存分度值(标定修改参数时用) 标定按键扫描 功能键处理函数 显示版本号 分度数运算 笔画检测

保存当前零位值 /主循环程序 A/D采样 数据处理

零位跟踪程序 内码计算 重量显示 按键扫描

(* task)(); //任 务切换函数 任务切换函数 }

while(1); }

/*****************************************************************/ void fendu_val(void)//分度数运算

{ uchar i; ulong temp;

temp=(ulong)bdf.max_weight*num_ten[bdf_dp_temp]; fendushu=temp/bdf.dsel;

i=fendushu/3000; if (i==0) i=1;

half_sel_bound=5/bdf.beilv;//半个分度的原始码

follow_bound=i*half_sel_bound;//计算零位跟踪时的原始码,按3000分度 time_weight=200; }

/*****************************************************************/ void ver_disp(void)//显示版本号及最大量程 {

27

智能电子秤设计

weight_led[0]=7;// 7 weight_led[1]=1;// 1 weight_led[2]=2;// 2 weight_led[3]=17;// - weight_led[4]=0;// 0 weight_led[5]=5;// 5 fun_led=0xff;

delay60ms(15);//40ms延时 beep_time=3;

led_disp(bdf.max_weight,5);//显示最大量程 weight_led[0]=15;// F delay60ms(20);//40ms延时

4.2.2 信号采样与A/D转换子程序的设计

A/D数据处理(采用数组平均值法)产生新的A/D值与上一次值累加累加次数到n否Y取平均值递推放入数组中N新值与上一次稳定值比较表示是上升过程N是否接近稳定Y表示是上升(或下降)A/D值变化不大累加次数n增加提高精度重量送显示返回

28

智能电子称的设计

如图 4-3 信号采样与A/D转换子程序的设计

extern uchar code adcount2[3];

extern bit bAd;//extern bit b_warnled; extern bit b_steady; extern bit b_up_last;

extern uchar adup_count;

extern ulong idata ad_steady;//extern uchar add_count;//extern ulong idata add_val;// 已产生AD值 AD数据处理后的稳定值 AD累加计数器 AD累加值

AD异常值计数 AD芯片采样值

extern ulong idata lvbo[6];

extern uchar wdcount;

extern uchar adup_count;// extern uchar addcount3; extern ulong idata up_val; extern ulong idata adval;//

extern uchar idata follow_time;//零位跟踪时间

extern uchar idata time_weight;//重量为0时,消隐时间 void time(void);

ulong buf_left(ulong temp);

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

void ad_processor(void) { ulong temp1; ulong temp2; uchar i; bit b_up; if(bAd) {

bAd=0;

time();//时间计数器自减

//-------------------------------------------------------- adval=adval>>4;

add_val=add_val+adval;//传感器累加滤波 add_count++;

if(add_count

29


智能电子称设计-毕业论文 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山东教育出版社六年级数学下册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: