头一回用CSDN写文章诶~

  • iic启动部分和停止部分
  • 写入数据部分
  • 写入字节部分
  • 写入命令和数据
  • Oled写入命令/数据
  • 填充图像数据
  • 设置光标
  • Oled初始化

iic启动部分和停止部分

void iic_start()//开始iic
{scl=1;sda=1;delay_us();sda=0;delay_us();scl=0;
}
void iic_stop()//停止iic
{scl=0; sda=0;scl=1;delay_us();sda=1;delay_us();
}

写入数据部分

void write_bit(bool b)//写单位
{if (b)sda=1;elsesda=0;delay_us();scl=1;delay_us();scl=0;
}

写入字节部分

void write_byte(bool sendstart,bool sendstop,uchar byte)//写字节
{int i;if(sendstart){iic_start();}for(i=0;i<8;i++){if(byte & 0x80)sda=1;elsesda=0;scl=1;scl=0;byte <<= 1;}sda=1;scl=1;scl=0;if(sendstop){iic_stop();}}

写入命令和数据

void iic_writecommand(uint iic_cmd)//写命令
{write_byte(1,0,0x78);write_byte(0,0,0x00);write_byte(0,0,iic_cmd);iic_stop();
}
void iic_writedata(uchar iic_data)//写数据
{write_byte(1,0,0x78);write_byte(0,0,0x40);write_byte(0,0,iic_data);iic_stop();
}

Oled写入命令/数据

void oled_wr_byte(unsigned dat,unsigned cmd)//oled写字节
{if(cmd){iic_writedata(dat);}else{iic_writecommand(dat);}
}

填充图像数据

void fill_picture(uchar fill_data)//填充图像
{uchar m,n;for(m=0;m<8;m++){oled_wr_byte(0xb0+m,0);oled_wr_byte(0x01,0);oled_wr_byte(0x10,0);for(n=0;n<128;n++){oled_wr_byte(fill_data,1);}}
}

设置光标

void oled_set_pos(uchar x,uchar y)//设置光标位置
{oled_wr_byte(0xb0+y,0);oled_wr_byte(((x&0xf0)>>4)|0x10,0);oled_wr_byte((x&0x0f),0);
}

Oled初始化

void oled_init(void)//初始化ssd1306
{delay_ms(500);//延时(必须有)oled_wr_byte(0xAE,0);//关闭oled面板oled_wr_byte(0x00,0);//设置低位列地址oled_wr_byte(0x10,0);//设置高位列地址oled_wr_byte(0x40,0);//设置起始行地址设置映射RAM显示起始行(0x00~0x3F)oled_wr_byte(0x81,0);//--设置对比度控制寄存器oled_wr_byte(0xCF,0);//设置SEG输出电流亮度oled_wr_byte(0xA1,0);//设置分段/列映射0xa0左右反置 0xa1型正常oled_wr_byte(0xC8,0);//设置COM/行扫描方向0xc0上下反置 0xc8型正常oled_wr_byte(0xA6,0);//设置正常显示oled_wr_byte(0xA8,0);//设置复用比(1到64)oled_wr_byte(0x3F,0);//1/64负载oled_wr_byte(0xD3,0);//设置显示偏移映射RAM计数器(0x00~0x3F)oled_wr_byte(0x00,0);//不补偿oled_wr_byte(0xD5,0);//设置显示时钟分频比/振荡器频率oled_wr_byte(0x80,0);//设置分频比,将时钟设置为100帧/秒oled_wr_byte(0xD8,0);oled_wr_byte(0x05,0);oled_wr_byte(0xD9,0);//设置预充电时间oled_wr_byte(0xF1,0);//将预充电设置为15个时钟,放电设置为1个时钟oled_wr_byte(0xDA,0);//设置com引脚硬件配置oled_wr_byte(0x12,0);//oled_wr_byte(0xDB,0);//设置vcomholed_wr_byte(0x40,0);//设置VCOM取消选择级别oled_wr_byte(0x20,0);//设置页面寻址模式(0x00/0x01/0x02)oled_wr_byte(0x02,0);//oled_wr_byte(0x8D,0);//设置电荷泵启用/禁用oled_wr_byte(0x14,0);//设置(0x10)禁用oled_wr_byte(0xA4,0);//禁用整个显示打开(0xa4/0xa5)oled_wr_byte(0xA6,0);//禁用反转显示打开(0xa6/a7)oled_wr_byte(0xAF,0);//打开oled面板fill_picture(0x00);//初始清屏oled_set_pos(0,0);//初始光标
}

基于stc15f104w的软件iic显示0.96oled相关推荐

  1. 基于STM32的软件IIC实现

    嵌入式_基于STM32的软件IIC实现 本文是基于STM32标准库的IIC实现,并再此基础上实现了AT24C02的读写,关于IIC的原理简介请参见上篇IIC协议理解, 文章目录 嵌入式_基于STM32 ...

  2. NRF52840学习历程(八)IIC协议0.96OLED屏幕

    时间在2021年2月3日,寒假放假在家好好学一学nRF52840 昨天喉咙就不舒服,今天就感冒了,休息一波 开发板:初雪的100出头那块 NRF52840 EVAL KIT 下载工具:JINLK V1 ...

  3. GD32F310G8 -【6】硬件I2C软件I2C驱动0.96OLED

    GD32F310-硬件I2C&软件I2C驱动OLED I2C 简介及特点 并行总线至 I2C 总线协议的转换及接口: 同一接口既可实现主机功能又可实现从机功能: 主从机之间的双向数据传输: 支 ...

  4. stm32的IIC驱动0.96OLED

    IIC原理介绍: IIC是一个总线的结构但不支持总线协议 OLED介绍: 一.0.96寸OLED屏幕介绍 本文采用的是4针的0.96寸OLED显示进行讲解,采用的是SPI协议,速度会比采用I2C协议的 ...

  5. 基于STC15F104W下的温湿度显示(DHT11)(OLED)

    设计名称:基于DHT11的温湿度计 显示:采用OLED12864显示温度和湿度 测量,采用DHT11模块 Hygrothermograph.c #include<STC15.H> #inc ...

  6. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)

    参考:基于stm32软件IIC的oled显示温湿度 作者:ZPZ DayUp 发布时间: 2021-07-25 20:52:43 网址:https://blog.csdn.net/m0_5619768 ...

  7. 【GD32F427开发板试用】06-硬件I2C软件I2C驱动0.91OLED

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:Stark_GS I2C 简介及特点 并行总线至 I2C 总线协议的转换及接口: 同一接 ...

  8. 基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析

    基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析 简   介 一.项目说明 二.学习入门 1)开始了解例程 三.实战过程 ...

  9. 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示

    在STM32CubeMX里建工程,利用HAL库stm32F103c6t6连0.96寸的OLED液晶显示数字字母汉字图片.stm32f103c8t6,stm32f103zet6系列都可以参考下面的即可成 ...

最新文章

  1. 生成器模式(Builder)解析例子
  2. html选择器_HTML的id选择器类选择器
  3. python爬虫开发环境_python爬虫开发教程下载|Python爬虫开发与项目实战(范传辉 著)pdf 完整版_ - 极光下载站...
  4. [OS复习]文件管理2
  5. 基于Vue-cli和Vux的webpack配置
  6. 26 SD配置-主数据-信用管理-指定信用控制区域及信用部分
  7. 【华为云技术分享】#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言
  8. 不懂电脑如何买电脑_买电脑交智商税?5分钟看懂笔记本电脑配置
  9. 一个优质软件测试工程师简历的范文(答应我一定要收藏起来)
  10. 从辉煌走向消亡(下)——小型机之王DEC公司
  11. 神经元在人体内如何分布,人体神经元怎么分布的
  12. Qt5.9.6 vs2015 SQlite 数据库增删改查
  13. 解决手机刷机卡在开机谷歌验证
  14. OSChina 周三乱弹 —— 有种思念叫忘穿秋裤
  15. 第三章 坐标系与投影转换之基准面和坐标系的分类基本知识
  16. jquery.uploadify php,jquery插件uploadify使用详解
  17. 【算法】最短路径之Bellman-Ford
  18. PS 2019 Mac版 自学入门系列(八)—— 替换背景
  19. 智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)
  20. 事件抽取文献整理(2018)

热门文章

  1. 练钢琴想起的关于耐心信心和勇气
  2. HVM下的两种模式-用户模式与访客模式
  3. C# WinFrom ProgressBar控件
  4. flink事件属于窗口的计算方法
  5. Python--ndarray 常用属性详解
  6. Numpy:数组对象(Ndarray)的定义和创建
  7. 如何查看并准确找到占用GPU的程序
  8. 蓝桥杯单片机第十二届省赛
  9. 零基础入门深度学习(5) - 循环神经网络【转】
  10. 水果店失败案例,水果店教训