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

📄 0851led.c

📁 51控制08接口双色LED51控制08接口双色LED
💻 C
字号:
#include <REG52.H>   
#define uchar unsigned char
#define uint unsigned int                      
unsigned char col,i;
unsigned char code num[16]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
unsigned int one=0,two=2,three=3,four=9,five=10,six=5,seven=6,eight=7;
sbit EN  =P2^4;                   //使能
sbit STB =P2^6;                   //锁存
sbit CLK =P2^7;                   //时钟
sbit G   =P0^7;                   //红数据
sbit R   =P2^5;                   //绿数据
void delay();                     //延时

unsigned char code logo[128]={
0xFF,0x7F,0xFF,0x7F,0x03,0x7F,0xFA,0x01,0x7A,0xFB,0xB5,0xB7,0xD7,0xBF,0xEF,0xBF,
0xE7,0xBF,0xE7,0x9F,0xDB,0x5F,0xDB,0x6F,0xBE,0xE7,0x79,0xF1,0xC7,0xFB,0xFF,0xFF,/*"欢",0*/
0xBF,0xFF,0xDE,0x7F,0xC9,0x83,0xDB,0xBB,0xFB,0xBB,0xFB,0xBB,0x1B,0xBB,0xDB,0xBB,
0xDA,0xBB,0xD9,0xAB,0xDB,0xB7,0xDF,0xBF,0xDF,0xBF,0xAF,0xFF,0x70,0x01,0xFF,0xFF,/*"迎",1*/
0xF7,0xBF,0xF3,0xBF,0xE4,0x01,0xEF,0xBF,0xC8,0x03,0x9B,0xBB,0x5B,0xBB,0xD8,0x03,
0xDB,0xBB,0xDD,0xBF,0xDE,0x7F,0xDF,0x7F,0xDE,0x8F,0xDD,0xE1,0xD3,0xFB,0xFF,0xFF,/*"使",2*/
0xFF,0xFF,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,
0xEF,0x7B,0xE0,0x03,0xEF,0x7B,0xEF,0x7B,0xDF,0x7B,0xDF,0x7B,0xBF,0x6B,0x7F,0x77,/*"用",3*/
};
unsigned char code number[192]={
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/
0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1",1*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2",2*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3",3*/
0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4",4*/
0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5",5*/
0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/
0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7",7*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9",9*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x9F,0xFF,0xFF,/*".",0*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*" ",0*/
};
/*********************************************************
函数名:delay()
功能:延时
/*********************************************************/
void delay(){
	unsigned int n;
 	for(n=2;n>0;n--){;}
}
/*********************************************************
函数名:out_R
功能:发送数据 c=1-红色显示 c=2-绿色显示 c=3-黄色显示
/*********************************************************/
void out_RGY(uchar *d,uint c){//发送数据
   	unsigned char j,TEMP;
    bit o;
    TEMP=*d;                   
	if(c==1){
		G=1; 
		for(j=0;j<8;j++){
    		o=(TEMP<<j)&0x80;   //取出最高位。
        	if(o==0)	R=0;
	    	else	R=1;        //输出数据1
       		CLK=1;              //发送时钟
     		CLK=0;
    	}
	}
	else if(c==2){
		R=1;                    //关闭红色
		for(j=0;j<8;j++){
        	o=(TEMP<<j)&0x80;   //取出最高位。
        	if(o==0)	G=0;
	    	else	G=1;             //输出数据1
       		CLK=1;              //发送时钟
       		CLK=0;
   		}
	}
	else if(c==3){
		for(j=0;j<8;j++){
        	o=(TEMP<<j)&0x80;   //取出最高位。
        	if(o==0){G=0;R=0;}
		    else{G=1;R=1;}             //输出数据1
       		CLK=1;              //发送时钟
       		CLK=0;
   		}
	}
} 

/*********************************************************
函数名:SHOW_alp()
功能:显示图形程序
/*********************************************************/
void SHOW_alp(uchar *alpha,uint color)
{    
	   out_RGY(&alpha[8*((i+1)/2-1)],color);	//从串口输出第1个字的第二字节。  
       out_RGY(&alpha[8*((i+1)/2-1)+1],color);	//从串口输出第1个字的第一字节。  
	   out_RGY(&alpha[8*((i+1)/2-1)+2],color);	//从串口输出第2个字的第二字节
       out_RGY(&alpha[8*((i+1)/2-1)+3],color);	//从串口输出第2个字的第一字节。
	   out_RGY(&alpha[8*((i+1)/2-1)+4],color);
       out_RGY(&alpha[8*((i+1)/2-1)+5],color);
	   out_RGY(&alpha[8*((i+1)/2-1)+6],color);
	   out_RGY(&alpha[8*((i+1)/2-1)+7],color);	
}
/*********************************************************
函数名:SHOW_chn()
功能:显示汉字
/*********************************************************/
void SHOW_chn(uchar *china,uint color)
{
	   out_RGY(&china[i-1],color);	//从串口输出第1个字的第二字节。
       out_RGY(&china[i],color);	//从串口输出第1个字的第一字节。
	   out_RGY(&china[32+i-1],color);	//从串口输出第2个字的第二字节
       out_RGY(&china[32+i],color);	//从串口输出第2个字的第一字节。
	   out_RGY(&china[64+i-1],color);
       out_RGY(&china[64+i],color);
	   out_RGY(&china[96+i-1],color);
	   out_RGY(&china[96+i],color);	
}
/*********************************************************
函数名:SHOW_num()
功能:显示数字
/*********************************************************/
void SHOW_num(uchar *numbers,uint color)
{
	   out_RGY(&numbers[one*16+(i+1)/2-1],color);	//从串口输出第1个字的第二字节。
       out_RGY(&numbers[two*16+(i+1)/2-1],color);	//从串口输出第1个字的第一字节。
	   out_RGY(&numbers[three*16+(i+1)/2-1],color);	//从串口输出第2个字的第二字节 //      
	   out_RGY(&numbers[four*16+(i+1)/2-1],color);	//从串口输出第2个字的第一字节。
	   out_RGY(&numbers[five*16+(i+1)/2-1],color);
       out_RGY(&numbers[six*16+(i+1)/2-1],color);
	   out_RGY(&numbers[seven*16+(i+1)/2-1],color);
	   out_RGY(&numbers[eight*16+(i+1)/2-1],color);	
}
/*********************************************************
函数名:main()
功能:主功能函数
/*********************************************************/
void main(){
	CLK=0; 
	while(1){            			//重复循环显示
		for(i=1;i<32;i+=2){                  
			EN=1;
			SHOW_chn(logo,1);               //关闭显示			       	
     		STB=1;					//锁存为高,595锁存信号
	   		P2=(P2|0x0f)&num[col];    //输出行信号
	   		EN=0;                   //开显示
         //	delay();	  			//延时,等待一段时间,让这列显示的内容在人眼内产生视觉暂
      	  	STB=0;			//关闭显示
   	   		col++;	      			//行加一
	   		if(col==16)	col=0;  		//一共16行。
		}				 						 
   	}	
}					 

⌨️ 快捷键说明

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