基于AT89C51单片机的LED点阵显示屏设计

news2024/12/23 5:06:48

点击链接获取Keil源码与Project Backups仿真图:
[[https://download.csdn.net/download/qq_64505944/88637464?spm=1001.2014.3001.5503]]
在这里插入图片描述

**[源码获取]
B 源码+仿真图+课程设计+50

在这里插入图片描述

工程实训(三)课题设计

   班级:                            
  课题:       LED点阵显示屏设计   
  姓名:                            
  学号:                            

LED点阵显示屏设计
LED点阵显示屏通过编程控制可以显示中英文字符、图形及视频动态图形,广泛用于指示、广告、宣传等领域,如车站、机场的运行时刻报告牌;商店的广告牌;证券、运动场馆的指示牌等。
1、项目任务
使用80C51单片机与两片8x8点阵显示器,设计一个点阵显示屏,能显示汉字及简单的图形。
项目要求:
1)显示稳定无闪烁。
2)程序设计中,要使文字或图形运动。
2、项目分析
LED点阵显示器有多个品种可供选择,按显示的颜色可分为单色、双色、三色等;按发光亮度可分为普通亮度、高亮度、超高亮度等。一块LED点阵块的LED数量可有4×4(即4列4行)、5×7、5×8、8x8等规格;点阵中单个ILED的直径常用的有1.9mm3mm、3.7mm、4.8mm、5mm、7.62mm、10mm、20mm等。
图1为8x8LED点阵显示器外观及排列示意图,共有64个LED发光二极管排列在一起。若需更大规模的LED点阵,只需将多个点阵块拼在一起即可。
在这里插入图片描述

图1 8×8LED点阵显示器外观及排列示意图
在LED点阵中,LED发光二极管按照行和列分别将阳极和阴极连接在一起,内部接线及引脚编号如图1所示,行、列编号中,括号中的内容为引脚编号(图中LED点阵型号为ZS*11288)。
在图1中,列输入引脚(Y1Y8)接至内部IED的阴极端,行输入引脚接至8x8LED点阵显示器内部LED的阳极端,若阳极端输入为高电平,阴极端输入低电平,则该LED点亮;如X5为高电平、Y3为低电平,两条线交又点上的那个LED被点亮。若将8位二进制数送给行输入端X1X8;列输入端只有Y1为低电平,其他为高电平,结果使得图2中最左侧的一列发光二极管按照行输入端的输人状态亮灭,其他列的LED均不亮。如果使列输入线快速依次变为低电平,同时改变行输人端的内容,即列扫描,视觉上感觉一幅图案完整的显示在LED点阵上。
在这里插入图片描述

图2 LED点阵内部接线与引脚编号
3、项目硬件设计
1.电路设计
设计的点阵显示屏的电路如图3所示。途中除单片机、显示屏、晶振与复位电路外,还使用了3片串行输入/输出的74HC595芯片。
在这里插入图片描述

图3 点阵显示屏电路图
2.74HC595介绍
74HC595是8位串行输入/输出或者并行移位寄存器,具有高阻关断状态。包括一个8位移位寄存器、一个8位D型锁存器和三态并行输出。移位寄存器接收串行数据并提供串行输出,也提供并行数据输出和8位锁存器。移位寄存器和锁存器都有独立的时钟输入,同时还具有异步复位的功能。74HC595的引脚如图4所示。
在这里插入图片描述

