基于proteus的可视化设计(3)——显示屏控制
上一篇文章介绍了LED模块的用法,这次来给大家介绍介绍一下显示屏的用法,列举一些常见的显示屏:
本文给大家讲解一下这三种显示屏的用法。
1.LED数码管显示屏
(1)LED数码管介绍
什么是数码管呢?
LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成”日”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成日字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
常见的数码管是七段数码管,就是上面第一张图。此外,还有十六段数码管:
七段数码管:
这里稍微介绍一下七段数码管的工作原理,可以看到,一个数码管有十个引脚,每个引脚对应关系如上图所示。由于每个引脚只有高低电平两种状态,所以一般用高电平表示某一段数码管发光,低电平表示某一段数码管不发光,这样,就可以表示出0-9这是个数字了。举个例子,当数码管要显示数字1时,只要b,c引脚输出高电平,其他引脚输出低电平即可。其他数字同理可得。
显示一个数字如此,如果显示多个数字呢?比如下面的四位数码管:
可以看到,四段数码管只有12个引脚,为什么不是40个引脚呢?这是因为,四位数码管显示方式为动态扫描。每次只显示1位,快速循环显示,利用人眼视觉暂留特性,好像同时显示。这样子就可以共用一些引脚了。
(2)proteus可提供的模块介绍
使用专用芯片TM1637实现4位LED数码管控制
TM1637 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。主要应用于电磁炉、微波炉及小家电产品的显示屏驱动。采用DIP/SOP20的封装形式。
TM1637功能特点:
- 采用功率CMOS 工艺
- 显示模式(8 段×6 位),支持共阳数码管输出
- 键扫描(8×2bit),增强型抗干扰按键识别电路
- 辉度调节电路(占空比 8 级可调)
- 两线串行接口(CLK,DIO)
- 振荡方式:内置RC 振荡(450KHz+5%)
- 内置上电复位电路
- 内置自动消隐电路
- 封装形式:DIP20/SOP20
典型应用电路:
装载了TM1637芯片的显示器实物图:
可见,TM1637是块功能强大的芯片,在proteus可视化设计中,有一个例程就是TM1637芯片的应用。可视化设计的例程是proteus软件内置的,一些编写好的程序,可以直接打开运行,来学习某些模块如何使用。
(3)数码管例程介绍
打开例程的方法,首先在首页的入口(图中圈出来的地方):
然后,在左边的目录中,找到“Visual Designer for Arduino”
然后在右边的结果中可以看到一共有94个例程可供学习,我们今天要介绍的例程是No.56 Grove 4-digit display Simple example showing connection and use of Grove 4-digit display module.
可视化设计中,软件提供了一个四位数码管的模块,Grove 4-digit display module。这是一个很方便的模块,它的使用方法如下:
- init:数码管初始化,数码管不显示。
- setBrightness:设置数码管显示亮度,。不亮、标准亮度和高亮显示
- display:数码管显示数值(0
9,AF)
pos:位置(03)9,A~F)
value:数值(0 - decPoint:秒点显示,TRUE=on亮,FALSE=off灭
例程硬件设计——添加数码管模块
例程软件设计——SETUP流程图
例程软件设计——LOOP流程图
2.LCD1602显示器
(1)LCD1602显示屏的介绍
LCD1602显示屏图片如下:
LCD1602显示屏的一些特点:
- 优点:微功耗、体积小、重量轻、超薄
- 应用场合:袖珍式仪表和低功耗应用系统中。
- 控制器:日立公司HD44780控制器
- 显示:160个字符,可以自定义8个字符
可显示字符5*7点阵,共160个字符
LCD1602的接口电路:
(2)proteus中可供使用的LCD1602模块
在proteus中,可供使用的LCD1602模块有两种,一种是6线制接口,一种是2线制接口。
不管是6线制接口,还是2线制接口的LCD1602模块,proteus都提供有相对应的可视化设计的例程,比如6线制接口的例程是:
No.11 Arduino Real Time Clock with Alphanumeric LCD breakout board.
The example shows simple use of both breakout boards.
LCD1602六线制模块的方法如下:
现在我们来看一下这个例程的流程图:
可以看到,这个例程的设计非常简单,这也是可视化设计非常对初学者来说最好的地方,内部封装了一些函数,可以直接调用即可,十分的简洁。接下来我们来看一下2线制模块的例程。
No.51 FizzBuzz solution problem - LCD version.
A solution for the FizzBuzz puzzle problem.
FizzBuzz问题是一种英国学校学生经常玩的游戏。举个“FizzBuzz 问题”的例子:
写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。
可以看到,你甚至可以用proteus可视化设计来编写游戏,并且如果你有相应的硬件,你甚至可以直接烧录到板子上,可以说是非常的实用了!
流程图的逻辑非常易懂,通过判断数字的模来输出结果。
3.OLED12864显示屏
(1).OLED12864显示屏的介绍
**有机发光二极管(Organic Light-Emitting Diode, OLED)**又称为有机电激光显示、有机发光半导体。由美籍华裔教授邓青云(Ching W. Tang)于1979年在实验室中发现。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点。但是,作为高端显示屏,价格上也会比液晶电视要贵。
(2).proteus中可供使用的OLED12864模块
在proteus可视化设计中,提供了这个模块,并且方法很多
先来看看模块的方法:
可以看到,这个模块的方法是真的多,想要学习它的用法的话,不妨看看这个模块的例程,proteus也提供了它的例程。
(3)例程介绍
No.66 Grove OLED 128x64dot Print on graphics display
Simple example on how to print texts on LY190-128064 OLED graphics display
流程图——SETUP部分:
LOOP部分(这个部分比较冗长,用了几个子函数)
流程图比较长,我就不逐个注释了,其实还是挺好懂的。无非就是调用了模块的一些函数。
4.显示屏模块使用实战
前面介绍了三种显示屏的用法,想必大家此时已经摩拳擦掌跃跃欲试了,这里给大家布置个小作业。结合上一篇文章介绍的LED模块,这次来设计一个带有倒计时的红绿灯,具体要求如下:
感兴趣可以做一下,底下贴一下我的流程图:
SETUP部分:
LOOP部分:
仿真验证: