单片机点阵课程设计报告.docx

上传人:b****0 文档编号:9849177 上传时间:2023-05-21 格式:DOCX 页数:16 大小:134.30KB
下载 相关 举报
单片机点阵课程设计报告.docx_第1页
第1页 / 共16页
单片机点阵课程设计报告.docx_第2页
第2页 / 共16页
单片机点阵课程设计报告.docx_第3页
第3页 / 共16页
单片机点阵课程设计报告.docx_第4页
第4页 / 共16页
单片机点阵课程设计报告.docx_第5页
第5页 / 共16页
单片机点阵课程设计报告.docx_第6页
第6页 / 共16页
单片机点阵课程设计报告.docx_第7页
第7页 / 共16页
单片机点阵课程设计报告.docx_第8页
第8页 / 共16页
单片机点阵课程设计报告.docx_第9页
第9页 / 共16页
单片机点阵课程设计报告.docx_第10页
第10页 / 共16页
单片机点阵课程设计报告.docx_第11页
第11页 / 共16页
单片机点阵课程设计报告.docx_第12页
第12页 / 共16页
单片机点阵课程设计报告.docx_第13页
第13页 / 共16页
单片机点阵课程设计报告.docx_第14页
第14页 / 共16页
单片机点阵课程设计报告.docx_第15页
第15页 / 共16页
单片机点阵课程设计报告.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机点阵课程设计报告.docx

《单片机点阵课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机点阵课程设计报告.docx(16页珍藏版)》请在冰点文库上搜索。

单片机点阵课程设计报告.docx

单片机点阵课程设计报告

大连民族学院

单片机系统课程设计

 

题目:

点阵显示器设计

班级:

姓名:

同组人:

指导教师:

设计日期:

 

16×16点阵LED电子显示屏的设计

引言

设计意义

LED在我们日常生活的电器中随处可见,极为普通也广为人知。

LED具有效率高、光线质量高、能耗小、寿命长等特点,主要可用于平面显示领域、便携设备显示屏、照明以及红外线LED领域等下游应用产品市场。

LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。

图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。

LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。

它的优点:

亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。

一设计内容及要求

设计一个室内用16x16的点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。

图形或文字显示有上移、帘入帘出、左移、右移等显示方式。

二设计方案

从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。

16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。

这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。

因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。

动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。

具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。

当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。

采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。

显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。

显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。

从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。

显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。

当列数很多时,并列传输的方案是不可取的。

采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。

但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。

这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。

对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。

解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。

即在显示本行各列数据的同时,传送下一列数据。

为了达到重叠处理的目的,列数据的显示就需要具有所存功能。

经过上述分析,就可以归纳出列驱动器电路应具有的功能。

对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。

这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。

图一显示屏电路框图

三硬件系统设计

1程序下载模块如图1:

采用MAX232实现程序下载和电平转换的功能,我们可以通过计算机将程序下载到单片机中。

图1

2USB接口模块如图2:

用USB接口作为整个电路的电源,D0作为通电指示灯,C4和C5起到滤波的作用。

图2

3晶振模块如图3:

单片机工作需要的模块,用来给予单片机时钟脉冲。

图3

 

4按键模块图4:

按键实现点阵的各项功能,通过程序编译可以显示不同的设计要求。

图4

 

5复位模块图5:

复位开关起到单片机的复位作用。

图5

 

6行控制模块如图6:

单片机P0~P3口连接到74154的输入端,154的输出端分别连接一个PNP型三极管和一个限流电阻来控制行端。

图6

 

7列控制模块如图7:

列驱动电路有集成电路74HC595构成。

它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。

74HC595的外形及内部结构如图3所示。

它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。

引脚SI是串行数据的输入端。

引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。

移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。

RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器。

引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。

SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。

由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。

芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。

但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出。

图7

8点阵模块如图8:

  通过4片8*8的点阵并联成16*16的点阵。

点阵的正负极和引脚需要我们自己来测定。