图4 74HC595的引脚
引脚说明如下:
QA-QH:八位并行输出端,可以直接控制数码管的8个段。
QH`:(9脚):级联输出端。
S(14脚):串行数据输入端。
(10脚):低电平时将移位寄存器的数据清零,通常将它接Vcc。
SCK(11脚):上升沿时数据寄存器的数据移位,QA→QB→QC→…→QH;下降沿移位寄存器数据不变。
RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常RCK置为低电平,当移位结東后,在RCK端产生一个正脉冲,更新显示数据。
G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控
制它,可以方便地产生闪烁和熄灭效果,比通过数据端移位控制要省时。
74HC164和74HC595功能相仿,都是8位串行输入、并行输出的移位寄存器。74HC164的驱动电流(25mA)比74HC595(35mA)的要小,14脚封装,体积也小一些。74HC595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与74HC164只有数据清零端相比,74HC595尚有输出的使能/禁止控制端,可使输出为高阻态。
4、项目程序设计
通过单片机的串口向74HC595发送数据到2片8×8点阵显示屏,滚动显示,显示的内容包括一个“→”图形和“天天向上”四个汉字,通过按键控制,显示可以向左方向移动也可以向右方向移动。
设计的程序如下

include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RCK_Pin = P3^2;
sbit k1 = P1^1;
sbit k2 = P1^3;
uchar flag=1;
{ 
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
  0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/
  0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,/*"向"*/
  0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,/*"上"*/
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar code DSY_CONTENT_8x8_1[]=
{ 
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
  0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar Scan_BIT = 0x01;
uchar Scan_BIT1 = 0x80;
uchar Offset,Data_Index = 0;
uchar Offset1,Data_Index1 = 0;
void Delay(uint t)
{
 uchar i;
 while(t--) for(i=0;i<120;i++);
}
void T0_Led_Display_Control() interrupt 1
{
 TH0 = (65536-1000)/256;
 TL0 = (65536-1000)%256;
 if(flag==1)
 {
 Scan_BIT=0x01;
 Data_Index = 0;
 Scan_BIT1 = _crol_(Scan_BIT1,1);
 putchar(Scan_BIT1);
 while(TI == 0);
 putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1]);
 while (TI==0);
 putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1 + 8 ]);
 while(TI == 0);
 Data_Index1 = (Data_Index1 + 1) % 8;
 RCK_Pin = 1;
 RCK_Pin = 0;
}
}
void main()
{
 uchar i;
 TMOD = 0x01;
 TH0 = (65536-1000) / 256;
 TL0 = (65536-1000) % 256;
 IE = 0x82;
 TCON =0x00;
 TI = 1;
 while(1)
 {
      for(i=0;i<64;i++)
   {
     if(k1==0) { flag=1; }
     if(k2==0) { flag=0; }
     Offset = i; Offset1 = i;
     TR0 = 1;
     Delay(50);
     TR0 = 0;
   }
  }
}

5、仿真结果
设计的点阵显示屏的Proteus仿真电路与图5所示。
在这里插入图片描述

图5 点阵显示屏仿真电路
显示”天天“与”向上“的仿真与实验结果如图6和图7所示。所涉及的系统满足项目要求的功能。

图 6显示”天天“的仿真结果
在这里插入图片描述

图 7 显示”向上“的仿真结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA — Vivado下ILA(逻辑分析仪)详细使用方法

使用软件&#xff1a; Vivado 开发板&#xff1a; EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA 使用程序&#xff1a;按键案例 ILA详细使用方法 一、ILA简介二、ILA的使用方法方法1 — 使用IP核创建ILA调试环境创建ILA IP核 方法二 — 使用 Debug 标记创建 ILA对需观察信…

使用IDEA创建springboot依赖下载很慢,解决方法

显示一直在resolving dependencies&#xff0c;速度很慢 原因&#xff1a;maven会使用远程仓库来加载依赖&#xff0c;是一个国外的网站&#xff0c;所以会很慢。应该使用阿里云的镜像&#xff0c;这样速度会提升很多。 步骤&#xff1a;1.右击pom.xml&#xff0c;选择"m…

DevEco Studio 项目鸿蒙(HarmonyOS)多语言

DevEco Studio 项目鸿蒙&#xff08;HarmonyOS&#xff09;多语言 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、多语言 新版本IDE可以创建多语言的文件夹&#xff0c;在entry->src->main->resources下&#xff0c;修…

图像识别完整项目之Swin-Transformer,从获取关键词数据集到训练的完整过程

0. 前言 图像分类的大部分经典神经网络已经全部介绍完&#xff0c;并且已经作了测试 代码已经全部上传到资源&#xff0c;根据文章名或者关键词搜索即可 LeNet &#xff1a;pytorch 搭建 LeNet 网络对 CIFAR-10 图片分类 AlexNet &#xff1a; pytorch 搭建AlexNet 对花进行分…

为什么Apache Doris适合做大数据的复杂计算,MySQL不适合?

为什么Apache Doris适合做大数据的复杂计算&#xff0c;MySQL不适合&#xff1f; 一、背景说明二、DB架构差异三、数据结构差异四、存储结构差异五、总结 一、背景说明 经常有小伙伴发出这类直击灵魂的疑问&#xff1a; Q&#xff1a;“为什么Apache Doris适合做大数据的复杂计…

相机倾斜棋盘格标定全记录 vs200+opencv安装

论文参考是这个 Geiger A, Moosmann F, Car , et al. Automatic camera and range sensor calibration using a single shot[C]//Robotics and Automation (ICRA), 2012 IEEE International Conference on. IEEE, 2012: 3936-3943. 代码是这个github 花了一上午配好了c环境。。…

Activiti工作流框架学习笔记(一)之通用数据表详细介绍

文/朱季谦 Activiti工作流引擎自带了一套数据库表&#xff0c;这里面有一个需要注意的地方&#xff1a; 低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期。更糟糕的是&#xff0c;某些版本在尝试创建此类列时将引发异常&#xff0c;而其他版本则不会。执行自动创建/升级时&a…

ARM架构简析

全局与局量等知识 断电后&#xff0c;程序以及数据都在FLASH中。 断电后&#xff0c;内存中就没有变量了。 程序在烧在FLASH中的&#xff1b; 程序运行的时候&#xff0c;全局变量的初始值&#xff0c;必然是从FLAASH中的来的&#xff1a; 初始化全局变量的过程&#xff1a;…

HBuilder X将Vue打包APP返回上一页退出问题、清除缓存页面历史防止返回登录页(上一页)、以及状态栏颜色切换

目录 一、返回上一页退出问题 二、清除缓存页面历史防止返回上一页 三、状态栏颜色切换 一、返回上一页退出问题 1.首先重新认识一下vue的页面跳转&#xff0c;这里我只说常用到的两个 goSkip(){//直接跳转this.$router.push(/test);this.$router.replace(/test);//带参数跳…

一键安装下载3ds Max!别墅还是宫殿?3ds Max助你建造梦幻般的艺术建筑

不再浪费时间在网上寻找3ds Max的安装包了&#xff01;因为你所需要的一切都可以在这里找到&#xff01;作为一款全球领先的3D设计工具&#xff0c;3ds Max为创作者们带来了前所未有的便利和创作灵感。无论是建筑设计、影视特效还是游戏开发&#xff0c;3ds Max都能帮助你实现想…

后端开发——统一处理异常Spring MVC机制

一、Spring MVC的统一处理异常机制 在Spring MVC中&#xff0c;存在统一处理异常的机制&#xff0c; 具体表现为&#xff1a;无论是哪个处理请求的过程中出现异常&#xff0c;每种类型的异常只需要编写一段处理异常的代码即可&#xff01; 统一处理异常的核心是定义处理异常的…

软件开发模型学习整理——瀑布模型

一 前言 从参加工作至今也完整的跟随过一整个项目的流程了&#xff0c;从中也接触到了像瀑布模型&#xff0c;迭代模型&#xff0c;快速开发模型等。介于此&#xff0c;基于自己浅薄的知识对瀑布模型进行整理学习以及归纳。 二 瀑布模型简介 2.1 瀑布模型的定义和特点 定义&…

Linux 动态库和静态库

文章目录 前言动态库创建和使用静态库创建和使用动态库和静态库差异生成过程的差异运行效果的差异 补充说明库的名称的注意事项库的搜索路径的方法什么是位置无关代码动态链接与静态链接/usr/lib 和 /usr/local/lib 前言 动静态库的创建和使用部分更多的是意在说明动态库和静态…

软件测试指南

软件测试指南 软件集成测试软件系统测试&#xff08;功能性测试&#xff0c;性能测试&#xff09;

dp中最短编辑距离的笔记(分析dp)

dp分析往往就是看最后一步的变化。 分析&#xff1a; 设a串长度为i&#xff0c;b串长度为j。题目要求为通过三种操作将a字符串转化为b字符串的最少次数。 删除操作&#xff1a; 把a[i]删除后a[1~i]和b[1~j]匹配&#xff0c;所以可以得到f[i - 1][j] 1&#xff0c;在此之前要先…

ce从初阶到大牛--grep篇

1、显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行&#xff1b; grep -i "^h" /etc/rc.d/rc.sysinit2、显示/etc/passwd中以sh结尾的行; grep "sh$" /etc/passwd3、显示/etc/fstab中以#开头&#xff0c;且后面跟一个或多个空白字符&#xff0c;…

烦躁的广告弹窗如何在 Edge 上消失?轻松招架 3 种方法

Edge问题解决教程之广告弹窗如何消失&#xff1f; 一、前言&#xff1a;广告弹窗问题二、使用Edge浏览器内置的广告拦截功能三、安装广告拦截浏览器扩展程序四、处理恶意软件和广告弹窗网站五、总结 一、前言&#xff1a;广告弹窗问题 Edge浏览器中出现的广告弹窗问题是由恶意…

Android 动画 Lottie 如何使用

Android 动画 Lottie 如何使用 一、简介 Lottie 是Airbnb开源的一个面向 iOS、Android、React Native 的动画库&#xff0c;能分析 Adobe After Effects 导出的动画&#xff0c;并且能让原生 App 像使用静态素材一样使用这些动画&#xff0c;完美实现动画效果。 二、Lottie动…

openwrt中taiscale自动安装脚本详解

openwrt中taiscale自动安装脚本详解 一、代码仓库地址 https://github.com/adyanth/openwrt-tailscale-enabler 二、代码仓库中脚本文件详解 主要包含三个脚本分别是etc/init.d/tailscale、usr/bin/tailscale、usr/bin/tailscaled &#xff0c;接下来逐个分析一下脚本中的具…

数字孪生Web3D智慧机房可视化运维云平台建设方案

前言 进入信息化时代&#xff0c;数字经济发展如火如荼&#xff0c;数据中心作为全行业数智化转型的智慧基座&#xff0c;重要性日益凸显。与此同时&#xff0c;随着东数西算工程落地和新型算力网络体系构建&#xff0c;数据中心建设规模和业务总量不断增长&#xff0c;机房管理…