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

📄 16×16-ldianzhen.c

📁 单片机控制LED点阵显示汉字资料、程序(共阴、共阳)。
💻 C
字号:
/******************************************************************
/*                                                                *
/* AOKE210E单片机开发系统演示程序 							      *
/*                                                                *
/* 版本: V2.0 (2007/11/20)                                       *
/* 作者: 高山流水 (Email: aoke999@sohu.com)                      *
/* 网站: www.aokemcu.cn(奥科电子)                                *
/*                                                                *
/*                                                                *
/******************************************************************/

#include <reg51.h>       //51芯片管脚定义头文件
#include <intrins.h>	 //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint  unsigned int

#define	DELAYNUM	40	//该数值可以调节显示的速度
sbit  SDATA_595=P2^5;   //串行数据输入
sbit  SCLK_595 =P2^6;   //移位时钟脉冲
sbit  RCK_595  =P2^7;   //输出锁存器控制脉冲

sbit  sdat1_595 =P2^0;
sbit  sclk1_595 =P2^1;
sbit  rck1_595  =P2^2;

uchar data  dispram[32];  //显示缓存
uchar temp;

void  delay(uint );
void send2byte1(uint byte2);
void sendbyte2(uchar byte);
void display(uchar *temp);

uchar code Bmp[][32]=          
 {

   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

	{0x02,0x00,0x04,0x10,0x1F,0xF8,0x11,0x10,0x15,0x50,0x11,0x10,0x1F,0xF0,0x11,0x10,
0x15,0x50,0x11,0x10,0x01,0x04,0xFF,0xFE,0x02,0x80,0x04,0x60,0x18,0x1C,0x60,0x08},//奥
 
   {0x04,0x10,0x0E,0x10,0xF8,0x90,0x08,0x50,0x08,0x10,0xFE,0x90,0x08,0x50,0x1C,0x14,
0x1A,0x1E,0x29,0xF0,0x28,0x10,0x48,0x10,0x88,0x10,0x08,0x10,0x08,0x10,0x08,0x10},//科
  
   {0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8,0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10,
0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00},//电
  
   {0x00,0x00,0x3F,0xF0,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x04,0xFF,0xFE,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00}//子 
 
 };


/*******************************************************
*                                                      *
* 主函数                                               *
*                                                      *
*******************************************************/
void  main(void)
{
	uchar i,k;
	P2=0; 
	while(1)
	{
		for(k=0;k<5;k++)
		{
			for(i=0;i<DELAYNUM;i++)
			{
				display(Bmp[k]);				
			}
		}
	} 
} //end of main()

/*******************************************************
*                                                      *
* 延时函数                                             *
*                                                      *
*******************************************************/
void  delay(uint dt)
{
   uint i;
   uchar bt;
   for(i=0;i<dt;i++)
   for(bt=0;bt<200;bt++);
 }
/*******************************************************
*                                                      *
* 行驱动函数 595                                          *
*                                                      *
*******************************************************/

void send2byte1(uint byte2)
{    
	uchar c; 
	for(c=0;c<16;c++)
	{
		sclk1_595=0;
		byte2=byte2>>1;
		sdat1_595=CY;
		sclk1_595=1;
		sclk1_595=0;
	}
		rck1_595=0;
		_nop_();
		_nop_();
		rck1_595=1; 
        _nop_();
		_nop_();
		rck1_595=0;
}
/*******************************************************
*                                                      *
* 列驱动函数  595                                      *
*                                                      *
*******************************************************/
void sendbyte2(uchar byte)
{    
	uchar num,c; 
	num=byte;      
	for(c=0;c<8;c++)
	{
		SCLK_595=0;
		num=num<<1;
		SDATA_595=CY;
		SCLK_595=1;
		SCLK_595=0;
	}
		RCK_595=0;
		_nop_();
		_nop_();
		RCK_595=1; 
        _nop_();
		_nop_();
		RCK_595=0;
}
/*******************************************************
*                                                      *
* 显示函数  led16*16                                   *
*                                                      *
*******************************************************/
void display(uchar *temp)
{
	uchar i;
	for(i=0;i<16;i++)
	{
		sendbyte2(*temp++);
		sendbyte2(*temp++);
		send2byte1(1<<i);
		delay(1);
		send2byte1(0);
	}

}
/*******************************************************/


⌨️ 快捷键说明

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