单片机课程设计1616点阵式汉字显示.docx

上传人:b****5 文档编号:4946383 上传时间:2022-12-12 格式:DOCX 页数:21 大小:241.61KB
下载 相关 举报
单片机课程设计1616点阵式汉字显示.docx_第1页
第1页 / 共21页
单片机课程设计1616点阵式汉字显示.docx_第2页
第2页 / 共21页
单片机课程设计1616点阵式汉字显示.docx_第3页
第3页 / 共21页
单片机课程设计1616点阵式汉字显示.docx_第4页
第4页 / 共21页
单片机课程设计1616点阵式汉字显示.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机课程设计1616点阵式汉字显示.docx

《单片机课程设计1616点阵式汉字显示.docx》由会员分享,可在线阅读,更多相关《单片机课程设计1616点阵式汉字显示.docx(21页珍藏版)》请在冰豆网上搜索。

单片机课程设计1616点阵式汉字显示.docx

单片机课程设计1616点阵式汉字显示

 

摘要

LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成.LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。

文章给出了一种基于MCS-51单片机的16×16点阵LED显示屏的设计方案。

包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。

在负载范围内,只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。

关键词:

MCS-51;LED;单片机

 

Abstract

Asapopulardisplaydevicecomponent,LEDdot-matrixdisplayboardconsistsofseveralindependentLED(LightEmittingDiode).TheLEDdot-matrixdisplayboardcandisplaythenumberorsign,anditisusuallyusedtoshowtime,speed,thestateofsystemetc.Thispaperintroducesakindofsimple16x16LEDdisplayscreendesignprocessbasedonMCS-51singlechipminicomputer.Thedetailhardwarescheme,softwareflowandassemblelanguageprogrammerdesignandsoonisfollowed.Thedisplaypartcanbecascadedtomeettheneed.Thepracticeprovesthedesignislow-costandeffective.

Keywords:

MCS-51;LED;MCU

 

1设计原理

1.1MCS-51单片机的结构及编程方法

MCS-51单片机的组成:

CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。

 

8051单片机的组成框图

(1)cpu中央处理器

由运算器和控制器组成,是8位的cpu,具有布尔运算和8位寻址功能。

运算器

完成算术运算和逻辑运算。

CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。

(2)

存储器

MCS-51单片机按程序存储器可分为内部无ROM

型(如8031)和内部有ROM型(如8051)两种,

连接时引脚有区别。

程序存储器结构如右图所示:

程序存储器:

一般将只读存储器(ROM)用做程序

存储器。

可寻址空间为64KB,用于存放用户程序、

数据和表格等信息。

数据存储器:

一般将随机存储器(RAM)用做数据存储器。

可寻址空间为64KB。

MCS-51数据存储器可分为片内和片外两部分。

(3)特殊功能寄存器(SFR)

MCS-51有21个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针寄存器、I/O口锁存器、定时器/计数器、串行口、中断、状态、控制寄存器等,它们被离散地分布在内部RAM的80H~FFH地址单元中(不包括PC),共占据了128个存储单元,构成了SFR存储块。

其字节地址可被8整除的SFR可位寻址。

SFR反映了MCS-51单片机的运行状态。

 

 

80C51内部结构

(4)I/O接口

I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。

8051内部有4个8位并行接口P0,P1,P2,P3,有1个全双工的可编程串行I/O接口。

(5)定时器/计数器

8051内部有两个16位可编程序的定时器/计数器,均为二进制加1计数器,分别命名为T0和T1。

(6)中断系统

8051可处理5个中断源(2个外部,3个内部)发出的中断请求,并可对其进行优先权处理。

外部中断的请求信号可以从P3.2,P3.3引脚上输入,有电平或边沿两种触发方式;内部中断源有3个,2个定时器/计数器中断源和1个串行口中断源。

8051的中断系统主要由中断允许控制器IE和中断优先级控制器IP等电路组成。

1.216*16点阵LED原理

下图为8×8点阵LED外观及引脚图,其等效电路如下图所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

因为在当前Proteus仿真库中找不到16*16的LED点阵,所以在该设计中可以用4块8*8的LED连线来代替,这点不难理解。

点阵LED扫描法介绍:

点阵LED一般采用扫描式显示,实际运用分为三种方式:

(1)点扫描;

