首页头部标志
   新闻分类
   联系我们
  • 电话:0411-86632519
  • 传真:0411-86610519
  • 邮箱:dlysys@163.com


 
超声波流量计的主程序研究与设计 十七
时间:2012/7/3 19:33:10  来源:本站原创  点击:1593

超声波流量计的主程序研究与设计  十七

 

//5.主单片机流速流量计算子程序

js()

 {

  double v,q;

  uint v1,q1

  v=(C*C*tc)/(4*d*tane);//tc带入计算流速

  q=pi*d*d*v/4;//计算流量

  v1=v*100;//####格式的流速和流量乘上100,方便赋值

    q1=q*100;

  data_v[0]=v1/1000;//将得到的值分别赋给对应的位:2个整数,2个小数;第一个数字为十位数

  data_v[1]=(v1%1000)/100;//2个显示个位数字

  data_v[2]=(v1%100)/10;//3个显示十分位

  data_v[3]=v1%10;  //4个显示百分位

  data_q[0]=q1/1000;//

  data_q[1]=(q1%1000)/100;

  data_q[2]=(q1%100)/10;

  data_q[3]=q1%10;

 }

 

//6.主程序:完成参数的设置,流量和流速的计算和显示

void main() 

{ 

  p0=0xff;//第一部分:初始化

      p2=0xff;

  //P1^1=1//不向从单片机发送测量命令

  IT0=0;//外部中断INTO,为低电平触发方式

  EX0=1;//允许外部中断INTO申请中断

  EA=1;//打开总的中断开关

  ES=1;//打开串口中断开关

  TMOD=0x20;//定时器1工作在方式三,作为波特率发生器

  TR1=1;//开定时器

  TH1=0xf3H;//根据波特率设置初值

  TL1=0xf3H;

  RI=1;//串口中断接收申请标志位

  SCON=0x50;//串口工作在方式一

  PCON=0x80;//速率加倍,波特率为4.8K

 

  while(1)

{

  key_num();//调用键盘扫描子程序,获取键值

  key_do();//调用键值处理函数:设置管道直径和安装角度

  lcd_disp();//将设置的参数显示出来

  js();//调用数据处理子程序:计算流速和流量

  lcd_disp();//调用显示子程序,显示流量和流速

}

 

//串口中断程序:将时间差读出

void serial() interrupt 4 using 1

{

  RI=0;//软件清除串口中断标志位

  tc=SBUF;//读出数据

  delay(10);

}

 

附件三:从单片机程序

#include<reg51.h>

#include<math.h>

#include<absacc.h>

#include<stdio.h>

#include<stdlib.h>

#define uchar unsigned char  

#define uint unsigned int 

bit flag1=0;//顺流结束标志位

bit flag2=0;//逆流结束标志位

bit send_flag=0;//从向主单片机发送数据标志位

double tc;//全局变量,时间差

 

//1.延时函数                                                                                                                       

//--------------------------------------------------------------

void delay(int ms)

{

    while(ms--)

  {

      uchar i;

    for(i=0;i<250;i++) 

     {

      _nop_();            

      _nop_();

      _nop_();

      _nop_();

     }

  }

}    

超声波流量计

 

 
上一篇:超声波流量计的开发与研制探讨 二
下一篇:超声波流量计的开发与研制探讨 三