51单片机1——8点阵、16点阵、点阵

一、8点阵:循环显示数字0~9

#include  "reg51.h"   
void delay(unsigned int i);   
void main()         	   
{
 unsigned char code led[10][8]={{0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x18},//0
                     {0x00,0x18,0x1c,0x18,0x18,0x18,0x18,0x18},	//1
                     {0x00,0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e},	//2
                     {0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e},	//3
                     {0x00,0x30,0x38,0x34,0x32,0x3e,0x30,0x30},	//4
                     {0x00,0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e},	//5
                     {0x00,0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c},	//6
                     {0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x0c},	//7
                     {0x00,0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c}, //8
                     {0x00,0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c}};//9
                      			
   unsigned char w; 
   unsigned int j,k,m; 
   while(1)
  {
     for(k=0;k<10;k++)       		//0~9
      {
      for(m=0;m<200;m++){    
         w=0x01; 
         for(j=0;j<8;j++){   		
               P1=w;		       
               P0=~led[k][j]; 		
               delay(100); 
               w<<=1;
               }
          }        
       }  
   }
}

void     delay(unsigned int i) 
{
  unsigned int k;
	for(k=0;k<i;k++);
}

二、8点阵:显示数字0

#include  "reg51.h"
void delay(unsigned int i);  
void main()       
{
unsigned char code led[]={0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x18};
//"0"的字型显示码
   unsigned char w;                       
   unsigned int i;  
   while(1)
  {
              w=0x01;          //行初值为0x01         
for(i=0;i<8;i++)
              { 
               P1=w;           //行数据送P1口
               P0=~led[i];      //列数据送P0口
               delay(100); 
               w<<=1;          //行变量左移指向下一行
           }
     }
}

void     delay(unsigned int i) 	 
{
  unsigned int k;
	for(k=0;k<i;k++);
}

三、16点阵

#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

uchar code dischar[]={ 
0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,
0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,
0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,
0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,
0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,
0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF,

0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,
0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77
,0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,
0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF,
};

sbit A1 =P2^0;
sbit B1 =P2^1;
sbit C1 =P2^2;
sbit D1 =P2^3;
sbit EN1=P2^4;


sbit LS595_SHC=P1^0;    
sbit LS595_STC=P1^1;    
sbit LS595_DS =P1^2;      
  

void Delay_Nms(uint n)
{
	uint i,j;
	for(i=0;i<n;i++)
		for(j=0;j<20;j++)
			;
}


void SendOneByte(uchar content)
{  
   uchar i; 
    
    for(i=0;i<8;i++) 
    { 
        LS595_DS=(bit)(content & 0x80);    
        LS595_SHC=0;        			    
        content<<=1; 					 
        LS595_SHC=1; 
    }    
}


void main(void) 
{ 
    uchar i;
	uchar j;
	uchar k;
	uchar	ycode; 
	EN1=1;		
	while(1) 
    {   for(j=0;j<3;j++)
		{
			for(k=0;k<50;k++)
			{
				for(i=0;i<16;i++) 
        		{ 
					LS595_STC=0; 						
            		SendOneByte(dischar[i*2+j*32]); 
					SendOneByte(dischar[i*2+j*32+1]);  			
					LS595_STC=1;	    	
					P2=i|0XF0; 		    
					EN1=0;	  

					
            		Delay_Nms(4);
					EN1=1;	     	    
            	}
			} 
		}
		
    }                
}

四、点阵

#include<reg51.h>
#include<intrins.h>
void delay(unsigned int i)
{
	unsigned int j;
	for(j=0;j<i;j++);
}

void main()
{
	unsigned char m=0xFE,k;
	unsigned char ledmatrix[]={36,102,255,255,255,126,60,24};
while(1)
{
	for(k=0;k<8;k++)
{
P2=m;

P1=0xFF;
delay(100);
m=_crol_(m,1);
}
}
}

仿真

链接:https://pan.baidu.com/s/1VZf1vfGFXAgWXgk8R3Mrlg 
提取码:2222

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值