压力测量c语言的简单介绍

本文目录一览:

用C语言程序设计测量血压

在电脑的浏览器上面搜索用C语言程序设计测量血压,点击与之对应的一项,进入二级页面就可以下载了,需要迅雷下载的话就提前安装迅雷就可以下载了

请哪位高手帮我设计一个温度压力的单片机及其驱动电路总成

我曾经做过一个测量压力传感器0-5V,并转换成对应的0-30MPar的压力显示。而且已经做成实物。你可以参考下面的。是我自己设计的。

一、 概述:

此电路主要是利用0—5伏的压力传感器检测气体的压力并送显,采用四位数码管,显示其压力值,传感器的0—5伏对应加气机加气压力的0—30Mpa,送到汉显的显示值就是加气机气体的压力值,压力值精确小数点后一位,在实际加气中,按照国家规程规定,其加气压力不得高于20Mpa,所以,此电中用在实际中,可直观显示其加气压力,最低压力显示00.0 Mpa,最高显示29.9Mpa。

此玩法电路结构简单,数码显示可精确到小数点后一位。

软件部分采用C语言编写

二、电路结构如下:

三、芯片简介:

1、ADC0809(模数转换)

(1)ADC0809引脚图

(2)主要特征

1)8路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100μs

4)单个+5V电源供电

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度

7)低功耗,约15mW。

(3)内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近

(4)外部特性(引脚功能)

ADC0809芯片有28条引脚,采用双列直插式封装,如上图所示。

下面说明各引脚功能。

IN0~IN7:8路模拟量输入端。

2-1~2-8:8位数字量输出端。

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路

ALE:地址锁存允许信号,输入,高电平有效。

START: A/D转换启动信号,输入,高电平有效。

EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。

REF(+)、REF(-):基准电压。

Vcc:电源,单一+5V。

GND:地。

ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

ad0809是根据逐位逼近的方法产生数据的。。

我们以参考电压为0-5V为例。0809八位255的转换精度每一位的电压值为(5-0)/255≈0.0196V

设输入电压为X则:

X-27*0.0196=0则AD7=1否则AD7=0。

X-26*0.0196=0则AD6=1否则AD6=0。

………………..

………………….

…………………

X-20*0.0196=0则AD0=1否则AD0=0。

若参考电压越小,精度就会越高,但测量范围就变得窄了,比如:0-1V为参考电压, 则每一位的电压值就是:(1-0)/255≈0.0039V精度是提高了,但测量范围小了。所以,在实际设计中,应根据实际做出合理的设计,在提高测量范围的同时,也要提高精度。

2、74LS74(两分频,为ADC0809提供工作频率)

(1)引脚图

(2)逻辑图

四、 硬件件电路设计

(1)硬件电路图

(2)连接要点

ADC0809的CLK时钟输入信号线的频率直接由单片机的ALE口输出,因ADC内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ。在正常工作时,AT89C51的ALE端输出为地址锁存允许信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器的锁存控制信号。即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡频率fosc的1/6。

因此单片机的时钟振荡频率采用6MHZ,经ALE输出为1MHZ,在经外围74LS74两分频后得到500KHZ,把此信号连接到ADC的clock端,提供ADC工作时所需的频率。

(3)工作原理:

如上图所示,RV1的可变电阻用是外围0—5的输入信号(压力传感器的输入信号),此信号进入ADC的INT0通道进行模数转换(如图ADDA、ADDB、ADDC通道选择全部接地,只对通道0进行转换),转换的值通过D0-D7送给单片机,在内部进行转换计算后驱动三位数码管显示(共阳),数码管的位选段采用三个PNP型三极管驱动(9012)驱动,系统工作电源,经外围的12直流电压,经7805稳压输出+5V的电压,提供给各IC供电。

五、软件程序

软件程序采用C语言编写,总的不是很复杂,本人已实际通过测试,并自做了PCB板,实际运行可靠,实际硬件焊接时,需在ADC的0通道输入端加接两个电容(10uf/50v,104),对输入信号进行尖锋滤波与抗干扰,以保证进入ADC的信号采集信号的稳定性。

程序如下:

//程序功能:压力传感器测量

//程序设计:黄庭剑

//编写时间:2009年7月25日

//完成时间:2009年8月1日

//CPU说明:采用AT89C51,晶振:6MHZ,

//程序说明:通过压力传感器采集的压力值(0—5V),对应于加气机气体压力的0—30Mpa,通过数码管显示输出。输出范围:00.0Mpa—

29.9Mpa

#include reg51.h

#define  uchar  unsigned char

#define  uint  unsigned  int

sfr p0=0x80;

sfr p1=0x90;

sfr p2=0xa0;

sfr p3=0xb0;

sbit  st=p2^7;

sbit  oe=p2^5;

sbit  eoc=p2^6;

sbit   p0_7=p0^7;

sbit   p3_0=p3^0;

sbit   p3_1=p3^1;

sbit   p3_2=p3^2;

sbit   ge=p2^0;

sbit   shi=p2^1;

sbit   bai=p2^2;   //定义

uint a_data1,a_data2,a_data3,temp;

uchar getdata;

uchar  codetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段选

void delaynms(uint x);//nms延时程序

void  zh_display();//先转换后显示程序

void  adcst_0809();//adc启动程序

void main()

{

while(1)

{

adcst_0809();//调adc启动程序

zh_display();//调显示程序

}

}

//adc启动程序

void adcst_0809()

{ uchar  i;

for(i=0;i1;i++)

{ p3_0=0;

p3_1=0;

p3_2=0;

oe=0;

st=0;

st=1;

st=0;

delaynms(1);

while(!eoc);

oe=1;

getdata=p1;

oe=0;

}

}

void  delaynms(uint x)

{ uchar  i;

while(x–0)

{ for(i=0;i115;i++)

{;}

}

}

//数据处理并送显程序

void  zh_display()

{  uchar  a;

temp=getdata*151;

temp=temp/128;

a_data1=temp/100;

a_data2=temp%100/10; //数据处理

a_data3=temp%10;

for(a=0;a10;a++)

{

bai=0;

shi=1;

ge=1;

p0=codetab[a_data1]; //点亮百位

delaynms(1);

p0=0x00;

bai=1;

shi=0;

ge=1;

p0=codetab[a_data2];//点亮十位

p0_7=0;//点亮第二位的小数点

delaynms(1);

p0=0x00;

bai=1;

shi=1;

ge=0;

p0=codetab[a_data3];//点亮个位

delaynms(1);

}

}

c语言如何实现系统压力测试

循环按照格式读入每组数据即可。对于输入多组数据测试的情况,需要约定结束的类型,常用的有两种:1 当读入数据为一组特定值时,结束测试。比如每组2个整型数据,以空格分隔,当输入的两个数均为-1时,结束测试。代码可以写作:int a,b;while(1){scanf(“%d%d”,a,b);if(a == -1 b == -1) break;//退出测试的条件。//测试代码。}2 当读到EOF时,结束测试。同样读入两个整型数据,以空格分隔,当读到EOF时结束测试。代码可以写作:int a,b;while(scanf(“%d%d”,a,b) != EOF)//当出现EOF时,结束测试。{//测试代码。}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/297179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-28 12:15
下一篇 2024-12-28 12:15

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28

发表回复

登录后才能评论