📄 16×16-ldianzhen.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 + -