昨天发了一个具体串口的配置,今天在试着弄下OLED显示,因为OLED是IIC接口,所以可以做出简单的显示功能。之前的血氧仪也是OLED显示做的。
接下来先看成品,再说下调试经验。
1.jpg
这就是显示效果了。
这里就近原则,直接就用了P02,P03作为IIC的SCL和SDA管脚,然后例程的话,这个屏幕厂家做好了C51例程直接拿来用就行。
2.png
直接就是一个函数搞定。
移植的话就是先把他给的例程里的文件直接拷贝过来。
3.png
就是这几个函数,用途bmp,就是可以显示个小图片的,oledfont,就是显示那些ASCII码的。
直接修改main函数。
4.png
配置这个仿真界面和昨天一样。系统时钟还是需要修改成uint32_t Systemclock = 8000000;
之后选中debug模式开关使能。因为下面就要讲不同之处了。这些都弄好之后,下载进去是没办法显示的。
然后果断启动仿真。
5.png
仿真界面来到IIC_Start函数,这个是IIC通信不可或缺的起始。然后打上断点全速运行到断点出停止,之后我们看下函数体内的函数。
6.png
在头文件里,我们把IO口也都变了。这些函数就是让IO口输出高电平和低电平的。断点加的两处一个是让其输出高一个让其输出低的。我们让其直接全速运行至第二个断点,这样前两个函数就执行了,之后采用万用表测量这两个口发现确实是高电平了。然后单步运行,让其IO输出低,这时候就发现不对了,本该输出低的,却还是高。发现这个问题后,就是对症找问题了,就是IO本该输出低没有变低。所以我就打开了官方的GPIO例程。为啥要打开这个例程呢,因为我们不是直接使用IIC硬件,而是模拟IIC。模拟IIC就是用的GPIO。
7.png
打开就发现原因了,就是需要配置下GPIO口的功能。
8.png
我在其初始化函数中加入和例程一样的配置代码,这样再烧写进去就完美的出现显示了。
本次总结,和传统51还是有所区别,IO口还需单独初始化下,还有就是有了仿真调试起来是非常方便的。