数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 761|回复: 5

【MY808_DIY】ESP8266_OLED显示

[复制链接]
发表于 2019-3-26 23:19:22 | 显示全部楼层 |阅读模式

马上注册,认识更多玩家好友,查阅更多资源,享有更多功能

您需要 登录 才可以下载或查看,没有帐号?立即注册 微信登录

x
本帖最后由 lyy-cy 于 2019-3-27 09:06 编辑

用micropython驱动1306,列扫描,实现滚动显示。
点击图片可播放视频。
20190326_230316.jpg

20190326_230320.jpg

点击跳转到B站播放视频

2019-03-26_141050.jpg

代码,给需要的朋友参考。
  1. # MicroPython SSD1306 OLED driver, 修改过的只保留SPI的
  2. from micropython import const
  3. import framebuf
  4. from machine import Pin, SPI
  5. import time

  6. #初始化
  7. spi = SPI(-1, baudrate=100000, polarity=1, phase=0, sck=Pin(2), mosi=Pin(0), miso=Pin(15))   #这里其实给了  clk 2 和 dta 0  miso=Pin(15))没有功能
  8. oled = SSD1306_SPI(128, 64, spi,dc=Pin(5), res=Pin(4))    #dc=Pin(5), res=Pin(4),  cs给去掉了
  9. oled.contrast(0) #调整亮度。0最暗,255最亮

  10. #修改扫描方式
  11. oled.write_cmd(SET_MEM_ADDR)    # 设置1306地址模式(扫描方式方向)
  12. oled.write_cmd(0x01)            # 地址数值:0x00 水平     0x01 垂直        0x02 页

  13. def cls():
  14.   _buf = bytearray(128*64)
  15.   oled.write_cmd(SET_COL_ADDR)    #列宽度,尾 = 首+32-1
  16.   oled.write_cmd(0)
  17.   oled.write_cmd(127)
  18.   oled.write_cmd(SET_PAGE_ADDR)  #行宽度,尾 = 首+32/8 -1
  19.   oled.write_cmd(0)
  20.   oled.write_cmd(7)
  21.   oled.write_data(_buf)
  22.   del(_buf)
  23. cls()

  24. buf = [0x00]*8*128
  25. offset = 0
  26. def setBuffer(nubBytes):
  27.     global buf
  28.     global offset
  29. #    print(bytearray(buf),len(buf))
  30.     f = open('hf.FON',"rb")
  31.     f.seek(offset)
  32.     offset += nubBytes
  33.     _inNub = list(f.read(nubBytes))
  34.     f.close()
  35.     for i in _inNub :
  36.         buf.append(i)
  37.         buf.pop(0)

  38. def myShowBuf():
  39.   oled.write_cmd(SET_COL_ADDR)    #列宽度,尾 = 首+32-1
  40.   oled.write_cmd(0)
  41.   oled.write_cmd(127)
  42.   oled.write_cmd(SET_PAGE_ADDR)  #行宽度,尾 = 首+32/8 -1
  43.   oled.write_cmd(0)
  44.   oled.write_cmd(7)
  45.   oled.write_data(bytearray(buf))
  46. while True:
  47.     for i in range(640):
  48.         setBuffer(8)
  49.         myShowBuf()
  50.     offset = 0
复制代码



主要方法,步骤:

汉字按照列扫描取模,生成文件。
先设置个64*128的缓冲区(list),
每次读入n列数据,清除前面的n列。
将1306改为列扫描,显示。




打赏

参与人数 3M币 +60 收起 理由
jjbboox + 20 謝謝分享
阿睦 + 20
200birds + 20

查看全部打赏

发表于 2019-8-17 17:41:43 来自手机浏览器 | 显示全部楼层
oled是不是需要负压?

点评

模块自带周边元件,直接用就OK  详情 回复 发表于 2019-8-18 00:03
回复 支持 反对

使用道具 举报

发表于 2019-8-18 00:03:12 | 显示全部楼层
兔族族长 发表于 2019-8-17 17:41
oled是不是需要负压?

模块自带周边元件,直接用就OK
回复 支持 反对

使用道具 举报

发表于 2019-8-20 12:29:08 | 显示全部楼层
micropython    micropython  我头都大了,不知道如何下手,nodemcu好像简单些吧,楼主科普一下

点评

Arduino简单点  详情 回复 发表于 2019-8-28 09:10
回复 支持 反对

使用道具 举报

发表于 2019-8-28 09:10:56 | 显示全部楼层
zxy882266 发表于 2019-8-20 12:29
micropython    micropython  我头都大了,不知道如何下手,nodemcu好像简单些吧,楼主科普一下 ...

Arduino简单点
回复 支持 反对

使用道具 举报

发表于 2019-8-28 12:41:42 | 显示全部楼层
以前买了十几个 esp8226   一直在吃灰,...

真要玩的话考虑  c, python , javascript , lua  中选一个.. 除了python 快忘了,其它几门都可以玩得转..

arduino 就不考虑了..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

Archiver|手机版|小黑屋|关于我们|联系我们|网站条款|数码之家 ( 闽ICP备05031405号 )

GMT+8, 2019-9-20 03:43 , Processed in 0.129304 second(s), 14 queries , MemCache On.

Powered by Discuz!

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表