STM32入门教程-2023版【4-1】OLED调试工具

关注 + 点赞   不错过精彩内容

大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 

一、概述

在这一节先提前介绍一下,在以后的教程中我们会经常用到这个显示屏,现在我们用OLED当一个调试的显示屏,方便我们调试程序。

运行OLED示例程序,可以看到OLED显示一些字符和数字,当然这个屏幕也能显示中文或者图像,但是暂时还没有加进来。

第一个是显示一个字符A,第三个是显示字符串HelloWorld!,下面左边是显示一个数字12345,然后右边是显示有符号的数字-66,再下面是显示十六进制数字AA55,最后是显示二进制数字1010101001010101,这个就是十六进制AA55的二进制数,这些就是提供的OLED驱动函数模块能显示的内容

二、STM32的常用调试方式

对于我们的单片机编程而言,经常会遇到一个很大的问题,就是程序调试。

因为单片机不像电脑,电脑有一个很大的屏幕,想看什么变量、参数,直接打印到屏幕就可以了,但是单片机就不一样了,很多时候由于成本和电路结构的限制,它并不会有一个像电脑屏幕那样强大的显示屏,这就对我们的调试造成了困难。

比如如果让你学习C语言,但是不允许使用printf这个打印函数,那C语言是不是就根本没法学,同样,给你一个单片机,但没有任何可以显示参数的东西,那你也没法学单片机,所以本节我们先来学习一下常见的程序调试方法

下面是常见的调试方式:

  • 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息

  • 显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上

  • Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能

  • 点灯调试法:不清楚程序执行到了某个位置,加一个点灯程序,如果运行到了,灯就亮,没运行到,灯就不亮

  • 注释调试法:原来程序是好的,但加了某段就不行,这时可以把新加入的程序全部注释掉,恢复到正常运行的状态,然后一行一行解除注释,直到错误出现,或者注释一部分,来测试另一部分,减少程序运行的部分,来定位出问题的程序在哪里

  • 对照法:找了一个没问题的程序,对方的执行逻辑没问题,自己感觉自己的执行逻辑也没问题,但自己的无法运行,就可以对照一下,在对方的程序逻辑上,逐步替换成自己的程序逻辑,这就容易发现错误在什么地方

总之测试程序的基本思想就是缩小范围、控制变量、对比测试等,测试的方法是多样的,这个还得大家在实践中多想想了

三、OLED简介

OLED ( Organic Light Emitting Diode )

就是有机发光二极管。

OLED 显示屏:

性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点。

优点如下:

  • 功耗低:OLED每一个像素都是一个单独的发光二极管,每一个像素都是可以自发光的,不同LCD那样需要有背光,所以OLED屏幕会比较省电

  • 响应速度快,这个特性可以使OLED有更高的刷新率

  • 总线时序快,也可以避免我们的程序阻塞

  • 宽视角,因为OLED屏幕上自发光的,所以在任何角度看,显示内容都是清晰的,对比LCD:比如电脑屏幕,从下或者上斜看屏幕,那么屏幕会变黑,很难看清上面的内容,手机屏幕作为OLED屏幕基本各个视角都可以看清屏幕,这就是可视视角的差别

  • 轻薄柔韧:比如现在手机上的折叠屏、柔性屏等,用的就是OLED显示屏

0.96 寸 OLED 模块

OLED 显示屏中有这种0.96 寸 OLED 模块,小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块。供电:3~5.5V ,通信协议:I2C/SPI ,分辨率:128*64

注意

  1. 3.3V和5V单片机都是兼容的,I2C一般是四阵脚屏幕的通信协议,SPI一般是七针脚的通信协议

  2. OLED一般只有一个颜色,分辨率也比较低,驱动OLED只需要几根线和通信协议,占用资源比较小

硬件电路

左边这个是4针脚版本的OLED电路,这里GND接GND,VCC接3.3V,给OLED供电,然后剩下的SCL和SDA是I2C的通信引脚,需要接在单片机I2C通信的引脚上,当然可以使用GPIO口模拟的I2C通信,那么这两个端口就可以接在任意的GPIO口上

右边这个是7针脚版本的OLED电路,也是一样,GND,VCC接电源,剩下的引脚是SPI通信协议的引脚,如果是GPIO口模拟的通信协议,那也是接在任意的GPIO口上就行了

OLED驱动函数

这个表里可以看到,这些就是源代码中提供的驱动函数,上面这两个图是OLED的实物图和屏幕坐标图,我把这个OLED分割成了4行16列的小区块

最后是源代码中提供的驱动函数

  • 第一个是OLED_Init,这个是OLED初始化函数。在使用OLED之前,需要调用一下这个函数,对OLED进行初始化,然后就可以常使用了

  • 第二个是OLED_Clear,这个是清屏函数。调用这个函数,屏幕就会清空

