关于OLED显示屏的理解

news/2024/11/24 13:24:28/

1.OLED显示屏是由许多个发光二级管组成,想要显示的信息可以通过代码让对应的发光二极管亮起。

通过简单的代码,分别按下key0键和key1键使显示屏显示welcome和hello

#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
#include "key.h"

int main(void)
 {
      u8 b=0;
      u8 show[9]={'w','e','l','c','o','m','e','\0'};//定义字符串
        u8 show2[8]={'h','e','l','l','o','w','\0'};//定义字符串
        delay_init();                 
      KEY_Init(); // 使按键key0,key1上拉初始化.wake-up下拉初始化。  

     while(1)
     {
          OLED_ShowString(0,0,"h h");
              b=KEY_Scan(0);
         switch(b)
         { 
             case KEY0_PRES:
                 OLED_ShowString(0,3,show);
             delay_ms(5000);
             OLED_Clear();
             break;
             case KEY1_PRES:
                 OLED_ShowString(0,3,show2);
             delay_ms(5000);
             OLED_Clear();
             break;
             default:
             break;
       }
      }
 易错提醒:注意红字部分,由于商家在KEY_Scan(0)里的算法原因,即使没有用到wake-up键,任然要将wake-up设置成上拉输入。

函数调用的代码

//KEY_Init()

void KEY_Init(void)
{
    
    GPIO_InitTypeDef GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
     GPIO_Init(GPIOC, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
     GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;     
    GPIO_Init(GPIOA, &GPIO_InitStructure);
 

//KEY_Scan

u8 KEY_Scan(u8 mode)
{     
    static u8 key_up=1;
    if(mode)key_up=1;    
    if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
    {
        delay_ms(10);
        key_up=0;
        if(KEY0==0)return KEY0_PRES;
        else if(KEY1==0)return KEY1_PRES;
        else if(WK_UP==1)return WKUP_PRES; 
    }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;          
    return 0;

以下代码是杨辛卓学长的思路(我总结为这种思路可以连续按一个按键分别显示不同的信息)

 while(1)
 {
 if(flag==1)
 {
OLED_ShowString(0,3,show);
 }
 else if(flag==2)
 {
 OLED_ShowString(0,3,"welcome");
 
 }
 else if(flag==3)
 {
 OLED_ShowString(0,0,"ZSL");
flag=0;
 }
t=KEY_Scan(0); //得到键值
switch(t)
{  
case KEY0_PRES:
OLED_Clear();
flag++;
break;
case KEY1_PRES:

break;
case WKUP_PRES:

break;
default:
break;
}
 


http://www.ppmy.cn/news/323222.html

相关文章

理解OLED

目录 一、 实验内容:二、SPI简介:三、OLED简介四、总结 一、 实验内容: 理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名; 显示AHT20的温度和湿度&#…

杂谈:LCD和OLED区别

随着越来越多的手机用上了OLED屏幕,大家也开始逐渐了解起来了手机的屏幕,这篇文章呢将会用最简单的语言和图片,告诉你OLED屏幕和LCD屏幕究竟有什么差别。 要知道OLED 屏幕和LCD屏幕的区别,我们需要从运行原理上解释,所…

OLED/LCD电视该如何选择?你要关注这些方面

[摘要]OLED依然要比拥有量子点技术的LED/LCD电视更出色的画质,同时OLED电视也更轻更薄,并且更省电,同时还有迄今为止最出色的可视角度。 恩威科技&天府云创讯:在消费电子领域,OLED技术已经不是什么新概念了&#x…

OLED、QLED、miniled、microled的区别与优劣势是什么?(非商业转载)

作者:三姨君 链接:https://www.zhihu.com/question/361410410/answer/950160893 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 对于普通消费者而言,2019年的圣诞季或许是一年辛…

OLED有哪些优劣势?

OLED有哪些优劣势? OLED即英文Organic Light Emitting Diode的缩写,中文译作有机发光二极管。与传统的LCD显示方式不同,无需背光灯,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发…

【数据结构与算法】深入浅出:单链表的实现和应用

🌱博客主页:青竹雾色间. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 目录 前言 单链表的基本概念 节点 头节点 尾节点 单链表的基本操作 创建单链表 头插法: 尾插法&#…

Windows不同压缩软件、压缩算法、压缩率详细对比测试与选择

上次写了图片压缩,这倒让我想起几年前看过的一个很有意思的东西 那就是这张鸭子图: 不过微信会压缩图片,你可以打开这个链接:http://2.im.guokr.com/F70Kn-4wz7aF5Yejf9W3g6kO4exDBqVEb0TumQmxy5MiAQAAEAEAAEpQ.jpg 来获取原图 …

7款最好用的图片无损,视频无损压缩软件

第一:QVE视频压缩软件 下载地址:http://www.qvevideo.com/compress 非常实用的视频,图片两用压缩软件,能够将各种视频压缩成mp4,flv等格式, 缩减视频体积,释放磁盘空间,节省网络带宽,压缩后能够保持视频高清晰度,压缩率高达90%以上。 1&am…