基于单片机的点阵汉字显示附C语言程序.docx

上传人:b****5 文档编号:11742193 上传时间:2023-03-31 格式:DOCX 页数:18 大小:194.91KB
下载 相关 举报
基于单片机的点阵汉字显示附C语言程序.docx_第1页
第1页 / 共18页
基于单片机的点阵汉字显示附C语言程序.docx_第2页
第2页 / 共18页
基于单片机的点阵汉字显示附C语言程序.docx_第3页
第3页 / 共18页
基于单片机的点阵汉字显示附C语言程序.docx_第4页
第4页 / 共18页
基于单片机的点阵汉字显示附C语言程序.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于单片机的点阵汉字显示附C语言程序.docx

《基于单片机的点阵汉字显示附C语言程序.docx》由会员分享,可在线阅读,更多相关《基于单片机的点阵汉字显示附C语言程序.docx(18页珍藏版)》请在冰豆网上搜索。

基于单片机的点阵汉字显示附C语言程序.docx

基于单片机的点阵汉字显示附C语言程序

湖南科技大学测控技术与仪器专业

单片机课程设计

 

题目基于单片机的点阵汉字显示设计

姓名

学号

指导教师

成绩____________________

 

湖南科技大学机电工程学院

二〇一五年十二月制

摘要

LED显示屏在我们的周围随处可见,它的应用已经普及到社会中的方方面面。

作为一种新型的显示器件,在许多场合都可以见到它的身影,不仅是它的应用使呈现出来的东西更加美观,更重要的是它的应用方便,成本很低,除了能给人视觉上的冲击外,更能给人一种美的享受。

LED显示屏是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等各种信息。

本设计是基于STC89C51单片机的16*16点阵式显示屏,该LED显示屏能实现16*16个汉字,简单的显示图像, 然后一直循环着显示下去。

该设计包含了硬件、软件、调试等方案,只需简单的级联就能实现显示屏的拓展,但要注意不要超过负载能力。

本次设计的作品体积小、功能多、方便实用、花费小,电路具有结构简单、操作方便、精度高、应用广泛的特点。

关键词:

 LED,STC89C51单片机,显示屏 

 

摘要…………………………………………………………………………i

第一章系统功能要求……………………………………………………1

1.1系统设计要求……………………………………………………1

第二章方案论证…………………………………………………………1

2.1方案论证…………………………………………………………1

第三章系统硬件电路设计………………………………………………1

3.1STC89C51芯片的介绍………………………………………………1

3.1.1系统单片机选型…………………………………………………1

3.1.2STC89C51引脚功能介绍…………………………………………2

3.1.374LS595的总体特点和工作原理……………………………………

3.2LED点阵介绍………………………………………………………2

3.2.1LED点阵……………………………………………………………2

3.3系统各硬件电路介绍………………………………………………3

3.3.1系统电源电路设计介绍……………………………………………3

3.3.2复位电路……………………………………………………………3

3.3.3晶振电路……………………………………………………………4

3.4系统的总的原理图……………………………………………………4

第四章系统程序设计………………………………………………………5

4.1基于PROTEUS的电路仿真……………………………………………5

4.2用PROTEUS绘制原理………………………………………………5

4.3PROTEUS对单片机内核的仿真………………………………………6

第五章调试及性能分析………………………………………………6

5.1系统的调试…………………………………………………………6

参考文献……………………………………………………………………7

附录…………………………………………………………………………7

 

第一章设计要求

1.1系统设计要求

1.以STC89C51系列的单片机为核心器件;组成一个点阵式汉字显示屏。

2.显示屏由一块16x16LED点阵显示器组成;可以依次显示13个汉字。

3.通过编程能够随时对汉字进行修改、调整。

第二章方案论证

2.1方案论证

以设计方案为指导思想选择合适的器件来实现这一思想,选择器件时要从功能和电气特性两方面来选择和论证。

经过对比选择选定STC89C51单片机为核心控制器件,由74LS138作为字位电路器件,三极管2N5551和2N5401为驱动电路器件。

论文列出了详细的器件参数和在系统中的连接使用方法。

第三章系统硬件电路设计

3.1AT89S51芯片的介绍

(1)系统单片机选型

