本文目錄一覽:
用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/zh-tw/n/297179.html