4.基于51单片机点阵爱心和循环显示

一,项目准备过程

1.8*8点阵一个,杜邦线一个,51单片机一个

8*8点阵简介

 8*8点阵是由64个发光二极管组成的,共阳极在一端,共阴极在一端(在进行连线的时候注意共阳极与共阴极)在仿真中判断阳极阴极的操作在点阵两端接口分别接正极和负极,如果亮则所接的阳极阴极正确,相反则正阴极接反。如下图:

 

 首先静止的显示爱心,这里可以用一个取模软件

 代码如下:

#include "reg52.h"
typedef unsigned int u16; 
typedef unsigned char u8;
 
 
u8 lie[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 hang[8]={0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x66,0x00};
 //0x00,0x18,0x24,0x42,0x81,0x5A,0x24,0x00};
#define  LED_col  P2    
#define  LED_row  P1   
 
void delay_10us(u16 ten_us)
{
	while(ten_us--);
}
 
void main()
{
    u8 i=0;
    while(1)
    {    
        for(i=0;i<8;i++)
        {
            LED_col=~lie[i];
            LED_row=hang[i];
            delay_10us(100);
            LED_row=0x00;
        }    
    }
}

此代码中有两种形式的爱心哦

动态爱心显示:

代码如下:

#include<reg51.h>
typedef unsigned int u16; 
typedef unsigned char u8;
u8 lie[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 hang[]={
	0x00,0x00,0x7e,0x81,0x81,0x7e,0x00,0x00,//0
	0x00,0x00,0x82,0xff,0x80,0x00,0x00,0x00,//1
	0x00,0x00,0xc2,0xa1,0x91,0x8e,0x00,0x00,//2
	0x00,0x00,0x00,0x82,0xfe,0x82,0x00,0x00,//I
	0x00,0x1c,0x3e,0x7c,0xf8,0x7c,0x3e,0x1c,//心
	0x00,0x00,0x7e,0x80,0x80,0x80,0x7e,0x40,//U
};
void main()
{
	u8 i;
	u16 k,j;
	u16 shu=8*6;
	while(1)
	{
		for(j=0;j<48;j++)
		    for(i=0;i<8;i++)
		    {
					P2=~(0x80>>i);
					P3=hang[(i+j)%shu];
					k=1000;while(k--);
					P2=0xff;
					P3=0x00;
				}
			}
		}

仿真图如下:

 

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于51单片机点阵显示爱心的代码和实验项目。 ## 代码实现 ```c #include <reg51.h> // 点阵缓存数组 unsigned char code font[] = { 0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18, 0x00,0x10,0x28,0x44,0x82,0x44,0x28,0x10, 0x00,0x08,0x14,0x22,0x41,0x22,0x14,0x08, 0x00,0x04,0x08,0x10,0xFE,0x10,0x08,0x04, 0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02, 0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x00,0x38,0x44,0x82,0x9A,0xA2,0x44,0x38, 0x00,0x38,0x44,0x92,0x8A,0x92,0x44,0x38, }; void delay(unsigned int t) { // 延时函数 unsigned int i, j; for (i = 0; i < t; i++) for (j = 0; j < 120; j++); } void main() { unsigned char i, j, k; while (1) { for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { k = font[i * 8 + j]; P1 = ~(1 << j); // 控制列 P0 = k; // 输出行 delay(1); } } } } ``` ## 实验项目 ### 实验目的 1. 掌握 51 单片机的 IO 口编程; 2. 掌握点阵显示原理; 3. 学会使用字库库文件实现点阵显示。 ### 实验器材 1. 51 单片机开发板; 2. 8x8 点阵模块。 ### 实验原理 点阵显示原理是通过控制行和列的电平状态来控制每个像素的点亮和熄灭。点阵的行和列均通过 IO 口控制,其中行通过高电平输出,列通过低电平输出。每个像素的信息可以通过字库库文件来获取,并通过控制行和列的电平状态来实现显示。 ### 实验步骤 1. 将 8x8 点阵模块连接到 51 单片机开发板; 2. 编写上述代码,并下载到 51 单片机开发板; 3. 点击下载后,点阵模块上会显示一个爱心图案; 4. 可以通过修改字库库文件中的数据来实现不同的显示效果。 ### 实验注意事项 1. 点阵模块的引脚需要与开发板的 IO 口对应; 2. 代码中的字库库文件需要根据实际的点阵模块进行修改; 3. 下载时需要注意选择正确的单片机型号和下载方式。 希望这个代码和实验项目能够对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值