
为实现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);
配置LCD5110以SPI模式工作的函数如下:
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 心率波形图
用的是什么方案?什么型号传感器
很棒的制作,如果是大学生或中学生,可以参加电子设计制作大赛,大奖没有,小奖应该可以弄个的。赞!