基于单片机1616的点阵显示 - 图文

更新时间:2024-07-03 12:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机16*16的点阵显示

院 系 : 专业(班级): 姓名: 学号: 指导教师: 职称: 完成日期:

机电工程学院 电子信息工程2班

林帅帅 20114082015

叶圣 讲师

2013年12月18日

目 录

1 引 言 ......................................................... 1 2 设计的任务与要求 ................................................. 3 3 硬件电路设计 ..................................................... 4

3.1 总体设计方案 ............................................... 4 3.2 元器件描述 ................................................. 5

3.2.1 STC89c52单片机 ....................................... 5 3.2.2 74hc595寄存器的概述 .................................. 7

3.2.4 16*16点阵显示屏幕 .................................... 8 3.2.5 点阵显示模块........................................... 9 3.3 89c52应用系统部分电路...................................... 10

3.3.1 晶体振电路原理和概述................................. 10 3.3.2 上电复位电路......................................... 11 3.3.3 I/O口和扩展锁存器控制点阵显示 ....................... 12

4 系统软件设计 .................................................... 12

4.1 软件设计描述 .............................................. 13 4.2 16*16点阵显示程序......................................... 13 5 调试以及性能分析 ................................................ 19 总结 .............................................................. 20 参 考 文 献 ....................................................... 21 附录A 总电路图 .................................................... 22 附录B 实物图 ...................................................... 23

基于单片机的16*16点阵显示

1 引 言

现代信息产业的高速发展,在我们周围LED显示屏作为现代信息化社会的一个闪亮标志。其广泛的应用在室内外需要进行服务的地方,众人皆知在我们生活的领域如电信,邮政大厅,营业部,车站,机场,港口,体育场所等信息的发布,政府政策的发布,各类市场行情信息的发布和宣传等。信息广告在蓬勃发展的市场经济中起着越来越重要的作用。随着技术的不断进步,新产品层出不穷,市场竞争越来激烈,广告的重要性也就更加引发企业的关注。一个成功的企业隔离不开成功的广告,而成功的广告离不开成功的广告技术和发布手段。因此,广告的新颖性,广告的创意引起高层人士的高度重视。

在以前电子技术还不发达的时候,我们通常见到的是通过写大字报基挂横幅等来打广告,但那样很不方便,比如要更换内容则要整个都要换掉,而且到了晚上就看不清,非常麻烦。所以在现代信息技术发达的社会,仅仅这样肯定是没有竞争力的,而汉字显示屏的出现,不仅可以随时更改内容,而且到了晚上也特别的醒目,操作也非常的简便,成本低,从而很全有实用性,给人们带来了许多的用途与方便,基于PC 机控制的LED点阵式显示屏的发展技术也非常的快,不仅点阵数高,同时可以显示铁汉字或图形,而且清晰度非常高。还有许多的其它附加功能,又如,可以动态显示,不断的换颜色,可以翻转汉字或图形,还可以反色目前国内外还有更加先进的技术,就是利用液晶显示屏,则更加清晰,但成本比较高。

当今社会在飞速发展无疑能源,健康,空间的利用,成了人们着重关注的对象。而在这个信息传递极速的社会,LED的出现给人们带来了希望之光。LED的特色之处一是节能(直接功耗,间接耗能),二是基本无电离辐射,三提高空间利用率。而这些特色又恰好解决了上述的三种问题。然而LED点阵显示屏的特点不仅仅于此LED点阵显示屏用的是数码管,而数码管具有补助和,便宜等优点。做出来的LED点阵显示很耐用。LED点阵显示屏之所以受到广泛重视而得到迅速发展,是与LED显示屏本身所具有的优点分不开的。LED点阵显示屏的发展前景极为广阔,目前正朝着更高亮度。更高耐气候性,更高的发光密谋,武冈市的发光均匀性,可靠性,全色化方向发展。

1

LED点阵显示屏的构成型式有多种,其中典型的有两种。一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型。

目前,国内的LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点因此传统的LED的。

2

2 设计的任务与要求

