单片机——点阵1(Proteus和KeilC51)

知识点

点阵的模样

在这里插入图片描述
名字:matrix通常用的是8*8点阵

常用知识点

在这里插入图片描述

简单练习题

行扫描&&列扫描

演示

  1. 行扫

在这里插入图片描述

  1. 列扫
    在这里插入图片描述

讲解

以行扫为例:
在上面提到过,只有行和列都是有效的点阵才能亮。
假如我们想让第一行亮:

代码

1.行扫

#include<reg51.h>
#include<intrins.h>

#define uint unsigned int 
#define uchar unsigned char
	
void delay(int xms){
	uint i,j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}

//行扫描
void main(){
	uint i;
	P3=0xff;
	P2=0x7f;
	while(1){
		for(i=0;i<8;i++){
			delay(500);
			P2=_cror_(P2,1);//以列为准,行循环扫描时,行向右循环
		}
	}
}
  1. 列扫
#include<reg51.h>
#include<intrins.h>

#define uint unsigned int 
#define uchar unsigned char
	
void delay(int xms){
	uint i,j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}
void main(){
	uint i;
	P2=0x00;
	P3=0x01;
	while(1){
		for(i=0;i<8;i++){
			delay(500);
			P3=_crol_(P3,1);//以行为准,列循环扫描时,列向左循环
		}
	}
}

点扫描(按行&&按列)

演示

  1. 按行
    在这里插入图片描述
    可以观察一下两个引脚,行扫是以行为准,进行列循环。
  2. 按列

在这里插入图片描述

讲解

按行:
在这里插入图片描述
按列:
在这里插入图片描述

由上图可知,以行为准时,列向左循环;以列为准时,行向右循环
以行为例:
我们可以这样想,每循环一行,要在该行循环八列,所以可以使用双重for循环

for(i=0;i<8;i++){
	//该处写行
	for(j=0;j<8;j++){
		//该处写列
	}
}

代码

  1. 按行
#include<reg51.h>
#include<intrins.h>

#define uint unsigned int 
#define uchar unsigned char
	
void delay(int xms){
	uint i,j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}
void main(){
	uint i,j;
	P3=0x01;
	P2=0x7f;
	while(1){
		for(i=0;i<8;i++){
			for(j=0;j<8;j++){
				delay(500);
				P3=_crol_(P3,1);//列
			}
			P2=_cror_(P2,1);//行
		}
	}
}
  1. 按列
#include<reg51.h>
#include<intrins.h>

#define uint unsigned int 
#define uchar unsigned char
	
void delay(int xms){
	uint i,j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}
void main(){
	uint i,j;
	P3=0x01;
	P2=0x7f;
	while(1){
		for(i=0;i<8;i++){
			for(j=0;j<8;j++){
				delay(500);
				P2=_cror_(P2,1);
			}
			P3=_crol_(P3,1);
		}
	}
}
  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值