基于51單片機的電子血壓溫度計proteus仿真設(shè)計 (仿真+程序+演示視頻)
仿真圖proteus 8.9
程序編譯器:keil 5
編程語言:C語言
設(shè)計編號:S0026
演示視頻:
主要功能:
以單片機為控制核心,設(shè)計一種電子血壓計,同時具有測量體溫的功能。該系統(tǒng)利用壓力傳感器采集壓力信號,通過溫度傳感器采集溫度信號,整個系統(tǒng)包括處理模塊、測量模塊、信號處理模塊、顯示模塊以及電源處理模塊;血壓和體溫通過按鍵進行切換。
(1) 可以實現(xiàn)溫度測量,壓力測量;
(2) 通過按鍵設(shè)置壓力報警器設(shè)定值,測量壓力值大于設(shè)定值時,蜂鳴器報警;低于則蜂鳴器不報警。
(3) LCD液晶顯示測量的溫度和壓力值,可以通過按鍵切換顯示;
(4)設(shè)計出來之后用Proteus軟件仿真出效果;
主要硬件設(shè)備:51單片機、ADC0832數(shù)模轉(zhuǎn)換芯片、MPX4115壓力傳感器、按鍵、LCD1602液晶屏幕、蜂鳴器。
仿真演示:
測量體溫
測量血壓
溫度血壓調(diào)節(jié),通過箭頭所指的地方調(diào)整溫度大小,壓力大小,單片機實時采集數(shù)據(jù)進行處理,通過LCD1602顯示。
設(shè)置血壓報警值
通過按鍵設(shè)置壓力報警器設(shè)定值,測量壓力值大于設(shè)定值時,蜂鳴器報警;低于則蜂鳴器不報警。
程序:
void main() //主函數(shù)
{
InitLcd();
while(1) //進入循環(huán)
{
KEY_SCAN();
getdata=Adc0832(0);
temp=getdata/2-5;
if( temp > Xintiao_H )
{
speaker = 0;
}
else
{
speaker = 1;
}
temp = 0;
if( KEY_Set_TIMES == 0 )
{
if( KEY_TIMES == 1 )
{
getdata=Adc0832(0);
if(14<getdata<243) //當(dāng)壓力值介于15kpa到115kpa之間時,遵循線性變換
{
// int vary=getdata; //y=(115-15)/(243-13)*X+15kpa
temp=getdata*10/2-50; //測試時補償值為9.3
// temp=(int)(press*10); //放大10倍,便于后面的計算
if(temp != ppress)
{
ppress = temp;
OverFlg = 1;
}
dispbuf[3]=temp/1000; //取壓力值百位
dispbuf[2]=(temp%1000)/100; //取壓力值十位
dispbuf[1]=((temp%1000)%100)/10; //取壓力值個位
dispbuf[0]=((temp%1000)%100)%10; //取壓力值十分位
LCD_WriteCom( 0x80 );
LCD1602_Write_char( " heart rate " );
LCD_WriteCom( 0x80 + 0x40 );
LCD1602_Write_char("Rate:");
LCD_WriteData( 0x30 + dispbuf[3] );
LCD_WriteData( 0x30 + dispbuf[2] );
LCD_WriteData( 0x30 + dispbuf[1] );
LCD_WriteData( '.' );
LCD_WriteData( 0x30 + dispbuf[0] );
}
}
if( KEY_TIMES == 0 )
{
lcd_1602_word(0x80,16," temperature "); //初始化顯示
wendu=ReadTemperature();
lcd_1602_word(0xc0,10," Temp: ");//顯示第二行數(shù)據(jù)
LCD_WriteCom(0x80+0x40+10);
LCD_WriteData(wendu/100+0x30);
LCD_WriteData(wendu%100/10+0x30);
LCD_WriteData('.');
LCD_WriteData(wendu%100%10+0x30);
LCD_WriteData(0xdf);
LCD_WriteData('C');
}
}
else
{
KEY_Set_Rate();
dispbuf[3]=Xintiao_H/100; //取設(shè)置壓力值百位
dispbuf[2]=Xintiao_H%100/10; //取設(shè)置壓力值十位
dispbuf[1]=Xintiao_H%10; //取設(shè)置壓力值個位
LCD_WriteCom( 0x80 );
LCD1602_Write_char( " Set heart rate " );
LCD_WriteCom( 0x80 + 0x40 );
LCD1602_Write_char("warning:");
LCD_WriteData( 0x30 + dispbuf[3] );
LCD_WriteData( 0x30 + dispbuf[2] );
LCD_WriteData( 0x30 + dispbuf[1] );
}
}
}
下載方式見文章開頭視頻