- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)