⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs.c

📁 AT89S52控制64*16双基色点阵led显示数字 数字通过自摸取出数组8*16 硬件环境:595
💻 C
字号:
#include <reg52.h>			
#include <intrins.h>
#define uchar unsigned char
void Ini_IO(void);
void IN_595(uchar temp);
void OUT_595(void);
void clear(void);
void Ini_Timer0();
void time_display(void);
void delay(uchar time);
//74HC138的A,B,C三个选择端//
sbit A_138=P1^0;	//A
sbit B_138=P1^1;	//B
sbit C_138=P1^2;	//C
//Col_Sel_E2=L_OE  Col_Sel_E1 =选择的是1,3排的有效还是2,4有效//
sbit E1=P1^3;	//L_D	   Col_Sel_E1
sbit E2=P1^4;	//L_OE     Col_Sel_E2
//SER的控制//
sbit R2_SER=P0^1; //2R_SER 	2排的595数据输入端
sbit R4_SER=P0^3; //4R_SER 	4排的595数据输入端
sbit R1_SER=P0^0; //1R_SER 	1排的595数据输入端
sbit R3_SER=P0^2; //3R_SER 	3排的595数据输入端
//SCK的控制//
sbit SCK=P0^5;  //L_CP12	R_SRC 	34R_SRC
//RCK的控制//
sbit RCK=P0^4;  //12R_RC 34R_RC
//传感器控制
//sbit SENSOR=P3^3;
uchar code number[10][16]={
							{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},	//0
							{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},	//1
							{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},	//2
							{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},	//3
							{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},	//4
							{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},	//5
							{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},	//6
							{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},	//7
							{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},	//8
							{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00}	//9
					     };
//uchar code number[16]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void main()
{
	Ini_IO();
	clear();
	while(1)
		time_display();
}
/*===============================参赛队显示==============================*/
void time_display(void)
{
	uchar i,j;
	uchar data_138=0;
		for(j=0;j<16;j++)
		{
			for(i=0;i<8;i++)
			{
				IN_595(number[i][j]);
			}
			OUT_595();
			P1=data_138;
			data_138++;
			delay(500);
			E2=0;
		}
}
//*********************将所有I/O口置为原始状态*********************//
void Ini_IO(void)
{
    P1=0;	
	R1_SER=1;
	R2_SER=1;
	R3_SER=1;
	R4_SER=1;
	SCK=0;
	RCK=0;
}
////////////////////////////////清屏/////////////////////////////////////
void clear(void)
{   uchar i,k,j;
    for(j=0;j<8;j++)//对于1个横排的控制
	{
        for (k=0;k<8;k++)
		{
        	for(i=0;i<8;i++	)
	        { 
		          SCK=0;
		          _nop_();
                  _nop_();
		          SCK=1;
                  _nop_();
                  _nop_();
 				  SCK=0;
		    }
		    OUT_595();
	    }
    }
} 

//*************将74hc595的0xff转变成8位的数据类型******************//
void IN_595(uchar temp)
{
	uchar k;
	for(k=0;k<8;k++)	
	{ 
		SCK=0;
		if(temp&0x80)	R1_SER=0;//serr1_r3_flag=1;       
    	else 		    R1_SER=1;//r1_r3_flag=0; 
		SCK=1;
		temp<<=1;
	}
}

///////////////////////////////595输出////////////////////////////////////
void OUT_595(void)
{
   	RCK=0;
   	_nop_();
   	_nop_();
  	 RCK=1;  //上升沿锁存数据/
   	_nop_();
   	_nop_();
	RCK=0;
}
       
void delay(uchar time)
{
	uchar i;
	for(i=0;i<time;i++)
	{
		_nop_();
		_nop_();
	}
}
			




 





















	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -