说明
数码管动态扫描显示0-7
Proteus仿真
注意:
RX8的1-8引脚脚依次连接数码管的A-G和DP
RX8的9-16引脚依次连接P0.0-P0.7
Q1-Q8的基极(B)依次连接P2.0-P2.7
Q1-Q8的集电极(C)依次连接数码管的1-8
Q1-Q8的发射极(E)连接电源
使用到的元器件:
单片机:AT89C51
电容:CAP
极性电容:CAP-ELEC
电阻:RES
晶振:CRYSTAL
数码管:7SEG-MPX8-CA-BLUE
排阻:RX8
三极管:NPN
C51代码
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//数码管ABCDEFG七段显示器编码,从左到右分别代表数字0-9
//DSY_CODE数组存储的是低电平点亮的编码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//延时
void DelayMs(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
uchar i,Pos = 0x80;
P0 = 0xff;
P2 = 0xff;//关闭所有位选择
while(1)
{
//应先进行位选择,在进行段选择
for(i=0;i<8;i++)
{
Pos = _crol_(Pos,1);
P2 = Pos;//位选择
P0 = DSY_CODE[i];//段选择
DelayMs(2);
}
}
}