目录
一.前置操作
1.LED数码管介绍
2.位选的基本概念
3. 1位数码管的引脚(10个)定义(应用【位选】概念)
4. 4位1体数码管的引脚(12个)定义
5.138译码器
(5.1)138译码器的作用
(5.2)138译码器的使能端
(5.3)138译码器的输出端
(5.4)138译码器的输入端
6.74HC245芯片(双向数据缓冲器)
(6.1)74HC245芯片的作用
(6.2)74HC245芯片的使能端【OE(LE)引脚】
(6.2)74HC245芯片的方向选择端【DIR引脚】
(6.2.1)[J21跳线帽]
(6.2.2) 数码管模块为什么要加上74HC245芯片?
7.104电容
8. 4位1体排阻部分(限流电阻)
二.基本的静态数码管显示
1.总结步骤:怎么样让某盏灯显示数字
2.根据原理图,确定LED第几个亮的位选(注意:数据端位对应端口端位,即高位对高位)
3.根据原理图,确定LED数字的段选(注意:数据端位对应端口端位,即高位对高位)
4.代码演示
#include <REGX52.H>
void main()
{
//138译码器
P2_2=1;
P2_3=0;
P2_4=1;
P0=0x7D;
while(1)
{
}
}
三.自定义的静态数码管显示(代码演示)
#include <REGX52.H>
unsigned char smgduan[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=smgduan[Number];
}
void main()
{
Nixie(2,2);//控制第几个灯亮什么数字
while(1)
{
}
}
四.自定义的动态数码管显示
1.视觉暂留原理
2.消影问题
2.利用自定义延时函数封装(代码演示)
#include <REGX52.H>
unsigned char smgduan[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=smgduan[Number];
Delay(1);//Á¢¿ÌÇå0ÊýÂë¹Ü»á±äµÃºÜ°µ
P0=0x00;//ÏûÓ°
}
void main()
{
while(1)
{
Nixie(1,1);
Delay(20);
Nixie(2,2);
Delay(20);
Nixie(3,3);
Delay(20);
Nixie(2,2);
}
}