单片机选择在整个系统中有着至关重要的作用,这里要选择一款低成本、高运算速度、内存大等特点的单片机,经过不断的查找资料,最后我们选择了STC89C51作为主控芯片。

STC89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次以上的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。

STC89C51芯片具有以下特性:

①指令与8051完全兼容;

②8KB片内Flash程序存储器;

③时钟频率为0~33MHz;

④128字节片内随机读写存储器(RAM);

⑤32个可编程输入/输出引脚;

⑥2个16位定时/计数器;

⑦2个外部中断,1个串口中断,3个定时器中断

AT89S51有32个可编程IO,1个VCC接口,1个GND接口,1个复位引脚接口,还有2个晶振接口。

(2)STC89C51引脚功能介绍

1)VCC:

供电电压。

2)GND:

接地。

3)P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

4)P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

5)P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

6)P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

7)P3口也可作为AT89C51的一些特殊功能口,如下表所示:

8)口管脚备选功能

9)P3.0RXD(串行输入口)

10)P3.1TXD(串行输出口)

11)P3.2/INT0(外部中断0)

12)P3.3/INT1(外部中断1)

13)P3.4T0(记时器0外部输入)

14)P3.5T1(记时器1外部输入)

15)P3.6/WR(外部数据存储器写选通)

16)P3.7/RD(外部数据存储器读选通)

17)P3口同时为闪烁编程和编程校验接收一些控制信号。

18)RST:

复位输入。

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

19)ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

20)/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

21)/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

22)XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

23)XTAL2:

来自反向振荡器的输出。

(3)74LS595的总体特点和工作原理

1)总体特点:

74LS595是8位串行输入转并行输出移位寄存器,三态输出功能,具有数据存储寄存器,移位寄存器和存储器是分别的时钟。

数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。

如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

在移位的过程中,输出端的数据可以保持不变。

这在串行速度慢的场合很有用处,数码管没有闪烁感。

2)工作原理

每当SHcp上升沿到来时,Ds引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,同时Q7'也会串行输出移位寄存器中高位的值,这样连续进行8次,就可以把数组中每一个数(8位的数)送到移位寄存器;然后当STcp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出。

74LS595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。

这在串行速度慢的场合很有用处,点阵没有闪烁感。

74HC595在5V供电的时候能够达到30MHz的时钟速度,每个并行输出端口均能承受20mA的灌电流和拉电流。

这个特点保证了不用增加额外的扩流电路即可轻松的驱动LED。

它输入端允许500nS的上升(下降)时间,对严重畸形的时钟脉冲仍能检测。

这样就可以容纳较大的传输线对地电容,使本设计的抗干扰能力增强。

3.2LED点阵介绍

(1)LED点阵

8×8单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。

本设计是一种实用的汉字显示屏的制作,制作的是双色点阵。

考虑到元器件的易购性,没有使用8×8的点阵发光二极管模块,而是直接使用了256个高亮度发光管,组成了16行16列的发光点阵。

实际使用时可以根据这个原理自行扩充显示的字数。

对比下面的8×8单色点阵和8×8双色点阵可以看出,其实8×8双色点阵就是两块8×8单色点阵组合在一起的。

要实现用两种颜色显示,只要在电路的设计中适当的连线就可以了。

8×8单色点阵LED结构如下图3.1所示。

图3.18×8单色点阵LED结构

3.3系统各硬件电路介绍

(1)电源电路

图3.2电源电路

(2)复位电路

图3.3复位电路

图3.4为系统复位电路,为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。

一般单片机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。

由于单片机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,单片机电路开始正常工作。

这种复位电路的工作原理是:

VCC上电时,C1充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C1充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。

工作期间,按下S1,C1放电。

S1松手,C1又充电,在10K电阻上出现电压,使得单片机复位。

几个毫秒后,单片机进入工作状态。

(3)晶振电路

图3.4晶振电路

每个单片机系统里都有晶振,全称叫晶体震荡器,在单片机系统里晶振的作用非常大,它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快,如图,在晶振两边添加两个30pF(27--33pF)电容,使震荡更加稳定。

震荡电路接在AT89S52单片机的18、19两个引脚上,给单片机提供震荡信号。

3.4系统的总的原理图

该系统主要由单片机,电源,下载接口,晶振,三极管驱动,按键等组成。

图3.5系统总原理图

第四章系统程序设计