1.【定正负极】把万用表拨到电阻档×10,先用黑色探针(输出高电平)随意选择一个引脚,红色探针碰余下的引脚,看点阵有没发光,没发光就用黑色探针再选择一个引脚,红色探针碰余下的引脚,当点阵发光,则这时黑色探针接触的那个引脚为正极,红色探针碰到就发光的7个引脚为负极,剩下的6个引脚为正极。

2.【引脚编号】先把器件的引脚正负分布情况记下来,正极(行)用数字表示,负极(列)用字母表示,先定负极引脚编号,黑色探针选定一个正极引脚,红色点负极引脚,看是第几列的二极管发光,第一列就在引脚写A,第二列就在引脚写B,第三列......以此类推。

这样就点阵的一半引脚都编号了。

剩下的正极引脚用同样的方法,第一行的亮就在引脚标1,第二行就在引脚标2,第三行......以此类推。

图8

 

9.PCB图:

  

图9

四软件系统设计

程序代码如下:

#include"reg52.h"

#defineBLKN2//列锁存器数(=LED显示字数*2)

#defineTOTAL9//待显示字个数,本例共20个

#defineCONIOP1//显示控制口

sbitG=CONIO^7;//CONIO.7为154译码器显示允许控制信号端口,0时输出,1时输出全为高阻态.

sbitCLK=CONIO^5;//CONIO.6为595输出锁存器时钟信号端,1时输出数据,从1到0时锁存输出数据.

sbitSCLR=CONIO^4;//CONIO.5为595移位寄存器清零口,平时为1,为0时,输出全为0.

unsignedcharidatadispram[(BLKN/2)*32]={0};//显示区缓存,四字共4*32单元

//

//**************字模表******************//

unsignedcharcodeBmp[][32]={

/*--文字:

电--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,

0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xFE,0xFD,0xFE,0xFD,0xFF,0x01,0xFF,0xFF},

/*--文字:

子--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFF,0xFF,0xC0,0x0F,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,

0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF},

/*--文字:

与--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFF,0xFF,0xF7,0xFF,0xF7,0xFB,0xF0,0x01,0xF7,0xFF,0xF7,0xFF,0xF0,0x03,0xFF,0xFB,

0xFF,0xFB,0xFF,0xDB,0x80,0x0B,0xFF,0xFB,0xFF,0xFB,0xFF,0xB7,0xFF,0xCF,0xFF,0xFF},

/*--文字:

信--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xF7,0x7F,0xF3,0x9F,0xE7,0xBF,0xE8,0x01,0xCF,0xFF,0xCC,0x07,0xAF,0xFF,0x6C,0x07,

0xEF,0xFF,0xEC,0x07,0xED,0xF7,0xED,0xF7,0xED,0xF7,0xEC,0x07,0xED,0xF7,0xFF,0xFF},

/*--文字:

息--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFE,0xFF,0xFD,0xFF,0xE0,0x0F,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,0xE0,0x0F,0xEF,0xEF,

0xE0,0x0F,0xFF,0xFF,0xF6,0xFF,0xD7,0x7B,0xD7,0x6D,0x97,0xED,0xF8,0x0F,0xFF,0xFF},

/*--文字:

工--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFF,0xFF,0xC0,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF},

/*--文字:

程--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xF2,0x07,0x8E,0xF7,0xEE,0xF7,0xEE,0xF7,0x02,0xF7,0xEE,0x07,0xCF,0xFF,0xC4,0x03,

0xAB,0xBF,0xAF,0xBF,0x6C,0x03,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xE8,0x01,0xEF,0xFF},

/*--文字:

学--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFE,0xF7,0xEF,0x73,0xF3,0x37,0xF7,0x6F,0x80,0x01,0xBF,0xFB,0x70,0x17,0xFF,0xBF,

0xFF,0x7F,0x80,0x01,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFD,0x7F,0xFE,0xFF},

/*--文字:

院--*/

/*--Fixedsys12;此字体下对应的点阵为:

宽x高=16x16--*/

{0xFF,0x7F,0x07,0xBF,0x70,0x01,0x6B,0xFB,0x5F,0xFF,0x5C,0x07,0x6F,0xFF,0x77,0xFF,

0x70,0x01,0x56,0xDF,0x6E,0xDF,0x7E,0xDF,0x7D,0xDD,0x7D,0xDD,0x7B,0xDD,0x77,0xE1},

};

