. .
#include
#define uint unsigned int #define uchar unsigned char
#define ulong unsigned long //宏定义 #define LCD_DATA P0
sbit LCD_RS =P2^5; sbit LCD_RW =P2^6; sbit LCD_E =P2^7;
sbit Xintiao =P3^2 ; sbit speaker =P2^4;
void delay5ms(void); //误差 0us void LCD_WriteData(uchar LCD_1602_DATA); ***********/
void LCD_WriteCom(uchar LCD_1602_COM); ***********/
void lcd_1602_word(uchar Adress_Com,uchar Num_Adat,uchar *Adress_Data); /*1602字符显示函数,变量依次为字符显示首地址,显示字符长度,所显示的字符*/ void InitLcd();//液晶初始化函数
void Tim_Init();
. . .
// 包含头文件
//定义P0口为LCD_DATA
//定义LCD控制引脚
//脉搏检测输入端定义 //蜂鸣器引脚定义
/********LCD1602数据写入
/********LCD1602命令写入
. .
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; uchar View_Change;
void main() //主函数 {
InitLcd(); Tim_Init();
lcd_1602_word(0x80,16,\ //初始化显示 TR0=1; TR1=1; while(1) {
if(Key_Change) //有按键按下并已经得出键值
//打开定时器 //进入循环
//按键键值
//设置的位(0正常工作,1设置上限,2设置下限) //脉搏上限 //脉搏下限
. . .
. .
{
超过上限)
. Key_Change=0; //将按键使能变量清零,等待下次按键按下 View_Change=1; switch(Key_Value)
//判断键值
{ case 1:
//设置键按下
{ View_Con++;
//设置的位加
if(View_Con==3) //都设置好后将此变量清零
View_Con=0; break;
//跳出,下同
} case 2:
//加键按下
{ if(View_Con==2) //判断是设置上限
{ if(Xintiao_H<150) //上限数值小于150 Xintiao_H++;
//上限+ }
if(View_Con==1) //如果是设置下限
{
if(Xintiao_L Xintiao_L++; //下限值加 } . . . . } break; case 3: { //减键按下 if(View_Con==2) { //设置上限 if(Xintiao_H>Xintiao_L+1)//上限数据大于下限+1(同样上限 值不能小于下限) } if(View_Change)//显示变量 { View_Change=0;//变量清零 if(stop==0) { if(View_Data[0]==0x30) //最高位为0时不显示 //心率正常时 } } } if(View_Con==1) { } break; if(Xintiao_L>30) Xintiao_L--; //下限数据大于30时 //下限数据减 //设置下限 Xintiao_H--; //上限数据减 . . . . . } View_Data[0]=' '; else //心率不正常(计数超过5000,也就是两次信 号时间超过5s)不显示数据 { View_Data[0]=' '; View_Data[1]=' '; View_Data[2]=' '; } switch(View_Con) { case 0: //正常显示 { lcd_1602_word(0x80,16,\ lcd_1602_word(0xc0,16,\ lcd_1602_word(0xcd,3,View_Data); 率 break; } case 1: //设置下限时显示 { lcd_1602_word(0x80,16,\ lcd_1602_word(0x8d,3,View_Data); View_L[0]=Xintiao_L/100+0x30; View_L[1]=Xintiao_L0/10+0x30; . . 显示一行数据 显示第二行数据 //第二行显示心 第一行显示心率 //将下限数据拆字 .