(2)行扫描;(3)列扫描。

若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。

若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。

此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。

1.33-8译码器原理

由于3-8译码器74LS138的原理及功能我们都已经很熟悉,在这里就不重复累赘了。

 

2.设计方案介绍

2.1设计总体思路

本次课程设计的要求是在16×16点阵的显示器件上滚动显示,汉字由于要用16*16点阵显示汉字,而80C51的I/O接口是8位的,我们可以用4个8*8点阵来组成。

由于80C51的I/O口不多(只有4组,32个),为了节约I/O口,我们用74HC138(3线-8译码器)作为点阵的列驱动,P2口和P0口作为数据线。

为了显示16*16的点阵汉字,我们需建一个表先将要显示的汉字的点阵码存起来,然后编写一个合适的查表程序就可以按给定要求显示汉字。

2.2与题目相关的具体设计

1).汉字的显示:

可以采用扫描的方式,先使一个I/O口产生一个选行(列)信号(通过74HC138),先选中一行,对选中的行进行扫描,然后用另外2组I/O口输送数据,这样一个字的1/16就送到LED点阵上了,接着选下一行,这样经过16次就可以显示一个字了,再适当延时使显示的字清晰。

2).汉字的移动:

在LED上显示一个汉字并延时后,可以通过增加所取表的地址,这样下一次LED上显示的字就移动了一个点阵,可以通过适当的设计来控制汉字移动循环的的次数。

3).键盘控制汉字:

可以用单片机的P3口实现键盘的控制作用P3.0到P3.3作为行扫描信号,P3.4到P3.7作为列扫描信号,这样的话4行4列可以形成16个按键。

每个按键可以对应相应的汉字显示。

 

2.3程序设计流程图

 

 

 

系统主程序流程图显示驱动程序流程图

 

3.源程序,原理图和仿真图

3.1程序清单(见附录)

3.2电路图

3.2.1电路原理图

3.2.2电路图分析

该原理图中89C51单片机为基础一共分成三大部分:

汉字显示部分,汉字移动部分以及键盘选择部分。

P1.0到P1.3接两个74LS138给16*16点阵提供选行信号。

P0.0到P0.7接16*16点阵的上半块作为数据线,给16*16点阵上部提供数据,点亮相应的LED,P2.0到P2.7接16*16点阵的下半块作为数据线,给16*16点阵下部提供数据,点亮相应的LED。

74LS138的八个输出Y0到Y7一次连到4个8*8LED用于对行进行扫描与选通。

P3.0到P3.7用作键盘扫描输入输出,接16个按键,P3.0到P3.3为行扫描信号,P3.4到P3.7为列扫描信号。

通过键盘部分可以进行汉字选择,一个按键对应一个不同的字。

就有16种不同的汉字。

3.3仿真图

 

4性能分析

程序通过keil软件编译生成.hex文件加载到protues软件的原理原理图中能够进行仿真,该程序段要实现以下功能:

1、点阵式汉字显示电路;

2、单个汉字滚动显示功能;

3、多个汉字滚动显示功能;

4、4×4键盘进行文字选择;

5、显示内容可以保存在存储器中;

系统开始显示后,汉字先从左向右移动,汉字显示很清晰明亮,效果很不错。

用键盘进行汉字选择依次显示不同汉字。

既可以单个汉字滚动显示,又可以多个汉字滚动显示。

显示内容可以保存在存储器中。

P1.0到P1.3接两个74LS138给16*16点阵提供选行信号。

P0.0到P0.7接16*16点阵的上半块作为数据线,给16*16点阵上部提供数据,点亮相应的LED,P2.0到P2.7接16*16点阵的下半块作为数据线,给16*16点阵下部提供数据,点亮相应的LED。

74LS138的八个输出Y0到Y7一次连到4个8*8LED用于对行进行扫描与选通。

P3.0到P3.7用作键盘扫描输入输出,接16个按键,P3.0到P3.3为行扫描信号,P3.4到P3.7为列扫描信号。

通过键盘部分可以进行汉字选择,一个按键对应一个不同的字。

那马就有16种不同的汉字显示。

基本上实现了上述功能。

 

5.总结和心得

作为一名电信专业的大三学生,我觉得这个单片机是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,学习单片机已经有一年了,已经掌握了单片机的原理和如何用汇编语言编写程序,但是很少有机会取实践。

