OLED显示屏¶
学习,不是追求速度的,是追求质量的
学习资料:
OLED基础知识¶
ATK_OLED模块是一块小尺寸(0.96寸)、高亮、自带升压电路的高性能OLED显示模块,分辨率为128 * 64,采用SSD1306驱动IC,该芯片内部集成DCDC升压,仅需3.3V供电。
模块支持8位6800并口、8位8080并口、4线SPI以及IIC等4种通信接口。
ATK_OLED引脚说明(8080并口模式):
-
CS:OLED片选信号(低电平有效)
-
WR:向OLED写入数据
-
RD:向OLED读取数据
-
D[7:0]:8位双向数据线
-
RST(RES):硬复位OLED(低电平有效)
-
DC:数据/命令标志(0,命令;1,数据)
OLED驱动原理:
- 选择驱动芯片时序(8080时序) --- 根据时序实现数据写入/读取
- 初始化序列 --- 由厂家提供,用于初始化屏幕
- 实现画点函数、读点函数(可选) ---- 基于这两个函数可以实现各种绘图功能
SSD1306工作时序(8080时序)¶
8080并口总线时序,常用于屏幕驱动IC的访问,由Intel提出,也叫英特尔总线
8080并口读/写的过程:
- 设置DC为高(数据)/低(命令) --- 根据 --> 写入/读取的数据类型
- 拉低片选 --- 选中 SSD1306驱动芯片
- 设置RD/WR为低 --- 根据 --> 读数据还是写数据
- 准备数据 并行的8位(一个字节) 同时准备向SSD1306/单片机 发送
- 拉高RD/WR,出现上升沿 --- 在RD的上升沿,使数据锁存到数据线D[7:0]上 --> 单片机读取数据/命令
--- 在WR的上升沿,使数据写入到SSD1306 --> 单片机写入数据/命令
8080时序--写时序
oled_wr_byte
8080时序--读时序
SSD1306芯片指令¶
SSD1306有三种设置内存地址模式:页地址模式(以该模式学习),水平地址模式和垂直地址模式
SSD1306的部分指令:
指令 | 名称 | 说明 |
---|---|---|
0XA0/0xA1 | 设置列重映射 | A0 ,正常模式 ,列地址0映射到SEG0 A1,重映射模式,列地址127映射到SEG0 |
0xC0/0xC8 | 设置列输出扫描方向 | C0 ,正常模式,从COM0向COM63扫描 C8,重映射模式,从COM63向COM0扫描 |
0X20 | 发送内存地址模式命令 | 有三种设置内存地址模式(默认页地址模式) |
0X02 | 发送页地址模式命令 |
SSD1306的图像显示原理(GRAM)¶
SSD1306的GDDRAM(Graphic Display Data RAM )图像显示数据的内部结构地址分布:
图形显示数据RAM是一个位映射静态RAM,保存要显示的位模式。内存大小为128 * 64位,可分为8页,从页0到页7,用于黑白128 * 64点阵显示。
使用页地址模式时,通过页地址(Y轴坐标)和列地址(X轴坐标)我们就可以知道其所在的起始位置,当一个数据字节(8位) 写入GDDRAM时,当前 列SEG 的 同一页(PAGE) 的 所有行(COM)图像数据都被填充(即由列地址指针指向的整列(8位)被填充。数据位 D0写入顶行,数据位D7写入底行)如图8-14所示。
对GRAM进行操作时,列地址指针会自动递增。当列地址指针到达列结束地址时,重置为开始地址,但页地址指针不变。用户必须设置新的页面和列地址(我认为列地址可不设置,因为它会自动变成开始地址,但手动设置可以防万一),以便访问下一页GRAM内容。
通过以上的方式 向那个坐标 写入数据 0X01 就可以将 第一个点 点亮了 但是由于是以字节为单位的写入方式 就会造成影响其它点的问题那么如何解决呢?
PS:因为页地址相当于 8行的首地址 想精准知道哪一个点的坐标
解决显示覆盖问题:
方式一(效率慢):
-
画点前,必须要把设置的点所在字节的每一位弄清楚当前状态(0/1)
-
能读模式下(SPI和I2C不支持):读-->改-->写
方式二(占用单片机内存):
建立一个OLED的GRAM:单片机内部需要128*8个字节,每次修改的时候,只是修改单片机上的GRAM(实际上就是SRAM),在修改完之后,一次性把单片机内部的GRAM写入到OLED的GRAM。
注意:SRAM很小的的单片机,内存不够,推荐还是使用并口模式(方式一),节省内存
oled_refresh_gram.c
SSD1306_OLED的真实坐标系¶
oled_draw_point.c
OLDE显示字符¶
- 显示字符,必须先有其点阵数据,点阵数据的集合,叫做字库
- 单片机根据点阵数据按取模方向进行描点还原,就能显示字符
- ASCII字符宽度 = 汉字宽度的一半
JKD代码程序¶
OLED.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 |
|
OLED.h
OLED_FONT.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 |
|
创建日期: September 27, 2023