简单单片机汉字显示..
基于单片机的LED汉字显示屏的设计
图 4 复 位 电 路 网
F g 4 Re e ic i i. s t cr u t
恤 们 丽 一~三 枷 盯 Ⅲ 雨 I
信 号 E / P ( i3 ) 序 存 储 器 的 内 外 部 选 通 , 低 电平 从 A V P Pn 1 程 接 外 部 程序 存储 器读 指令 , 果接 高则 从 内部 程序 存储 器 读 指令 。 如 4 可 编 程 输 入 / 出 引 脚 (2根 )A 8 S 1 片 机 有 4 ) 输 3 :T95 单 组 8位 的 可 编 程 I 口 , 别 位 P 、1 P 、 3口 , 个 口有 8 / O 分 O P 、2 P 每
系统 硬件 组 成 框 图 如 图 1 示 。 所
S C 5 T5C2 9
L D 器 E 显示
b ts 随 机 存 取 数 据 存 储 器 ( A , 件 采 用 A ME ye 的 R M) 器 T L公 司 的高 密 度 、 易 失 性 存 储 技 术 生 产 , 容 标 准 MC 一 l指 令 非 兼 S5
系 统 , 片 内 置 通 用 8位 中 央 处 理 器 和 Fah存 储 单 元 , l s
图 1 系统 硬 件 组 成 框 图
F g Bl c i g a o a d r y t m i .1 o k d a r m fh T 8 C 2单 片 机 在 电 子 行 业 中有 广 泛 的 应 用 l l 脚 分 布 】, _ 管 2
-
陈 莉 基 于 单 片机 的 L D 汉字 显示屏 的 设计 E
P1 0 . Vc0 P . 00 P . 01 P0 .2 P0 3
复 位 信 号 , 至 系 统 电 源 稳 定 后 , 销 复 位 信 号 。 为 可 靠 起 直 撤
最新-单片机系统中的汉字显示 精品
单片机系统中的汉字显示摘要需要显示的汉字较多时,单片机系统中的汉字编码非常繁琐。
本文介绍一种直接利用机的汉字内码作为单片机系统的汉字编码,以简化系统的设计。
关键词单片机液晶显示器29040汉字显示引言在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字。
通常的汉字显示方式是先根据所需要的汉字提取汉字点阵如16×16点阵,将点阵文件存入,形成新的汉字编码;而在使用时刚需要先根据新的汉字编码组成语句,再由根据新编码提取相应的点阵进行汉字显示。
在这种显示方式中,如果使用的流字数量较大或语句较多时,利用汉字的新编码组成语句将是一件十分繁琐而枯燥的工作。
针对这种情况,本文提出了一种十分简单的方式——直接利用机的汉字内码作为单片机系统的编码。
下面以8031单片机系统为例阐述如下一、硬件组成本系统中采用香港精电公司的内置6963控制器[1]的240128点阵图形液晶显示器。
该显示器1行为240点,能容纳16×16点阵的汉字15个,总列数为128点,能显示8行汉字。
为了使用操作可使用1片512的存储器如本系统中的29040用来存储全部的国标16×16点阵汉辽、8×16的码点阵数据以及汉字语句编码数据。
为了降低成本和减小体积,对于速度要求不是很高的场合也可采用大容量的串行数据存储器,如45041。
具体的硬件控制电路如图1所示与汉字显示无关的电路略。
由于29040的容量为512,而5031微控制器只能管理64的数据间,所以可将29040分成16页,每页32,占单片机系统数据空间的8000~0剩余32为单片机系统的其他存储器和外设。
页码由单片机的10~13选择。
液晶显示器的地址为78~79。
范文先生网收集整理二、汉字显示原理及软件设计软件中的文件16和文件16分别为16×16的国标汉字点阵文件和8×16的码点阵文件,以二进制格式存。
单片机的中文显示处理技巧
单片机的中文显示处理技巧单片机作为嵌入式系统中的重要组成部分,其在各个领域的应用日益广泛。
在很多情况下,我们需要通过单片机实现中文的显示,因此掌握单片机的中文显示处理技巧是非常必要的。
本文将介绍几种常见的单片机中文显示处理技巧,旨在帮助读者更好地理解和应用。
一、汉字的编码问题在开始讨论单片机的中文显示处理技巧之前,我们首先需要了解汉字的编码方式。
目前最常用的汉字编码方式是GB2312和Unicode。
GB2312采用两个字节表示一个汉字,而Unicode则采用更多的字节,可以覆盖更多的字符。
在单片机中,我们通常会采用GB2312编码方式进行中文字符的表示和处理。
二、字库的引入和使用为了实现单片机的中文显示,我们需要一个字库,即包含了各种中文字符的数据表。
我们可以从官方渠道或者其他第三方资源中获取相应的字库。
在实际应用中,我们可以将字库编译为数组或者独立的数据文件,并将其导入到单片机的存储器中。
然后,我们可以通过访问相应的地址来获取并显示中文字符。
三、液晶显示屏的使用技巧在实际应用中,我们通常会使用液晶显示屏来实现单片机的中文显示。
下面是几个液晶显示屏使用中的注意事项:1. 设置字符显示模式:液晶显示屏中一般包含有字符发生器,我们可以通过设置字符显示模式来选择使用汉字编码还是英文字母编码。
2. 设置显示位置:在使用液晶显示屏显示汉字之前,我们需要设置显示位置,即将显示的汉字写入指定的坐标位置。
3. 字符的显示方式:液晶显示屏通常有多种显示方式,例如点阵式显示和字符行显示等。
我们可以根据实际需求选择合适的显示方式。
四、中文字符串的处理技巧除了显示单个中文字符之外,有时候我们还需要处理中文字符串。
在处理中文字符串时,我们需要注意以下几点:1. 字符串的存储方式:中文字符串通常会占用更多的存储空间,因此在设计程序时需要合理安排存储,以免出现内存溢出等问题。
2. 字符串的显示方式:在液晶显示屏上显示中文字符串时,我们可以选择逐个显示字符,也可以选择将整个字符串作为一个整体进行显示。
51单片机控制LED显示汉字
用51单片机控制led显示汉字,电路中行方向由p0口和p2口完成扫描,由于p0口没有上拉电阻,因此接一个4.7k*8的排阻上拉。
如没有排阻,也可用8个普通的4.7k 1/8w电阻。
为提供负载能力,接16个2n5551的NPN三极管驱动。
列方向则由4—16译码器74LS154完成扫描,它由89C51的P1.0---P1.3控制。
同样,驱动部分则是16个2N5401的三极管完成的。
电路的供电为一片LM7805三端稳压器,耗电电流为100ma左右。
采用一块12*20cm的万能电路板,应当选用质量好些的发光管,(否则有坏点现象,更换起来较麻烦)首先将256个发光管插入电路板,注意插入方向,同时使高度一致,行方向直接焊接起来,列方向则搭桥架空焊接,完成后用万用表测试一下如有不亮的更换掉。
然后找一个电脑硬盘的数据线,截取所需的长度,分别将行,列线引出至电路的相关管脚即可。
原理图为了简洁,故只画出了示意图,行列方向只画出了2个三极管,屏幕只画出4个发光管,实际上发光管为256只,三极管行列方向各16只,一共32只。
焊接过程认真仔细一天时间即可完成全部制作。
将程序编译后烧写入89c51, 插入40pin Ic座,即可看到屏幕轮流显示:“倚天一出宝刀屠龙”。
当然,你可将程序的汉字代码部分更换为您所需要的代码即可显示你所需要的汉字。
程序清单:ORG 00HLOOP: MOV A,#0FFH ;开机初始化,清除画面MOV P0,A ;清除P0口ANL P2,#00 ;清除P2口MOV R2,#200D100MS: MOV R3,#250 ;延时100毫秒DJNZ R3,$DJNZ R2,D100MSMOV 20H,#00H ;取码指针的初值l100: MOV R1,#100 ;每个字的停留时间L16: MOV R6,#16 ;每个字16个码MOV R4,#00H ;扫描指针清零MOV R0,20H ;取码指针存入R0L3: MOV A,R4 ;扫描指针存入AMOV P1,A ;扫描输出INC R4 ;扫描指针加1,扫描下一个MOV A,R0 ;取码指针存入AMOV DPTR,#TABLE ;取数据表的上半部分的代码MOVC A,@A+DPTRMOV P0,A ;输出到P0INC R0 ;取码指针加1,取下一个码。
基于51单片机的图形液晶显示器汉字显示方法分析
89S51单片机的16×16点阵汉字显示的设计
• 134•针对LED 点阵显示汉字需要占用单片机多个并行口的问题,提出了基于89S51单片机的16×16点阵汉字显示设计,利用74HC138和74HC595对单片机并行口进行扩展,从硬件设计、软件设计方案等关键环节,分别进行了详细讨论。
随着单片机技术的发展,LED 点阵屏作为文字和图形显示的新型媒体,由于亮度高、耗能低、色彩鲜艳、寿命长等特点,迅速出现在学校、医院、车站等场所。
但LED 点阵显示需要占用单片机多个并行口,而通用移位寄存器74HC595T 和译码器74HC138,可以实现对单片机IO 的扩展,从而节约了大量的并口资源。
本设计详细介绍了74HC138和74HC595芯片在1616×16点阵LED 显示屏的应用。
1 电路总体设计16×16点阵汉字显示电路如图1所示,它由一片16×16点阵LED 显示屏、两片74HC138构成的行控制单元、两片74HC595构成的列控制单元及AT89S51单片机构成。
列控制单元用于输入数据,而行控制单元用于逐行扫描。
图1 系统总体结构1.1 16×16点阵工作原理本设计采用的是共阴16×16点阵显示模块。
它由256只发光二极管按一定规律安装成方阵,从内部结构如图2所示,可以看出,总共有16行和16列,每行的发光二极管阴极相连,每列的发光二极管阳极相连。
在行和列的交叉处有一个发光二极管,要使其中任一个二极管发光,则其对应行为低电位,而对应的列为高电位即可。
1.2 行控制单元行控制单元的控制原理是:先使第一行Y 0为低电平,其余行为高电平,显示第一行数据;然后第二行Y 1为低电平,其余行电平,显示第二行数据。
按照这个规律每行以较快的速度不断进行刷新,由于发光二极管的余辉效应和人的视觉暂留现象两个因素,给人的印象就是一组静态的数据,不会产生闪烁感。
动态显示能够节省I/O 端口,且功耗低。
本设计采用74HC138三位译码器。
汉字显示16X16点阵2
16X16点阵汉字显示89C51(测试OK)1汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p 07口。
方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。
即二进制00000100,转换为16进制为 04h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04 h.这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
C8051F020单片机与OCM320240K液晶模块的汉字显示设计
本 设 计 采 用 的金 鹏 电 子 有 限 公 司 O CM3 2 0 2 4 O K 图形 点 阵 液 晶 显 示 器 主 要 由行 驱 动 器 / 列驱动 器 , 3 2 0 2 4 0点 阵 液 晶 显 示 器及 S E D1 3 3 5组 成 , 有 1 7个 外 部 引脚 。与 CP U 的 8位 数 据 总线相连 , 实现数 据的并行输入 输出 , 通 过 控 制 与 CP U相 连 的
c u l t s b a s e d o n C 8 0 5 1 F 0 2 0 mi c r 0 一 c O n l r 0 l l e r a n d L CD mo d e 1 . a n d C 5 1 p r o g r a m.
Ke y wor ds: CS 051 F 0 2 0 mi cr o—c on t r ol l e r , SED1 3 35, di s pl a y o f Chi ne s e c ha r a c t er , OCM 3 2 02 4 0K
t h e s i mi l a r p r o d u c t s , i n OCM3 2 0 2 4 0 K h a s i n l a i d t h e g r a p h a n d c h a r a c t e r l i q u i d c r y s t a l d i s p l a y c o n t r o l l e r SE D1 3 3 5 T a k i n g l i q —
Ab s t r ac t OCM3 2O 24 OK a s t he gr a ph an d c ha r a c t e r l i qui d-cr y s t a l di s pl a y i s on e of c om pl e t e l y f un c t i on a l l i qui d-cr ys t a l di sp l a y s i n
单片机显控系统中的汉字输入方法
单片机显控系统中的汉字输入方法对于PC 机来说,输入汉字是非常简单的,但在一些单片机人机接口系统中,进行汉字的实时输入是很困难的,而大多只能显示事先已取好字模点阵的汉字,但是每个16 乘以16 汉字点阵由32 个字节表示,对于需要灵活使用大量汉字的场合,程序量太大,实现起来有很大难度;下面针对汉字库的结构进行分析,设计一种实用的汉字拼音输入法,并给出液晶汉字显示模块的基本程序。
1 汉字的内码表示针对不同的操作系统汉字内码表示不同,如在苹果机的OS 上使用的是GB231280 汉字编码,Window s 系统则使用GBK 汉字编码,还有Unicode 编码, GB180302000,方正748 编码等。
由于GB 231280 是最早(1980 年)的、由中国国家标准局颁布的《通用汉字字符集及其交换标准码》,所以以后产生的各编码都兼容了GB2312,他共收入汉字、字母、符号等7 445 个,其中汉字6 763 个,包括一级汉字3 755 个,二级汉字3 008 个,是中国大陆及海外使用简体中文的地区(如新加坡等)强制使用的惟一中文编码,所以也称为标准汉字库。
每个汉字的点阵数据需要占据内存32 B,有笔划显示的地方为1,无笔划显示的地方为0。
然后通过单片机的C51 语言将点阵数据转换成点阵液晶可显示的点阵数据形式。
2 汉字库的制作本节中论述将16 乘以16 点阵的宋体汉字库烧录到512 kB 的存储器中的具体方法。
本例中使用的存储芯片为AM29C040,该芯片是AMD 公司生产的512 kB 的FLASH ROM,读者也可以使用其他容量不小于256 kB 的产品,但在具体电路设计时应注意引脚定义和逻辑关系,并在烧录时选择相应的型号;UCDOS 软件有一。
单片机课程设计_16×16点阵式汉字显示
目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。
文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。
包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。
在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。
关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。
16X16点阵显示汉字
图(1)8×8 点阵 LED 外观及引脚图
图(2)8×8 点阵 LED 等效电路
2.2、LED 点阵的显示文字图形原理
图(3)16*16 点阵 汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及
4
户外广告等地方都有广泛的应用。下面是简单的汉字显示屏的制作,由单片机控 制汉字的显示内容。为了降低成本,使用了四块 8×8 的 LED 点阵发光管的模块, 组成了一个 16×16 的 LED 点阵显示屏,如图所示。在这里仅做了二十五个汉字 的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍 汉字显示的原理。
LED 驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫 描驱动电路就可以实现多行的同名列共用一套列驱动器。以 16×16 点阵为例, 把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起 (共阴的接法),先送出对应第 1 列发光管亮灭的数据并锁存,然后选通第 1 列 使其燃亮一定的时间,然后熄灭;再送出第 2 列的数据并锁存,然后选通第 2 列使其燃亮相同的时间,然后熄灭;….第 16 列之后,又重新燃亮第 1 列,反复 轮回。当这样轮回的速度足够快(每秒 24 次以上),由于人眼的视觉暂留现象, 就能看到显示屏上稳定的图形。该方法能驱动较多的 LED,控制方式较灵活, 而且节省单片机的资源。
2
一:概述
设计的意义和目的在大型商场、车站、码头、地铁站以及各类办事窗口和来 越多的公共场所需要用 LED 点阵显示图形和汉字。LED 行业已成为一个快速发 展的新兴产业,市场空间巨大前景广阔。随着信息产业的高速发展,LED 显示 最为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗 旨宣传的公共场所。显然,LED 显示已成为城市亮化、现代化和信息化社会的 一个重要标志。
适合单片机初学者制作的16×16汉字显示屏081301
以下是一段程序实例,显示“迎接北京2008奥运!”并缓慢向左移动。
源程序如下:ORG 0000HSJMP STARTORG 000BHAJMP ZDORG 0030HSTART: MOV SCON,#00H;设串口为方式0MOV SP,#60HMOV 20H,#00HMOV 21H,#00HMOV R1,#0FFHMOV R7,#02HMOV R4,#80HMOV TMOD,#02H;设T0为方式2定时(8位自动重装载方式)MOV TH0,#01HMOV TL0,#01HSETB EASETB ET0SETB TR0L1: MOV R6,#00H;列扫描计数清零MOV R0,#00HMOV A,R4D1: ACALL XIANSHI;左8位列扫描程序MOV P2,AACALL YS5MSRR AMOV P2,#00HINC R6CJNE R6,#08H,D1MOV A,R4D2: ACALL XIANSHI;右8位列扫描程序MOV P0,AACALL YS5MSRR AMOV P0,#00HINC R6CJNE R6,#10H,D2LJMP L1ZD: PUSH ACC;中断程序DJNZ R1,BACKMOV R1,#0FFHDJNZ R7,BACKMOV R7,#02HMOV A,DPL;调整数据指针ADD A,#02HMOV DPL,AMOV A,DPHADDC A,#00HMOV DPH,ABACK: POP ACCRETIXIANSHI:PUSH ACCMOV R2,#02HD3: MOV A,#TAB;读取表首地址ADD A,R0MOVC A,@A+DPTR;读取数据并送显示MOV SBUF,AJBC TI,$CLR TIINC R0DJNZ R2,D3CJNE A,#0F0H,D4;检测汉字是否送完MOV DPL,#00HMOV DPH,#00HD4: POP ACCRETYS5MS: MOV R3,#02H;延时5毫秒D5: MOV R5,#248DJNZ R5,$DJNZ R3,D5RETTAB: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;" ",显示用表格DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;" ",DB 40H,40H,41H,20H,0CEH,1FH,04H,20H,00H,40H,0FCH,47H,04H,42H,02H,41H;DB 02H,40H,0FCH,5FH,04H,40H,04H,42H,04H,44H,0FCH,43H,00H,40H,00H,00H;"迎",DB 08H,02H,08H,42H,08H,81H,0FFH,7FH,88H,02H,68H,82H,24H,8AH,2CH,4EH;DB 0B4H,53H,25H,32H,26H,12H,34H,2EH,2CH,42H,24H,0C2H,20H,02H,00H,00H;"接",DB 00H,10H,20H,30H,20H,18H,20H,08H,20H,04H,0FFH,7FH,00H,00H,00H,00H;DB 00H,00H,0FFH,3FH,40H,40H,20H,40H,30H,40H,18H,40H,10H,78H,00H,00H;"北",DB 00H,00H,04H,20H,04H,10H,0E4H,19H,24H,0DH,24H,41H,25H,81H,26H,7FH;DB 24H,01H,24H,01H,24H,05H,0E4H,0DH,06H,38H,04H,10H,00H,00H,00H,00H;"京",DB 00H,00H,70H,30H,08H,28H,08H,24H,08H,22H,88H,21H,70H,30H,00H,00H;"2",DB 00H,00H,0E0H,0FH,10H,10H,08H,20H,08H,20H,10H,10H,0E0H,0FH,00H,00H;"0",DB 00H,00H,0E0H,0FH,10H,10H,08H,20H,08H,20H,10H,10H,0E0H,0FH,00H,00H;"0",DB 00H,00H,70H,1CH,88H,22H,08H,21H,08H,21H,88H,22H,70H,1CH,00H,00H;"8",DB 00H,80H,00H,84H,0FEH,45H,22H,44H,2AH,25H,0B2H,14H,63H,0CH,0FEH,07H;DB 62H,0CH,0B2H,14H,0AAH,25H,22H,24H,0FEH,45H,00H,0C4H,00H,44H,00H,00H;"奥",DB 40H,40H,41H,20H,0CEH,1FH,04H,20H,00H,28H,20H,4CH,22H,4AH,0A2H,49H;DB 62H,48H,22H,4CH,0A2H,44H,22H,45H,22H,5EH,22H,4CH,20H,40H,00H,00H;"运",DB 00H,00H,00H,00H,00H,00H,0F0H,5FH,00H,00H,00H,00H,00H,00H,00H,00H;DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"!",DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H;"",DB 00H,0F0H;结束标志END。
单片机课程设计点阵汉字显示
单片机课程设计点阵汉字显示-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN摘要单片机是计算机技术、大规模集成电路技术和控制技术的综合产物。
经过30多年的发展历程,单片机应用已十分广泛和深入。
所以可以毫不夸张地说,任何设备和产品的自动化、数字化和智能化都离不开单片机。
现在,凡是电脑控制的设备和产品,必有单片机嵌入其中。
这一切表明,单片已成为人类生活中不可或缺的助手。
随着单片机应用的日益广泛,利用单片机控制汉字显示屏被广泛地应用与汽车报站器,广告屏等领域。
本文详细介绍了基于51单片机的LED显示屏控制系统的显示原理,对16*16点阵汉字进行显示,显示屏由4个8*8的LED点阵模块组成一个16*16点阵LED。
系统仿真利用PORTEUS仿真软件和KEIL软件的联调对LED点阵显示屏系统进行调试。
关键词: LED点阵显示屏单片机 PROTEUS仿真目录摘要................................................................................................................ 错误!未定义书签。
1 硬件设计........................................................................................................ 错误!未定义书签。
设计框图及介绍 ..................................................................................... 错误!未定义书签。
51系列单片机简介................................................................................ 错误!未定义书签。
51单片机驱动16×16LED点阵显示动画汉字汇编程序
51单片机驱动16×16LED点阵显示动画汉字汇编程序这里提供一个完整的AT89S51单片机驱动驱动led点阵显示具有动画效果的汉字的汇编程序列子.ORG0000HST:MOVA,#0FFH;初始化MOVP1,AMOVP2,AMOVP3,AMOVP0,ACLRA;正文显示CHINESE:MOVDPTR,#TAB1;查表指针指向TAB1LCALLHZ;结束动画SCREE: MOVDPTR,#TAB2;查表指针指向TAB2ACALLDDMOVDPTR,#TAB3;查表指针指向TAB3ACALLDDMOVDPTR,#TAB4;查表指针指向TAB4ACALLDDLJMPCHINESE;显示8幅画面子程序,SCREE专用,用字模软件字要倒置(表必须深256字节)DD:MOVB,#00HMOVR0,#08H;显示8幅画面AJMPCCCC0:MOVA,BADDA,#20H;指向下一幅画面MOVB,ACC:MOVR7,#08H;画面停留时间MOVR3,BMOV37H,R0LCALLENTERDIS00:LCALLDISPLAYDJNZR7,DIS00MOVR0,37HDJNZR0,CC0RET;汉字上移子程序,可显示8个汉字,(表必须深256字节)HZ:MOVR3,#00H;查表偏移量MOVR5,#81H;查表128次MOVBACK:MOVR4,#10H;使显示完一个汉字MOVBACK0:MOVR7,#02H;一桢画面显示时间MOVR0,#6DH;低8位R0指向显示缓存倒数第3个字节,以备与最后1个字节交换MOVR1,#6CH;高8位R1指向显示缓存倒数第4个字节,以备与倒数第2个字节交换MOVR2,#10H;内存后移的次数DJNZR5,MOVBACK1RET;显示完该表,返回MOVR0,AMOVA,R3;指向下一字节INCAMOVR3,AMOVA,R3;指向下一字节INCAMOVR3,AMOV30H,R3;保护数据MOV31H,R4MOV32H,R5DISMOV:LCALLDISPLAY;显示当前数据DJNZR7,DISMOVMOVR3,30HMOVR4,31HMOVR5,32HDJNZR4,MOVBACK0MOV30H,R3;保护数据MOV32H,R5MOVR7,#24H;显示当前数据延时DISMOV0:LCALLDISPLAYDJNZR7,DISMOV0MOVR3,30HMOVR5,32HLJMPMOVBACK;放进一幅显示数据到显示缓存子程序,要先设好指针DPTR和R3,影响R1,R2,R3ENTER:MOVR1,#50H;从50H单元起把表存入MOVR2,#20H;查表次数MOVA,R3MOVR3,A;将指针修改结果存入R3DJNZR2,CLLOOP_;没查完转CLLOOP_RETMOVR6,#7FH;赋扫描字初值,左移后初值为0FEHMOVR5,#00H;列扫描低8位控制MOVR0,#50H;行的高8(p1)位要显示的数据起始地址MOVR1,#10H;扫描次数CPLA;数据取反以适合显示MOVP0,A;送入行的低8(p0)位要显示的数据INCR0;R0指向下一个高8(p0)位要显示的数据LCALLNE某T;调用列扫描程序LCALLDELAY1MS;显示延时DJNZR1,DISLOOP;一桢显示完返回MOVP3,#0FFH;全灭RET ;列扫描子程序DISLOOP专用NE某T:JNCNE某T1;C=0转扫描高8(p3)位行MOVA,R6;修改扫描字RLAMOVR6,AINCR5CJNER5,#09H,NE某T0;R6=#0FEH时C=0AJMPNE某T1BACK:RETNE某T0:MOVP2,R6;扫描低8(p2)位行AJMPBACKNE某T1:MOVP2,#0FFHMOVP3,R6;扫描高8(p3)位行MOVA,R6;修改扫描字工作方式1;16位方式TR0=1;//启动定时器T0P1=0某3f;//P1端口初值,允许接收,缓存,显示IE=0某87;//允许定时器T0中断IT0=1;IT1=1;PT0=1;while(1){delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{dipram[i]=Bmp[5][i];huancun[i]=Cmp[5][i];if(i%2)delay(70);}dela y(100);for(i=0;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j+ +){for(k=0;k<15;k++){huancun[k某BLKN]=huancun[(k+1)某BLKN];huancun[k某BLKN+1]=huancun[(k+1)某BLKN+1];dipram[k某BLKN]=dipram[(k+1)某BLKN];dipram[k某BLKN+1]=dipram[(k+1)某BLKN+1];}huancun[30]=Bmp[i][j某BLKN];huancun[31]=Bmp[i][j某BLKN+1];dipram[30]=Bmp[i][j某BLKN];dipram[31]=Bmp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果半屏卷帘{dipram[i]=Bmp[5][i];huancun[i]=Cmp[5][i];if(i%2)delay(70);}for( i=0;i<6;i++)//显示效果,左跑马{for(j=0;j<2;j++)for(k=1;k<9;k++){for(l=0;l<16;l++){huancun[l某BLKN]=huancun[l某BLKN]<<1|huancun[l某BLKN+1]>>7;huancun[l某BLKN+1]=huancun[l某BLKN+1]<<1|Cmp[i][l某BLKN+j]>>(8-k);dipram[l某BLKN]=dipram[l某BLKN]<<1|dipram[l某BLKN+1]>>7;dipram[l某BLKN+1]=dipram[l某BLKN+1]<<1|Bmp[i][l某BLKN+j]>>(8-k);}delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:半屏卷帘{dipram[i]=Bmp[5][i];huancun[i]=Cmp[0][i];if(i%2)delay(70);}for( i=1;i<7;i++)//显示效果:向下滚屏{for(j=16;j>0;j--){for(k=15;k>0;k--){huancun[k某BLKN]=huancun[(k-1)某BLKN];huancun[k某BLKN+1]=huancun[(k-1)某BLKN+1];dipram[k某BLKN]=dipram[(k-1)某BLKN];dipram[k某BLKN+1]=dipram[(k-1)某BLKN+1];}huancun[0]=Bmp[i-1][(j-1)某BLKN];huancun[1]=Bmp[i-1][(j-1)某BLKN+1];dipram[0]=Bmp[i-1][(j-1)某BLKN];dipram[1]=Bmp[i-1][(j-1)某BLKN+1];delay(70);}}delay(1000);for(i=0;i<6;i++)//显示效果,右跑马{for(j=2;j>0;j--)for(k=1;k<9;k++){for(l=0;l<16;l++){/某for(m=0;m<32;m++)//显示效果:卷帘出{dipram[m]=Bmp[5][m];}某/huancun[l某BLKN+1]=huancun[l某BLKN+1]>>1|huancun[l某BLKN]<<7;huancun[l某BLKN]=huancun[l某BLKN]>>1|Bmp[i][l某BLKN+j-1]<KN+1]=dipram[l某BLKN+1]>>1|dipram[l某BLKN]<<7;dipram[l某BLKN]=dipram[l某BLKN]>>1|Bmp[i][l某BLKN+j-1]<+)//显示效果:卷帘入{huancun[i]=0某00;dipram[i]=0某00;if(i%2)delay(70);}}}//延时函数voiddelay(unignedintdt){regiterunignedcharbt;for(;dt;dt--)for(b t=0;bt<255;bt++);}//显示屏扫描(定时器T0中断)函数voidleddiplay(void)interrupt1uing1{regiterunignedchari,j=BLKN;TH 0=0某f8;//设定显示屏刷新率每秒62.5TL0=0某30;i=P1;//读取当前显示的行号i=++i&0某0f;//行号加一,屏蔽高四位do{j--;SBUF=huancun[i某BLKN+j];//送显示数据while(!TI);TI=0;}while(j);j=2;do{j--;SBUF=dipram[i某BLKN+j];//送显示数据while(!TI);TI=0;}while(j);//完成一行数据的发送G=1;//消隐(关闭显示)P1&=0某f0;//行号端口清零RRCLK=1;//显示数据打入输出锁存2022-5-712:10回复肥肠炒饭器P1|=i;//写入行号RRCLK=0;//所存显示数据G=0;//打开显示}3楼voide某ter0(void)interrupt0{//unignedchardatadipram[32];unignedcharcodeDmp[][32]={{0某40,0某00,0某20,0某00,0某FC,0某3F,0某04,0某20,0某04,0某20,0某E4,0某27,0某24,0某24,0某24,0某24, 0某24,0某24,0某24,0某24,0某E4,0某27,0某24,0某24,0某04,0某20,0某04,0某28,0某04,0某10,0某00,0某00},/某\向\ {0某40,0某00,0某40,0某10,0某FE,0某3F,0某40,0某10,0某40,0某08,0某40,0某04,0某FF,0某7F,0某80,0某01, 0某40,0某00,0某30,0某0C,0某2C,0某03,0某E3,0某00,0某20,0某20,0某20,0某20,0某C0,0某3F,0某00,0某00},/某\老\ {0某10,0某00,0某D0,0某7F,0某12,0某04,0某12,0某04,0某D2,0某7F,0某52,0某44,0某52,0某44,0某52,0某44, 0某52,0某44,0某4A,0某44,0某4A,0某54,0某48,0某24,0某04,0某04,0某02,0某04,0某01,0某04,0某00,0某04},/某\师\{0某50,0某00,0某90,0某00,0某88,0某3D,0某88,0某20,0某2C,0某20,0某24,0某20,0某26,0某20,0某25,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某28,0某24,0某10,0某00,0某00},/某\们\ {0某00,0某02,0某FE,0某06,0某08,0某02,0某28,0某02,0某44,0某7F,0某FE,0某11,0某50,0某12,0某10,0某12, 0某FE,0某12,0某10,0某0A,0某10,0某04,0某10,0某04,0某F0,0某0A,0某1E,0某11,0某80,0某60,0某40,0某20},/某\致\ {0某48,0某04,0某48,0某04,0某FF,0某05,0某48,0某04,0某04,0某7E,0某FC,0某22,0某82,0某23,0某81,0某12, 0某BC,0某14,0某A4,0某14,0某A4,0某08,0某BC,0某08,0某80,0某14,0某80,0某72,0某A0,0某21,0某40,0某00},/某\敬\};regiterunignedchari,j,k;delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{dipram[i]=Dmp[0][i];if(i%2)delay(70);}delay(100);for(i=1;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j++){for(k=0;k<15;k++){dipram[k某BLKN]=dipram[(k+1)某BLKN];dipram[k某BLKN+1]=dipram[(k+1)某BLKN+1];}dipram[30]=Dmp[i][j某BLKN];dipram[31]=Dmp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:卷帘入{dipram[i]=0某00;if(i%2)delay(70);}}voide某ter1(void)interrupt2{unignedcharcodeEmp[][32]={{0某40,0某00,0某40,0某10,0某FE,0某3F,0某40,0某10,0某40,0某08,0某40,0某04,0某FF,0某7F,0某80,0某01, 0某40,0某00,0某30,0某0C,0某2C,0某03,0某E3,0某00,0某20,0某20,0某20,0某20,0某C0,0某3F,0某00,0某00},/某\老\ {0某10,0某00,0某D0,0某7F,0某12,0某04,0某12,0某04,0某D2,0某7F,0某52,0某44,0某52,0某44,0某52,0某44, 0某52,0某44,0某4A,0某44,0某4A,0某54,0某48,0某24,0某04,0某04,0某02,0某04,0某01,0某04,0某00,0某04},/某\师\ {0某50,0某00,0某90,0某00,0某88,0某3D,0某88,0某20,0某2C,0某20,0某24,0某20,0某26,0某20,0某25,0某20, 0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某20,0某24,0某28,0某24,0某10,0某00,0某00},/某\们\{0某40,0某00,0某80,0某00,0某FE,0某3F,0某00,0某00,0某08,0某08,0某10,0某04,0某20,0某02,0某FF,0某7F, 0某80,0某00,0某80,0某00,0某FE,0某1F,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00},/某\辛\ {0某20,0某04,0某20,0某04,0某FE,0某7F,0某20,0某04,0某A0,0某04,0某80,0某00,0某FF,0某7F,0某80,0某00, 0某80,0某00,0某F8,0某0F,0某08,0某08,0某08,0某08,0某08,0某08,0某F8,0某0F,0某08,0某08,0某00,0某00},/某\苦\ {0某00,0某00,0某FE,0某3F,0某00,0某18,0某00,0某06,0某80,0某01,0某80,0某00,0某80,0某00,0某80,0某00, 0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某80,0某00,0某A0,0某00,0某40,0某00},/某\了\};regiterunignedchari,j,k;delay(1000);for(i=0;i<32;i++)//显示效果:卷帘出{huancun[i]=Emp[0][i];if(i%2)delay(70);}delay(100);for(i=1;i<6;i++)//显示效果:上滚屏{for(j=0;j<16;j++){for(k=0;k<15;k++){huancun[k某BLKN]=huancun[(k+1)某BLKN];huancun[k某BLKN+1]=huancun[(k+1)某BLKN+1];}huancun[30]=Emp[i][j某BLKN];huancun[31]=Emp[i][j某BLKN+1];delay(70);}}delay(1000);for(i=0;i<32;i++)//显示效果:卷帘入{huancun[i]=0某00;if(i%2)delay(70);}}单片机16某16点阵显示你好程序2022年05月10日星期日16:49 //测试硬件:at8951+16某16点阵LED//16某16点阵LED显示中文程序//本程序逐个显示中文,从右至左流动显示//使用横向,流动只有字节间操作//--------------------------------#include#defineSELP3//行选线,P3低四位#defineUP8P0//点阵文字上8行IO#defineDOWN8P2//点阵文字下8行IOunignedcharcodeFontData[5][32]={/某--文字:你--某//某--宋体12;此字体下对应的点阵为:宽某高=16某16--某/0某09,0某00,0某09,0某80,0某11,0某04,0某13,0某FE,0某22,0某04,0某34,0某48,0某68,0某40,0某A2,0某50, 0某23,0某48,0某22,0某48,0某24,0某44,0某24,0某46,0某28,0某44,0某21,0某40,0某20,0某80,0某00,0某00/某--文字:好--某//某--宋体12;此字体下对应的点阵为:宽某高=16某16--某/0某10,0某00,0某11,0某FC,0某10,0某08,0某10,0某10,0某FC,0某20,0某24,0某20,0某24,0某20,0某27,0某FE, 0某44,0某20,0某64,0某20,0某18,0某20,0某08,0某20,0某14,0某20,0某26,0某20,0某44,0某A0,0某80,0某40};voidDelay_50u(unignedchart)//50u延时程序{unignedcharj;for(;t>0;t--)for(j=19;j>0;j--);}voidDiNFont(unignedchar某FontBufferStart,unignedcharN,unignedcharTime)//流动显示N个汉字{//参数三个:字符串字模首地址、字数、显示流动速度unignedcharFontNum,i,j,row;//循环变量,字数计数、16次流动、16列扫描for(FontNum=0;FontNumfor(i=0;i<16;i++)//字到字流动16次左移才能完成{for(j=0;jfor(row=0;row<16;row++)//显示16某16屏幕一次{SEL=row;//选通显示列UP8=某(FontBufferStart+FontNum某32+(i+row)某2+1);//获取显示数据循环显示关键算法DOWN8=某(FontBufferStart+FontNum某32+(i+row)某2);//以移动偏移为基础获取新数据Delay_50u(15);//适当延时UP8=0某00;//关闭显示DOWN8=0某00;//关闭显示防止花屏}}}}}voidmain(void){while(1){DiNFont(FontData[0],5,20);}求16某16点阵C程序悬赏分:200-解决时间:2022-11-918:17P1口接154做列扫描P0P2直接接点阵高分求一c程序谢谢~!问题补充:谢谢了·!还可以继续追分就没有人能帮帮我吗哪怕是给我点提示也好是单片机的C程序提问者:milegh-三级最佳答案/某某某某某某某某某某某某某某某点阵字模工具编程辅助效果示例某某某某某某某某某某某某某某某//某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某该示例中的字模数组均由“点阵字模工具”生成,你可以用你自己需要的点阵信息来替换示例中的字模信息,注意字模大小要一致,否则显示会出问题。
单片机控制的LCD汉字显示电路设计(独家完整版)
单片机控制的LCD汉字显示电路设计1概述自20世纪以来,电子行业发生着翻天覆地的变化。
电子行业的发展推动着社会的发展,因此,世界各国也大力发展电子行业。
其中,在电子行业中,显示器产业是其中尤为重要的产业之一。
然而,在显示器产业中,LCD技术是最重要的技术之一。
众所周知,单片机像是电子行业中发挥着巨大作用的精灵。
它的能耗小、价格低廉,在简单的电子实验方面的应用非常广泛,在教育教学中深受广大电子教育工作者的喜爱。
1.1课题背景在电子行业中,LCD已被公认为是媒体时代的关键器件,它的低功耗、体积小、易于实现画面显示及优良的全色显示性能等特点,使其在现代社会中得到了广泛的应用。
可以说,LCD是本世纪初最有活力的电子产品之一。
与此同时,单片机的应用领域也非常广泛,大到导弹的导航装置,飞机上各种仪表的控制,小到广泛使用的智能IC卡,比如学校中使用的校园一卡通等,这些都离不开单片机。
因此,通过使用单片机可以使我们完成很多令我们意想不到的事情。
所以,本着理论与实践相结合的原则,本设计以单片机为核心控制器件控制LCD显示模块,通过硬件和软件的共同配合实现在128×64点阵液晶屏上显示汉字、字符等的功能,本系统由ATMEGA8单片机和点阵式液晶显示屏模块构成。
1.2设计要求系统硬件设计:系统选用ATMEGA8单片机作为主控和处理设备,LCD12864模块作为输出设备。
系统软件设计:微控制器处理和LCD模块显示部分的程序设计。
1.3 LCD简介及发展液晶显示器是一种采用了液晶控制透光度技术来实现色彩的显示器。
众所周知,即使长时间观看LCD显示屏幕也不会对眼睛造成伤害,这主要是因为LCD显示器没有辐射,画面图像很稳定。
LCD 可分为段位式LCD、字符式LCD 和点阵式LCD。
其中,段位式LCD 和字符式LCD 只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD 不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、分区开窗口、反转、闪烁等功能,用途十分广泛。
基于单片机的汉字滚动显示器的设计(软件)
基于单片机的汉字滚动显示器的设计(软件)[摘要]:设计并制作了一种采用单片机动态扫描控制的led图文显示屏,本设计采用单片机控制的led显示屏的文字图形的滚动显示,通过提取单片机内程序设置好的字模库中16进制数并将数据以列扫描的控制方式发送给led显示屏,成功的实现了用单片机对led显示屏上文字和图形左移显示、右移显示、上滚显示、下滚显示。
需要显示的汉字较多时,直接将字库部分单独设置在整个电路的控制电路部分,掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。
[关键词]:at89s52 led显示屏动态扫描 16×16点阵一、系统设计方案及主控芯片简介1.系统工作原理系统采用以at89s52单片机为核心芯片的电路来实现,主要由at89s52芯片、时钟电路、复位电路、列扫描驱动电路(74hc154)、16×16 led点阵5部分组成。
我们把行列总线接在单片机的io口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。
但是若将led点阵的行列端口全部直接接入at89s52单片机,则需要使用32条io口,这样会造成io资源的耗尽,系统也再无扩充的余地。
因此,我们在实际应用中只是将led点阵的16条行线直接接在p0口和p2口,至于列选扫描信号则是由4-16线译码器74hc154来选择控制,这样一来列选控制只使用了单片机的4个io口,节约了很多io资源,为单片机系统扩充使用功能提供了条件。
考虑到p0口必需设置上拉电阻,我们采用4.7kω排电阻作为上拉电阻。
汉字扫描显示的基本过程是这样的:通电后由于电阻r1,电容c1的作用,使单片机的rst复位脚电平先高后低,从而达到复位;之后,在c2,c3,x1以及单片机内部时钟电路的作用下,单片机at89c52按照设定的程序在p0和p2接口输出与内部汉字对应的代码电平送至led点阵的行选线(高电平驱动),同时在p1.1,p1.2,p1.3,p1.4接口输出列选扫描信号(低电平驱动),从而选中相应的象素led发光,并利用人眼的视觉暂留特性合成整个汉字的显示。
基于proteus的单片机汉字点阵显示电路设计
基于proteus的单片机汉字点阵显示电路设计在现代电子技术中,单片机汉字点阵显示电路设计已经成为很多领域广泛使用的技术。
通过它,我们可以方便地在屏幕上显示出各种汉字图案,为用户提供简便的操作体验。
本文将介绍如何基于proteus 设计出一个高效稳定、准确显示汉字的单片机汉字点阵显示电路。
第一步,我们首先需要明确所需材料。
材料包括一个单片机、一个电容、若干个二极管、若干个电阻、一个晶体振荡器和一个点阵显示屏等。
这些材料的选取关系到电路的性能和稳定性,务必认真选择品质较好的材料。
第二步,为单片机编写汉字点阵的显示程序。
我们可以使用C语言编写,并结合各芯片自带的编译器来编写出相应的代码。
在编写程序时,需要注意灵活性和可读性,方便后期对代码的修改和维护。
第三步,设计电路原理图。
通过proteus软件,我们可以用原理图来设计电路。
在电路中,需要通过各种元件相互配合,为单片机提供稳定的电源和信号输入输出等必要支持,同时点阵显示屏也需要接受来自单片机的控制信号,才能显示出汉字图案。
需要特别注意的是,各个元件的连接方式和节点的名称必须按照标准进行设置,遵循规范化的电路原理图设计。
第四步,验证电路实现。
通过连接好硬件和编写代码,可以利用烧录工具将程序烧录到单片机上,并将单片机和显示屏连接好,最终实现汉字的点阵显示。
通过实际测试和观察,可以验证电路原理图的正确性和可靠性,同时寻找到可能存在的问题并加以修改。
通过以上步骤,我们可以基于proteus设计出一个高效稳定、准确显示汉字的单片机汉字点阵显示电路。
当然,这只是一个简单的示范,若想在实际应用领域中发挥更大的作用,需要不断学习和探究,经过不断实践和改进,完善自己的技术和能力。
基于单片机的点阵汉字显示(附C语言程序)资料
湖南科技大学测控技术与仪器专业单片机课程设计题目基于单片机的点阵汉字显示设计姓名学号指导教师成绩____________________湖南科技大学机电工程学院二〇一五年十二月制摘要LED显示屏在我们的周围随处可见,它的应用已经普及到社会中的方方面面。
作为一种新型的显示器件,在许多场合都可以见到它的身影,不仅是它的应用使呈现出来的东西更加美观,更重要的是它的应用方便,成本很低,除了能给人视觉上的冲击外,更能给人一种美的享受。
LED显示屏是由多个发光二极管按矩阵形式排列封装而成,通常用来显示时间、图文等各种信息。
本设计是基于STC89C51单片机的16*16点阵式显示屏,该LED显示屏能实现16*16个汉字,简单的显示图像, 然后一直循环着显示下去。
该设计包含了硬件、软件、调试等方案,只需简单的级联就能实现显示屏的拓展,但要注意不要超过负载能力。
本次设计的作品体积小、功能多、方便实用、花费小,电路具有结构简单、操作方便、精度高、应用广泛的特点。
关键词: LED,STC89C51单片机,显示屏目录摘要 (i)第一章系统功能要求 (1)1.1系统设计要求 (1)第二章方案论证 (1)2.1方案论证 (1)第三章系统硬件电路设计 (1)3.1 STC89C51芯片的介绍 (1)3.1.1 系统单片机选型 (1)3.1.2 STC89C51引脚功能介绍 (2)3.1.374LS595的总体特点和工作原理..........................................3.2 LED点阵介绍 (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系列的单片机为核心器件;组成一个点阵式汉字显示屏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1.课程设计目的 (1)2.课程设计题目和要求 (1)3.设计内容 (1)3.1设计概述 (1)3.2单元电路设计 (2)3.2.1单片机选型 (2)3.2.2 驱动单元 (5)3.2.3 显示单元 (8)4.系统的掉电,复位信号生成电路 (10)5.电源 (11)6.软件设计 (13)7.设计总结 (16)附录Ⅰ (18)附录Ⅱ (27)参考文献 (28)1.课程设计目的通过对课题的研究,更加深入,具体的复习所学的有关单片机的知识,从而实现学以致用的根本目标。
在设计中,可以全面检查设计者的知识结构以及对知识的掌握情况,从而更好的促进设计者进行二次学习,巩固基础知识。
通过设计,学生的动手能力得到提高,对单片机最小系统控制下的LED显示方式有了全面了解。
本次设计主要应用的知识有:单片机I/O的应用,8位串行输入并行输出寄存器的应用以及LED汉字显示的扫描方式。
2.课程设计题目和要求(1)课程设计题目:基于单片机的LED动态显示(2)要求○1用16×16 LED点阵显示,静态显示“同一个世界,同一个梦想”10个字。
○2硬件设计避免繁琐,达到所需功能即可。
○3软件设计采用模块化设计。
3.设计内容3.1设计概述本系统采用AT89C51单片机作控制器,整个电路主要由单片机控制及驱动显示电路、电源电路等部分组成。
通常LED点阵显示应该准备用于存储点阵码的字库存储器,但是为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。
而采用软件编程的方式生成字库,并通过扫描驱动的方式将字库中的信息反映到LED阵列的行和列上,从而实现字符的显示。
工作前需要用过编程软件将要显示的字符以程序代码的形式生成字库并存入单片机的存储器中,以便系统工作时调用字库,完成显示。
工作时,字库中的数据通过AT89 C51的P1.0管脚与P1.4管脚串行输出,数据传输到两组由两个74HC959级联而成的寄存器中。
在数据的传输过程中P1.1管脚与P1.5管脚用来以输出脉冲的方式控制两组寄存器中数据的位移,P1.2管脚用来控制寄存器内数据的更新与输出,P1.3管脚用来将寄存器内的数据清零。
采用扫描驱动时,两组寄存器内的数据以高低电平的形式同时输出,使得符合导通条件的LED导通发光,不断重复这样的发光过程并利用人眼的视觉惰性达到显示字符的目的(设计框图见图1)。
图1 LED显示系统设计框图3.2单元电路设计3.2.1单片机选型单片机是微型计算机的一个重要分支,也是一种非常活跃且颇具有生命力的机种。
它只需要与适当的软件及外部硬件相结合,便可构成一个单片机系统。
基于单片机的系统设计简单,安装方便,适应性强,应用十分广泛。
目前,随着科技的发展,C语言的运用越来越广,与汇编语言相比它具有编程灵活,移植性强等特点,因此C语言具有更好的适应性,所以C语言已被广泛应用于单片机的编程工作。
鉴于以上因素,本系统选用支持C语言编程的AT89C51单片机作为核心部件。
(如图2所示)由于本次设计重点在于单片机的使用方法,对于单片机内部的结构知识要求相对较少,所以选择单片机型号时要注意所选单片机管脚的功能。
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8 位单片机,片内含4KB的可反复擦写的只读程序存储器(单片机的可擦除只读存储器可以反复擦除1000次)和128KB的随机存储数据存储器,器件兼容MCS-51指令系统,片内置通用8 位中央处理器和Flash存储单元,32个I/0口线,两个16 位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0H静态逻辑操作。
并支持多种软件可选的节电工作模式。
空闲z方式时停止CPU的工作,但允许RAM,定时器/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作,直到下一个硬件复位。
图2 AT89C51芯片图及其电气原理图AT89C51的P0口是一个8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能以吸收电流的方式驱动8 个TTL逻辑门电路,对端口写“1”时可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0接受指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。
其P1口是一个内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在Flash编程和程序校验期间,P1接受低8位地址。
P2口为一个带有内部上拉电阻的8位双向I/O口,P2的缓冲输出级可驱动4个TTL逻辑门电路门,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时(如执行MOV@DPTR指令时),P2口输出地址的高八位。
在给出地址“1”时,它利用内部的上拉优势,输出电流。
当对外部八位地址数据存储器进行读写时(如执行MOV@R1指令时),P2口输出其特殊功能寄存器的内容而且P2口线上的内容在整个访问期间保持不变。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,例如P3.0 RXD(串行输入口),P3.1TXD(串行输出口),P3.2/INT0(外部中断0),P3.3/INT1(外部中断1),P3.4T0(记时器0外部输入),P3.5T1(记时器1外部输入),P3.6/WR(外部数据存储器写选通),P3.7/RD(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。
除上述管脚外,AT89C51还有以下几个管脚:RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE 只有在执行MOVX,MOVC指令时ALE才起作用。
此外,该引脚被略微拉高单片机执行外部程序时,应设置ALE无效。
PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间只访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
如果加密位LB1被编程,EA将内部锁定为RESET;当/EA端保持高电平时,此间访问内部程序存储器。
在FLASH 编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
在熟悉各个管脚的功能后,就可以参照所学习过的8031单片机的使用方法进行系统的设计。
系统工作时,P1.0管脚作为点阵数据引脚,其功能是将寄存器中的点阵码以串行通信的方式传送给控制行显示的两片位移寄存器74HC595。
P1.1管脚作为数据时钟引脚,用来控制74HC595的数据输入。
当P1.1的输出由低电平转为高电平时寄存器内的数据完成一次位移,反之寄存器内的数据保持不变。
P1.2管脚作为数据锁存引脚,当P1.2的输出由低电平转为高电平时,74HC595的内部寄存器中的数据进入数据存储器,为输出做准备。
反之存储的数据不变。
P1.3管脚为总清除引脚,输出低电平时,74HC595内的数据被清零。
P1.4管脚为地址数据引脚,其对74HC595的作用与P1.0管脚完全相同,但是P1.4输出的数据作为列扫描时的地址使用。
P1.5管脚为地址时钟引脚,用来控制地址的形成,其工作方式与P1.1管脚完全一致。
P1.6管脚为地址锁存引脚,用来控制地址的更新,其工作方式与P1.2完全相同。
P1.7为控制引脚,其输出为低电平时,为一起存起允许输出,反之,禁止输出。
3.2.2 驱动单元16×16LED显示屏是以扫描方式完成字符显示的,工作过程中,显示器需要16个行输出端,而通常情况下,每一个片子只有8个输出端,所以所选芯片必须可以级联使用。
同理,对于列来说,同样需要16个输出端来确定每次扫描的地址。
所以,也应该选择能够级联使用的芯片。
此外,若想以逐一扫描的方式显示字符,那么所选的驱动芯片必须具有并行输出功能,以便能够在行与列的数据准备好时同时输出,进而完成扫描输出。
又因为字符的点阵码和扫描地址是以串行通信的方式从单片机的P1.0管脚与P1.4管脚输出的,所以,所选用的驱动芯片必须具有接收串行输入信号的功能,以便接受以串行形式输入的点阵码及地址码。
鉴于以上原因,本次设计选用74HC595作为驱动芯片。
74HC595是硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标。
74HC595具有8位移位寄存器和一个存储器,具有三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(SI),一个串行输出(QH),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
此外,内置存储状态寄存器,三种状态输出寄存器可以直接清除。
具有100MHz的移位频率,输出能力强,可以并行输出,串行输出,总线驱动。
是一种标准中等规模集成电路。
(见图3)图3 74HC595芯片图74HC595集成电路的功能表如表1所示:表1 74HC595集成电路的功能表74HC595各个引脚的功能如下:Q1到Q7 是并行数据输出口,即储寄存器的数据输出口。
SI为串行数据输入口。
SQH(9脚)为串行输出口,即级联输出端,他可以接下一个74HC595的SI端,与时钟信号和地址信号相配合完成芯片的级联使用。