4.1基于PROTEUS的电路仿真

Proteus是英国Labcenterelectronics公司开发的EDA工具软件。

主要由原理布图的方法绘制电路并进行仿真的ISIS和PCB自动布线或人工布线电路仿真的ARES两个程序组成。

Proteus运行于Windows操作系统上,可以动态实时仿真、分析(SPICE)各种模拟器件和集成器件。

针对微处理器及其外围电路,可以直接在基于原理图的虚拟原型上编程,并实现软件代码级的调试,配合其提供的仿真图表或虚拟仪器如示波器、逻辑分析仪等可进行相应的测量与分析。

借助Proteus的对CPU和外围电路强大的仿真能力以及丰富的资源库,可以有效地替代硬件仿真器进行先期的软硬件调试,等到仿真结果基本理想时再进行实际的硬件调试,这样的开发过程不仅高效,而且可以尽可能地减少损失,尤其对于解决实验室资源紧张的问题是一个很好的思路。

4.2用PROTEUS绘制原理图

运行Proteus的ISIS程序后,进入该仿真软件的主界面。

主界面由菜单栏、工具栏、预览窗口、元件选择按钮、元件列表窗口、原理图绘制窗口和仿真进程控制按钮组成(如图1所示)。

通过元件选择按钮P(从库中选择元件命令)命令,在弹出的PickDevices窗口中选择电路所需的元件,放置元件并调整其相对位置,对元件参数设置及元器件间连线,完成单片机系统的硬件原理图绘制。

4.3PROTEUS对单片机内核的仿真

在source菜单的Definecodegenerationtools菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source菜单的Add/removesourcefiles命令下,加入单片机硬件电路的对应程序(主要采用Keil进行程序编译)

打开如图8所示的对话框。

在ProgramFile栏添加编译好的十六进制格式的程序文件8X8.hex,给AT89C51输入晶振频率,此处默认为12MHZ,单击OK按钮完成程序添加工作,下面就可以进行系统仿真了。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作情况。

因此在仿真和程序调试时,是从工程的角度直接看程序运行和电路工作的过程和结果。

从某种意义上讲Proteus仿真,基本接近与工程应用。

第五章调试及性能分析

5.1系统的调试

电路板实物做完以后,接下来的工作就是调试。

这是理论指导实践最重要的一步。

调试工作需要耐心与恒心。

所以在调试过程中必须保持冷静的头脑,较强的电路分析能力。

一个系统的调试需要软硬件结合调试。

在软硬件结合调试的过程中所遇到的问题:

(1)电子电路的设计中对各种影响因素的考虑不够完全,比如在对过电压情况的处理中未作防范措施。

(2)系统设计不够优化,有待改善。

比如系统的超量程信号直接由单片机送入报警电路,没有设计保护电路再入单片机处理后送入报警电路。

(3)没有扩展更多电路,如温度显示功能,通讯接口电路与上位机(PC机)进行通讯,上位机显示功能从而将大量的商品数据存于上位机,然后通过串口或并口通讯与电子称相连,达到远距离控制的目的。

(4)对各种实用芯片价格了解不够,选择上任有欠缺,如所选的称重传感器价格较贵。

参考文献

[1]马维华.嵌入式系统原理及应用[M].北京邮电大学出版社.2006年9月.[2]粟梅,林旷.基于S3C44BOX的大型LED显示示系统设计[J].单片机与嵌入式系统的应用.2006年第2期

[3]霍利民,孙丽华.大型LED显示系统的设计与研制[J].河北工业科技.1999年,总第56期第16卷.

[4]魏银库,陈建国,狄国伟.256级灰度LED点阵屏显示原理及基于FPGA的电路设计[J].电子设计应用.

附录

#include//头文件

sbitshcp=P1^2;//数据输入时钟线595的11脚

sbitstcp=P1^1;//输出存储器锁存时钟线595的12脚

sbitds=P1^0;//数据线595的14脚

sbits1=P3^1;//按下暂停再暂按继续

sbits2=P3^2;//按下方向取反

bitfx;//方向切换

unsignedcharalt;//数据移动定时时间

unsignedintnet;//控制显示的字符

unsignedintzong=244;//总字符(所有的字数+1)*32字数指的是汉字,字母、数字两个算一个数字

