4线SPI驱动OLED常规操作

news/2024/11/7 1:46:27/

拿到一块点阵屏幕,首先找卖家拿驱动例程

步骤

目录

         1.void LCD_IO_Cfg(void)

2.void wr_cmd(u8 wrcmd)

3.void wr_data(u8 wrdata)

4.void init_lcd(void)

5.void disp_all(void)

         6.void Fresh(void)


:根据商家的时序图可以知道数据在上升沿/下降沿有效,我这里是上升沿。如下图

    wr_cmd 写命令,A0=0

    wr_cmd 写数据,A0=1


1.void LCD_IO_Cfg(void)

void LCD_IO_Cfg(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//CSGPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_CS;GPIO_Init(GPIO_PORT_LCD_CS, &GPIO_InitStructure);//RESETGPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_RESET;GPIO_Init(GPIO_PORT_LCD_RESET, &GPIO_InitStructure);//A0GPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_A0;GPIO_Init(GPIO_PORT_LCD_A0, &GPIO_InitStructure);//SCKGPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_SCK;GPIO_Init(GPIO_PORT_LCD_SCK, &GPIO_InitStructure);//DATAGPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_DATA;GPIO_Init(GPIO_PORT_LCD_DATA, &GPIO_InitStructure);}

2.void wr_cmd(u8 wrcmd)

void wr_cmd(u8 wrcmd)
{u8 ii,DA;SCL_Low;CS_Low;        Delay_us(LCD_DELAY_TIME);A0_Low;        DA=wrcmd;for(ii=0;ii<8;ii++){  SCL_Low;Delay_us(LCD_DELAY_TIME);if((DA&0X80)==0X80){SDA_High;}else{SDA_Low;}Delay_us(LCD_DELAY_TIME);SCL_High;DA=DA<<1;                }A0_High;  CS_High;        
}

3.void wr_data(u8 wrdata)

void wr_data(u8 wrdata)
{u8 ii,DA;SCL_Low;CS_Low;        Delay_us(LCD_DELAY_TIME);A0_High;    DA=wrdata;for(ii=0;ii<8;ii++){	SCL_Low;Delay_us(LCD_DELAY_TIME);if((DA&0X80)==0X80){SDA_High;}else{SDA_Low;}		Delay_us(LCD_DELAY_TIME);SCL_High;		DA=DA<<1;}A0_High;  CS_High;   
}

4.void init_lcd(void)

这里的代码,找商家要,不同商家,代码不一样

5.void disp_all(void)

void disp_all(void)
{u8 x,y,Z=0xb0;for(x = 0;x<4;x++){wr_cmd(Z);Z++;wr_cmd(0x10);wr_cmd(0x00);for(y = 0;y<128;y++){wr_data(0xff);}}
}

6.void Fresh(void)

void Fresh(void)
{u8 ii,jj;for(ii=0;ii<4;ii++){wr_cmd(0xb0+ii);	//select pagewr_cmd(0x10);		//set MSBwr_cmd(0x00);		//set LSBLCD_CS_LOW;	LCD_SCK_LOW;LCD_A0_HIG;for(jj=0;jj<128;jj++){wr_data(Dis_RAM[ii][jj]);}LCD_CS_HIG;}
}


http://www.ppmy.cn/news/777163.html

相关文章

视频显示系统

引言&#xff1a; 作为消费者&#xff0c;我们对于各种形式的视频系统都已经非常熟悉了。但是从嵌入式开发人员的角度来看&#xff0c;视频就好像是一张纷繁复杂的网络&#xff0c;里面充满了各种不同的分辨率、格式、标准与显示等。 视频显示&#xff1a; 模拟视频显示 视频…

基于SPI通信方式的OLED显示

基于SPI通信方式的OLED显示 文章目录 基于SPI通信方式的OLED显示1、SPI简介2、OLED屏幕介绍3、OLED显示屏显示数据4、总结5、参考文献 1、SPI简介 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface)&#xff0c;即串行外围设 备接口&#xff0c;是一种高速…

计算机领域常用的英文名称和缩写,计算机中常用的英文缩写有哪些

计算机中常用的英文缩写有哪些-计算机缩写?在使用计算机的过程中, 你可能会碰到各种各样的专业术语, 特别是那些英文缩写常让我们不知所云,那么计算机缩写,计算机中常用的英文缩写有哪些呢?昂立外语【上海口译培训】来跟大家分享一下吧。 其他缩写 DVD digital bersatile …

LCD开发笔记-技术点总结

开发技术总结&#xff1a; 一、数据迁移 1、模型更改后&#xff1a; 1.1Enable-migrations 1.2修改实体对象 add-migration 修改的标记名称 1.3update-database 2、添加模型&#xff1a; 2.1将实体添加到上下文 add-migration 添加的标记名 update-database 二、规约 [Require…

LCD1602显示屏只亮不显示字符

代码能在普中的板子能正常显示&#xff0c;但是换了块板子就不行&#xff1a; 调节显示屏下方的可调电阻 在调试中找到自己适合的值&#xff0c;就可以看见字符了

L1-023 输出GPLT(Python实现) 测试点全过

题目 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序&#xff0c;按GPLTGPLT....这样的顺序输出&#xff0c;并忽略其它字符。当然&#xff0c;四种字符&#xff08;不区分大小写&#xff09;的个数不一定是一样多的&#xff0c;若某种字符已经输…

【转】随身HiFi 安卓OTG功能在音频上的妙用

原文网址&#xff1a;http://article.pchome.net/content-1745467.html 随身HiFi 安卓OTG功能在音频上的妙用 [PChome电脑之家音频频道原创]说起Android的OTG功能不知为何会让人想到NFC&#xff0c;它和NFC一样同样是经常被人忽略的一方面&#xff0c;笔者敢说有很多网友这两个…

浅谈DSD音频 是发展趋势还是厂商噱头

1DSD和现行的PCM截然不同 [PChome电脑之家音频频道原创]随着索尼Hi-Res Audio概念的提出以及近期一些支持DSD解码设备的上市&#xff0c;DSD的曝光率似乎又高了起来&#xff0c;同时这也勾起了无数发烧友的好奇心&#xff0c;现今有很多厂商都以此作为宣传和卖点&#xff0c;声…