工作原理:
LED显示器两种显示结构:段显示(7段,米字型)和点阵显示(58、88)
共阴接法:8个LED阴极相连(不一定要接到GND)开发板使用的是共阴数码管
共阳接法:8个LED阳极相连接(不一定要接+5V)
LED显示器提供的编码为一个字节(8位,七段数码管加小数点)dp为最高位,a为最低位
共阴数码管码表:
0:0x3f 00111111
1:0x06 00000110
2:0x5b 01011011
3:0x4f 01001111
4:0x66 01100110
5:0x6d 01101101
6:0x7d 01111101
7:0x07 00000111
8:0x7f 01111111
9:0x6f 01101111
A:0x77 01110111
B:0x7c 01111100
C:0x39 00111001
D:0x5e 01011110
E:0x79 01111001
F:0x71 01110001
无显示:0x00 00000000
共阳极的0和1与共阴极情况相反
静态数码管每个数码管的段选必须接一个8位数据线来保持现实的字形码,送入一次可一直保持,直至送入新的字形码。
P0口漏极开路,需要加上拉电阻,P1,P2,P3在单片机内部有上拉电阻,可以不加,但是为了驱动电流的需要,还是会加上拉电阻,但是P30和P31没有加上拉是因为用在串口的下载,P34根据后面的使用也没有加上拉电阻。
74H573:
当OE为低电平,开始工作,默认接地
LE为锁存器,高电平为置数,低电平为锁存状态,保持。LE默认短接到Vcc,即为高电平置数状态。
104为滤波电容
74LS138芯片的Y0输出低电平,静态数码管显示
程序如下(使最右边一个数码管即静态数码管显示为F):
#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduanxuan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//定义一个数组,将16个数据存入
//code使得数据存入flash,节省数据大小
void main()
{
P0=smgduanxuan[15];//数组中第16个数据赋值给P0口
LSA=0;
LSB=0;
LSC=0;//使38译码器的Y0=0以选定LED1
while(1);//只需要循环即可
}
*加code与不加code都是定义一个全局变量,区别在于:
加:将数据储存到flash里,节省数据大小
不加: