历史上的今天
返回首页

历史上的今天

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

正在发生

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

2018-09-29 来源:eefocus

本实验,我们新建了 oled.c和 oled.h 文件。这两个文件用来存放OLED相关的驱动函数以及文件申明等。

oled.c 的代码,由于比较长,这里我们就不贴出来了,仅介绍几个比较重要的函数。首先是 OLED_Init 函数,该函数的结构比较简单,开始是对 IO 口的初始化,这里我们用了宏定义OLED_MODE 来决定要设置的IO 口,其他就是一些初始化序列了,我们按照厂家提供的资料来做就可以。最后要说明一点的是,因为OLED 是无背光的,在初始化之后,我们把显存都清空了,所以我们在屏幕上是看不到任何内容的,跟没通电一个样,不要以为这就是初始化失败,要写入数据模块才会显示的。OLED_Init函数代码如下:

//初始化 SSD1306               

void OLED_Init(void)

{            

   GPIO_InitTypeDef  GPIO_InitStructure;

  

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB

|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE

|RCC_AHB1Periph_GPIOG, ENABLE);//使能PORTA~E,PORTG时钟

#if OLED_MODE==1    //使用 8080 并口模式    

  

//GPIO 初始化设置

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式

   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化

  

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7 ;  

GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化

 

   GPIO_InitStructure.GPIO_Pin =

  GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;  

GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化  

   

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;  

GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化  

  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5;  

GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化  

  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;  

GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化  

     OLED_WR=1;

OLED_RD=1;  

#else          //使用 4线SPI  串口模式

 

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 ;

       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式

       GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

       GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

       GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化

  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;  

  GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化    

 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  

  GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化    

  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;  

  GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化  OLED_SDIN=1;

  OLED_SCLK=1;

#endif


推荐阅读

史海拾趣

ARCOL公司的发展小趣事

为了进一步扩大市场份额,ARCOL公司积极寻求与国内外知名企业的合作机会。通过与合作伙伴建立战略合作关系,ARCOL成功打入国际市场,产品销量大幅提升。同时,公司还积极参加各类国际电子展会和交流活动,与全球客户建立了紧密的合作关系,为公司的全球化发展打下了坚实的基础。

长江连接器(CJT)公司的发展小趣事

随着技术的不断积累和市场的不断扩大,长江连接器开始积极拓展国内外市场。公司通过与国内外知名企业的合作,将产品广泛应用于消费类电子、电气电子、薄膜开关、LED显示器屏/灯饰、家用电器、电脑及电脑周边、通讯设备等领域。同时,长江连接器注重品牌形象的塑造和推广,通过参加各类行业展会、举办技术交流会等方式提升品牌知名度和美誉度。

Autonics公司的发展小趣事

随着产品质量的提升和市场认可度的提高,Autonics开始积极拓展国内外市场。公司在韩国国内设立了多个办事处和代理公司,覆盖了主要城市和工业区。同时,Autonics还积极开拓海外市场,先后在多个国家和地区设立了销售网点和生产基地。通过国际化战略的实施,Autonics的产品逐渐走向世界,成为国际知名的传感器和控制器品牌。

GS Technology公司的发展小趣事
由于峰值信号可能较弱,需要通过三极管等放大电路对信号进行放大。三极管在这里作为放大器使用,其基极接收输入信号,集电极输出放大后的信号。
GSI Technology公司的发展小趣事

GSI Technology公司成立于1995年3月,总部位于加利福尼亚州的圣何塞(硅谷),自创立之初便专注于提供领先的电信和网络解决方案。公司采用先进的CMOS工艺技术,如0.25、0.15和0.13微米等,致力于开发低功耗、全功能、高性能的SRAM产品。通过不断的技术创新和产品优化,GSI Technology逐渐在高性能存储器市场占据了一席之地,为后续的快速发展奠定了坚实的基础。

General Cable公司的发展小趣事
可能是由于编码逻辑错误、引脚连接错误或外部输入数据错误等原因导致的。解决方法包括检查编码逻辑、重新连接引脚、验证外部输入数据等。

问答坊 | AI 解惑

五年单片机开发畅想

来源:blog.mcuol.com  作者:OHY 我原来在03年就开始接触单片机了,光阴飞逝,不知不觉已经过了五年了。回头看看自己走过了路,有感慨、有遗憾、有憧憬、有幻想。最开始接触的是89C51单片机,但是在我心中觉得51就是单片机,单片机就是 ...…

查看全部问答>

请教个问题

就是这个图自己画的话 上面那个小圆圈是怎么画的?谢谢了…

查看全部问答>

9G-LM3S8 MDK-ARM使用过程简介

9G-LM3S8 MDK-ARM使用过程简介 一,准备MDK-ARM+LM3S8软件包 1,在http://www.mcu123.com/news/Soft/embsof/arm/201001/516.html     下载RealView MDK-ARM 4.03a(MDK-ARM V4.03a,MDK4.03a) mdk403a_mcu123.rar ftp://www.mcu123. ...…

查看全部问答>

Keil头文件

我的keil没有89S52等常用芯片的头文件!哪位仁兄给传个,小弟谢谢啦! 或者给个比较好的破解版的Keil下载地址也行! 谢谢啦!…

查看全部问答>

NAND 驱动移植问题

ATMEL9261的两个CE5.0不同版本号的BSP进行NAND驱动移植(将第二个BSP的NAND驱动移植到第一个BSP上,但都是9261 CE5.0BSP) 移植后,程序都进不了FMD_INIT函数,看了下代码,驱动是通过读NAND的ID然后判断是什么型号的NAND FLASH,用的是K9F1G08UOA ...…

查看全部问答>

driverstudio开发硬盘过滤驱动遇到的奇怪问题

用driverstudio向导直接产生一个针对class description为“磁盘驱动器”的upper filter driver,然后安装,源代码没有经过任何修改,重起计算机,蓝屏,错误代码为:0x0000007B, inaccessable boot device,不知何故?求解 …

查看全部问答>

三角波方波发生电路

第一张是实验图,左边是三角波方波发生电路,原理说调节R1/R2的比值就能调节三角波的幅值,应该是比值为1时,方波和三角波的幅度一样,可现在实验中三角波幅度接近64V。 而且我想要调成1KHZ的波形,公式 就是T=4*R2*R4*C/R1,现在设定C是0.1μF,算出R4 ...…

查看全部问答>

2812中的开方运算

运用牛顿迭代法开方,我用过,很浪费时间的,不知道那位有更好的方法! 我想是不是也可以搞一个查表的方法呢!…

查看全部问答>

炜盛气体传感器续篇2

了解了MQ半导体、MP平面半导体、MC催化元件、ME电化学传感器后, 那么今天我们把剩余的传感器都有个大概的了解:RD热释电红外传感器、MH红外传感器等。   首先是热释电红外传感器,原理是利用人体温度变化的特征来探测红外线的辐射。并 ...…

查看全部问答>

pic,ftoa转化asic码遇到的问题

现在我这边的项目是做个频率发生仪,上位机发送频率, 让上位机发送浮点点到串口 并要在1602上同步显示,浮点数我可以收到 现在我遇到的问题是:我要把接受到的浮点数在1602上显示,我不想用个位,十位分离的 办法 我想用ftoa这个函数 picc里自 ...…

查看全部问答>