学习C51单片机——LED点阵屏显示爱心(学习笔记Keil5)

学习C51单片机——LED点阵屏显示爱心(学习笔记Keil5)

1、爱心代码

#include <REGX52.H>

sbit RCL = P3^5;		//定义RCLK串口
sbit SCK = P3^6;		//定义SRCLK串口
sbit SER = P3^4;		//定义SER串口

void Delay(unsigned int xms)//延时函数
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void SendByte(unsigned char data1)//行显示
{
	unsigned char a;

	SCK = 1;
	RCL = 1;

	for(a=0;a<8;a++)		 //发送8位数
	{
		SER = data1 >> 7;		 //从最高位开始发送
		data1 <<= 1;
		SCK = 0;			 //发送时序
		SCK = 1;	
	}

	RCL = 0;
	RCL = 1;
}

void main()
{
	while(1)
	{
		P0 = 0xBF;//1011 1111
		SendByte(0x30);//0011 0000
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		Delay(1);
		P0 = 0xDF;//1101 1111
		SendByte(0x48);//0100 1000
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		P0 = 0xEF;//1110 1111
		SendByte(0x24);//0010 0100
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		P0 = 0xF7;//1111 0111
		SendByte(0x24);//0010 0100
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		P0 = 0xFB;//1111 1011
		SendByte(0x48);//0100 1000
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		P0 = 0xFD;//1111 1101
		SendByte(0x30);//0011 0000
		Delay(1);
		SendByte(0x00);//0000 0000
		P0 = 0xFF;
		Delay(1);
	}		
}

2、实物图片展示

在这里插入图片描述

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
点阵显示器是一种常见的显示设备,可以通过控制每个像素的亮灭来显示各种图形、字符等。下面介绍一种基于51单片机的点阵显示显示爱心符号的方法。 1. 确定点阵显示器的接口类型和引脚定义。通常点阵显示器的接口类型有并口、串口、SPI等,需要根据具体的接口类型来确定接口电路和数据传输方式。同时,还需要根据点阵显示器的像素数和排列方式来确定引脚定义和数据格式。 2. 定义爱心符号的像素数据。爱心符号可以通过一组二进制数来表示,其中1表示该像素点亮,0表示该像素点不亮。例如,以下是一个8x8的爱心符号的像素数据: ``` 00011000 00111100 01111110 11111111 11111111 01111110 00111100 00011000 ``` 3. 编写程序,在点阵显示器上显示爱心符号。具体步骤如下: a. 将点阵显示器的引脚设置为输出模式,同时初始化显示器的状态。 b. 将爱心符号的像素数据存储在程序中,可以使用数组或常量等方式。 c. 循环扫描每个像素点,将符号中相应的像素点亮起来。 d. 控制程序的运行速度,可以使用延时等方式来控制刷新频率。 以下是一段简单的51单片机程序,可以在8x8的点阵显示器上显示爱心符号: ```c #include <reg52.h> sbit LATCH = P1^0; // 控制锁存器 sbit CLK = P1^1; // 控制时钟 sbit DATA = P1^2; // 控制数据 // 定义8x8的爱心符号像素数据 const code unsigned char HEART[8] = { 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x7E, 0x3C, 0x18 }; // 向点阵显示器发送一个字节的数据 void writeByte(unsigned char byte) { unsigned char i; for (i = 0; i < 8; i++) { DATA = (byte >> i) & 0x01; CLK = 0; CLK = 1; } } // 在点阵显示器上显示一个像素点 void drawPixel(unsigned char x, unsigned char y, unsigned char value) { LATCH = 0; writeByte(0x01 << y); writeByte(value << x); LATCH = 1; } // 在点阵显示器上显示爱心符号 void drawHeart() { unsigned char x, y; for (y = 0; y < 8; y++) { for (x = 0; x < 8; x++) { if ((HEART[y] >> x) & 0x01) { drawPixel(x, y, 1); } else { drawPixel(x, y, 0); } } } } // 主函数 void main() { drawHeart(); while (1) { // 循环显示爱心符号 } } ``` 以上程序中,使用了三个控制引脚:LATCH、CLK和DATA。其中,LATCH用于控制锁存器,CLK用于控制时钟,DATA用于控制数据。程序中的writeByte函数用于向点阵显示器发送一个字节的数据,drawPixel函数用于在点阵显示器上显示一个像素点,drawHeart函数用于在点阵显示器上显示爱心符号。 需要注意的是,以上程序仅仅是一个简单的示例,实际应用中还需要根据具体的点阵显示器型号和接口类型进行适当的调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值