基于51单片机Proteus的8X8led点阵滚动显示图形

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于51单片机Proteus的8X8led点阵滚动显示图形相关的知识,希望对你有一定的参考价值。

基于51单片机Proteus的8X8led点阵滚动显示图形


  • 器件材料:74HC595AT89C51
  • Proteus仿真

实例代码

#include<reg52.h>
#include<intrins.h>
 
//intrins.h函数,一般出现在C51单片机编程中,一般程序中需要使用到空指令_nop_();字符循环移位指令_crol_等时使用
//OE	第13脚	输出有效(低电平)
//MR	第10脚	主复位(低电平)
 
typedef unsigned char uchar;
typedef unsigned int uint;
 
 
/**********管脚说明********************/
#define P P1   //define 不用加;
 
sbit SER = P3^4;    //p3.4串行数据输入   DS
sbit SCK = P3^6;    //串行输入时钟,上升沿有效    SHCP	第11脚	数据输入时钟线
sbit RCK = P3^5;    //串行寄存器时钟,上升沿有效  STCP	第12脚	输出存储器锁存时钟线
 
/***********************************/
 
/**********函数声明********************/
void SendTo595(uchar byteData);
/***********************************/
 
/**********全局参数声明********************/
char shu=0xFE;
/***********************************/
 
 
void delay(unsigned int n)//延时函数
{
    unsigned int i=0,j=0;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}
 
void hang()//行扫描
{
	P=shu;
	shu=_crol_(shu,1);
}
 
char code a[32]={0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,
						0x00,0x66,0x99,0x81,0x42,0x24,0x18,0x00,
						0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,
					  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void main()
{
  int i,b=0;
	while(1)
	{
			int num=12;
			while(num--)
			{
				for(i=0;i<8;i++)
				{
					hang();     //先位选再段选
					SendTo595(a[i+b]);			
					delay(2);
				}
				//P=0xFF;
				//SendTo595(0x00);
			}
		  b++;
			if(b>=24)b=0;
			//P=0xFF;
	 }	
}
 
 
 
//发送一个字节数据给595再并行输出
void SendTo595(uchar Data)
{
   int j=0;
   for(j;j<8;j++)
   {
		    SCK = 0; 
        SER=0x80&Data;//&为按位运算符,即全1为1,有0为0,上式也就是 (1000 0000)&(1111 1111)=1000 0000,若高位为1则是1高位为0则这个式子为0 
        Data=_crol_(Data,1); //左移一位 将高位补给低位,如果二进制数为01010101 那么_crol_(1) 为10101010
        SCK = 1;          //上升沿让串行输入时钟变成高电平 并延时两个时钟周期
        _nop_();
  _nop_();
   }  
   
   /*位移寄存器完毕,转移到存储寄存器*/
	 
	
	 RCK = 0;
   RCK = 1;         //上升沿,存储寄存器变为高电平 延迟两个时钟周期
   _nop_();
	 RCK = 0;
 
}

注意事项

  • 首先确定8*8led点阵的阴极和阳极端。确定方法,可以参照我上面仿真图中上方的方式,我已经把Proteus里面不同颜色的led点阵模块的方向都已经列出来了,阴极端接单片机的IO口端,阳极端接74HC595端。

以上是关于基于51单片机Proteus的8X8led点阵滚动显示图形的主要内容,如果未能解决你的问题,请参考以下文章

51单片机的16×16点阵屏广告牌的滚动显示proteus仿真(源码+仿真+电路图+报告)

Proteus仿真8x8Led点阵数字循环显示

proteus仿真单片机汇编+74xx595驱动8X8点阵滚动显示

Proteus仿真51单片机+16X16点阵显示

51单片机 16X16点阵动态显示+Proteus仿真

Proteus仿真51单片机8X8点阵贪吃蛇游戏演示