LED点阵

本周的学习内容是LED点阵的使用。
其实LED点阵与动态数码管的原理非常相似,都是通过扫描和视觉暂停现象来实现多个LED同时点亮的视觉效果。不同的是,点阵可以通过74HC595来实现三根线串行输入多根线并行输出的效果。开发板上的点阵是8*8的,因此使用8根线输出,利用多个74CH595也可以实现例如16、32行并行输出,不过会降低扫描频率。

下面是一个在点阵上滚动显示 Hello!的代码

#include <REGX52.H>
#include <INTRINS.H>
sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;
unsigned char code Animation[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0x08,0x08,0x08,0xff,0x00,0x0e,0x15,
0x15,0x15,0x08,0x00,0x7e,0x01,0x02,0x00,
0x7e,0x01,0x02,0x00,0x0e,0x11,0x11,0x0e,
0x00,0x7d,0x00,0x00,0x00,0x00,0x00,0x00,};
void Delay (unsigned char xms)
{
	unsigned char i, j;
	while(xms>0)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

void Write(unsigned char Byte)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		SER=Byte&(0x80>>1);
		SCK=1;
		SCK=0;
	}
	RCK=1;
	RCK=0;
}
void ShowColumn(unsigned char Column,Data)
{
	Write(Data);
	P0=~(0x80>>Column);
	Delay(1);
	P0=0xff;
}
void main()
{
	unsigned char i, j;
	SCK=0;
	RCK=0;
	while(1)
	{
		for(i=0;i<8;i++)ShowColumn(i,Animation[i+j]);
		j++;
		if(j>38)j=0;
	}
}
	
已标记关键词 清除标记
相关推荐
LED点阵显示屏(完整源程序版) 目 录 引言 ……………………………………………………………………1 1 系统的设计与分析 ………………………………………………2 1.1 LED点阵控制原理………………………………………………………………3 1.1.1 LED简介 ……………………………………………………………………3 1.1.2 LED点阵 ……………………………………………………………………4 1.1.3 显示原理 ……………………………………………………………………5 1.1.4显示屏的原理图及结构 ……………………………………………………6 1.2 单片机小系统 …………………………………………………………………8 1.2.1 51系列单片机的概述 ………………………………………………………8 1.2.2单片机的组成 ………………………………………………………………8 2 程序设计 ………………………………………………………10 2.1 系统程序的框架………………………………………………………………10 2.1.1 串口通讯协议………………………………………………………………10 2.1.2 显示处理效果函数…………………………………………………………10 2.1.3 显示函数……………………………………………………………………10 2.2 程序流程图……………………………………………………………………9 3 总结 ………………………………………………………………11 谢辞 …………………………………………………………………13 参考文献 ……………………………………………………………14 附录(所有的源程序)………………………………………………15
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页