历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2018年09月29日 | STM32f4---OLCD显示实验代码(02)

2018-09-29 来源:eefocus

  OLED_CS=1;   OLED_RS=1;  OLED_RST=0;

  delay_ms(100);

  OLED_RST=1;  

  OLED_WR_Byte(0xAE,OLED_CMD); //关闭显示

  OLED_WR_Byte(0xD5,OLED_CMD); //设置时钟分频因子,震荡频率

  OLED_WR_Byte(80,OLED_CMD);   //[3:0],分频因子;[7:4],震荡频率

  OLED_WR_Byte(0xA8,OLED_CMD); //设置驱动路数

  OLED_WR_Byte(0X3F,OLED_CMD); //默认0X3F(1/64)  

  OLED_WR_Byte(0xD3,OLED_CMD); //设置显示偏移

  OLED_WR_Byte(0X00,OLED_CMD); //默认为 0

  OLED_WR_Byte(0x40,OLED_CMD); //设置显示开始行  [5:0],行数.  

  OLED_WR_Byte(0x8D,OLED_CMD); //电荷泵设置

  OLED_WR_Byte(0x14,OLED_CMD); //bit2,开启/关闭

  OLED_WR_Byte(0x20,OLED_CMD); //设置内存地址模式

  OLED_WR_Byte(0x02,OLED_CMD);  

//[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10;

  OLED_WR_Byte(0xA1,OLED_CMD); //段重定义设置,bit0:0,0->0;1,0->127;

  OLED_WR_Byte(0xC0,OLED_CMD);  

//设置COM扫描方向;bit3:0,普通模式;1,重定义模式  COM[N-1]->COM0;N:驱动路数

  OLED_WR_Byte(0xDA,OLED_CMD); //设置COM硬件引脚配置

  OLED_WR_Byte(0x12,OLED_CMD); //[5:4]配置  

  OLED_WR_Byte(0x81,OLED_CMD); //对比度设置

  OLED_WR_Byte(0xEF,OLED_CMD); //1~255;默认0X7F (亮度设置,越大越亮)

  OLED_WR_Byte(0xD9,OLED_CMD); //设置预充电周期

  OLED_WR_Byte(0xf1,OLED_CMD); //[3:0],PHASE 1;[7:4],PHASE 2;

  OLED_WR_Byte(0xDB,OLED_CMD); //设置VCOMH 电压倍率

  OLED_WR_Byte(0x30,OLED_CMD); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;

  OLED_WR_Byte(0xA4,OLED_CMD); //全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏)

  OLED_WR_Byte(0xA6,OLED_CMD); //设置显示方式;bit0:1,反相显示;0,正常显示  

  OLED_WR_Byte(0xAF,OLED_CMD); //开启显示    

  OLED_Clear();

}

接着, 要介绍的是OLED_Refresh_Gram函数。 我们在STM32F4内部定义了一个块GRAM:u8 OLED_GRAM[128][8];此部分 GRAM对应OLED模块上的GRAM。在操作的时候,我们只要修改 STM32F4内部的GRAM就可以了,然后通过OLED_Refresh_Gram函数把 GRAM一次刷新到 OLED  的GRAM上。该函数代码如下:

//更新显存到 LCD     

void OLED_Refresh_Gram(void)

{

  u8 i,n;         

  for(i=0;i<8;i++)   

  {   

    OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)

    OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址

    OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址    

    for(n=0;n<128;n++)OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);  

  }    

}


推荐阅读

史海拾趣

Anders DX公司的发展小趣事

Anders DX是一家专注于设计和制造显示解决方案的公司,以下是该公司发展的相关故事:

  1. 公司成立与初期阶段:Anders DX成立于2002年,总部位于英国霍尔特。公司的创始人包括Neil Jarvis和David Vallis,他们都在显示技术领域拥有丰富的经验。公司成立之初,主要从事自定义显示解决方案的设计和制造,为各种行业的客户提供定制化的显示产品。

  2. 技术创新与产品开发:Anders DX在其成立初期就致力于技术创新和产品开发。公司团队与客户紧密合作,根据客户的需求和应用场景,设计和制造各种类型的显示解决方案,包括液晶显示屏、触摸屏、OLED显示屏等。他们采用先进的制造工艺和技术,不断推出新产品,满足客户不断变化的需求。

  3. 客户合作与市场拓展:随着公司业务的发展,Anders DX与越来越多的客户建立了紧密的合作关系。公司的客户群涵盖了各个行业,包括医疗、工业、汽车、消费电子等领域。通过与客户的合作,Anders DX不断拓展产品的应用领域和市场份额,在行业内树立了良好的声誉。

  4. 全球布局与生产基地:为了更好地服务全球客户,Anders DX逐步在全球建立了生产基地和销售网络。除了在英国的总部外,公司还在亚洲和美洲地区设立了生产工厂和销售办事处,以满足不同地区客户的需求。这些生产基地拥有先进的设备和技术,能够为客户提供高质量的定制化显示解决方案。

  5. 持续发展与未来展望:作为一家专注于显示解决方案的公司,Anders DX将继续致力于技术创新和产品开发。公司将继续与客户紧密合作,不断推出适应市场需求的新产品,并不断提升生产效率和产品质量,以保持在行业内的竞争优势。同时,Anders DX也将继续关注行业的发展趋势和技术变革,及时调整战略,以确保公司持续健康发展。

