数码管介绍
共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管,共阳极数码管在应用时将公共端接到+5V。
共阴极数码管是指将所有发光二极管的阳极接到一起形成公共阴极的数码管,共阴极数码管在应用时将公共端接到GND。
硬件设计
74HC138译码器
管脚说明
真值表(低电平有效)
P0口是段选,LEDx(x=1~8)是位选。
软件设计
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define PORT P0
#define LSA P22
#define LSB P23
#define LSC P24
u8 gsmg_code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
void delay_10us(u16 ten_us)
{
while (ten_us--);
}
void display(u8 dat[], u8 pos1)
{
u8 i= 0;
u8 pos = pos1 - 1;
for (i = pos; i < 8; i++) {
switch (i) {
case 0:LSC = 1;LSB = 1;LSA = 1;break;
case 1:LSC = 1;LSB = 1;LSA = 0;break;
case 2:LSC = 1;LSB = 0;LSA = 1;break;
case 3:LSC = 1;LSB = 0;LSA = 0;break;
case 4:LSC = 0;LSB = 1;LSA = 1;break;
case 5:LSC = 0;LSB = 1;LSA = 0;break;
case 6:LSC = 0;LSB = 0;LSA = 1;break;
case 7:LSC = 0;LSB = 0;LSA = 0;break;
}
PORT = gsmg_code[dat[i-pos]];
delay_10us(10);//消影
PORT = 0x00;
}
}
void main()
{
u8 dat[8] = {1, 2, 3, 4, 5, 6, 7,8};
while (1)
{
display(dat,1);
}
}