- 打卡等级:以坛为家II
- 打卡总天数:493
- 最近打卡:2025-05-01 08:31:58
荣誉版主
- 积分
- 3476
|
发表于 2024-12-12 08:42:28
|
显示全部楼层
第六个实验是驱动0.96寸OLED单色显示屏
传统的STC89C52开发板,大多配有LCD1602接口。
它的倒序排列是:
GND VCC D7 D6 D5 D4 D3 D2 D1 D0 .....
恰好符合现在市面的一些小屏幕的引脚排列:
GND VCC SCL SDA RST DC CS .....
0.96寸OLED单色屏SS1306四针IIC驱动,分辨率为128*64。
0.96寸OLED单色屏SS1306七针SPI驱动,分辨率为128*64。
都符合这样的排列,因此对实验带来极大的便利。
本例实验是基于七针的OLED屏显示。且看:
主程序
//********************************************************************************
// 名称: Main.C
// 基于: 清翔 QX-MCS51_V3.0 开发学习板
// 实验: OLED 12864 显示屏 SSD1306 驱动
// 编程: 浦晓明(浦江一水) 2024-12-11
//********************************************************************************
#include "AI8051U.H"
#include "AI8051U_SYS.H"
#include "SSD1306.H"
#include "PIC.H"
/** 全局变量说明 设为全局,便于调试观察... **************/
//========================================================================
// 函数: void delay_ms(unsigned int ms)
// 描述: 毫秒级延时函数。
// 参数: ms,要延时的ms数,自动适应主时钟.
//=====================================================================
void delay_ms(unsigned int ms)
{ unsigned int i;
do{ i = MAIN_Fosc / 6000;
while(--i);
} while(--ms);
}
/**** 主函数入口 ************************/
void main(void)
{
SYS_Init(); //系统初始化
OLED_Init(); //初始化
OLED_CLS(); //清屏
OLED_Light(0); //最低亮度
OLED_Light(0xFF); //最高亮度
OLED_Light(0xCF); //初始亮度
OLED_HZ16(10,3,"单",0,1); //测试汉字
OLED_HZ16(26,3,"片",0,1);
OLED_HZ16(42,3,"机",0,1);
OLED_A16(60,3,'O',0,1); //测试8*16单字符
OLED_A08(68,4,'k',0,1); //测试5*7 单字符
OLED_String(0,0,"AI8051U",0,1);//测试字符串...
OLED_Str5x7(10,6,"0123456789ABCD",0,1);
delay_ms(1000);
//主循环...
while(1)
{ OLED_BMP(0,0,128,8,OLED12864_IMG0[0],1); //显式BMP图
delay_ms(2000);
OLED_BMP(0,0,128,8,OLED12864_IMG1[0],1); //显式BMP图
delay_ms(2000);
OLED_CLS(); //清屏
OLED_String(0,0,"单片机AI8051U",0,1); //中西文混合显示
OLED_String(0,2,"单片机AI8051U",1,1); //正显/反显
OLED_Str5x7(0,6,"AI8051U",0,1); //正显
OLED_Str5x7(0,7,"AI8051U",1,1); //反显
delay_ms(2000);
OLED_CLS(); //清屏
OLED_LineH(10,10,108,0); //画一水平线 作图算法...
OLED_LineV(10,10,44,0); //画一垂直线
OLED_Line(10,10,118,54,0); //两点一线 不同方向画线...
OLED_Line(10,54,118,10,0); //两点一线
OLED_Line(118,54,118,10,0); //两点一线
OLED_Line(118,54,10,54,0); //两点一线
OLED_Box(0,0,127,63,1); //画一方框
OLED_Circle(64,32,30,1); //画一个圆
delay_ms(2000);
}
}
工程文件包,供初学单片机的爱好者参考。
07-TestOLED1306.rar
(43.56 KB, 下载次数: 74)
|
|