当前位置: 首页 > news >正文

4线SPI驱动OLED常规操作

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

步骤

目录

         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;
	
	//CS
	GPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_CS;
	GPIO_Init(GPIO_PORT_LCD_CS, &GPIO_InitStructure);
	
	//RESET
	GPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_RESET;
	GPIO_Init(GPIO_PORT_LCD_RESET, &GPIO_InitStructure);
	
	//A0
	GPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_A0;
	GPIO_Init(GPIO_PORT_LCD_A0, &GPIO_InitStructure);

	//SCK
	GPIO_InitStructure.GPIO_Pin=GPIO_PIN_LCD_SCK;
	GPIO_Init(GPIO_PORT_LCD_SCK, &GPIO_InitStructure);
	
	//DATA
	GPIO_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 page
		wr_cmd(0x10);		//set MSB
		wr_cmd(0x00);		//set LSB
		
    LCD_CS_LOW;	
    LCD_SCK_LOW;
    
    
    LCD_A0_HIG;
	
		for(jj=0;jj<128;jj++)
		{
			 wr_data(Dis_RAM[ii][jj]);
		}
	  LCD_CS_HIG;
	}
}

相关文章:

  • ESP32 OTA
  • Linux C编程一站式学习笔记2
  • RK3568平台开发系列讲解(摄像头篇)使用 Camera 的步骤
  • Kerberos的概述和认证原理
  • RocketMQ的TAG过滤和SQL过滤机制
  • 2023年电气,电子与信息工程国际会议(ISEEIE 2023)
  • 【前端开发学习】4.JavaScript
  • 【大数据技术Hadoop+Spark】HBase分布式数据库架构、特点、数据存储方式、寻址机制详解(图文解释)
  • K8s——Service、代理模式演示(二)
  • 哈希表及其与Java类集的关系
  • CSS基础总结(二)
  • 《Python多人游戏项目实战》第三节 在窗口上显示玩家ID以及对话内容
  • SpringBoot【配置文件】
  • 王卫点赞友商?北京快递保卫战,顺丰彰显大格局大气度
  • 95 C语言初阶练习题
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 10个确保微服务与容器安全的最佳实践
  • Android Studio:GIT提交项目到远程仓库
  • Android框架之Volley
  • co.js - 让异步代码同步化
  • ES10 特性的完整指南
  • FineReport中如何实现自动滚屏效果
  • Git 使用集
  • HTTP--网络协议分层,http历史(二)
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java的Interrupt与线程中断
  • Linux中的硬链接与软链接
  • node学习系列之简单文件上传
  • SSH 免密登录
  • vagrant 添加本地 box 安装 laravel homestead
  • vue脚手架vue-cli
  • 测试如何在敏捷团队中工作?
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • #HarmonyOS:Web组件的使用
  • #WEB前端(HTML属性)
  • #每天一道面试题# 什么是MySQL的回表查询
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (四)Controller接口控制器详解(三)
  • (新)网络工程师考点串讲与真题详解
  • (转)菜鸟学数据库(三)——存储过程
  • (转)拼包函数及网络封包的异常处理(含代码)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET BackgroundWorker
  • .NET Core 成都线下面基会拉开序幕
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET基础篇——反射的奥妙
  • .NET中的Exception处理(C#)