0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析Proteus与汇编语言的汉字点阵动态显示

电子工程师 来源:电子技术期刊 作者:冯旭,王刚 2021-04-07 16:03 次阅读

Proteus软件的使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者可以直接用Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。

0 引言

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它可以仿真、分析各种模拟器件和集成电路,该软件的特点是:

a.实现了单片机仿真和 SPICE电路仿真相结合。具有模拟电路、数字电路仿真、单片机及其外围电路的仿真、各种虚拟仪器,如示波器等功能。

b.支持主流单片机系统的仿真。

c.提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

d.具有强大的原理图绘制功能。Proteus软件的使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者可以直接用Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。汉字点阵显示电路设计时,显示部分应用16×16点阵字模提取软件,提取“广东工贸”显示汉字的字模数据,通过查表取出字模数据送输出动态显示。

1 汉字显示电路设计

汉字点阵的控制电路采用AT89C51单片机,硬件电路由单片机接口电路、LED显示屏行列驱动电路、LED点阵显示屏三部分组成,如图1所示,电路用Proteus软件画出,具体画法参见文献。

pIYBAGBtZfmAOqbFAAE33HujruM546.png

一般情况下要完全显示出常用汉字至少需要16×16点阵,但由于Proteus元件库中没有16×16LED模块,为了达到显示要求,每个汉字可由四块8×8 LED模块组成。组合方式为先对每个8×8模块行列引脚连接好总线,然后四个单色模块组合紧密。

驱动电路采用动态扫描驱动方式,设计中行驱动信号采用了16个同向驱动器7407,并在每根信号线上接上拉电阻;列驱动信号先接-4-16译码器74HCl54,然后十六个列驱动信号接16个反向驱动器7406,并每根信号线接上拉电阻。

单片机上电复位后,当按列扫描时,四个汉字的第一个字由Pl口输出列信号,首先第l列输出“1”,第l列字模数据由16行输出(P0、P2口);然后延时一定时间后,第2列输出“l”,第2列字模数据再由16行输出;……;如此循环,直至第16列;16列扫描完成后,再进行下一次循环扫描。所以在某一时刻,只有一行或一列LED被对应的字模数据驱动点亮。只要扫描间隔时间合适,利用人眼的视觉暂留特性,看上去整个字符就显示在LED点阵显示器上。

2 汉字显示程序设计

根据以上硬件电路和单片机控制原理,编程思路如图2所示。

o4YBAGBtZgiAQvIxAADnZ3D1YAg416.png

完整的程序代码如下:

MOV DPTR,#WORDTAB;初始化

MOV Rl,#0

MOV R2,#0

MOV R3,#16

MOV R4,#100

MOV R5,#4

LOOP:SETB P1.4

MOV A,R1 :查表取出字模数据经P0口输出

MOVC A,@A+DPTR

CPLA

MOVP0,A

INC R1 ;字模数据索引值加1

MOVA,R1 ;查表取出字模数据经P2口输出

MOVC A,@A+DPTR

CPLA

MOVP2,A

INC R1 ;字模数据索引值加1

MOV P1,R2 ;列控制信号输出

INC R2 ;列控制寄存器加1

LCALL DELAY;显示延时

DJNZ R3,LOOP;判断16列显示完否

DJNZ R4,K1 ;判断是否已显示100次

MOV R4,#100 ;显示次数寄存器重赋初值

SJMPK2

K1:CLRC ;字模数据索引值减32,列控制寄存器和列数寄存器重赋初值

pIYBAGBtZq6AQfXpAAIju9UdWxI210.png

3 仿真及结果

仿真方法是:

(1)在Keil C51仿真软件下创建项目,并把上述源程序添加到项目中,通过编译产生一个“.hex”为后缀的文件,此文件就是用于烧写到Proteus软件中AT89C51芯片的文件。

(2)把生成的“.hex”为后缀的文件添加到Proteus软件中绘制的AT89C51芯片中作为控制程序。

(3)在Proteus软件仿真电路图中点击左下角的运行按钮,则可在LED显示点阵中看到“广东工贸”四个汉字轮流显示的结果。

从仿真图中可以看到“东”字在LED显示点阵中显示出来,设定每个字显示1秒,下秒将显示“工”字,“广东工贸”四个字循环显示。四个字显示出来如图3所示。

o4YBAGBtZjyACkt_AADwX_SNjd8193.png

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22420

    浏览量

    645784
  • 驱动器
    +关注

    关注

    51

    文章

    7293

    浏览量

    142840
  • 元件
    +关注

    关注

    4

    文章

    589

    浏览量

    36201
