矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 3360|回复: 20

请教下OLED怎样显示波形?

[复制链接]
     
发表于 2021-4-19 21:36:15 来自手机 | 显示全部楼层 |阅读模式
今天想使用OLED搞示波器,使用51单片机编写程序时遇到一个难题,OLED液晶屏一次性都是显示8个点,用来搞字符还是比较简单的,可是用来显示波形却有些麻烦!弄了半天还是无法解决,X轴128个,Y轴是8页,每页8个像素,共64个像素,现在使用ADC转换电压不知道如何转成Y轴坐标值!因为不是单个像素!

补充内容 (2021-4-21 15:50):
问题解决了,使用63/8取整数(页数),63%8余数(0-7亮点)刚好!

补充内容 (2021-4-21 15:58):
https://b23.tv/5gBEIU

补充内容 (2021-4-21 16:03):
问题解决了,使用0-63/8取整数(页数),0-63%8余数(0-7亮点)刚好!
1678987179.jpg
     
发表于 2021-4-19 21:56:48 | 显示全部楼层
自学过几天51,感觉51单片机不能做示波器吧
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 21:59:11 来自手机 | 显示全部楼层
值得拥有 发表于 2021-4-19 21:56
自学过几天51,感觉51单片机不能做示波器吧

可以,但是频率很低
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:05:15 | 显示全部楼层
分立元件 发表于 2021-4-19 21:59
可以,但是频率很低

是不是音乐频谱显示用的
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:19:00 | 显示全部楼层
分立元件 发表于 2021-4-19 21:59
可以,但是频率很低


建立页面数据的数组,就是通常说的缓存,改这个数组内容就行。
给你微雪的例程参考一下。
#define xDot 128
#define yDot 64
unsigned char buffer[xDot*yDot/8];

void SetPixel(char x, int y)
{
    if(x<xDot&&y<yDot)  buffer[x/8+y*xDot/8]&=~(0x80>>x%8) ;
   

  }
void DrawXline(int start,int end, byte x)
  {
    for(int i=start;i<=end;i++)
    {
      SetPixel(x,i);
      }
  }
   void DrawYline(byte start,byte end,  byte y)
  {
    for(int i=start;i<=end;i++)
    {
      SetPixel(i,y);
      }
  }

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 22:21:28 来自手机 | 显示全部楼层
值得拥有 发表于 2021-4-19 22:05
是不是音乐频谱显示用的

我现在是搞显示波形用的
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:22:31 | 显示全部楼层
1页8行,一次刷新一页,做是可以做,要先保存

这种小屏显示啥波形啊, 换彩屏吧
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 22:23:42 | 显示全部楼层
iffi123 发表于 2021-4-19 22:22
这种小屏显示啥波形啊, 换彩屏吧

彩屏51速度太慢了,刷不动
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 22:25:51 来自手机 | 显示全部楼层
cxw0102 发表于 2021-4-19 22:19
建立页面数据的数组,就是通常说的缓存,改这个数组内容就行。
给你微雪的例程参考一下。
#define xD ...

看不懂啊,有点难度!
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:26:27 | 显示全部楼层
本帖最后由 iffi123 于 2021-4-19 22:32 编辑
分立元件 发表于 2021-4-19 22:23
彩屏51速度太慢了,刷不动


既然想玩复杂的功能,那就换stm32啊,为什么非要在51泥潭打滚? 如果简单的功能用51还能理解,这根筋,哎

32有完善的中断,还有DMA,  其它如高主频啊(H7系列可以高达480MHz),高效的3级流水线,大的flash和内存, 丰富的片上外设。。。,不亲自试试是不知道有多好用的
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 22:28:46 来自手机 | 显示全部楼层
iffi123 发表于 2021-4-19 22:26
既然想玩复杂的恭喜,那就换stm32啊,为什么非要在51泥潭打滚? 如果简单的功能用51还能理解,这根筋, ...

看STM32代码有些头大,太长了!
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:28:47 | 显示全部楼层
你用的51,内存太小了处理起来繁琐点,你可以把显示区域看成128*8的unsigned char二维数组,ADC的值/8对应数组列索引,ADC的值%8就是在这个字节的第几位。每采样数组一个行地址加一

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:30:33 | 显示全部楼层
本帖最后由 iffi123 于 2021-4-19 22:33 编辑
分立元件 发表于 2021-4-19 22:28
看STM32代码有些头大,太长了!


砍柴不误磨刀功,花点时间研究一下,不会吃亏的, 51能学会,没理由32学不会

当你发现现有的单片机无法满足你的要求时,就应该升级一下更换
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-19 22:36:14 来自手机 | 显示全部楼层
iffi123 发表于 2021-4-19 22:30
砍柴不误磨刀功,花点时间研究一下,不会吃亏的, 51能学会,没理由32学不会

当你发现现有的单片 ...

在看看了,我都入门STM32了,可是懒的去学了
回复 支持 反对

使用道具 举报

     
发表于 2021-4-19 22:47:28 | 显示全部楼层
参考一下 制作STC8A8K64S4A12单片机示波器 http:// w w w.51hei.com/bbs/dpj-196638-1.html     (没权限发链接,请把w w w换成www)

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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