一.原理
1.调试方式
串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息。
显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。
Keil调试模式:借助Keil软件的调试模式,可使用单步运行,设置断点,查看寄存器及变量等功能。
串口调试的优势:不仅可以显示单独的参数,还可以显示曲线,图形,图像等。
劣势:调试的时候要拖着电脑。只能以信息流的方式呈现数据。
显示屏调试的优势:对于不断变化的数据可以覆盖刷新显示。
劣势:屏幕太小,显示界面有限。
2.0.96寸OLED模块
供电:3~5.5V
通信协议:I2C/SPI
①硬件电路
- SCL和SDA是I2C的通信引脚,需要接在单片机I2C通信的引脚上,但给的驱动函数模块用的是GPIO口模拟的I2C通信,所以这两个端口可以接在任意的GPIO口上。
②驱动函数
前面的数字参数是定位,eg.第2行第1列
二.硬件连接
三.程序
OLED.c的部分程序:
/*引脚配置*/
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))
/*引脚初始化*/
void OLED_I2C_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//开漏输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
main.c:
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
int main(void)
{
OLED_Init();
OLED_ShowString(1,1,"QIANQIAN");//显示字符串
OLED_ShowNum(2,1,520,3);//第2行第1列显示520这3个数字
OLED_ShowSignedNum(2,5,1314,4);//有符号的数字
OLED_ShowHexNum(3,1,0xA715,4);//16进制数
OLED_ShowBinNum(4,1,0xA715,16);//2进制数,C语言不能直接写二进制的数,所以用16进制的数代替
while(1)
{
}
}