下面的这些函数,都是OLED的显示函数

  • 第三个是OLED_ShowChar,显示一个字符。第一个参数指定起始行,第二个参数指定起始列,第三个参数是要显示的字符,比如,1行1列,显示字符A,那在屏幕上1行1列的位置,就会像这样显示一个A,右边OLED的实物图中就是它的实际效果

  • 第四个是OLED_showString,显示字符串。比如在1行3列显示字符串HelloWorld!那就会从第1行第3列这里开始,显示HelloWorld!

  • 第五个是OLED_ShowNum,显示无符号十进制数字。前两个参数指定起始坐标,第3个参数是要显示的数字,第4个参数是数字的长度,比如2行1列,显示数字12345,长度为5,就会在屏幕的这个位置显示12345

  • 第六个是OLED_ShowSignedNum就是显示有符号十进制数字。在显示的时候会带一个正负号

  • 第七个是OLED_ShowHexNum,显示十六进制数

  • 第八个是OLED ShowBinNum,显示二进制数

  • 其实这个屏幕还可以显示中文、图像等内容,暂时源代码的驱动函数并没有涉及这些东西,这些东西我们调试的时候也暂时用不到,如果大家需要的话,我们之后单独学习OLED的时候再来演示这些功能

作 者 :硬核王同学

------- END-------

关注公众号回复“加群”按规则加入技术交流群  回复“1024”查看更多内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413441.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA的访问控制列表ACL

ACL -----access control-list 允许/拒绝 ACL作用: 1.实现访问控制 2.定义感兴趣流量 ACL分类: 标准ACL 2000-2999(只关注源IP地址,使用时应该尽量靠近目标) 扩展ACL 3000-3999:写ACL不能写在源上&…

Java基础知识整理,注释、关键字、运算符

写在开头 万丈高楼平地起,要想学好汉语首先学拼音,想学好英语首先学26个字母,对于编程语言来说,一样的道理,要想学好必须先掌握其基础语法和知识,今天我们就来唠一唠Java语言中那些出现频率极高&#xff0…

Linux:shell脚本:基础使用(8)《函数局部|全局变量函数传入位置变量return》

基本的函数定义 把一些重复调用的命令写进一个函数里,下次直接调用函数名,这样的既方便修改,又可以让思路清晰 function 函数名(){ 当调用这个函数时候执行的命令...... } 这个是一个基础的函数定义,当然你不加function也是可以的…

Three.js Tri-panner (三面贴图) 材质 两种实现方式

文章目录 介绍自定义shaderNodeMaterial修复:骨骼材质特殊处理修复:使用法相贴图时整体变色 介绍 Tri-panner 在babylonjs中有支持 但是three.js目前的基础材质并不支持 需要自己定义shader 或者使用目前还没有什么完善的文档的 NodeMaterial 下面展示两…

C++ 之LeetCode刷题记录(十三)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可…

为什么使用双token实现无感刷新用户认证?

单token机制 认证机制:对与单token的认证机制在我们项目中仅使用一个Access Token的访问令牌进行用户身份认证和授权的方案处理。 不足之处: 安全性较低(因为只有一个token在客户端和服务器端之间进行传递,一目Acess Token被截获或者被泄露…

卷级实时备份功能特点及应用场景

为满足部分对RTO和RPO指标敏感的用户需求,云祺科技通过结合卷远程复制技术和持续数据保护技术、以及高可用技术的原理,推出了一款基于卷为最小处理单元的实时容灾备份产品,其对于备份源对象具有良好的兼容性,无论是文件、影音、应…

如何做好一个信息系统项目经理,一个项目经理的个人体会和经验总结(一)

前言 作为一个信息系统项目经理,最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的;最忌讳的就是完美主义倾向,凡事都要寻找标准答案和最优答案,既耽误了项…

【欢迎您的到来】这里是开源库get_local_info作者的付费专栏

您好, 我是带剑书生,开源库get_local_info的作者,欢迎您的到来,这里是我的付费专栏,会用更简洁的语言,更通俗的话语,来帮助您更好的学习rust,这里不仅仅讲解Rust在某些应用功能实现上…

Java项目:121SSM记账管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 记账管理系统基于SpringSpringMVCMybatis开发,系统主要功能如下: 收入项管理 支出项管理 收入方式管理 支出方式管理 添加收入…

企业网盘的价值:为什么企业需要它?

企业网盘因其主打的文件管理协作功能,正好符合信息时代高速发展下企业的需要,能够帮助企业集中管理文件数据,提供便捷的文件协作服务,一跃成为近两年企业服务类产品榜单中的一匹黑马。 企业网盘真的这么好用吗?企业真…

Cleanmymac for mac 4.14.7无弹窗注册版

Cleanmymac for mac是一款先进的、集所有功能于一身的实用系统清理工具,删除系统缓存文件 , 多余的应用程序语言包 , 它能帮助保持您的Mac保持清洁。只需两个简单的点击,就可以删除无用的文件,以节省您宝贵的磁盘空间。 对于很多喜爱摄影朋友…