《单片机实践项目》《电子DIY》之使用51单片机+MAX7221驱动数码管显示,Proteus仿真及程序讲解

程序


#include <reg51.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 display[8]=
{
    
    
 	2,0,2,0,10,6,10,9
};

void delay_ms(uint x)
{
    
    
	uchar k=0;
	while(x--)
	{
    
    
	 	for(k=125;k>0;k--);
	}
}

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(void)
{
    
    
 	Write(0x09,0xff);
	Write(0x0a,0x07);
	Write(0x0b,0x07);
	Write(0x0c,0x01);
}

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

仿真:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/liuxianfei0810/article/details/107404487