首页->【玩CortexM0】

82 2

为实现LCD5110的显示,需将相应的GPIO口设置为输出模式,并定于好输出高低电平信号的语句,其内容如下:  

#define sce_1     sce=1   
#define sce_0     sce=0  
#define dc_1      dc=1    
#define dc_0      dc=0   
#define RST_1     RST=1  
#define RST_0     RST=0  
#define LCD_SCLK_1  SCLK=1  
#define LCD_SCLK_0  SCLK=0  
#define LCD_SDIN_1  SDIN=1    
#define LCD_SDIN_0  SDIN=0  
 
DigitalOut dc(PTC1);
DigitalOut RST(PTC0);
DigitalOut SCLK(PTE0);
DigitalOut SDIN(PTE1);

 配置LCD5110SPI模式工作的函数如下:

void SPI_CONFIG()
{
RST_1;
    DigitalOut RST(PTC0);
sce_1;               
    DigitalOut sce(PTC2);  
dc_1;
DigitalOut dc(PTC1);
    LCD_SCLK_1;
DigitalOut SCLK(PTE0);
    LCD_SDIN_1;
DigitalOut SDIN(PTE1);
RST_0;
wait(0.1);
RST_1;
wait(0.1);
RST_0;
wait(0.1);
RST_1;
wait(0.1);
}

 LCD5110的测试化函数为:

void LCD_init(void)
{
LCD_write_byte(0x21,0);
LCD_write_byte(0xc3,0);
LCD_write_byte(0x10, 0);
LCD_write_byte(0x20,0);
LCD_write_byte(0x0C,0);
LCD_clear();
}

     此外,为了实现信息的显示还需有:字节发送函数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)等。

     为了实现图7所示的显示效果,可使用字模提取软件来构建小字库的方法来实现,其界面如图8所示。

7 中文显示界面

 

8 字模提取

 

读取字模显示汉字的函数如下:

void LCD_write_hanzi(unsigned char X,unsigned char Y,char s)
{
    do
    {
char line;
LCD_set_XY(X,Y);
  for (line=0; line<12; line++)
{
LCD_write_byte(HZK[s][line], 1);
  }
LCD_set_XY(X,Y+1);
for (line=12; line<24; line++)
{  

  LCD_write_byte(HZK[s][line], 1);
  }
   }while(0);  
}

 显示“心率检测仪”字样的函数为:

void jm(void)
{
LCD_write_hanzi(8,0,0);
LCD_write_hanzi(20,0,1);
LCD_write_hanzi(32,0,2);
LCD_write_hanzi(44,0,3);
LCD_write_hanzi(56,0,4);
}

 实现心率采集与数值显示的功能结构体语句如下:

while(1)
 {
        // sendDataToProcessing('S', Signal);   
        if (QS == true) {                  
      LCD_write_english_string(8,2,"BPM:      ",0);
      LCD_write_english_string(8,4,"HRV:     ms",0);
      OLED_ShowNum(40,2,BPM,3);
      OLED_ShowNum(40,4,IBI,3);
      QS = false;             
        }
        wait(0.02);   
    }

    在心率传感器与KL25Z的连接上,除了电源的连接外,主要是将心率传感器的信号输出端与PTB0引脚相连,以采集心率的模拟信号值。此外,为了确保对心率信号的周期性采集,还配置了定时器中断函数void timer_isr(void)串口数据发送函数void sendDataToProcessing(char symbol, short data )等,并2ms为间隔进行周期性的数据采集。

 

    经编译,所生成的代码参数如图9所示。

9 编译结果

 

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

10 心率波形图






楼主可见

  1. shwnyoo 2#

    用的是什么方案?什么型号传感器

  2. zhjb1 1#

    很棒的制作,如果是大学生或中学生,可以参加电子设计制作大赛,大奖没有,小奖应该可以弄个的。赞!