输液器参考程序课案.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
输液器参考程序课案

程序清单 Main.c文件: #includecomm.h #includekey.h sbit buzzer = P1^6; //蜂鸣器 sbit height = P3^3; //液位检测端口sbit moto_0 = P1^0; sbit moto_1 = P1^7; sbit moto_2 = P1^2; sbit moto_3 = P1^3; bit moto_cw = 1; //电机正反转控制char move_step = 0; extern uchar recieve_flag,Drop_Begin = 0; //接收完成标志位 液滴下落标志位 extern uchar data_recieve[]; //接收到数据存放空间 //共7BYTE,分别:起始位 输液开始停止位 端口号位 上位机设定滴速千位 上位机设定滴速百位 上位机设定滴速十位 上位机设定滴速个位 extern uchar data_send[]; //共7BYTE,分别:起始位 输液开始停止位 端口号位 当前速度高位 当前速度低位 下位机设定滴速高位 下位机设定滴速低位extern uint speed_set,speed_set_mid,speed_set_pc; extern uchar change_num,comm_num,comm_num_mid,change_speed_set_flag,start_flag;//标志位change_num,,,从机号:comm_numuint speed_act = 0,dis_speed, num_seg = 0, datax[4], display_num = 0; // 当前滴速 显示速度 数码管位选,用于显示 数码管段选值中间存储 计数,用于显示界面在当前滴速和设定滴速中间切换uint Drop_Count[4] ={0}, Drop_Count_Mid =0; //滴速测量值,用于滤波处理 计算滤波后滴速的中间变量uchar duan[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //数码管段选0——9uchar wei[4] ={0xef,0xdf,0xbf,0x7f}; //数码管位选,用于单个数码管显示的确定uchar state_data = 0x31; //用于存储输液状态送至上位机,,0x31表示输液正常 0x32输液完毕 uchar dis_flag = 1,buzzer_flag = 0,stop_flag = 0;void main() { unsigned char i; timer_init(); comm_control = 1; comm_num = 0; change_num = 0; speed_set = 0; buzzer = 1; Drop_Begin = 0; Drop_Count_Mid =0; change_speed_set_flag = 0;// the flag ---change of the speed by press button state_data = 0x31; delay(100); ES = 1; while(1) { key_scan();//键盘扫描 /* 电机驱动程序*/ if(start_flag) //必须在复位后,手动通过按键设定好滴速后才能开始电机控制 { if(speed_act = (speed_set_pc - 4) speed_act = (speed_set_pc + 4)) //当测得速度在设定速度的死区范围内,保持不动。 { if(stop_flag == 0) stop_flag = 1; } else { if(speed_act speed_set_pc) //速度高于设定速度,反转,放低水瓶, { moto_cw = 1; if(stop_flag) stop_flag = 0; } else //速度低于设定速度,正传,升高水瓶 { moto_cw = 0; if(stop_flag) stop_flag = 0; } } } else //复位后,系统保持电机不动。。 { stop_flag = 1; } //液位检测函数 if(height == 0) { delay(20); //确认延时 if(height ==

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档