查看: 2845|回复: 0

[原创] 【我要创作】基于KL25Z的心率检测仪(2)

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
    发表于 2017-3-7 08:08:56 | 显示全部楼层 |阅读模式
    为实现LCD5110的显示,需将相应的GPIO口设置为输出模式,并定于好输出高低电平信号的语句,其内容如下:
    1. #define sce_1     sce=1   
    2. #define sce_0     sce=0  
    3. #define dc_1      dc=1   
    4. #define dc_0      dc=0   
    5. #define RST_1     RST=1  
    6. #define RST_0     RST=0  
    7. #define LCD_SCLK_1  SCLK=1  
    8. #define LCD_SCLK_0  SCLK=0  
    9. #define LCD_SDIN_1  SDIN=1   
    10. #define LCD_SDIN_0  SDIN=0  

    11. DigitalOut dc(PTC1);
    12. DigitalOut RST(PTC0);
    13. DigitalOut SCLK(PTE0);
    14. DigitalOut SDIN(PTE1);
    复制代码
    配置LCD5110SPI模式工作的函数如下:
    1. void SPI_CONFIG()
    2. {
    3.         RST_1;
    4.     DigitalOut RST(PTC0);
    5.         sce_1;               
    6.     DigitalOut sce(PTC2);  
    7.         dc_1;
    8.         DigitalOut dc(PTC1);
    9.     LCD_SCLK_1;
    10.         DigitalOut SCLK(PTE0);
    11.     LCD_SDIN_1;
    12.         DigitalOut SDIN(PTE1);
    13.         RST_0;
    14.         wait(0.1);
    15.         RST_1;
    16.         wait(0.1);
    17.         RST_0;
    18.         wait(0.1);
    19.         RST_1;
    20.         wait(0.1);
    21. }
    复制代码
    LCD5110的测试化函数为:
    1. void LCD_init(void)
    2. {
    3.         LCD_write_byte(0x21,0);
    4.         LCD_write_byte(0xc3,0);
    5.         LCD_write_byte(0x10, 0);
    6.         LCD_write_byte(0x20,0);
    7.         LCD_write_byte(0x0C,0);
    8.         LCD_clear();
    9. }
    复制代码
    此外,为了实现信息的显示还需有:字节发送函数void LCD_write_byte(uint8_t dt, uint8_t command)、位置显示设置函数void LCD_set_XY(uint8_t X, uint8_t Y)、清屏函数void LCD_clear(void)、字符显示函数void LCD_write_char(unsigned char c,char dis)、字符串显示函数void LCD_write_english_string(unsigned char X,unsigned char Y,char *s,char dis)、辅助显示函数uint32_t oled_pow(unsigned char m,unsigned char n)、数值显示函数void OLED_ShowNum(unsigned char x,unsigned char y,uint32_t num,unsigned char len)等。
    图片1.png
    7 中文显示界面

    图片2.png
    8 字模提取

    读取字模显示汉字的函数如下:
    1. void LCD_write_hanzi(unsigned char X,unsigned char Y,char s)
    2. {       
    3.     do
    4.     {       
    5.                 char line;
    6.                 LCD_set_XY(X,Y);       
    7.                  for (line=0; line<12; line++)
    8.                 {       
    9.                                 LCD_write_byte(HZK[s][line], 1);
    10.           }
    11.                 LCD_set_XY(X,Y+1);
    12.                 for (line=12; line<24; line++)
    13.                 {               
    14.                        
    15.                           LCD_write_byte(HZK[s][line], 1);
    16.           }
    17.           }while(0);               
    18. }
    复制代码
    显示“心率检测仪”字样的函数为:
    1. void jm(void)
    2. {
    3.         LCD_write_hanzi(8,0,0);
    4.         LCD_write_hanzi(20,0,1);
    5.         LCD_write_hanzi(32,0,2);
    6.         LCD_write_hanzi(44,0,3);
    7.         LCD_write_hanzi(56,0,4);
    8. }
    复制代码
    实现心率采集与数值显示的功能结构体语句如下:
    1. while(1)
    2.          {
    3.         // sendDataToProcessing('S', Signal);   
    4.         if (QS == true) {                  
    5.                               LCD_write_english_string(8,2,"BPM:      ",0);
    6.                               LCD_write_english_string(8,4,"HRV:     ms",0);
    7.                               OLED_ShowNum(40,2,BPM,3);
    8.                               OLED_ShowNum(40,4,IBI,3);
    9.                               QS = false;            
    10.         }
    11.         wait(0.02);   
    12.     }
    复制代码
    在心率传感器与KL25Z的连接上,除了电源的连接外,主要是将心率传感器的信号输出端与PTB0引脚相连,以采集心率的模拟信号值。此外,为了确保对心率信号的周期性采集,还配置了定时器中断函数void timer_isr(void),串口数据发送函数void sendDataToProcessing(char symbol, short data )等,并2ms为间隔进行周期性的数据采集。
       经编译,所生成的代码参数如图9所示。
    图片3.png
    9 编译结果

    在外挂RS232串口的情况下,使用心率传感器所配的专用软件Processing,可绘制出图10所示的心率波形图。
    图片4.png
    10
    心率波形图


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-2 17:08 , Processed in 0.081517 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表