八段数码管显示实验报告
一.设计目的
1.掌握数码管动态显示的原理; 2.学会用总线方式控制数码管显示;
3.熟悉利用单片机驱动数码管的电路及编程原理。 二.设计内容
利用实验箱提供的显示电路,设计一个能够动态显示一行数据的系统。实验箱一般提供了6位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。能够正常显示数据之后,请改变一下数字的变化速度或者LED显示的方向。 三.实验原理
1.原理:当用总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱”位置;当用I/O方式驱动八段显示管时,请将开关拨到“外驱”位置。
本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。此处X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H,位码地址为08002H。 七段数码管的字型代码表如下表:
显示字形 0 1 2 3 4 5 6 7 8 9 A b C d E F
2. 程序框图 3.程序
否 g f e d c b a 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 段码 3fh 06h 5bh 4fh 66h 6dh 7dh 07h 7fh 6fh 77h 7ch 39h 5eh 79h 71h a f b g e c d 。dp 开始 初始化显示参数 关所有位显示 输出位选通信号 延时 取显示数据 数据移位输出到1 位选通信号移位 指向下一个显示数据 否 是 输出时钟脉冲到1 6位完成 是 返回 8段码完成 OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 键盘读入口
LEDBuf equ 60h ; 显示缓冲 Num equ 70h ; 显示的数据 DelayT equ 75h ; ljmp Start
LEDMAP: ; db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay: ; mov r7, #0 DelayLoop:
djnz r7, DelayLoop djnz r6, DelayLoop ret
DisplayLED:
mov r0, #LEDBuf
mov r1, #6 ; mov r2, #00100000b ; Loop:
mov dptr, #OUTBIT mov a, #0
movx @dptr, a ;
mov a, @r0 mov dptr, #OUTSEG movx @dptr,a
八段管显示码
延时子程序 共6个八段管 从左边开始显示 关所有八段管 mov dptr, #OUTBIT mov a, r2
movx @dptr, a ; 显示一位八段管
mov r6, #01 call Delay
mov a, r2 ; rr a mov r2, a
inc r0
djnz r1, Loop
mov dptr, #OUTBIT mov a, #0
movx @dptr, a ; ret Start:
mov sp, #40h mov Num, #0 MLoop:
inc Num mov a, Num mov b, a mov r0, #LEDBuf FillBuf:
mov a, b
显示下一位 关所有八段管 anl a, #0fh mov dptr, #LEDMap
movc a, @a+dptr ; 数字转换成显示码 mov @r0,a ; 显示在码填入显示缓冲 inc r0 inc b
cjne r0, #LEDBuf+6, FillBuf
mov DelayT,#30 DispAgain:
call DisplayLED ; 显示 djnz DelayT,DispAgain
ljmp MLoop
end 四.设计步骤
1. 根据任务书中的系统性能要求,设计实验流程框图;
2. 学习课程设计相关的原理知识,特别是数码管动态显示的原理; 3. 对设计出的流程框图,使用汇编语言完成源代码的编写; 4. 在实验箱配套软件上完成汇编程序的初步调试; 5. 连接实验箱,完成系统功能性测试; 6. 完成课程设计报告,报告内容包括: a、程序设计流程框图; b、说明设计的依据; c、记录程序测试的过程;
d、说明实验过程中遇到的问题和解决的方法。 五.实验结果
实验现象:显示示数依次123456 234567 345678 4567
567A 67AB 7ABC ABCD 9ABCDE
ABCDEF BCDEF0 CDEF01 DEF012 EF0123 F01234
012345 123456
实验结论:成功设计出能够动态显示一行数据的系统,并且可以改变数字的变化速度。 六.实验心得
为期一周的单片机学习过去了,在这段时间里,老师通过以做实验和修改实验代码等形式来增强我们专业课程知识综合应用能力和实践能力。在做实验的过程中,老师还反复强调
要多思考多实践。通过这一周的学习,我了解了单片机的基础知识,知道单片机实验板,它由 8031、8155,eprom27,max232键盘及显示器组成。其中8155片内有256个ram单元,接6个7段码显示器和8个按键作输入。在这里,要感谢老师的悉心指导和栽培,在以后在学习过程中,我会更加注视实践操作,使自己更好地学习专业知识。