大学毕设论文8x8led点阵显示的设计课程设计论文.docx
《大学毕设论文8x8led点阵显示的设计课程设计论文.docx》由会员分享,可在线阅读,更多相关《大学毕设论文8x8led点阵显示的设计课程设计论文.docx(42页珍藏版)》请在冰点文库上搜索。
大学毕设论文8x8led点阵显示的设计课程设计论文
单片机课程设计论文
设计课题:
8X8LED点阵显示的设计
第1章系统概述
1.计任务及目的……………………………………………………………2
第2章系统硬件设计与分析
2.1电源电路……………………………………………………………………3
2.2复位电路……………………………………………………………………3
2.3主体电路……………………………………………………………………4
2.4硬件电路连线………………………………………………………………4
2.5显示部分……………………………………………………………………4
第3章单片机的配置及简介
3.1单片机介绍…………………………………………………………………6
3.2单片机系统设计……………………………………………………………8
3.3单片机的发展趋势…………………………………………………………9
第4章系统软件设计
4.1数字的编码…………………………………………………………………10
4.2字母的编码…………………………………………………………………11
4.3程序流程图…………………………………………………………………13
4.4完整程序……………………………………………………………………14
第5章有关软件的介绍
5.1PROTE电路设计及PCB图制作……………………………………………17
5.2KeilC51介绍及使用……………………………………………………18
5.3烧录器的使用………………………………………………………………19
第6章结束语…………………………………………………………20
参考文献……………………………………………………………………20
附图一原理图………………………………………………………………21
附图二PCB图……………………………………………………………22
第1章系统概述
LED点阵显示系统中各模块的显示方式有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
本文将介绍一种采用单片机AT89S51进行控制的8*8LED点阵。
该点阵可实现动态显示数字0~9及字符A~Z的功能。
1.1设计任务及目的
利用8*8LED点阵显示数字0~9和26个英文字符的字样。
采用AT89S51单片机作为整个控制搭电路的核心,并编制软件程序,实现动态轮流显示。
通过此设计来巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。
第2章系统硬件设计与分析
本系统从经济性,电路结构,系统性能等多方面考虑,选用如下主要元器件:
单片机AT89S51、电阻10K和100欧、三极管8550、按钮开关、共阳8*8LED点阵显示块、稳压块7805。
2.1电源电路
本设计实验所需电源为直流五伏电压源,采用的是固定式三端稳压器7805还实现。
其线路接线图如图1所示:
图1电源电路
2.2复位电路
单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。
本设计中采用按键复位电路,复位电路如图2所示:
图2复位电路
2.3主体电路
通过单片机AT89S51的P0口和P1口去驱动点阵LED芯片块。
电路如图3所示:
图3主体电路
2.4硬件电路连线
1.把“单片机系统”区域中的P0.0~P0.7端口分别通过八个100欧电阻连接到“点阵模块”区域中的“L1-L8”端口上;
2.把“单片机系统”区域中的P1.0~P1.7端口通过三极管8550和10K电阻连接到“点阵模块”区域中的“S1-S8”端口上。
2.5显示部分
1. 8X8 点阵LED工作原理说明
图4为8×8点阵LED外观及引脚图,其等效电路如图
(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。
例如如果想使左上角LED点亮,则Y0=1,X0=0即可。
应用时限流电阻可以放在X轴或Y轴。
图48×8点阵LED外观及引脚图
其等效电路图如下:
图58×8点阵LED等效电路
2.点阵LED扫描法介绍
点阵LED一般采用扫描式显示,实际运用分为三种方式:
(1) 点扫描;
(2) 行扫描;
(3) 列扫描。
若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即
可。
若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。
此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。
第3章单片机的配置及简介
3.1单片机介绍
所谓单片机,就是将CPU,RAM,ROM,定时/计数器和多种I/O接口电路都集成在一块集成芯片上的微型计算机。
MCS--51系列单片机是美国Intel公司在1980年推出的8位单片微型计算机,包含51和52两个子系列。
51子系列的典型产品有8031,8051和8751三种机型52子系列包括8032,8052二种主要机型。
51子系列的配置如下:
(1)8位CPU;
(2)振荡频率1.2~12MHZ;
(3)128个字节的片内数据存储器(片内RAM);
(4)21个专用寄存器;
(5)4KB的片内程序存储器(8031无);
(6)8位并行I/O口P0,P1,P2,P3;
(7)一个全双工串行I/O口;
(8)2个16位定时器/计数器;
(9)5个中断源,分为2个优先级;
本系统选用ATMEL89S51系列单片机,由于它的模块化设计为适应具体的应用提供了极大的灵活性,便于扩展功能,有效的提高了系统的经济性。
AT89S51是一种低工耗、高性能的片内含有4KB快闪可编程/擦除只读存储器的八位CMOS微控制器,使用高密度、非易失存储编程器对程序存储器重复编程。
AT89S51具有以下特点:
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器。
(3)32条可编程I/O线。
(4)程序存储器具有三级加密保护。
(5)可编程全全双工串行通道。
(6)空闲状态维持低功耗和掉电状态保存存储内容。
(7)而且与87C51系列的引脚也完全兼容。
89S51单片机结构如图3-1所示:
图3-189S51单片机结构框图
51系列单片机的引脚功能:
主电源引脚Vss、Vcc
Vss:
接地,Vcc:
接+5V电源
外接晶振引脚XTAL1、XTAL2
XTAL1:
片内反向放大器输入端,XTAL2:
片内反向放大器输出端
输入/输出引脚P0、P1、P2、P3
P0.0~P0.7:
P0口的8个引脚,P0口是8位漏极开路型双向I/0端口,在接有片外存储器或I/0扩展接口时,P0.0~P0.7分时复用,作低8位地址总线与双向8位数据总线
P1.0~P1.7:
P1口的8个引脚,P1口是一个带内部上拉电阻的8位双向I/O口,对于52子系列,P1.0还可用于定时器/计数器2的计数脉冲输入端T2,P1.1还可作定时器/计数器2的外部控制端T2EX。
P2.0~P2.7:
P2口的8个引脚,P2口也是一个带内部上拉电阻的双向I/O口,在访问片外存储器或扩展I/O接口时,还用于提供高8位地址。
P3.0~P3.7:
P3口的8个引脚,P3口也是一个带上拉电阻的I/O口,除可以作双向的输入输出口外,还具有第2功能。
见表3-1
表3-1P3口第二功能表
引脚
第二功能
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD(串行口输入)
TXD(串行口输出)
INT0(外部中断0输入)
INT1(外部中断1输入)
T0(定时器0的外部中断)
T1(定时器1的外部中断)
WR(片外数据存储器写控制信号)
RD(片外数据存储器读控制信号)
控制线(4条):
ALE/PROG:
双功能引脚。
由于P0口的8个引脚是低8位地址总线与数据总线分时复用,因此必须将P0口输出的低8位地址进行锁存。
在访问片外存储器时,每机器周期该信号出现2次。
其下降沿用于控制锁存P0口输出的低8位地址。
即使不访问片外存储器,该引脚上仍出现上述频率的周期性信号,因此也可作为对外输出的时钟脉冲,频率为振荡器频率的1/6,必须注意的是:
在访问片内外存储器时,ALE脉冲会跳空1个。
对片内含有EPROM的机型,此引脚在编程时可作为编程脉冲PROG的输入端。
PSEN:
片外程序存储器读选通信号输出端,在CPU从片外程序存储器取指期间,此信号每个机器周期两次有效,以通过P0口读入指令,在访问片外数据存储器时,该信号不出现。
EA/Vpp:
双功能引脚,为片外程序存储器选用端。
当该引脚信号有效时,选择片外程序存储器,即EA/Vpp=1时,访问片内程序存储器。
对片内含有EPROM的机型,此引脚在编程期间用于施加+21v的编程电压。
RST/VPO:
双功能引脚,在单片机工作期间,当此引脚上出现连接2个机器周期的高电平时可实现复位操作。
在Vcc掉电期间,若该引脚接备用电源(+5v),可向片内RAM供电,以保存片内RAM中的信息。
3.2单片机系统设计
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统和典型应用系统等。
(1)最小应用系统:
能维持单片机运行的最简单配置的系统。
这种系统成本低廉、结构简单,常常构成一些简单的控制系统,如开关状态的输入/输出控制等。
对于片内有ROM/EPROM/FLASHRAM的单片机,构成最小应用系统时,只要将单片机接上时钟电路、复位电路和电源即可,如图3-2(a)所示。
图3-289S51单片机最小应用系统
由于集成度的限制,这种最小应用系统只能用作一些小型的控制单元。
其应用特点是:
①有可供用户使用的大量I/O口线,P0、P1、P2、P3都可用作用户I/O口用。
由于没有外部存储器扩展,
应接高电平。
②内部存储器容量有限(只有4KB地址空间)。
③应用系统开发具有特殊性。
由于这类应用系统应用程序量不大,外电路简单,因而采用模拟开发手段较好。
对于片内无ROM/EPROM/FLASHRAM的单片机,其最小系统除了外部配置时钟电路、复位电路和电源外,还应在片外扩展EPROM、EEPROM作为程序存储器用,如图3(b)所示,
应接地。
(2)最小功耗应用系统
最小功耗应用系统是指为了保证正常运行,系统的功率消耗最小。
这是单片机应用系统中的一个引人入目的构成方式。
在单片机芯片结构设计时,一般为构成最小功耗应用系统提供了必要条件,例如,各种系列的单片机都有CMOS工艺类型,而且在这类单片机中都设置了低功耗运行的WAIT和STOP方式。
设计最小功耗应用系统时,必须使系统内的所有器件、外设都有最小的功耗,而且能充分运用WAIT和STOP方式运行。
最小功耗应用系统常用在一些袖珍式智能仪表、野外工作仪表以及在无源网络、接口中的单片机工作子站。
3.3单片机的发展趋势
今后单片机的发展趋势,将是进一步向着多功能、高性能、高速度、低功耗、低价格、存储容量扩大和增强I/O功能及结构兼容等方面发展。
其发展趋势主要有以下几个方面:
1.多功能
在单片机中尽可能多地把应用所需的存储器、各种功能的I/O口都集成在一块芯片内,使单片机的功能更加强大。
如把LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
2.高性能
进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性,采用精简指令系统计算机RISC(ReducedInstructionSetComputer)结构和流水线技术,大幅度提高运行速度。
现指令速度最高者已达100MIPS(MillionInstructionPerSeconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能,使单片机的性能明显地优于同类型的微处理器。
单片机集成度进—步提高,有的单片机的寻址能力已突破64KB的限制,8位、16位的单片机有的寻址能力已达到1MB和16MB。
片内ROM的容量可达64KB,RAM的容量可达2KB。
3.低电压、低功耗
允许使用的电压范围越来越宽,一般在36V范围内工作,有的已能在1.2V或0.9V电压下工作。
。
几乎所有的单片机都具有省电运行方式。
单片机的功耗已从mA级降到μA级,甚至1μA以下,在一粒钮扣电池下就可长期工作。
低功耗化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化。
4.低价格
单片机应用的另一显著特点是量大面广。
促使世界各国公司在提高单片机性能的同时,也十分注意降低价格。
如Z-8系列的Z8600、80C51系列的80C31每片仅售1-1.5美元。
提高性能价格比是各公司竞争的主要策略和不懈追求的目标。
第4章系统软件设计
利用数组将各数字字符的编码存放在寄存器中,在执行显示过程中从寄存器中将对应数字或字符编码的数组一一轮流调出即可实现动态。
4.1数字的编码
各个数字对应的编码如下:
{0x0C,0x12,0x12,0x12,0x12,0x12,0x0C,0x00},/*"0",0*///显示数字`0`/
{0x04,0x06,0x04,0x04,0x04,0x04,0x0E,0x00},/*"1",1*///显示数字`1`/
{0x0C,0x12,0x10,0x08,0x04,0x02,0x1E,0x00},/*"2",2*///显示数字`2`/
{0x0C,0x12,0x10,0x0C,0x10,0x12,0x0C,0x00},/*"3",3*///显示数字`3`/
{0x08,0x0C,0x0C,0x0A,0x0A,0x1E,0x08,0x00},/*"4",4*///显示数字`4`/
{0x1E,0x02,0x02,0x0E,0x10,0x10,0x0E,0x00},/*"5",5*///显示数字`5`/
{0x0C,0x12,0x02,0x0E,0x12,0x12,0x0C,0x00},/*"6",6*///显示数字`6`/
{0x1E,0x12,0x10,0x08,0x04,0x04,0x04,0x00},/*"7",7*///显示数字`7`/
{0x0C,0x12,0x12,0x0C,0x12,0x12,0x0C,0x00},/*"8",8*///显示数字`8`/
{0x0C,0x12,0x12,0x1C,0x10,0x12,0x0C,0x00},/*"9",9*///显示数字`9`/
4.2字母的编码
各个字母所对应的编码如下:
{0x0C,0x12,0x12,0x12,0x1E,0x12,0x12,0x00},/*"A",0*///显示字母`A`/
{0x0E,0x12,0x12,0x0E,0x12,0x12,0x0E,0x00},/*"B",1*///显示数字`B`/
{0x0C,0x12,0x02,0x02,0x02,0x12,0x0C,0x00},/*"C",2*///显示数字`C`/
{0x0E,0x12,0x12,0x12,0x12,0x12,0x0E,0x00},/*"D",3*///显示数字`D`/
{0x1E,0x02,0x02,0x0E,0x02,0x02,0x1E,0x00},/*"E",4*///显示数字`E`/
{0x1E,0x02,0x02,0x0E,0x02,0x02,0x02,0x00},/*"F",5*///显示数字`F`/
{0x0C,0x12,0x02,0x1A,0x12,0x12,0x0C,0x00},/*"G",6*///显示数字`G`/
{0x12,0x12,0x12,0x1E,0x12,0x12,0x12,0x00},/*"H",7*///显示数字`H`/
{0x0E,0x04,0x04,0x04,0x04,0x04,0x0E,0x00},/*"I",8*///显示数字`I`/
{0x10,0x10,0x10,0x10,0x12,0x12,0x0C,0x00},/*"J",9*///显示数字`J`/
{0x12,0x12,0x0A,0x06,0x0A,0x12,0x12,0x00},/*"K",10*///显示数字`K`/
{0x02,0x02,0x02,0x02,0x02,0x02,0x1E,0x00},/*"L",11*///显示数字`L`/
{0x12,0x1E,0x1E,0x12,0x12,0x12,0x12,0x00},/*"M",12*///显示数字`M`/
{0x12,0x16,0x16,0x1A,0x1A,0x12,0x12,0x00},/*"N",13*///显示数字`N`/
{0x1E,0x12,0x12,0x12,0x12,0x12,0x1E,0x00},/*"O",14*///显示数字`O`/
{0x0E,0x12,0x12,0x0E,0x02,0x02,0x02,0x00},/*"P",15*///显示数字`P`/
{0x0C,0x12,0x12,0x12,0x16,0x1A,0x1C,0x00},/*"Q",16*///显示数字`Q`/
{0x0E,0x12,0x12,0x0E,0x06,0x0A,0x12,0x00},/*"R",17*///显示数字`R`/
{0x0C,0x12,0x02,0x0C,0x10,0x12,0x0C,0x00},/*"S",18*///显示数字`S`/
{0x1E,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"T",19*///显示数字`T`/
{0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00},/*"U",20*///显示数字`U`/
{0x12,0x12,0x12,0x12,0x0C,0x0C,0x0C,0x00},/*"V",21*///显示数字`V`/
{0x12,0x12,0x12,0x12,0x1E,0x1E,0x12,0x00},/*"W",22*///显示数字`W`/
{0x12,0x12,0x0C,0x0C,0x0C,0x12,0x12,0x00},/*"X",23*///显示数字`X`/
{0x11,0x11,0x0A,0x04,0x04,0x04,0x04,0x00},/*"Y",24*///显示数字`Y`/
{0x1E,0x10,0x08,0x0C,0x04,0x02,0x1E,0x00},/*"Z",25*///显示数字`Z`/
THO,TLO装入初值
开始
4.3程序流程图
调用数组赋给P0
Cnta++
Cntb++
TR0置1启动T0
TMOD初始化
N
Y
N
Y
4.4完整程序
#include"AT89S51.H"
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[][8]={
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"",0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF},/*"_",0*/
{0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF},/*"_",0*/
{0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"_",0*/
{0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/
{0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/
{0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"_",0*/
{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},/*"|",0*/
{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02},/*"|",0*/
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},/*"|",0*/
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",0*/
{0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",0*/
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},/*"|",0*/
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},/*"|",0*/
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"|",0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"",0*/
{0x08,0x3E,0x7F,0x24,0x1A,0x49,0x78,0x00},/*"老",0*/
{0x72,0x24,0xFE,0xAE,0xEE,0x24,0x22,0x21},/*"师",0*/
{0x0A,0xEA,0x9F,0xFA,0x4A,0x44,0x6A,0x51},/*"好",0*/
{0x0C,0x12,0x12,0x12,0x12,0x12,0x0C,0x00},/*"0",0*/
{0x04,0x06,0x04,0x04,0x04,0x04,0x0E,0x00},/*"1",1*/
{0x0C,0x12,0x10,0x08,0x04,0x02,0x1E,0x00},/*"2",2*/
{0x0C,0x12,0x10,0x0C,0x10,0x12,0x0C,0x00},/*"3",3*/
{0x08,0x0C,0x0C,0x0A,0x0A,0x1E,0x08,0x00},/*"4",4*/
{0x1E,0x02,0x02,0x0E,0x10,0x10,0x0E,0x00},/*"5",5*/
{0x0C,0x12,0x02,0x0E,0x12,0x12,0x0C,0x00},/*"6",6*/
{0x1E,0x12,0x10,0x08,0x04,0x04,0x04,0x00},/*"7",7*/
{0x0C,