《实验报告实验七 八段数码管显示实验.docx》由会员分享,可在线阅读,更多相关《实验报告实验七 八段数码管显示实验.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验报告实验七八段数码管显示实验实验报告-实验七-八段数码管显示实验EDA 实验报告七段或八段数码管显示实验1、实验目的1) 了解数码管动态显示的原理。2) 了解如何通过总线控制数码管显示器2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.提示:显示显示缓冲区的内容(例如,可以使用60H65h 作为缓冲区)。修改显示缓冲区的内容时,可以显示修改后的内容(为键盘扫描和显示实验做准备)。3、实验说明实验仪器提供了一个 6 位 8 段编码的LED 显示电路。学生可以控制显示,只要他们根据地址输出相应的数据。显示器共有 6 位,以动态方式显示。8 位段码和 6 位码由两个74ls374 芯片输
2、出。位代码由mc1413 或 uln2022 反相驱动后,选择相应的显示位。本实验仪中 8 位段码输出地址为 0x004h,位码输出地址为 0x002h。此处x 是由key/ledcs 决定,参见地址译码。在进行键盘和led 实验时,需要将按键/LEDC 连接到相应的地址解码。以便使用相应的地址进行访问。例如,如果钥匙/ledcs 连接到CS0,则段代码地址为 08004h,位代码地址为 08002h。七段数码管的字型代码表如下表:a-f | | b | |-| g | e | c-d。h显示字体gfedcba 段代码001111113FH100011006H210110115BH310011
3、1114FH41100111066H51016DH61111017DH700001107H81111117FH911011116fha111011177hb11111007chc011100139hd10111105ehe111100179hf111000171h4.原理图和接线5、实验内容1) 使用仪器和仪表开发平台模型本实验用到了wave6000 软件平台,电脑一台,lab6000 实验箱,示波器,若干连线, 串行数据线。2) 性能指标、技术要求、思路、方案和流程图5.1 性能指标、技术要求见实验目的和实验要求。5.2 构思方案:将数据放入显示缓冲器的 60-65h 单元,通过位选择信号和
4、段选择信号控制数码管显示相应内容。其中,段选择信号通过查表获得。为了动态显示丰富的变化, 需要在每一轮显示后更改数据单元的内容。为了使数码管显示屏不抖动,还需要为每一轮 数据显示一定的次数。有关详细信息,请参见代码。5.3 流程图:(见下页) 流程图:主程序:子程序:显示缓冲区内容display 设置每一轮数据的显示次数初始化显示缓冲区 initialize 显示缓冲区内容display 设置位选信号,初始化显示字节计数器,缓冲区数据地址是改变缓冲区内容change 否延时一段时间delay 否是否显示完 0f 共 16 个数据给位选信号修改位选信号并压栈否给数码管段码信号这一轮数据是否显示完
5、是总轮数 是否显示完是返回3) 源程序(为了使程序看起来更加标准化和易于理解,最好将每个部分的功能分开, 并在主程序中以子程序调用的形式调用相应的子程序)orgljmporg 开 始 : lcalldis:LCALLLLCALLDJNZSJMPSJMP0000hbegin0030h初始化;设置 60h-65h 机组的初始值display;显示缓冲区单元的数据change;改变缓冲区单元的数据延迟为了使两轮显示之间的时间间隔更长R5、dis;是否显示 0-F 一次,如果是,重新开始;重启$;=display:;=movr6,#40begin0:movmovmov;*loop:莫 夫 克 斯 rl
6、pushmovmovlcallmovxlcall;* incr0popadjnzr2、loopdjnzr6、begin0ret;=initialize:mov60h,#00hmov61h,#01h a,#01hr2,#6r0,#60h; 设置每一轮的显示时间;位选通信号;显示缓冲区只有 6 个字节单元;显示缓冲区单元数据地址dptr#8002h;位选择输出地址dptr,aa;修改位信号adptr#8004h;数据输出地址a,r0check;查查表格dptr,adelay;显示一个数字, 然后等待一分钟;这一轮是否显示完; 总轮数显示 40 次。完成了吗mov62h,#02hmov63h,#03
7、hmov64h,#04hmov65h,#05h movr5,#11ret;=delay:movr7、#03hmovr3、#0ffhloopp: djnzr3,$djnzr7,looppret;= 改变:;为了显示 0-f,需要调用change 子函数 11 次movr2,#6;6 次 movr0,#60h;数据地址 1: incr0incr0djnzr2,loop1ret;=check:印加莫夫卡,a+pcret;=table:db3fh,06h,5bh,4fh,66hdb6dh,7dh,07h,7fh,6fhdb77h,7ch,39h,5eh, 79hdb71h4) 实验步骤,完成情况4.1
8、 在 wave6000 中创建一个新文件,将代码写入该文件并将其保存为experiment7 asm;4.2 在 wave6000 中创建一个新项目,并包括上述experiment7。1 在模块文件ASM 文件中,最后保存为experiment7 prg4.3 编译程序,按照提示改正错误的地方,直到没有语法错误为止。4.4 完成上一步后,检查是否有逻辑错误。4.5 按接线图接线,经大哥确认后再通电。4.6 观察数码管的输出是否正确。如果错误,检查连线,源程序,并修改错误的地方, 直到调试出正确的波形为止。4.7 结果正确后,等待师兄检查完毕。然后清理实验仪器,包括电源线、电线、串口线、示波器等
9、,清理桌面和凳子。6、本实验遇到问题及解决方案6.1 第一次做这个实验时,没有可用的计算机和实验箱,所以只是在模拟调试阶段, 所以没有进展。解决方案:俗话说,早起的鸟儿有虫吃,所以呢,以后实验课得早点去,呵呵。6.2 实验中出现了一个问题:数码管显示的数据非常奇怪,复位后显示缓冲区中的数据也变乱了,真的让头部变大了。解决方案:经过仔细(几乎是单步调试了)后,发现,原来是r3 在两个不同的地方被误用了,改正后程序就没问题了。这也给我一个教训:用了什么寄存器单元资源,应该 做到心中有数。6.3 数码管在显示时总是感到不安。解决方案:这是程序中delay 的延时没有设置适当导致的,经过尝试几个不同的延时数值后,终于得到比较好的显示效果。一点经验:实践是检验真理的唯一标准,做硬件实 验更是如此。呵呵。7. 本实验的改进建议及难点问题:7.1 改进建议:为了增加难度,可以将显示缓冲器改变为外部数据存储单元,并且可以增加显示数据单元的内容。7.1 疑难问题:如何更好地消除数码管的显示抖动是一个难题。除了实验中使用的实验方法外,还有什么科学的计算推理方法吗?这是值得考虑的。2021-5-6