From 0dfde51b1b8297cfc826e16e36dc937913ef6aca Mon Sep 17 00:00:00 2001 From: kevin Date: Sun, 27 Mar 2022 19:40:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=20Signed-off-by:=20kevin=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stm32F030F4_code/mydrivers/OLED.c | 33 ++++++++++++++++++++++++++----- stm32F030F4_code/mydrivers/OLED.h | 2 +- stm32F030F4_code/mydrivers/my.c | 2 +- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/stm32F030F4_code/mydrivers/OLED.c b/stm32F030F4_code/mydrivers/OLED.c index 766b2d1..ad657ee 100644 --- a/stm32F030F4_code/mydrivers/OLED.c +++ b/stm32F030F4_code/mydrivers/OLED.c @@ -125,7 +125,7 @@ void OLED_WrDat(unsigned char IIC_Data) void OLED_Set_Pos(unsigned char x, unsigned char y) { - OLED_WrCmd( 0xb0 + y ); + OLED_WrCmd( 0xb0 + 7-y ); OLED_WrCmd(((x&0xf0)>>4)|0x10); OLED_WrCmd( (x&0x0f) |0x00); } @@ -170,11 +170,11 @@ void OLED_Init(void) OLED_WrCmd(0x20); //设置内存地址模式 OLED_WrCmd(0x02); //[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10; OLED_WrCmd(0xA1); //段重定义设置,bit0:0,0->0;1,0->127; - //OLED_WrCmd(0xC0); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数 + OLED_WrCmd(0xC0); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数 //OLED_WrCmd(0xDA); //设置COM硬件引脚配置 //OLED_WrCmd(0x12); //[5:4]配置 //显示方向设置 - OLED_WrCmd(0xc8);//OLED_WrCmd(0xa0); + //OLED_WrCmd(0xc8);//OLED_WrCmd(0xa0); //行扫描顺序:从上到下 //列扫描顺序:从左到右 OLED_WrCmd(0xD9); //设置预充电周期 @@ -195,15 +195,38 @@ void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr) OLED_Set_Pos(x,y); for(char a=0;a<8;a++) { - OLED_WrDat(asc2_1608[chr-' '][(a*2)+1]); + OLED_WrDat(asc2_1608[chr-' '][(a*2)]); } OLED_Set_Pos(x,y+1); for(char a=0;a<8;a++) { - OLED_WrDat(asc2_1608[chr-' '][(a*2)]); + OLED_WrDat(asc2_1608[chr-' '][(a*2)+1]); } } +void OLED_ShowStr(unsigned char x,unsigned char y,char *str) +{ + while(*str!='\0') + { + if(x>=X_WIDTH) + { + y++; + if(y>=Y_WIDTH_) + { + y=0; + } + x=0; + } + + OLED_ShowChar(x,y,*str); + + str++; + x+=8; + + } + +} + diff --git a/stm32F030F4_code/mydrivers/OLED.h b/stm32F030F4_code/mydrivers/OLED.h index cef0128..d475d05 100644 --- a/stm32F030F4_code/mydrivers/OLED.h +++ b/stm32F030F4_code/mydrivers/OLED.h @@ -20,6 +20,6 @@ void OLED_Init(void); void OLED_Init_Display_Buffer(char a); void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr); - +void OLED_ShowStr(unsigned char x,unsigned char y,char *str); #endif /* OLED_H_ */ diff --git a/stm32F030F4_code/mydrivers/my.c b/stm32F030F4_code/mydrivers/my.c index b615f44..4c37ba4 100644 --- a/stm32F030F4_code/mydrivers/my.c +++ b/stm32F030F4_code/mydrivers/my.c @@ -14,7 +14,7 @@ void mymain() OLED_Init(); OLED_Init_Display_Buffer(0); - OLED_ShowChar(0,0,48); + OLED_ShowStr(0,0,"123"); while(1) {