收藏 人收藏

    评论

    相关推荐

    求助,有什么学习汇编语言的速成好方法吗?

    有什么学习汇编语言的速成好方法吗?
    发表于 11-03 07:32

    Arduino篇—点阵动态显示

    通过编写程序,实现点阵动态显示数字0~9。本节课内容主要通过代码的方式来进行讲解,图形化由于在后续使用点阵屏模块的时候会非常容易,所以不在这里赘述。
    的头像 发表于 11-01 15:25 429次阅读
    Arduino篇—<b class='flag-5'>点阵</b>屏<b class='flag-5'>动态显示</b>

    基于Proteus汇编语言汉字点阵动态显示

    电子发烧友网站提供《基于Proteus汇编语言汉字点阵动态显示.pdf》资料免费下载
    发表于 10-30 11:31 1次下载
    基于<b class='flag-5'>Proteus</b>与<b class='flag-5'>汇编语言</b>的<b class='flag-5'>汉字</b><b class='flag-5'>点阵</b><b class='flag-5'>动态显示</b>

    基于Proteus汉字显示系统

    电子发烧友网站提供《基于Proteus汉字显示系统.pdf》资料免费下载
    发表于 10-30 11:21 2次下载
    基于<b class='flag-5'>Proteus</b>的<b class='flag-5'>汉字</b><b class='flag-5'>显示</b>系统

    基于Proteus的单片机汉字点阵显示电路设计

    电子发烧友网站提供《基于Proteus的单片机汉字点阵显示电路设计.pdf》资料免费下载
    发表于 10-18 09:51 0次下载
    基于<b class='flag-5'>Proteus</b>的单片机<b class='flag-5'>汉字</b><b class='flag-5'>点阵</b><b class='flag-5'>显示</b>电路设计

    KEIL查看汇编语言 (?C?ULDIV) 是什么意思?

    KEIL查看汇编语言遇到的问题 (?C?ULDIV) (?C?ULCMP) (?C?LMUL) (?C?UIDIV) 不太明白上面四个子程序的含义
    发表于 10-08 08:48

    51单片机汇编语言教程

    51单片机汇编语言教程(25讲),十分详细的介绍
    发表于 09-25 07:49

    ARM汇编语言入门

    本指南介绍了使用A64指令集的Arm汇编语言的基本概念,向您展示了如何使用Arm Development Studio创建和运行汇编代码,并提供了汇编代码示例供您进行实验。 汇编语言
    发表于 08-08 07:28

    单片机汇编语言的结构/数据类型/汇编指令

    开发汇编语言是为了为机器级代码指令提供助记符或符号,汇编语言程序由助记符组成,因此应将它们翻译成机器代码。负责这种转换的程序称为汇编程序。汇编语言通常被称为低级
    的头像 发表于 07-07 12:28 1974次阅读

    神经元汇编语言参考

    神经元汇编语言参考
    发表于 07-04 20:47 0次下载
    神经元<b class='flag-5'>汇编语言</b>参考

    数码管的静态、动态显示原理及编程方法(2)

    “掌握数码管的静态、动态显示原理及编程方法。--综合案例”
    的头像 发表于 06-28 11:41 994次阅读
    数码管的静态、<b class='flag-5'>动态显示</b>原理及编程方法(2)

    基于ATmega8单片机四位数码管动态显示Proteus仿真源程序

    基于ATmega8单片机四位数码管动态显示Proteus仿真源程序
    发表于 05-05 09:19 2次下载

    CA850 Ver.3.20 汇编语言C编译包

    CA850 Ver.3.20 汇编语言C编译包
    发表于 05-04 19:04 0次下载
    CA850 Ver.3.20 <b class='flag-5'>汇编语言</b>C编译包

    基于AT89C51单片机MAX7221控制数码管动态显示Proteus仿真

    基于AT89C51单片机MAX7221控制数码管动态显示Proteus仿真及程序
    发表于 05-04 14:44 0次下载

    RA78K0S Ver.2.00 结构化汇编语言汇编包(U17389CA2V0UM00)

    RA78K0S Ver.2.00 结构化汇编语言汇编包 (U17389CA2V0UM00)
    发表于 04-26 19:06 0次下载
    RA78K0S Ver.2.00 结构化<b class='flag-5'>汇编语言</b><b class='flag-5'>汇编</b>包(U17389CA2V0UM00)