51点阵模块点亮左上角第一个点

本文介绍了一种使用51单片机控制51点阵模块的方法,通过HC595移位寄存器实现点阵LED的逐位控制,实现了点亮左上角第一个点的功能。代码中详细展示了如何初始化寄存器,设置IO口,并通过循环左移和上升沿触发的方式,将数据逐位发送到595芯片。

51点阵模块点亮左上角第一个点

221
在这里插入图片描述
在这里插入图片描述

#include "reg51.h"			 
#include "intrins.h"

typedef unsigned int u16;	 
typedef unsigned char u8;

//定义使用的IO口
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

//595控制
void Hc595SendByte(u8 dat)
{
	u8 a;
	SRCLK=0;
	RCLK=0;
	for(a=0;a<8;a++)
	{
		//传送最高位
		//eg:dat=1001 1001
	   SER=dat>>7;  //1传入SER
		//左移一位,把次高位变成最高位
		 dat<<=1;     //dat=0011 0010
		//上升
		 SRCLK=1;
		//两个周期
		 _nop_();
		 _nop_();
		 SRCLK=0;
	}
		//拉高
		RCLK=1;
		_nop_();
		_nop_();
	  RCLK=0;
}

void main()
{	
	 Hc595SendByte(0x80);  //1000 0000
	 P0=0x7f;              //0111 1111
}
51单片机中实现16*16 LED点阵点亮左上角第一个,通常会借助HC595芯片来进行数据的串行输入与并行输出。下面给出一个示例代码,此代码能够点亮16*16 LED点阵左上角第一个: ```c #include <reg51.h> // 定义HC595控制引脚 sbit SER = P3^4; // 串行数据输入 sbit RCLK = P3^5; // 存储寄存器时钟 sbit SRCLK = P3^6; // 移位寄存器时钟 // 发送一个字节到HC595 void HC595_Send_Byte(unsigned char dat) { unsigned char i; for (i = 0; i < 8; i++) { SER = (dat & 0x80) >> 7; // 取最高位 dat <<= 1; SRCLK = 0; SRCLK = 1; // 移位寄存器时钟上升沿 } } // 数据输出 void HC595_DataOut() { RCLK = 0; RCLK = 1; // 存储寄存器时钟上升沿 } // 延时函数 void DelayMs(unsigned int ms) { unsigned int i, j; for (i = 0; i < ms; i++) for (j = 0; j < 123; j++); } void main() { while (1) { // 点亮左上角第一个 // 这里假设前两个字节控制行,后两个字节控制列 // 第一个所在行和列置为低电平(假设低电平点亮) HC595_Send_Byte(0xFE); // 第一行,除第一个外其他为高电平 HC595_Send_Byte(0xFF); // 第二行全为高电平 HC595_Send_Byte(0xFE); // 第一列,除第一个外其他为高电平 HC595_Send_Byte(0xFF); // 第二列全为高电平 HC595_DataOut(); DelayMs(100); } } ``` ### 代码说明: 1. **HC595_Send_Byte函数**:该函数的作用是把一个字节的数据发送至HC595芯片。借助移位操作将数据逐位输出。 2. **HC595_DataOut函数**:此函数用于产生存储寄存器时钟的上升沿,让数据从移位寄存器传输到存储寄存器。 3. **DelayMs函数**:这是一个简单的延时函数,用于控制LED点亮的时间。 4. **main函数**:在`main`函数里,通过调用`HC595_Send_Byte`函数发送控制数据,从而点亮左上角第一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1-0-1 C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值