教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

自动称量参考程序

来源:网络收集 时间:2026-08-29
导读: 自动称量参考程序.c # include # define FOSC 22118400L / ***定义通讯协议***/ # define send_zhen_tou send_data1(0xEE); # define send_zhen_wen send_data1(0xFF);send_data1(0xFC);send_data1(0xFF);send_data1(0xF F); / *************定义程序必须有

自动称量参考程序.c

# include # define FOSC 22118400L / ***定义通讯协议***/ # define send_zhen_tou send_data1(0xEE); # define send_zhen_wen

send_data1(0xFF);send_data1(0xFC);send_data1(0xFF);send_data1(0xF F);

/ *************定义程序必须有的变量 * *******************************/ bit busy = 0;//COM1使用

sbit sck = P0^3;//定义HX711的SCK

sbit d_out = P0^2;//定义HX711的D_0UT引脚 sbit k_1 = P3^2; sbit k_2 = P3^3; sbit k_3 = P3^4; sbit k_4 = P3^5;

sbit k_5 = P2^0;//定义了5个开关量输入 sbit step_en = P2^2; sbit step_dir = P2^3;

/ /sbit step_pul = P2^4;//定义步进电机驱动引脚 sbit jd1 = P1^7;

sbit jd2 = P1^6;//定义继电器驱动引脚

/ ************通信使用命令********************/ xdata unsigned char read_hua_mian_id[8] =

{ 0XEE,0XB1,0X01,0XFF,0XFC,0XFF,0XFF,0xcc}; xdata unsigned char

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

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

feng_ming[8]={0XEE,0X61,0X32,0XFF,0XFC,0XFF,0XFF,0XCC}; / **********声明无需存入EEPROM的变量******************/ unsigned char send_message[20] =0;//发送帧消息专用数组 unsigned char read_message[20] = 0;//接收消息专用缓冲区 unsigned char uart_read_f = 0;

unsigned char uart_read_count = 0;

unsigned long hx711_ad = 0;//HX711 AD转换结果 unsigned long ad_bi_jiao = 0;

unsigned int step_f = 0;//存放频率计算结果 unsigned int lin_step_f = 10; unsigned char hua_mian_id = 0; float xi_shu_xiao = 0.0; float xi_shu_da = 0.0;

unsigned long mu_biao_liang_1 = 0;//实际进料时,去掉提前量的数值

第 1 页

自动称量参考程序.c

unsigned long mu_biao_liang_8 = 0;//X0.8的数值 unsigned long shi_shi_zhi_liang = 0;//动态,实时质量 /***********声明需要存入EEPROM的变量**********/ unsigned int mi_ma = 0;

unsigned int step_fast = 0;//步进电机快速运行的频率 unsigned int step_low = 0;//步进电机慢速运行的频率 unsigned long mu_biao_liang = 0;//目标量 unsigned long pian_yi = 0;//质量偏移 unsigned char lv_bo = 0;//滤波系数

unsigned int fa_ma_da = 0;//校准时大砝码的

unsigned int fa_ma_zhong = 0;//校准时中砝码质量 unsigned int fa_ma_xiao = 0;//校准时小砝码质量

unsigned long cai_yang_da = 0;//校准时,大砝码采样值 unsigned long cai_yang_zhong = 0;//较准时,中砝码采样值 unsigned long cai_yang_xiao = 0;//较准时,小砝码采样值 unsigned char liang_du = 130;//默认亮度130 float pi_zhong = 0;//定义皮重

/************声明子函数********************/ void use_k(void);

void send_data1(unsigned char dat); void send_str1(char *s);

void num_to_message(unsigned long dat); unsigned long hx711_10(void);

void step_control(unsigned char k,unsigned int f); void updata_zhong_liang(unsigned long ke); void delay_1ms(unsigned char k); void delay_50ms(unsigned int m);

void set_txt(unsigned char screen_id,unsigned char control_id,unsigned long dat,unsigned char counter); void ying_jian_ce_shi(void);

unsigned int tft_read_txt(unsigned char hua_mian,unsigned char txt);

void shu_ru_mi_ma(void);

void tft_show_6bit(unsigned char hua_mian,unsigned char txt,unsigned long num);

void can_shu_she_zhi(void);

void tft_show_4bit(unsigned char hua_mian,unsigned char txt,unsigned int num); void jiao_cheng(void);

unsigned int ass_to_num_4bit(unsigned char *p); unsigned long ass_num_dot(unsigned char *p); void te_shu_mi_ma(void);

void save_eeprom(unsigned int add,unsigned long dat); unsigned long read_eeprom(unsigned int add);

第 2 页

自动称量参考程序.c

void get_xi_shu(void); float get_zhi_liang(void);

unsigned long shi_ji_zhong_liang(void);

void mao_pao_pai_xu(unsigned long *a,unsigned char chang_du); void zheng_chang_xia_liao(void); void kuai_su_qing_liao(void); void set_mu_biao_liang(void);

/*************主函数**********************/ void main() {

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,控制波特率发生器 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 页

自动称量参考程序.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;

****************停留在开机画面*****************/ 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);//工作界面的目标量 delay_1ms(100);

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;

/*****************主循环*******************/ …… 此处隐藏:3616字,全部文档内容请下载后查看。喜欢就下载吧 ……

自动称量参考程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/605977.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)