网站大量收购闲置独家精品文档,联系QQ:2885784924

项目六 液体点滴速度监控装置的设计指导书.doc

项目六 液体点滴速度监控装置的设计指导书.doc

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

项目六 液体点滴速度监控装置的设计 一、设计内容与要求 利用单片机设计并制作一个智能化的液体点滴速度监测与控制装置。该装置由水滴速度测试系统、水速控制系统、显示装置、单片机系统、键盘和报警等系统组成。应用水的压强随着高度差的变化而变化的原理,利用控制步进电动机的升降来控制点滴速度。点滴速度可用键盘来设定,设定范围为20~150(滴/分),控制误差范围在10%1滴左右。从改变设定值起到点滴速度基本稳定整个过程的调整时间小于3分钟。同时在水到达警戒线以下时能发出报警信号。 二、硬件电路框图 1. 系统框图 各个部分作用: (1) 电机控速模块:用步进电机来控制储液瓶的高度来达到控速的目的。 (2) 步进电机的驱动:采用硬件驱动。 (3) 红外测速:采用对射式红外传系统。 2. 传感器 对射式光电传感器(以下简称为传感器) 分为投光器和受光器两部分。两者光轴重合在同一直线上。工作时,投光器发出调制光,被受光器接收,变为电信号。当被测体进入检测区时,光被遮挡,受光器无光可受,传感器输出状态改变。电路如下图所示。 3. 单片机最小系统原理图 三、软件设计 1. 主程序流程图 2. 外部中断0流程图 case 1: AA=0xf9;break; /* ‘1’*/ case 2: AA=0xa4;break; /* ‘2’*/ case 3: AA=0xb0;break; /* ‘3’*/ case 4: AA=0x99;break; /* ‘4’*/ case 5: AA=0x92;break; /* ‘5’*/ case 6: AA=0x82;break; /* ‘6’*/ case 7: AA=0xf8;break; /* ‘7’*/ case 8: AA=0x80;break; /* ‘8’*/ case 9: AA=0x90;break; /* ‘9’*/ case 10: AA=0x88;break; /* ‘A’*/ case 11: AA=0x83;break; /* ‘B’*/ case 12: AA=0xc6;break; /* ‘C’*/ case 13: AA=0xa1;break; /* ‘D’*/ case 14: AA=0x86;break; /* ‘E’*/ case 15: AA=0x8e;break; /* ‘F’*/ case -:AA=0xbf;break; /* 破折号,此处原误为0xdf,系04级王资凯同学指正*/ case _:AA=0xf7;break; /* 下划线*/ case :AA=0xff;break; /* 消隐*/ default: AA=0xff; } return(AA); } /**** T0时钟中断服务程序 在本例中,每5ms被执行一次 *****/ timer0() interrupt 1 using 0 { EA=0; /*关中断*/ /* 重新对计数器赋初值,并启动定时计数 */ TH0=V_TH0; TL0=V_TL0; TR0=1; /* 1秒钟软定时器计数 */ if (++clock1s=V_T1s) { clock1s_flag = 1; /*当1秒到时,溢出标志置1 */ clock1s = 0; } output_sel = 0xf0; /*初值,令数码管驱动位无效,指示灯全灭*/ /* 检测到按键被按下(0)时,相应的指示灯亮(0) */ if (KEY1==0) led_1 = 0; if (KEY2==0) led_2 = 0; if (KEY3==0) led_3 = 0; if (KEY4==0) led_4 = 0; /* 数码管扫描驱动指针值从1到4重复变换,每5ms间隔对一个数码管进行驱动,20ms一个轮回 */ if (++digi_scaner=5) digi_scaner = 1; switch (digi_scaner) { case 1: /* 驱动第一个数码管 */ output_sel |= 0x01; ADDR_8SEG = NUMTOSEG7(digi[0]); /*输出到锁存器U5(在电路图中找)*/ break; case 2: /* 驱动第二个数码管 */ output_sel |= 0x02; ADDR_8SEG = NUMTOSEG7(digi[1]); /*输出到锁存器U5*/ break;

文档评论(0)

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

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

1亿VIP精品文档

相关文档