程序
1 主程序设计
uint max_weight;//最大称量
uchar dsel;//分度值
uchar dp;//小数点
float beilv;//倍率
ulong zero_save;//传感器零位值
}bdf;
uint code num_ten[4]={1,10,100,1000};
uchar code adcount2[4]={2,4,5};//数据处理进平均次数
uchar code tab_dsel[4]={1,2,5,10};//分度值表
//0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
uchar code tab[]={0xB7,0x03,0xD6,0xC7,0x63,0xE5,0xF5,0x83,0xF7,0xE7,
//A , b , C , d , E , F , 暗, - , t , P
0xF3,0x75,0xB4,0x57,0xF4,0xF0,0x00,0x40,0x74,0xF2,
//H , L , o , J , r , n , U, =, - i
0x73,0x34,0x55,0x07,0x50,0x51,0x37,0x44,0x04,0x01};
//显示位码表
//0, 1, 2, 3, 4, 5, 6
uchar code digit[]={0xfe,0xdf,0xef,0xfd,0xfb,0xbf,0xF7};//显示位码表
sbit P_OE =P2^1;//显示控制
sbit P_LE =P2^0;
sbit buz0 =P3^6;//蜂鸣器
sbit buz1 =P3^7;
/******************************************************/
bit b_follow;//启动零位跟踪标记
bit b_serial;//串口发送完标记
bit b_followdelay;//第一次不进行零位跟踪
bit b_steady;//稳定标记
void (* data task)(void);//函数指针变量,接受下一步要做的任务
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; //保存小数点(标定修改参数时用)
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;
}
评论
查看更多