CLANDELL公司的发展小趣事

品质是CLANDELL公司一直以来的核心竞争力。公司建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格把控。同时,公司还加强了售后服务体系建设,确保客户在使用过程中能够得到及时、有效的支持。这些举措不仅提升了CLANDELL公司的产品品质,也赢得了客户的信任和好评。

EUPEC [eupec GmbH]公司的发展小趣事

随着市场的不断变化和客户需求的升级,EUPEC意识到品牌重塑的重要性。公司开始着手进行品牌升级和形象重塑工作,通过加强品牌宣传、提升产品质量和服务水平等方式,不断提升EUPEC品牌的知名度和美誉度。这些努力使得EUPEC在市场上树立了良好的形象,成为电力半导体领域的知名品牌。

EXXELIA Group公司的发展小趣事

1999年,EUPEC从西门子独立出来,形成了Infineon(英飞凌)公司。作为Infineon的全资子公司,EUPEC继续专注于电力半导体器件的研发和生产。在这个阶段,EUPEC不断推出创新产品,如IGBT模块、晶闸管、整流二极管等,凭借其卓越的品质和技术,赢得了客户的广泛认可。

Fuji Electric Co Ltd公司的发展小趣事

随着市场的不断变化和客户需求的升级,EUPEC意识到品牌重塑的重要性。公司开始着手进行品牌升级和形象重塑工作,通过加强品牌宣传、提升产品质量和服务水平等方式,不断提升EUPEC品牌的知名度和美誉度。这些努力使得EUPEC在市场上树立了良好的形象,成为电力半导体领域的知名品牌。

Alps Alpine Co Ltd公司的发展小趣事

随着市场的不断变化和客户需求的升级,EUPEC意识到品牌重塑的重要性。公司开始着手进行品牌升级和形象重塑工作,通过加强品牌宣传、提升产品质量和服务水平等方式,不断提升EUPEC品牌的知名度和美誉度。这些努力使得EUPEC在市场上树立了良好的形象,成为电力半导体领域的知名品牌。

问答坊 | AI 解惑

运算放大器TLC2262和TLC2264

 运算放大器TLC2262和TLC2264TLC2262和TLC2264分别是TI公司双路和四路运算放大器,两种器件可以在单电源或双电源条件下供电,从而增强了动态的范围,可以达到轨对轨输出的性能。TLC226X系列与TLC225X的微功耗和TLC227X的交流性能方面兼容。它 ...…

查看全部问答>

GPIO驱动中,IO口发生中断后, 读取数据的问题.

GPIO驱动中,IO口发生中断后, 读取数据的问题. GPIO驱动中,IO口发生中断后,驱动是读IO口寄存器的一位数据,还是将IO口上的数据全部读完? 三星6410 BSP中有这样的参考代码吗? …

查看全部问答>

SQLCE创建错误

    在一个PDA(WinCE5.0操作系统),依次安装了以下三个程序:     1)sqlce.wce5.armv4i.CAB     2)sqlce.repl.wce5.armv4i.CAB     3)sqlce.dev.CHS.wce5.armv4i.CAB     上述三个cab ...…

查看全部问答>

wince6.0 directshow例子编译问题

我编译DirectX\\Directshow\\ddxclmv项目,已经加入strmiids.lib strmbase.lib ddraw.lib了,但连接时依然报错, 无法解析的外部符号 \"void __cdecl DbgLogInfo(unsigned long,unsigned long,wchar_t const *,...) 无法解析的外部符号 \"public: ...…

查看全部问答>

关于wince、2410 com2,com3的问题

找了好多论坛、资料都解决不了 还有个位帮忙…

查看全部问答>

转行通信系统开发准备工作,希望给点指引.

有一亲戚在一大公司作副总,估计进去不成问题。可能就是自已是否能站住脚的问题 本人情况:C#.NET开发工程师 三年应用软件开发经验 现转通信系统开发,需要提前专握些什么技术? 职位介绍: ------------------------------------------------ ...…

查看全部问答>

DeviceIoControl()如何向U盘发送SCSI命令??!!

主要是DeviceIoControl() 的第2个参数如何设置 请大家多多指教!! 那个参数是在哪个头文件中定义的呢??…

查看全部问答>

问一个STM32TIM的问题?

问一下哪位朋友用过STM32F103RC 的片子的 我用TIM5做定时器时出错 老是跳进 void HardFaultException(void) {   /* Go to infinite loop when Hard Fault exception occurs*/   while (1)   {   ...…

查看全部问答>

Realtek瑞昱WIFI热点打不开解决方法

Realtek瑞昱的WIFI热点实现函数和其他厂家的WIFI有些不一样,所以会造成WIFI热点打不开这种现象,通过以下方式可以解决 修改如下目录的文件,在修改时候要确保该文件目录下有RTL的CPP源程序文件,没有可以从其他平台拷贝过来或者像模组厂家要 sys ...…

查看全部问答>

用Verilog实现滑动平均

急求用Verilog语言实现的滑动平均的代码,还望大神不吝赐教!对于一组数据,看成一个队列,每采样得到一个新的数据就放入队列中,同时剔除队列中最开始进去的那个值,然后将这组数求平均输出!急!…

查看全部问答>