## 静态数码管
1.种类:共阳极:发光二极管阳极接到一起;阳极接电源,给阴极低电平0点亮
(单片机A5-A7)
共阴极:发光二极管阴极接到一起;阴极接GND,给阳极高电平1点亮
(单片机A2-A4)
2.数码管显示原理
3.AT89C52RC单片机为两个四位一体的数码管(A2 共阴极连接方式高电平1点亮)
4.
5.若数码管显示“0”
DP=0,G=0,F=1,E =1,D=1, C=1, B=1, A=1
二进制:0011 1111 转化为 十六进制:0x3F
6.数码管表
点亮共阳:对共阴取反
7.数码管有段选和位选
段选:a b c d e f g dp
位选:abcdefg dp 连接但一个公共端为一个位选
芯片38译码器:通过3个IO口控制8个
8.静态数码管原理
当送入一个字形码后,显示字形可一直保持直到送入新字形码为止
9.硬件电路
注释:
74HC245芯片:将小电流变大电流,驱动数码管。
RP4电阻:防止电流过大烧毁数码管
74HC138芯片:通过3个IO口控制8个IO口
10.代码编写
#include <REGX51.H>
typedef unsigned int u16 ;
typedef unsigned char u8 ;
#define SMG_A_DP_PORT P0
/*SMG:数码管;A_DP:段选a-dp;PORT P0:端口P0 ;(宏定义通常大写)*/
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*定义数组共阴0-F;
8位:每一个段码都是一个字节,因此选用u8类型;
注意数组命名原则,g:全局变量(无g:内部变量)*/
void main()
{
SMG_A_DP_PORT=gsmg_code[10];
//输出0,调用0x3f(将数组第一个值调用);若输出A:[10] 调用x06f;(将数组第十个值调用);
while(1)
{
}
}