一、设计目的
设计一个单片机控制的LED点阵显示系统,基本要求为:LED点阵能够「心型」图形。然后在此基础上,可以自行增加功能,例如但不限于:交替显示「心型」一个自定义图形。(自定义图形可选但不限于下列图形:Δ、▲、△、◆、◇、★、☆、♀、♂等)。所谓交替显示是指点阵中依次显示A、B、C三种文字或图形(每个图形点亮若干时间)并循环往复。
二、设计任务及要求
1.学习课程资料中附上的「普中51单片机开发攻略--A5(V5.5).pdf」 其中的第16 章LED 点阵实验。
2.学习完该内容后,设计一个单片机控制的LED点阵显示系统,基本要求为:LED点阵能够「心型」图形。然后在此基础上,同学们可以自行增加功能,例如但不限于:交替显示「心型」一个自定义图形。(自定义图形可选但不限于下列图形:Δ、▲、△、◆、◇、★、☆、♀、♂等)。所谓交替显示是指点阵中依次显示A、B、C三种文字或图形(每个图形点亮若干时间)并循环往复。
3.使用单片机开发板可能需要用到的知识及软件:
详见「普中51单片机开发攻略--A5(V5.5).pdf」 --2.2 开发板使用方法(18到25页内容)
三、方案设计
首先将符号进行字模提取,并且编写程序,将单片机的2口和3口作为输出口,分别接入LED点阵的上下两排引脚。使用扫描的方式,使LED点阵可以正常的显示。进一步设计,增加延时函数,使得在一个图形显示完后,能够紧接着显示另一个图像,并循环往复,最终完成设计。
(一)前期准备
心形点阵图
图片
图片
图片
(二)软件设计
#include<reg52.h>
char code hang0[]={0x18,0x24,0x42,0x84,0x84,0x42,0x24,0x18};
char code hang1[]={0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18};
char code hang2[]={0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x3C,0x18};
char code lie1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
char code lie0[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
int i;
int num;
int m;
int n;
int c;
void delay(int a)
{
while(a--);
}
void main(){
int t;
t=6;
n=0;
while(1){
n++;
c=n%2;
for(i=0;i<1500;i++){
if(i<500)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang0[num];
delay(t);
}
}
if(i>=500&&i<1000)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang1[num];
delay(t);
}
}
if(i>=1000)
{
for(num=0;num<8;num++){
if(c==0){
P1=lie0[num];
}else{
P3=lie0[num];
}
P2=hang2[num];
delay(t);
}
}
}
}
}
四、调试及结果
实物图1
实物图2
五、设计总结
单片机控制LED点阵的实验设计总结如下:
1. 材料准备:准备LED点阵、单片机开发板(如Arduino、Raspberry Pi等)、面包板、导线等。
2. 连接电路:将LED点阵与单片机开发板连接起来,确保正确的极性和接线。通常需要使用导线和电阻来连接。
3. 编程:编写控制LED点阵的程序,包括控制LED灯的亮灭、行列扫描和显示图案等功能。具体的编程语言和代码逻辑根据使用的单片机和开发板而有所不同。
4. 上传程序:将编写的程序上传到单片机开发板上。
5. 测试:开启单片机开发板,观察LED点阵是否按照预期的方式显示。可以测试不同的图案、动画或文字,并确保LED点阵能够正确显示。
6. 调整和改进:根据测试结果进行调整和改进,确保LED点阵能够准确显示设计好的图案。
总的来说,单片机控制LED点阵的实验设计需要包括硬件连接和软件编程,通过这个实验可以更好地理解单片机控制外围设备的原理,并且锻炼了编程能力和电路连接能力。