您好,欢迎来到六九路网。
搜索
您的当前位置:首页实验报告 实验七 八段数码管显示实验

实验报告 实验七 八段数码管显示实验

来源:六九路网
实验报告 实验七 八段数码管显示实验----b46086b6-6eaf-11ec-8071-7cb59b590d7d

实验报告--实验七-八段数码管显示实验 EDA实验报告七段或八段数码管显示实验 1、实验目的

1) 了解数码管动态显示的原理。2) 了解如何通过总线控制数码管显示器 2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.

提示:显示显示缓冲区的内容(例如,可以使用60H~65h作为缓冲区)。修改显示缓冲区的内容时,可以显示修改后的内容(为键盘扫描和显示实验做准备)。 3、实验说明

实验仪器提供了一个6位8段编码的LED显示电路。学生可以控制显示,只要他们根据地址输出相应的数据。显示器共有6位,以动态方式显示。8位段码和6位码由两个74ls374芯片输出。位代码由mc1413或uln2022反相驱动后,选择相应的显示位。 本实验仪中8位段码输出地址为0x004h,位码输出地址为0x002h。此处x是由key/ledcs决定,参见地址译码。

在进行键盘和led实验时,需要将按键/LEDC连接到相应的地址解码。以便使用相应的地址进行访问。例如,如果钥匙/ledcs连接到CS0,则段代码地址为08004h,位代码地址为08002h。

七段数码管的字型代码表如下表:

a-----f | | b | |------| g | e | c----- d。h

显示字体gfedcba段代码

001111113FH100011006H210110115BH3100111114FH41100111066H51016DH61111017DH700001107H81111117FH

911011116fha111011177hb11111007chc011100139hd10111105ehe111100179hf111000171h 4.原理图和接线 5、实验内容

1) 使用仪器和仪表开发平台模型

本实验用到了wave6000软件平台,电脑一台,lab6000实验箱,示波器,若干连线,串行数据线。

2) 性能指标、技术要求、思路、方案和流程图 5.1性能指标、技术要求见实验目的和实验要求。

5.2构思方案:将数据放入显示缓冲器的60-65h单元,通过位选择信号和段选择信号控制数码管显示相应内容。其中,段选择信号通过查表获得。为了动态显示丰富的变化,需要在每一轮显示后更改数据单元的内容。为了使数码管显示屏不抖动,还需要为每一轮数据显示一定的次数。有关详细信息,请参见代码。 5.3流程图:(见下页) 流程图:

主程序:子程序:显示缓冲区内容display设置每一轮数据的显示次数初始化显示缓冲区initialize显示缓冲区内容display设置位选信号,初始化显示字节计数器,缓冲区数据地址是改变缓冲区内容change否延时一段时间delay否是否显示完0―f共16个数据给位选信号修改位选信号并压栈否给数码管段码信号这一轮数据是否显示完是总轮数是否显示完是返回

3) 源程序(为了使程序看起来更加标准化和易于理解,最好将每个部分的功能分开,并在主程序中以子程序调用的形式调用相应的子程序) orgljmporg 开始: lcalldis:

LCALLLLCALLDJNZSJMPSJMP 0000hbegin0030h

初始化;设置60h-65h机组的初始值

display;显示缓冲区单元的数据change;改变缓冲区单元的数据

延迟为了使两轮显示之间的时间间隔更长R5、dis;是否显示0-F一次,如果是,重新开始;重启$

;==============display:;===

movr6,#40begin0: movmovmov;***loop: 莫夫克斯

rlpushmovmovlcallmovxlcall;*** incr0popadjnzr2、loopdjnzr6、begin0ret ;==============initialize: mov60h,#00hmov61h,#01h a,#01hr2,#6r0,#60h

; 设置每一轮的显示时间;位选通信号

;显示缓冲区只有6个字节单元;显示缓冲区单元数据地址 dptr#8002h;位选择输出地址@dptr,a a;修改位信号a

dptr#8004h;数据输出地址a,@r0check;查查表格@dptr,adelay;显示一个数字,然后等待一分钟 ;这一轮是否显示完

; 总轮数显示40次。完成了吗

mov62h,#02hmov63h,#03hmovh,#04hmov65h,#05h movr5,#11ret ;==============delay:

movr7、#03hmovr3、#0ffhloopp: djnzr3,$djnzr7,looppret ;============== 改变:

;为了显示0---f,需要调用change子函数11次 movr2,#6;6次movr0,#60h;数据地址1: inc@r0incr0

djnzr2,loop1ret ;==============check: 印加莫夫卡,@a+pcret ;==============table:

db3fh,06h,5bh,4fh,66hdb6dh,7dh,07h,7fh,6fhdb77h,7ch,39h,5eh,79hdb71h

4)实验步骤,完成情况

4.1在wave6000中创建一个新文件,将代码写入该文件并将其保存为experiment7 asm;4.2在wave6000中创建一个新项目,并包括上述experiment7。1在模块文件ASM文件中,最后保存为experiment7 prg

4.3编译程序,按照提示改正错误的地方,直到没有语法错误为止。4.4完成上一步后,检查是否有逻辑错误。

4.5按接线图接线,经大哥确认后再通电。

4.6观察数码管的输出是否正确。如果错误,检查连线,源程序,并修改错误的地方,直到调试出正确的波形为止。

4.7结果正确后,等待师兄检查完毕。然后清理实验仪器,包括电源线、电线、串口线、示波器等,清理桌面和凳子。 6、本实验遇到问题及解决方案

6.1第一次做这个实验时,没有可用的计算机和实验箱,所以只是在模拟调试阶段,所以没有进展。

解决方案:俗话说,早起的鸟儿有虫吃,所以呢,以后实验课得早点去,呵呵。 6.2实验中出现了一个问题:数码管显示的数据非常奇怪,复位后显示缓冲区中的数据也变乱了,真的让头部变大了。

解决方案:经过仔细(几乎是单步调试了)后,发现,原来是r3在两个不同的地方被误用了,改正后程序就没问题了。这也给我一个教训:用了什么寄存器单元资源,应该做到心中有数。

6.3数码管在显示时总是感到不安。

解决方案:这是程序中delay的延时没有设置适当导致的,经过尝试几个不同的延时数值后,终于得到比较好的显示效果。一点经验:实践是检验真理的唯一标准,做硬件实验更是如此。呵呵。

7.本实验的改进建议及难点问题: 7.1改进建议:

为了增加难度,可以将显示缓冲器改变为外部数据存储单元,并且可以增加显示数据单元的内容。 7.1疑难问题:

如何更好地消除数码管的显示抖动是一个难题。除了实验中使用的实验方法外,还有什么科学的计算推理方法吗?这是值得考虑的。 2021-5-6

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务