本课程设计的16*16点阵需要32个驱动,分别为16个列驱动及16个行驱动。每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。每次显示一行后再显示下一行。本设计是利用实验仪上的16*16 LED点阵显示器,编写显示“机电工程学院”等中文字符字符,最好能移动显示。

现在市场上各类基于LED的显示屏较多,但大部分产品为单一模式的LED显示屏,其在显示内容的更换及显示屏的重组等方面都存在不便之处。但随着信息化社会的迅速发展,LED显示屏正在向显示内容丰富、信息更改方便等方面发展。因此制作一款多功能的LED广告显示屏是非常有意义。

3

3 硬件电路设计

3.1 总体设计方案

工作原理简述:LED点阵电路大体上可以分成单片机本身的硬件、显示驱动电路(74hc595寄存器)、控制信号电路(按键)三部分。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行以及给屏体电路部分发送命令。点阵显示屏体、以及它的各个驱动电路。由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分使用中断方式来与屏体电路部分进行数据和命令的传送。此显示电路采用扫描方式进行显示时,由两个I/O口控制点阵的行,各行的同名列共用一个列驱动器。由行译码器给出的列选通信号,从第一列开始,按顺序一次对各列进行扫描。接通的列,就在该行该列点燃相应的LED,未接通的列所对应的LED熄灭。

图1系统框图

74hc595的SRCK端接单片机P3.6口,SI 端接单片机P3.4口,RCK端接单

片机P3.5口,第一片74hc959的QH'接到第二片74hc595的SI上,第二片74hc959的QH'接到第三片74hc595的SI上,第三片74hc959的QH'接到第四片74hc595的SI上,如图2:

4

图2 74hc595电路图

3.2 元器件描述

这此课程设计主要采用单片机STC89c52为LED显示屏的控制核心,系统主要包括LED驱动模块、外部扩展锁存器74hc595。下面对各模块和器件的设计逐一进行论证阐述。 3.2.1 STC89c52单片机

STC89c52俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪存存储器组合在单个芯片中,ATMEL的STC89c52是一种高效微控制器。AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

STC89c52单片机40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。如图3所示

5

图3 STC89c52单片机的外形及引脚排列

1、电源

(1) VCC-芯片电源,接+5V, (2) VSS-接地端;

注意:用万用表测试单片机引脚电流表一般为0V或者5V,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介0V-5V之间,其实这只是万用表反映没这么快而已,在某一瞬间单片机引脚电流不是保持在通常情况下0V或者5V的。

2、时钟:XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。 3、控制线:控制线共有4根

(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ①ALE功能:用来锁存PO口送出的低8位地址

②PROG功能:片内有EPROM的芯片,在EPROG编程期间,此引脚输入编程脉冲。

(2)PSEN:外ROM读选通信号。 (3)RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。 ② VPD功能:在VCC掉电情况下,接备用电源。 (4)EA/VPP:内外ROM 选择/片内EPROM编程电源。 ①EA功能:内外ROM选择端。

②VPP功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源VPP。

4、I/O线

6

89C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总路线)。

P0口:P0口为一个8位漏级开路双向I/O口。当P1口的管脚第一次写1时,被定义为高阻输入。P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输出,由于外部下拉为低电平,它将输出电流。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

3.2.2 74hc595寄存器的概述

74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。 74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。

三态。特点 8位串行输入 8位串行或并行输出 存储状态寄存器,三种状态 输出寄存器可以直接清除 100MHz的移位频率 输出能力 并行输出,总线驱动 串行输出;

595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个

7

脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压 引脚说明符号引脚描述。

图4 74hc595 移位寄存器引脚图

3.2.4 16*16点阵显示屏幕

8*8的LED点阵为单色行共阴模块,单点的工作电压为正向(Vf)=1.8v,正向电流(IF)=18-10mA。静态点亮(64点全亮)总电流为640 mA 总电压为1.8v,总功率为1.15W。动态时取决于扫描频率(1/8或1/16秒)单点瞬间电流可达80-160 mA。16*16点阵表态时16*16*10mA,动态时单点电流80-160 mA。 接线方式:当某一行线打高时,某一列线为低时,其行列交叉的点就被点亮:某一列线为高时,其行列交叉的点为暗;当某一行线打低时,无论列线如何,对应这一行的点全部暗。其引脚图如图6所示。

