89C51使用0.96 OLED显示屏
好长时间都没有使用51了,因为一些莫名的原因看了看51,瞬间感觉不忘初心啊,还是熟悉味道。这次是使用7脚OLED显示屏。因为51可以使用Proteus软件进行仿真,所以最后我会附上仿真和代码。
51单片机使用的LCD1602的显示屏相对来说是比较多的,需要LCD1602的可以看我这篇博客
https://blog.csdn.net/weixin_45488643/article/details/105968683在这篇博客里面是有LCD1602显示的驱动代码的,都是封装好的,直接移植到自己的代码里面就可以使用。OLED的显示原理自己百度去吧,有很多人写的都不错。
1、电路原理
2、代码
main.c 文件
//
// 功能描述 : OLED 4接口演示例程(51系列)
// 说明:
// ----------------------------------------------------------------
// GND 电源地
// VCC 接5V或3.3v电源
// D0 P1^0(SCL)
// D1 P1^1(SDA)
// RES 接P12
// DC 接P13
// CS 接P14
//******************************************************************************/
#include "REG51.h"
#include "oled.h"
#include "bmp.h"
int main(void)
{
u8 t;
OLED_Init(); //初始化OLED
OLED_Clear();
t=' ';
while(1)
{
OLED_Clear();
OLED_ShowCHinese(0,0,0);//青
OLED_ShowCHinese(18,0,1);//烨
OLED_ShowCHinese(36,0,2);//慕
OLED_ShowCHinese(54,0,3);//容
OLED_ShowString(8,2,"QingYeMuRong");
OLED_ShowString(20,4,"2020/09/04");
OLED_ShowString(0,6,"ASCII:");
OLED_ShowString(63,6,"CODE:");
OLED_ShowChar(48,6,t);//显示ASCII字符
t++;
if(t>'~')t=' ';
OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值
delay_ms(500);
OLED_Clear();
/*
delay_ms(500);
OLED_DrawBMP(0,0,128,8,BMP1); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
delay_ms(500);
OLED_DrawBMP(0,0,128,8,BMP2);
delay_ms(500);
*/
}
}
包含的oled.c 、oled.h 和oledfont.h文件内容太多了,我就不这这个地方放了,文末自己下载我的工程文件吧。
2.1、关于字体图片取模
字体取模在我以前的博客里面我写过,那个虽然是STM32的内容,但是取模方式的和原理都是一模一样的,博客链接:https://blog.csdn.net/weixin_45488643/article/details/107090558只需要看里面的字体取模和图片取模就可以了。
3、显示效果
由于图片仿真在Proteus里面显示效果不是太好,所以图片显示效果自己拿实物测试吧。
4、下载链接
下载:https://www.lanzoui.com/i1WgJgdj5gj 密码:9n95 有需要的自己下载。
小手留情,点个赞呗。