1.本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机。
2.LCD1602液晶显示当前的心率,单位是心率/分钟。
3.手指放到红外对管中,2秒内读出心率。
4.按键可以设置报警的上下限心率。
使用方法:
三个按键:一个设置,一个加,一个减。
按下设置的时候才可以加减。
由于仿真中没有红外,手指也模拟不了,其实就是单片机的IO口检测脉冲信号,那样用个方波信号模拟就ok
单片机源程序如下:
- #include <reg52.h>
- #include <intrins.h> // 包含头文件
- #define uint unsigned int
- #define uchar unsigned char
- #define ulong unsigned long //宏定义
- #define LCD_DATA P0 //定义P0口为LCD_DATA
- sbit LCD_RS =P2^5;
- sbit LCD_RW =P2^6;
- sbit LCD_E =P2^7; //定义LCD控制引脚
- sbit Xintiao =P1^0 ; //脉搏检测输入端定义
- sbit speaker =P2^4; //蜂鸣器引脚定义
- void delay5ms(void); //误差 0us
- void LCD_WriteData(uchar LCD_1602_DATA); /********LCD1602数据写入***********/
- void LCD_WriteCom(uchar LCD_1602_COM); /********LCD1602命令写入***********/
- void lcd_1602_word(uchar Adress_Com,uchar Num_Adat,uchar *Adress_Data); /*1602字符显示函数,变量依次为字符显示首地址,显示字符长度,所显示的字符*/
- void InitLcd();//液晶初始化函数
- void Tim_Init();
- uchar Xintiao_Change=0; //
- uint Xintiao_Jishu;
- uchar stop;
- uchar View_Data[3];
- uchar View_L[3];
- uchar View_H[3];
- uchar Xintiao_H=100; //脉搏上限
- uchar Xintiao_L=40; //脉搏下限
- uchar Key_Change;
- uchar Key_Value; //按键键值
- uchar View_Con; //设置的位(0正常工作,1设置上限,2设置下限)
- uchar View_Change;
- void main() //主函数
- {
- InitLcd();
- Tim_Init();
- lcd_1602_word(0x80,16,"Heart Rate: "); //初始化显示
- TR0=1;
- TR1=1; //打开定时器
- while(1) //进入循环
- {
- if(Key_Change) //有按键按下并已经得出键值
- {
- Key_Change=0; //将按键使能变量清零,等待下次按键按下
- View_Change=1;
- switch(Key_Value) //判断键值
- {
- case 1: //设置键按下
- {
- View_Con++; //设置的位加

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