unsignedcharcodetab[]={

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,

{0x04,0x08,0x04,0x10,0x24,0x20,0x24,0x40,

0x24,0xFC,0x24,0xA2,0xFD,0x22,0x26,0x22,

0x24,0x42,0x2C,0x42,0x14,0x42,0x24,0x82,

0x44,0x1E,0x04,0x00,0x04,0x00,0x00,0x00},/*"老",0*/

{0x00,0x00,0x3F,0xE1,0x00,0x02,0x00,0x0C,

0xFF,0xF0,0x00,0x00,0x40,0x00,0x47,0xF8,

0x44,0x00,0x44,0x00,0x7F,0xFF,0x44,0x10,

0x44,0x08,0x47,0xF0,0x40,0x00,0x00,0x00},/*"师",1*/

{0x04,0x02,0x08,0x0C,0x10,0x00,0x3F,0xEE,

0xC4,0x01,0x08,0x81,0x11,0x11,0xE6,0x4D,

0x20,0x21,0x2F,0xC1,0x20,0x01,0x24,0x07,

0x2A,0x00,0x31,0x88,0x00,0x06,0x00,0x00},/*"您",2*/

{0x02,0x00,0x02,0x20,0x22,0x20,0x22,0x20,

0x2A,0x20,0x26,0x20,0xA2,0x20,0x63,0xFF,

0x22,0x20,0x26,0x20,0x2A,0x20,0x22,0x20,

0x22,0x20,0x02,0x20,0x02,0x00,0x00,0x00},/*"辛",3*/

{0x21,0x00,0x21,0x00,0x21,0x00,0x21,0x3F,

0xF9,0x22,0x21,0x22,0x21,0x22,0x2F,0xE2,

0x21,0x22,0x21,0x22,0xF9,0x22,0x21,0x3F,

0x21,0x00,0x21,0x00,0x21,0x00,0x00,0x00},/*"苦",4*/

{0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,

0x40,0x00,0x40,0x02,0x40,0x01,0x47,0xFE,

0x44,0x00,0x48,0x00,0x50,0x00,0x60,0x00,

0x40,0x00,0x00,0x00,0x00,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,

};

voiddelay(unsignedintz)//延时子函数

{

unsignedcharx;

for(;z>0;z--)

for(x=110;x>0;x--);

}

voidwritedata(unsignedchardat1,unsignedchardat2)//595显示子函数

{

unsignedchari;

//CY存储移位之后的数据CY进位标志位,单片机内部的寄存器移位之后的数据就存在CY里面

for(i=0;i<8;i++)//循环八次

{

dat1=dat1<<1;//数据左移

ds=CY;//数据发送

shcp=1;//上升沿发生移位

shcp=0;

}

for(i=0;i<8;i++)//循环八次

{

dat2=dat2<<1;//数据左移

ds=CY;//数据发送

shcp=1;//上升沿发生移位

shcp=0;

}

stcp=0;

stcp=1;//上升沿将数据送到输出锁存器

stcp=0;

}

 

voidxianshi()//显示

{

chari,aa;

for(i=0;i<16;i++)//循环移位

{

//两片138组成的4-16线译码器

P2=i;//列数据驱动,138的驱动端口

writedata(tab[net+aa],tab[net+aa+1]);//显示数据的数字位置

delay(3);//延时

writedata(0,0);//清屏

aa+=2;//数据加实现扫描

if(aa>30)aa=0;//循环16次清零

}

}

voidmain()//主函数

{

TMOD=0x01;//定时器0模式116位定时模式

TH0=(65536-10000)/256;//定时10.000ms

TL0=(65536-10000)%256;

ET0=1;//使能定时器0

EA=1;//开启总中断

TR0=1;//开始计数

while

(1)//无限循环

{

xianshi();//显示

if(s1==0)//检测按键

{

delay(30);//延时消除按键抖动

if(s1==0)

{

TR0=~TR0;//按下暂停暂按继续

while(s1==0)xianshi();//等待按键松手

}

}

if(s2==0)//检测按键

{

delay(30);//延时消除按键抖动

if(s2==0)

{

fx=~fx;//方向取反

while(s2==0)xianshi();//等待按键松手

}

}

}

}

voidtimer0()interrup

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

当前位置:首页 > 人文社科 > 法律资料

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

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