/***********延时函数(约1毫秒)************/

voiddelay(unsignedintdt)

{

registerunsignedcharbt;

for(;dt;dt--)

for(bt=0;bt<255;bt++);

}

//

/*****************主函数*********************/

voidmain(void)

{

registerunsignedchari,j,k,l,q;

//初始化

SCON=0x00;//串口工作模式0:

移位寄存器方式

TMOD=0x01;//定时器T0工作方式1:

16位方式

TR0=1;//启动定时器T0

CONIO=0x5f;//CONIO端口初值

IE=0x82;//允许定时器T0中断

//

while

(1)

{

delay(1000);//2秒

 

for(i=0;i

{

for(j=0;j<2;j++)

for(k=0;k<8;k++)

XX文库-让每个人平等地提升自我{

for(l=0;l<16;l++)

{

for(q=0;q

{

dispram[l*2+q*32]=dispram[l*2+q*32]<<1|dispram[l*2+1+q*32]>>7;

if(q==BLKN/2-1)dispram[l*2+1+q*32]=dispram[l*2+1+q*32]<<1|Bmp[i][l*2+j]>>(7-k);

elsedispram[l*2+1+q*32]=dispram[l*2+1+q*32]<<1|dispram[l*2+(q+1)*32]>>7;

}

}

delay(100);

}

}

delay(3000);

 

}

}

//主函数结束

//

/**********显示屏扫描(定时器T0中断)函数**********/

voidleddisplay(void)interrupt1using1

{

registerunsignedcharm,n=BLKN;

TH0=0xFc;//设定显示屏刷新率每秒62.5帧(16毫秒每帧)

TL0=0x18;

m=CONIO;//读取当前显示的行号

m=++m&0x0f;//行号加1,屏蔽高4位

do{

n--;

SBUF=dispram[m*2+(n/2)*30+n];//送显示数据

while(!

TI);TI=0;

}while(n);//完成一行数据的发送

G=1;//消隐(关闭显示)

CONIO&=0xf0;//行号端口清○

CLK=1;//显示数据打入输出锁存器

CONIO|=m;//写入行号

CLK=0;//锁存显示数据

G=0;//打开显示

}

//

 

五系统调试

显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可对照源程序自行分析。

这个方案设计的16×16点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。

 

六结论

   通过这次课程设计,加强了我们动手、思考和解决问题的能力。

做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。

而且还可以记住很多东西。

比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映象深刻。

认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。

所以这个课程设计对我们的作用是非常大的。

    这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

   系统总体电路由通信电路,驱动电路和外部存储电路构成。

通信电路由MAX232进行电平转换实现单片机与上位机的通信,完成将字模向外部字模数组的传递过程。

74LS154和74HC595共同作用完成对显示屏的驱动,实现字模信息于LED点阵上小灯亮灭的转变过程。

通过软硬件的仿真调试,实现了本次设计的基本功能:

汉字的左移显示,并可与上位机进行通信,实现显示汉字的更新。

但在实际应用中,功能不仅仅于此,通过对程序的稍做修改,可以实现汉字的静态显示,左移,右移的显示,以及根据要求来控制移动速度和每次移动的距离,并且都可以和上位机进行通信实现汉字的更新。

这次课程设计让我们明白,制作PCB的时候原理图务必要严谨准确,否则会出现错误,所以在以后的设计中药多加注意才行。

这次设计也要感谢辅导老师对于我们的指导和帮助,让我们学到很多东西,完善我们的知识,让我们有更多的经验。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2