硬件平臺
STM32開發(fā)板
功能實現(xiàn)
??在OLED屏上實現(xiàn)字符串滾動顯示。
??0.96寸OLED分辨率為128*64(128列,64行)。我們可以定義二維數(shù)組緩沖區(qū)buff[64][128],先將要顯示的數(shù)據(jù)放在緩沖驅動中,然后按固定頻率將數(shù)據(jù)更新到屏幕上。
示例效果
STM32驅動OLED屏滾動顯示
軟件設計
?顯示一列數(shù)據(jù)函數(shù)
/*
函數(shù)功能: 顯示一列
函數(shù)參數(shù):
u8 x - 橫坐標位置
u8 y - 縱坐標位置
u8 size -字體大小
u8 *p - 源數(shù)據(jù)
說 明:保證縱向為8的倍數(shù)
取模方式:縱向取模,以8個點為單位進行取模,高位在前
*/
void OLED_DrawRecData2(u8 x,u8 y,u8 size,const u8 *p)
{
u8 y0=y; //保存y坐標
u8 i,j;
u8 data=0;
for(i=0;i
滾動顯示函數(shù)(左移顯示)
/******************************字符串滾動顯示****************************
**左移滾動顯示
** u8 x,u8 y --- 顯示的起始位置
** u8 size --- 字體大小
** u8 *p --- 需要滾動顯示的數(shù)據(jù)
** u8 number --- 要顯示的漢字個數(shù)
*******************************************************************/
void OLED_Left_Move_Display(u8 x,u8 y,u8 size,u8 *p,u8 number)
{
int x0=x;//顯示的起始位置
int i=0;
u8 *data=p;
u16 cnt=0,offset=0;
while(1)
{
for(cnt=0,i=x0;i<128;i++)
{
OLED_DrawRecData2(i,y,size,data+cnt);//顯示一列
cnt+=size/8;//一列的偏移量
}
OLED_RefreshGRAM(); //更新一次顯示
x0--;//左移顯示
if(x0<=0)//完整顯示完一行數(shù)據(jù)
{
x0=0;
data+=size/8;//數(shù)據(jù)的起始位置往后移動
}
offset++;
if(offset>=number*size+128)//保存顯示的數(shù)據(jù)完整滾動完一遍
{
offset=0; //歸位
x0=x;
data=p;//數(shù)據(jù)地址歸位
}
}
}
主函數(shù)
/*測試數(shù)據(jù): 縱向取模,以8個點為單位進行取模,高位在前*/
u8 font_test2[28][32]=
{
{0x20,0x08,0x24,0x10,0x22,0x60,0x21,0x80,0x26,0x41,0x39,0x32,0x02,0x04,0x0C,0x18,0xF0,0x60,0x13,0x80,0x10,0x60,0x10,0x18,0x14,0x04,0x18,0x02,0x00,0x01,0x00,0x00},/*"歡",0*/
{0x02,0x00,0x02,0x02,0x42,0x04,0x33,0xF8,0x00,0x04,0x00,0x02,0x3F,0xF2,0x20,0x22,0x40,0x42,0x00,0x02,0x3F,0xFE,0x20,0x42,0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00},/*"迎",1*/
{0x00,0x84,0x10,0x84,0x10,0x88,0x14,0x88,0x13,0x90,0x10,0xA0,0x10,0xC0,0xFF,0xFF,0x10,0xC0,0x10,0xA0,0x11,0x90,0x16,0x88,0x10,0x88,0x10,0x84,0x00,0x84,0x00,0x00},/*"來",2*/
{0x20,0x01,0x20,0x02,0x20,0x04,0x20,0x18,0x20,0x60,0x3F,0x80,0x22,0x00,0x22,0x00,0x22,0x02,0x22,0x01,0x22,0x02,0x23,0xFC,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00},/*"萬",3*/
{0x10,0x41,0x12,0x42,0x12,0x44,0x12,0x58,0xFF,0xE0,0x12,0x40,0x12,0x40,0x10,0x40,0x00,0x00,0x7F,0xFF,0x40,0x10,0x44,0x08,0x5B,0x10,0x60,0xE0,0x00,0x00,0x00,0x00},/*"邦",4*/
{0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x42,0xFE,0xC4,0x93,0x48,0x92,0x71,0x92,0x42,0x92,0x4C,0x92,0x70,0x92,0x42,0xFE,0x41,0x00,0x42,0x00,0x7C,0x00,0x00,0x00,0x00},/*"易",5*/
{0x01,0x00,0x01,0x00,0x77,0xFE,0x11,0x24,0x11,0x24,0x11,0x24,0x17,0xFE,0xF1,0x00,0x10,0x81,0x11,0x02,0x1E,0x0C,0x12,0xF0,0x72,0x0C,0x02,0x82,0x03,0x01,0x00,0x00},/*"嵌",6*/
{0x02,0x20,0x0C,0x20,0x88,0x20,0x69,0x20,0x09,0x20,0x09,0x22,0x89,0x21,0x69,0x7E,0x09,0x60,0x09,0xA0,0x19,0x20,0x28,0x20,0xC8,0x20,0x0A,0x20,0x0C,0x20,0x00,0x00},/*"學",7*/
{0x00,0x00,0x40,0x10,0x40,0x18,0x40,0x10,0x48,0x20,0x44,0x20,0x43,0x20,0x40,0x40,0x40,0x40,0x40,0x82,0x40,0x81,0x40,0x02,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00},/*"習",8*/
{0x01,0x00,0x01,0x00,0x77,0xFE,0x11,0x24,0x11,0x24,0x11,0x24,0x17,0xFE,0xF1,0x00,0x10,0x81,0x11,0x02,0x1E,0x0C,0x12,0xF0,0x72,0x0C,0x02,0x82,0x03,0x01,0x00,0x00},/*"嵌",9*/
{0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x30,0x80,0xC0,0x47,0x00,0x38,0x00,0x07,0x00,0x00,0xC0,0x00,0x30,0x00,0x0C,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00},/*"入",10*/
{0x08,0x00,0x08,0x04,0x09,0x06,0x09,0x04,0x09,0xFC,0x09,0x08,0x09,0x08,0x08,0x08,0x08,0x00,0xFF,0xC0,0x08,0x30,0x08,0x08,0x88,0x04,0x68,0x02,0x08,0x1F,0x00,0x00},/*"式",11*/
{0x01,0x00,0x41,0x01,0x41,0x02,0x41,0x0C,0x7F,0xF0,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x41,0x00,0x7F,0xFF,0x41,0x00,0x41,0x00,0x41,0x00,0x01,0x00,0x00,0x00},/*"開",12*/
{0x00,0x00,0x00,0x04,0x18,0x08,0x68,0x31,0x08,0xC1,0x0B,0x01,0x1D,0x82,0xE9,0x62,0x09,0x14,0x09,0x08,0x09,0x14,0x49,0x22,0x29,0xC2,0x08,0x01,0x00,0x01,0x00,0x00},/*"發(fā)",13*/
};
int main(void)
{
u8 *p;
BEEP_Init(); //初始化蜂鳴器
LED_Init(); //初始化LED燈
KEY_Init(); //初始化按鍵
USART1_Init(115200); //初始化串口1
OLED_Init(); //OLED顯示屏初始化
OLED_Clear(0x00); //清屏
p=font_test2[0]; //要顯示的字符串
while(1)
{
OLED_Left_Move_Display(127,10,16,p,14);//滾動顯示
}
}
結論:0.96寸OLED屏硬件自帶滾動顯示效果,但使用OLED屏硬件方式實現(xiàn)滾動無法靈活顯示,采用軟件方式實現(xiàn)滾動顯示更加靈活便捷。
審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
STM32
+關注
關注
2270文章
10895瀏覽量
355729 -
OLED屏
+關注
關注
0文章
162瀏覽量
20844 -
滾動顯示
+關注
關注
0文章
10瀏覽量
5702
發(fā)布評論請先 登錄
相關推薦
應用材料公司的技術突破將OLED顯示屏引入平板電腦、個人電腦和電視機
應用材料公司的全新MAX OLED解決方案支持在更大的玻璃面板上制造OLED顯示屏,從而將這項前沿的顯示技術從高端智能手機引入平板電腦、個人
發(fā)表于 11-22 14:36
?278次閱讀
OLED屏的燒屏問題及解決方法
OLED(有機發(fā)光二極管)屏幕因其出色的顯示效果和節(jié)能特性,已經(jīng)成為許多高端智能手機、電視和顯示器的首選顯示技術。然而,OLED屏幕也面臨著
oled是什么顯示屏 OLED與LCD的區(qū)別
OLED是什么顯示屏 OLED(Organic Light-Emitting Diode),即有機發(fā)光二極管,是一種電流型的有機發(fā)光器件。其工作原理是通過載流子的注入和復合而致發(fā)光,發(fā)光強度與注入
oled顯示屏的優(yōu)缺點有哪些
OLED(有機發(fā)光二極管)顯示屏作為一種先進的顯示技術,近年來在電子產(chǎn)品領域得到了廣泛的應用。其獨特的發(fā)光原理和構造使其具有一系列顯著的優(yōu)點,但同時也存在一些不容忽視的缺點。以下是對OLED
物聯(lián)網(wǎng)系統(tǒng)中顯示屏的主要成員_OLED顯示屏詳解
01 物聯(lián)網(wǎng)系統(tǒng)中為什么要使用 OLED屏 物聯(lián)網(wǎng)系統(tǒng)中使用OLED屏的原因主要有以下幾點: 顯示效果的優(yōu)越性 高對比度與色彩表現(xiàn):
STC8xxxx_H_NTC測溫OLED屏顯示UART_ADC屏顯溫度值OK
STC8xxxx_H_NTC測溫OLED屏顯示UART_ADC屏顯溫度值OK
發(fā)表于 06-07 11:11
?1次下載
OLED透明屏與雙面顯示屏結合會有怎樣的效果呢
OLED透明屏與雙面顯示屏的結合,無疑為顯示技術領域帶來了全新的可能性。這種結合不僅將拓寬顯示技術的應用領域,更將改變我們與數(shù)字信息的交互方
新款iPad Pro采用OLED顯示屏及三星顯示驅動IC
網(wǎng)站消息指出,11英寸及12.9英寸iPad Pro新品的獨家顯示驅動IC (DDI) 供應商將定為三星System LSI。此外,配備LG顯示OLED
stm32f407vet6驅動0.96寸oled,顯示屏無法顯示怎么解決?
stm32f407vet6驅動0.96寸oled——iic協(xié)議代碼無報錯時鐘正確顯示屏無法顯示
發(fā)表于 03-14 06:49
oled是什么材料 oled是液晶屏嗎
OLED (Organic Light Emitting Diode)是一種基于有機材料的發(fā)光二極管。與傳統(tǒng)的液晶顯示屏不同,OLED是一種自發(fā)光技術,不需要背光模塊,因此具有更高的對比度和更廣
評論