有什么网站可以做运动,3千元在家办厂,公司网站谁负责做,有什么可以做试卷题目的网站本篇文章论述的是基于AT89C51单片机的1616点阵LED显示器字符滚动显示设计的详情介绍#xff0c;如果对您有帮助的话#xff0c;还请关注一下哦#xff0c;如果有资源方面的需要可以联系我。
目录
仿真效果图
仿真图
代码
系统论文
资源下载 设计的内容和要求
熟悉51系…本篇文章论述的是基于AT89C51单片机的16×16点阵LED显示器字符滚动显示设计的详情介绍如果对您有帮助的话还请关注一下哦如果有资源方面的需要可以联系我。
目录
仿真效果图
仿真图
代码
系统论文
资源下载 设计的内容和要求
熟悉51系列兼容单片机软件开发系统Keil C51集成开发环境u Vison系列编译器和Proteus电路分析与实物仿真软件。
了解点阵LED显示器结构及字符字模(字符代码)熟悉点阵LED显示器驱动的基本原理。设计16×16点阵LED显示器的驱动电路并编写程序实现在16×16点阵LED显示器上的字符滚动显示。16×16点阵LED显示器可由4块8×8点阵LED显示器构成。可采用单片机并行端口、移位寄存器、译码器或锁存器等4种驱动方式中的组合实现对16×16点阵LED显示器的驱动。电路方面主要包括以下3部分。
a设计单片机的最小系统包括复位电路和外接的晶振电路并确定相关元器件参数。
b采用动态驱动的方式设计单片机并行端口、移位寄存器、译码器或锁存器等与16×16点阵LED显示器的驱动电路主要包括控制点阵LED行和列的连线。
c采用移位寄存器、译码器或锁存器驱动点阵LED显示器时设计单片机与移位寄存器、译码器或锁存器间的控制连线。 编写16×16点阵LED显示器字符串滚动显示程序实现数字0—9或英文字符的滚动显示。
仿真效果图 仿真图 代码部分 #include reg51.h //头文件//
#define u8 unsigned char //定义无符号字符型变量//
#define u16 unsigned int //定义无符号整数型变量//
#define SPEED 10
//端口定义//
sbit DSP2^0;
sbit SHP2^1;
sbit STP2^2;u8 code table1[]{ //定义高八位数组// //字模定义//
/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 0 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 1 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x08,0x08,0x1F,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 2 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x0E,0x10,0x10,0x10,0x11,0x0E,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 3 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x0C,0x10,0x11,0x11,0x12,0x0C,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 4 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x03,0x04,0x08,0x1F,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x1F,0x10,0x11,0x11,0x10,0x10,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x07,0x08,0x11,0x11,0x18,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 7 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x1C,0x10,0x10,0x13,0x1C,0x00,0x00,
/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 8 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 9 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };u8 code table2[]{ //定义低八位数组///*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 0 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 1 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 2 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x0C,0x14,0x24,0x44,0x84,0x0C,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 3 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x18,0x04,0x04,0x04,0x88,0x70,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 4 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0xE0,0x20,0x24,0x24,0xFC,0x24,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x98,0x84,0x04,0x04,0x88,0x70,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0xF0,0x88,0x04,0x04,0x88,0x70,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 7 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 8 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x38,0x44,0x84,0x84,0x44,0x38,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 9 --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/0x00,0x00,0x8C,0x44,0x44,0x88,0xF0,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: --*/
/*-- 宋体12; 此字体下对应的点阵为宽x高8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };void senddata(u8,u8); //定义函数//
void delay(u8);void main()
{u8 i,j,k,m,n0; //定义无符号字符型变量//while(1){for(i0;i168;i) //i确定16列的起点一共2323*8-16168//{for(j0;jSPEED;j) //控制显示速度每一幅循环显示几次达到稳定作用//{for(k0;k16;k) //K确定列控制每个屏幕//{mik;P1k; //控制ABCD端口//senddata(table1[m],table2[m]); //发送数据第一行高8 位低8位全部移入595//delay(70);senddata(0,0); //清屏//}}}}
}
系统论文由于论文字数太多在这里只介绍部分 1选题背景
LED显示屏是一种通过控制半导体发光二极管的显示方式 用来显示文字、 图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。图文显示屏可与计算机同步显示汉字、英文文本和图形视频显示屏采用微型计算机进行控制图文、图像并茂以实时、同步、清晰的信息传播方式播放各种信息还可显示二维、三维动画、录像、电视、 VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳立体感强静如油画动如电影广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。在实际应用中的显示屏由于成本和可靠性的因素常采用一种称为动态扫描的显示方法[1]。
2 方案论证
2.1 课题要求 了解点阵LED显示器结构及字符字模(字符代码)熟悉点阵LED显示器驱动的基本原理。设计16×16点阵LED显示器的驱动电路并编写程序实现在16×16点阵LED显示器上的字符滚动显示。16×16点阵LED显示器可由4块8×8点阵LED显示器构成。
电路方面主要包括以下3部分。设计单片机的最小系统包括复位电路和外接的晶振电路并确定相关元器件参数。采用动态驱动的方式设计单片机并行端口、移位寄存器、译码器或锁存器等与16×16点阵LED显示器的驱动电路主要包括控制点阵LED行和列的连线。采用移位寄存器、译码器或锁存器驱动点阵LED显示器时设计单片机与移位寄存器、译码器或锁存器间的控制连线。
编写16×16点阵LED显示器字符串滚动显示程序实现数字0—9或英文字符的滚动显示。
2.2 设计方案
2.2.1硬件设计方案
以PC机作为上位机存储和处理显示内容用串行通信的方式将显示内容和控制指令传输到单片机系统单片机根据上位机传输来的内容和指令通过端口译码扩展后驱动4块8×8LED点阵模块构成的16×16的LED点阵显示屏。题目将以此方案为指导思想展开具体的硬件电路设计。 图2-1 硬件设计方案
2.2.1软件设计方案
1单片机编程语言选择
现在主要运用的单片机编程语言为汇编语言和C语言。
两种语言相比较各有优点。汇编语言是面向机器的程序设计语言是一种功能很强的程序设计语言也是利用计算机所有硬件特性并能直接控制硬件的语言。其具有执行速度快占内存空间少等优点但在编写复杂程序时具有明显的局限性汇编语言依赖于具体的机型不能通用也不能在不同机型之间移植。
C语言是一种源于编写UNIX操作系统的语言它是一种结构化语言可产生压缩代码。C语言结构是以括号{ }而不是子和特殊符号的语言。C可以进行许多机器级函数控制而不用汇编语言。与汇编相比有如下优点对单片机的指令系统不要求了解仅要求对51的存储器结构有初步了解寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理程序有规范的结构可分为不同的函数。这种方式可使程序结构化将可变的选择与特殊操作组合在一起的能力改善了程序的可读性编程及程序调试时间显著缩短从而提高效率提供的库包含许多标准子程序具有较强的数据处理能力寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理已编好程序可容易的植入新程序因为它具有方便的模块化编程技术。C语言作为一种非常方便的语言而得到广泛的支持C语言程序本身并不依赖于机器硬件系统基本上不做修改就可根据单片机的不同较快地移植过来。
基于以上理由决定采用C语言为该显示系统的编程语言。
2系统软件编译工具选择
C语言编写的程序并不能被单片机直接执行还需要编译为单片机可执行的机器语言。因此在系统软件设计中编译器必不可少。支持MCS51用C语言编程的编译器主要有两种Franklin C51编译器和KEILC51编译器。目前在单片机开发中普遍都是使用KEIL C51来进行编译。
因此软件设计最终方案为采用C语言为程序语言KELC为编译工具按照控制、通信、显示等几个功能模块来编写程序。
3 设计过程
3.1 系统框图 图3-1 硬件原理图
3.2 控制单元设计
控制电路设计中采用的是单片机系统该系统必须要是工作在一个最小系统指单片机的可以的最小配置系统。根据功能选择一定的单片机端口添加外围的器件。在该系统中P1各口主要用作LED显示数据的列控制输出。具体接法为P1.0,P1.1P1.2P1.3分别接74HC138的A端B端,C端D端。C端向74HC138送入串行数据经过其转换后并行输出P2各口主要用作LED显示数据的行控制输出P2.1,P2.2接595的SH_CP端,ST_CP端,P2.0接DS端控件系统的行输入。 图3-2 控制部分电路图
3.3 行驱动单元设计
行驱动电路由74HC595构成它可以实现在显示本列各行数据的同时传送下一列的行数据。数据在SH_CP的上升沿输入在ST_CP的上升沿进入的存储寄存器中去。如果两个时钟连在一起则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入DS和一个串行输出Q7,和一个异步的低电平复位存储寄存器有一个并行8位的具备三态的总线输出当使能OE时为低电平存储寄存器的数据输出到总线。 图3-3 行驱动部分电路图
3.4. 列驱动单元设计
译码电路的功能是为了解决单片机I/O端口不足。列译码所用器件为串并转换器74HC138。如果不采用译码电路完全依靠单片机的端口输出来控制16×16的LED点阵屏显示需要32个端口。而采用了译码电路后仅仅需要79个端口便可实现控制显示。大大减少了I/O口的占用数目为单片机扩展其他功能预留下来了空间。两个74HC138联成4线-16线译码器三级管接显示屏可以解决显示屏供电不足的问题。锁存器74HC595接74HC138的使能端实现对74HC138的使能控制达到锁存功能A,B,C为138译码器的三个地址输入。 图3-4 列驱动部分电路图
3.5 元器件清单
电路设计需要的元器件包括电阻、电容、单片机、8×8点阵LED、74HC138、74HC595等具体元器件数量及规格如下表所示。
表3-1 元器件清单 元器件型号 规格参数 数量 电阻 电容 电容 单片机 8×8点阵LED 74HC138 74HC595 10KΩ 30uf 30pf AT89C51 1个 1个 2个 1个 4个 2个 2个 3.6 系统软件设计
3.6.1 程序框图简介
程序主要由头文件、端口定义、字模定义、函数等组成。根据程序的设计原理主函数流程如图3-5所示。 图3-5 流程图 资源下载 如果有需要这个系统的源码、仿真、论文等资源的可以私信我。感谢你的阅读~