目录
数码管介绍
显示器及其接口(本文主要针对LED显示器来介绍)
单片机系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、TFT液晶显示器等。
LED显示器的显示结构分为:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
LED数码管根据LED的不同接法可以分为共阴和共阳:
共阴极数码管:将8个LED的阴极接到同一管脚上(开发板使用)
共阳极数码管:将8个LED的阳极接到同一管脚上
若想在数码管中显示数字或字符,则需在数码管上点亮对应的LED。通常采用的是8段显示,正好凑成8位,也就是一个字节。
根据电路连接图数码管显示常用的16进制编码如下:
0x3f 0x06 0x5b 0x4f 0x66 0x6d
0 1 2 3 4 5
0x7d 0x07 0x7f 0x6f 0x77 0x7c
6 7 8 9 A B
0x39 0x5e 0x79 0x71 0x00
C D E F 无显示
开发板原理图
数码管是如何显示出字符的
此处就举例说明8~~以显示数字0为例:
要想显示数字0,则需对应同时点亮数码管中的a,b,c,d,e、f 这6个LED;通过开发板原理图可以看出a~dp分别对应74HC245芯片上的P00-P07这8个管脚,因此要点亮abcdef这6个LED则需将P00-P05置为高电平‘1’,而g和dp则为低电平‘0’;最后将对应的电平从P0口的高位写向低位,即从P07对应的dp开始写,并转为十六进制。应为:0011 1111–>0x3f
静态数码管
特点
每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新的字形码。
优点
占用CPU时间少、显示便于监测和控制。
缺点
硬件电路复杂、成本高。(若要用到8个静态数码管,也就是说这8个数码管都是独立的,让其实现静态显示,即要把这8个数码管各自的8段全部接入单片机来控制,显然,单片机的管脚是不够的:单片机只有32个口,而要控制这8个的话,则需8×8个IO口,就需要对单片机的IO口来进行扩展…)
数码管静态显示原理
回到开发板原理图,若只需LED1静态显示,则位选时将LED1置为低电平‘0’(因为开发板上为共阴极数码管)即P22-P24口都为‘0’–>LED1口输出‘0’(原理参见三八译码器),在段选时根据要显示的值将对应的P0口置为高/低电平即可。若只让LED4静态显示,则P24、P23、P22口分别为‘1’、‘0’、‘0’–>LED4则输出为‘0’,即位选选中LED4。
补充:P0口为漏极开路(即高阻状态,可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻或电平转换芯片),若不加上拉电阻,想对其单独输出高低电平是无法实现的。
74HC573锁存器芯片的使用
参见开发板原理图,OE为使能端,当其为低电平时,锁存器开始工作,因此在开发板中已经默认让其接地。LE为锁存端,当其为高电平时,Q0-Q7与D0-D7的状态一样,也就是说芯片内部是打通的,即Q0-Q7随着D0-D7变化而变化;为低电平时,Q0-Q7都锁存数据,无论D0-D7如何变化,Q0-Q7都保持锁存的值不变。
此处使用573来锁存和驱动,将单片机的P00-P07分别接在D0-D7,LE默认让其短接到VCC,即LE为高电平,也就是P00-P07怎么改变,则段选就怎么改变,因此可以通过P0口直接给数码管发送段选数据。
源程序–静态数码管
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LA=P2^2;
sbit LB=P2^3;
sbit LC=P2