基于stc15f104w的软件iic显示0.96oled
头一回用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相关推荐
- 基于STM32的软件IIC实现
嵌入式_基于STM32的软件IIC实现 本文是基于STM32标准库的IIC实现,并再此基础上实现了AT24C02的读写,关于IIC的原理简介请参见上篇IIC协议理解, 文章目录 嵌入式_基于STM32 ...
- NRF52840学习历程(八)IIC协议0.96OLED屏幕
时间在2021年2月3日,寒假放假在家好好学一学nRF52840 昨天喉咙就不舒服,今天就感冒了,休息一波 开发板:初雪的100出头那块 NRF52840 EVAL KIT 下载工具:JINLK V1 ...
- GD32F310G8 -【6】硬件I2C软件I2C驱动0.96OLED
GD32F310-硬件I2C&软件I2C驱动OLED I2C 简介及特点 并行总线至 I2C 总线协议的转换及接口: 同一接口既可实现主机功能又可实现从机功能: 主从机之间的双向数据传输: 支 ...
- stm32的IIC驱动0.96OLED
IIC原理介绍: IIC是一个总线的结构但不支持总线协议 OLED介绍: 一.0.96寸OLED屏幕介绍 本文采用的是4针的0.96寸OLED显示进行讲解,采用的是SPI协议,速度会比采用I2C协议的 ...
- 基于STC15F104W下的温湿度显示(DHT11)(OLED)
设计名称:基于DHT11的温湿度计 显示:采用OLED12864显示温度和湿度 测量,采用DHT11模块 Hygrothermograph.c #include<STC15.H> #inc ...
- STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)
参考:基于stm32软件IIC的oled显示温湿度 作者:ZPZ DayUp 发布时间: 2021-07-25 20:52:43 网址:https://blog.csdn.net/m0_5619768 ...
- 【GD32F427开发板试用】06-硬件I2C软件I2C驱动0.91OLED
本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:Stark_GS I2C 简介及特点 并行总线至 I2C 总线协议的转换及接口: 同一接 ...
- 基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析
基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析 简 介 一.项目说明 二.学习入门 1)开始了解例程 三.实战过程 ...
- 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示
在STM32CubeMX里建工程,利用HAL库stm32F103c6t6连0.96寸的OLED液晶显示数字字母汉字图片.stm32f103c8t6,stm32f103zet6系列都可以参考下面的即可成 ...
最新文章
- 生成器模式(Builder)解析例子
- html选择器_HTML的id选择器类选择器
- python爬虫开发环境_python爬虫开发教程下载|Python爬虫开发与项目实战(范传辉 著)pdf 完整版_ - 极光下载站...
- [OS复习]文件管理2
- 基于Vue-cli和Vux的webpack配置
- 26 SD配置-主数据-信用管理-指定信用控制区域及信用部分
- 【华为云技术分享】#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言
- 不懂电脑如何买电脑_买电脑交智商税?5分钟看懂笔记本电脑配置
- 一个优质软件测试工程师简历的范文(答应我一定要收藏起来)
- 从辉煌走向消亡(下)——小型机之王DEC公司
- 神经元在人体内如何分布,人体神经元怎么分布的
- Qt5.9.6 vs2015 SQlite 数据库增删改查
- 解决手机刷机卡在开机谷歌验证
- OSChina 周三乱弹 —— 有种思念叫忘穿秋裤
- 第三章 坐标系与投影转换之基准面和坐标系的分类基本知识
- jquery.uploadify php,jquery插件uploadify使用详解
- 【算法】最短路径之Bellman-Ford
- PS 2019 Mac版 自学入门系列(八)—— 替换背景
- 智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)
- 事件抽取文献整理(2018)