一、数码管
1、选择数码管
2、共阳数码管,接高电平
3、数码管有八个LED灯组成的
数字0:0xc0 1100 0000
数字1:0xf9 1111 1001
二、验证数字0
蓝色表示低电平,红色表示高电平
三、数码管显示
1、编写代码
2、.hex文件烧录至仿真单片机中,运行proteus仿真
数码管
四、八位数码管动态显示
1、位选是选择哪一个数码管,段选是数码管显示什么数值
2、编写代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code place_code[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar cache[8]={0,0,0,0,0,0,0,0};
void delay(int ms)
{
uint i,j;
for(i=ms;i>0;i--)
{
for(j=120;j>0;j--);
}
}
void transfer(uchar a,b,c,d,e,f,g,h)
{
cache[0]=a;
cache[1]=b;
cache[2]=c;
cache[3]=d;
cache[4]=e;
cache[5]=f;
cache[6]=g;
cache[7]=h;
}
void seg_show()
{
uchar i;
for(i=0;i<8;i++)
{
P3=place_code[i];
//P2=0xff;
P2=seg[cache[i]];
delay(300);
}
}
void main()
{
transfer(2,0,2,4,0,5,1,2);
while(1)
{
seg_show();
}
}
3、.hex文件烧录至仿真单片机中,运行proteus仿真
8位数码管
五、结合74LS138的8位数码管
1、利用三八译码器控制位选仿真图
2、引脚自动编号的操作
将鼠标放置引脚上,键盘在英文状态下按a,输入NET=A#,按【OK】
选择需要编号的引脚,出现等号好左击即可按照顺序编号
3、编写代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//uchar code place_code[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code place_code[8]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};//利用三八译码器控制位选
uchar cache[8]={0,0,0,0,0,0,0,0};
void delay(int ms)
{
uint i,j;
for(i=ms;i>0;i--)
{
for(j=120;j>0;j--);
}
}
void transfer(uchar a,b,c,d,e,f,g,h)
{
cache[0]=a;
cache[1]=b;
cache[2]=c;
cache[3]=d;
cache[4]=e;
cache[5]=f;
cache[6]=g;
cache[7]=h;
}
void seg_show()
{
uchar i;
for(i=0;i<8;i++)
{
P3=place_code[i];
//P2=0xff;
P2=seg[cache[i]];
delay(300);
}
}
void main()
{
transfer(2,0,2,4,0,5,1,2);
while(1)
{
seg_show();
}
}
4、与不用74LS138效果相同,但是用74LS128只需要三个引脚就可以控制8个引脚
74LS138控制8位数码管