我想做类似的课程设计,就为我们提供了良好的实践平台,这样能使我们对单片机及其应用认识和应用更加熟练,为我们以后走向社会工作打下良好基础。

在做单片机课程设计的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。

为了写好程序,完成任务需查阅很多的资料,首先要先搞懂原理,比如8*8点阵的组成及其是如何工作的,汉字在16*16点阵是如何显示的,键盘是如何扫描,怎样实现汉字滚动显示,只有搞懂这些才能更好的设计出一个完善的系统。

其次,在这次单片机课程设计中,我们运用到了以前所学的专业课知识,如:

单片机、汇编语言、模拟和数字电路知识等,还学会了应用新的软件(如PROTEUS,KEIL),虽然过去没用综合的应用过它们,但在做课程设计过程中带着问题和目标去应用这些软件和知识,我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好这个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

1周的单片机课程设计结束了,但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作。

6.参考文献

1.《单片机原理及接口技术》李全利高等教育出版社2004

2.《单片机原理及应用》张毅刚高等教育出版社2006

3.《微型计算机接口技术及应用》徐仁贵机械工业出版社1998

4.《LED显示屏系统原理及工程技术》诸昌钤电子科技大学出版社2005

5.《数字逻辑电路》(第2版)梅开乡电子工业出版社2005

 

附录:

程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

uchartemp,num;

uchara,v,m,n,f;

uchari,j,k,shuz,shub;/*各变量值的初始化*/

ucharcodetable1[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,

0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10,

0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,

0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00,/*"我",0*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodetable2[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x40,0x40,0x20,0xB2,0xA0,0x96,0x90,

0x9A,0x4C,0x92,0x47,0xF6,0x2A,0x9A,0x2A,

0x93,0x12,0x91,0x1A,0x99,0x26,0x97,0x22,

0x91,0x40,0x90,0xC0,0x30,0x40,0x00,0x00,/*"爱",1*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodetable3[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,

0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5",2*/

0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,

0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"1",3*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodetable4[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,

0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,

0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,

0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",3*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodetable5[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,

0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,

0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,

0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",5*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

ucharcodetable6[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,

0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,

0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,

0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00,/*"机",6*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

voidinit();/*主函数的初始化声名*/

voidinit1();/*左移显示方式的初始化声名*/

voiddisp1();/*左移显示子程序声名*/

voiddelay(uintz);/*延时函数声名及定义*/

ucharkeyscan();

voiddisplay1();

voiddisplay2();

voiddisplay3();

voiddisplay4();

voiddisplay5();

voiddisplay6();

ucharkeyscan();

voidmain()

{if(keyscan()==1)

display1();

if(keyscan()==2)

display2();

if(keyscan()==3)

display3();

if(keyscan()==4)

display4();

if(keyscan()==5)

display5();

if(keyscan()==6)

display6();

if(keyscan()==7)

display1();

if(keyscan()==8)

display2();

if(keyscan()==9)

display3();

if(keyscan()==10)

display4();

if(keyscan()==11)

display5();

if(keyscan()==12)

display6();

if(keyscan()==13)

display1();

if(keyscan()==14)

display2();

if(keyscan()==15)

display3();

if(keyscan()==16)

display4();

}

ucharkeyscan()

{uchartemp1,temp2,temp,num;

P3=0xf0;

temp=P3;

if(temp!

=0xf0)

{temp1=P3;

P3=0x0f;

temp=P3;

if(temp!

=0x0f)

{temp2=P3;

temp=temp1^temp2;

}

switch(temp)

{case0x7e:

num=1;break;

case0x7d:

num=2;break;

case0x7b:

num=3;break;

case0x77:

num=4;break;

case0xbe:

num=5;break;

case0xbd:

num=6;break;

case0xbb:

num=7;break;

case0xb7:

num=8;break;

case0xde:

num=9;break;

case0xdd:

num=10;break;

case0xdb:

num=11;break;

case0xd7:

num=12;break;

case0xee:

num=13;break;

case0xed:

num=14;break;

case0xeb:

num=15;break;

case0xe7:

num=16;break;

returnnum;

}

}

}

voiddisplay1()

{

init();

init1();//左移显示初始化

{inta=

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1