1 控制第五行显示 接高 9 控制第一行显示 接高 2 控制第七行显示 接高 10 控制第四行显示 接低 3 控制第二行显示 接低 11 控制第六行显示 接低 4 控制第三行显示 接低 12 控制第四行显示 接低

8

//一共有16行,每次刷一行的代码 uchar code NUM_HANG[]={

0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,}; //汉字“机”的字码 uchar code ji[]=

{8,0,136,15,136,8,190,8,136,8,136,8,156,8,172,8,138,8,136,8,136,8,72,40,72,40,40,48,0,0,0,0}; //汉字“电”的字码 uchar code dian[]=

{128,0,128,0,128,0,252,31,132,16,132,16,252,31,132,16,132,16,252,31,132,0,128,32,128,32,0,63,0,0,0,0}; //汉字”工“的字码 Uchar code gong[]=

{0,0,252,31,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,254,63,0,0,0,0,0,0} ; //汉字\程” 的字码 Uchar code cheng[]=

{0,0,176,31,142,16,136,16,136,31,62,0,8,0,152,31,44,2,12,2,138,31,8,2,8,2,200,63,0,0,0,0} ; //汉字\学“的字码 Uchar code xue[]=

{72,8,144,4,0,2,254,63,2,32,2,32,248,7,0,2,128,1,254,63,128,0,128,0,128,0,224,0,0,0,0,0} ; //汉字”院“的字码 Uchar code yuan[]=

{0,2,30,4,210,63,82,32,10,0,138,31,18,0,18,0,210,63,18,9,14,9,130,8,66,40,34,48,0,0,0,0} ;

14

void HC595_Send(uchar dat1,uchar dat0,uchar dat2,uchar dat3); void main() {

uchar i,j; while(1) {

for(j=255;j>0;j--)

//一个字显示的次数,刷256次然后刷第

二个字。

{

for(i=0;i<32;i=i+2) //一共有16行,所以刷16次 {

HC595_Send(~ji[i],~ji[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

HC595_Send(0xff,0xff,0x00,0x00); for(j=255;j>0;j--) {

for(i=0;i<32;i=i+2) { }

HC595_Send(~dian[i],~dian[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

}

for(j=255;j>0;j--)

{

for(i=0;i<32;i=i+2) {

HC595_Send(~gong[i],~gong[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

15

}

for(j=255;j>0;j--)

{

for(i=0;i<32;i=i+2) {

HC595_Send(~cheng[i],~cheng[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

}

HC595_Send(0xff,0xff,0x00,0x00);

for(j=255;j>0;j--)

{

for(i=0;i<32;i=i+2) {

HC595_Send(~xue[i],~xue[i+1],NUM_HANG[i],NUM_HANG[i+1]);

}

}

for(j=255;j>0;j--) {

for(i=0;i<32;i=i+2) {

HC595_Send(~yuan[i],~yuan[i+1],NUM_HANG[i],NUM_HANG[i+1]); }

}

} }

void HC595_Send(uchar dat1,uchar dat0,uchar dat3,uchar dat2) {

uchar i; SCK=1; LCK=1;

16

for(i=0;i<8;i++) { SDI=dat0&0x01;

dat0>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();

}

for(i=0;i<8;i++) { SDI=dat1&0x01;

dat1>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();

}

for(i=0;i<8;i++) { SDI=dat2&0x01;

dat2>>=1; SCK=0; _nop_();

_nop_();

//从高位到低位

//从高位到低位

//从高位到低位

17

}

}

SCK=1; _nop_(); _nop_();

for(i=0;i<8;i++) { }

LCK=0; //下面是输出时钟 _nop_(); _nop_(); LCK=1; _nop_(); _nop_();

SDI=dat3&0x01; dat3>>=1; SCK=0; _nop_(); _nop_(); SCK=1; _nop_(); _nop_();

//从高位到低位

18

图FB-2 “电”的显示

图FB-3 “工”的显示

24

图FB-4 “程”的显示

图FB-5 “学”的显示

25

图FB-6“院”的显示

26

本文来源:https://www.bwwdw.com/article/zyk.html

Top