- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
家用智能体重身高测量仪.ppt
硬件电路设计 称重部分的工作原理 称重部分主要由称重传感器、放大电路、A/D转换、显示四部分组成,模拟信号通过称重传感器输入,然后经过放大电路放大后通过数模转换器转换存放到控制单元,再由控制部分和显示电路驱动显示。放大电路的设计要考虑到抗干扰设计。称重原理框图如图所示。 测量身高部分 超声波测距原理 超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。 它是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离S=Ct/2,式中的C为超声波波速。 ???? 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。 超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2? 超声波测身高距系统的硬件电路设计 本系统的特点是利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时,单片机选用AT89S52,经济易用。电路原理图如图所示。 具体步骤 显示部分 软件设计部分 称重部分软件设计 称重部分程序(A/D采集) void delay(int z) //延时 { int x; for(x=0;x50;x++) for(;z0;z--); } void display(uint qian,uint bai,uint shi,uint ge); /*=======================*/ void main() { cs=0; wr=1; rd=1; intr=1; while(1) //AD采集 { cs=0; wr=1; rd=1; wr=0; delay(1); wr=1; delay(1); rd=0; temp=P1; rd=1; num=temp*100; //数据处理 volt=(num/256)*5; mass=(volt-78)/2*55; q=mass/1000; b=mass%1000/100; s=mass%100/10; g=mass%10; display(q,b,s,g); //显示 } } 测量身高部分软件设计 测量身高部分程序设计 void hextobcd(unsigned char m) //将count十六进制数据转换为LED七段码 ????? { ????? unsigned char temp; ????? temp=m%10; ????? ledbuff[0]=tab1[temp];//mm位 ????? m=m/10; ????? temp=m%10; ????? ledbuff[1]=tab1[temp];//lm位 ????? temp=m/10; ????? ledbuff[2]=tab2[temp];//m位 ????? }? ????? void display3led(void)??????? //数码管显示 ????? { ????? unsigned char i; ??????? for(i=0;i3;i++) ????? { ??????? PORTD=ledbuff; ??????? PORTC=~(1i);//PC0-mm位,PC1-lm位,PC2-m位 ??????? delay_1ms(); ??????? PORTC=(1i); ????? } ????? }? ????? void display8led(void)??????? //8LED显示 ????? { ????????? if(newcount10)???????????????? ??????????? PORTD=0XFE; ????????? else if (newcount20) ???????????????? PORTD=0XFD; ????????? else if (newcount30)??? ??????????? PORTD=0XFB; ????????? else if (newcount40) ??????????? PORTD=0XF7; ????????? else if (newcount50)?? ??????????
文档评论(0)