View_Cha
ge显示变量
View_Cha
ge0变量清零
ifstop0
脉搏正常时
ifView_Data00x30最高位为0时不显示
View_Data0
else
脉搏不正常(计数超过5000,也就是两次信
号时间超过5s)不显示数据
View_Data0
View_Data1
View_Data2
switchView_Co
显示函数
42中断程序
定时器服务程序,定时器中初始化,定时10ms;有定时中断产生,无信号时返回到定时中断;有信号输入时,Maibo_Co
就1,当Maibo_Co
不是大于等于3时,返回到定时中断;当Maibo_Co
是大于等于3时,信号输入就保持了30ms,说明是脉搏信号;如果是第一个脉搏信号那么返回到定时中断继续检测第二个脉冲信号;是第二次脉冲信号是就计算两次脉冲信号的时间差,从而得到1分钟的脉搏数;在显示模块上进行显示出来。流程如图42所示。
15
f图42中断程序流程图
中断程序:
voidTime1i
terrupt3定时器1服务函数
staticucharKey_Co
Maibo_Co
TH10xd8
10ms
TL10xf0
重新赋初值
switchKey_Co
无按键按下时此值为0
case0
每10ms扫描此处
case1
10ms后二次进入中断后扫描此处
16
f(Key_Co
为1)
case2
20ms后检测按键
switchMaibo_Co
此处与上面按键的检测类似
case0
默认Maibo_Co
是为0的
case4
43显示模块
开始,声明变量和函数,显示初始化,进行扫描键盘,判断是否有按键按下,有5ms延迟函数,显示内容,LCD1602显示模块如图43所示:
图43显示模块流程图
显示子程序:
voidlcd_1602_worducharAdress_ComucharNum_AdatucharAdress_Data
17
fuchara0
ucharData_Word
LCD_WriteComAdress_Com选中地址
fora0aNum_Adatafor循环决定显示字符个数
Data_WordAdress_Data读取字符串数据
LCD_WriteDataData_Word显示字符串
Adress_Data
显示地址加一
1602函数voidLCD_WriteDataucharLCD_1602_DATALCD1602数据写入
delay5ms操作前短暂延时,保证信号稳定LCD_E0LCD_RS1LCD_RW0_
op_LCD_E1LCD_DATALCD_1602_DATALCD_E0LCD_RS0
LCD1602命令写入voidLCD_WriteComucharLCD_1602_COM
delay5ms操作前短暂延时,保证信号稳定LCD_E0LCD_RS0LCD_RW0_
op_LCD_E1LCD_DATALCD_1602_COMLCD_E0LCD_RS0
voidI
itLcd
delay5msdelay5ms
初始化液晶函数
18
fLCD_WriteCom0x38displaymodeLCD_WriteCom0x38displaymodeLCD_WriteCom0x38displaymodeLCD_WriteCom0x06显示光标移动位置LCD_WriteCom0x0c显示开及光r