51单片机 MAX7221控制数码管动态显示+Proteus仿真


  • Proteus仿真
    在这里插入图片描述

实例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit DIN = P2^0;
sbit CSB = P2^1;
sbit CLK = P2^2;
uchar Disp_Buffer[8]=
{
2,1,10,1,0,10,3,1
};//显示21-10-31
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}

void Write(uchar Addr,uchar Dat)
{
uchar i;
CSB = 0;
for(i=0;i<8;i++)
{
CLK = 0;
Addr <<= 1;
DIN = CY;
CLK = 1;
\_nop\_();
\_nop\_();
CLK = 0;
}
for(i=0;i<8;i++)
{
CLK = 0;
Dat <<= 1;
DIN = CY;
CLK = 1;
\_nop\_();
\_nop\_();
CLK = 0;
}
CSB = 1;
}

void Initialise()
{
Write(0x09,0xff);
Write(0x0a,0x07);
Write(0x0b,0x07);
Write(0x0c,0x01);
}

void main()
{
uchar i;
Initialise();
DelayMS(1);
for(i=0;i<8;i++)
{
Write(i+1,Disp_Buffer[i]);
}
while(1);
}

程序源码和仿真资源

1
2
3
链接:https://pan.baidu.com/s/13-iCRpguqrZ7emzR0H7WZQ 
提取码:0w3e