首页 > 编程知识 正文

数码管显示实验报告,8位数码管动态显示程序

时间:2023-05-06 07:20:38 阅读:111172 作者:3333

《硬件实验十 八段数码管显示》可供会员共享,在线阅读。 更多相关《硬件实验十 八段数码管显示(13页珍藏版)》请在人人文库网搜索。

1、硬件实验十八级数码管显示一、实验要求利用实验装置提供的显示电路,动态显示一行数据。 二、实验目的1、了解数码管动态显示的原理。 2 .采用总线方式数码管显示三、实验线路及接线连接孔1的连接孔21KEY/LED_CSCS0位选通信号(0x002H )段码输出)0x004H )数据总线四、实验说明1台实验机采用6位8段一共显示6位,动态显示。 8位段、6位代码从2张74LS374输出。 位代码由MC1413或ULN2003反转驱动后,选择相应的显示位。 本实验装置中8位段的代码输出地址为0X004H,位代码输出地址为0X002H。

2、 其中x由KEY/LED CS决定。 请参见地址解码。 进行键盘和LED实验时,需要将KEY/LED CS连接到正确的地址解码器。 允许用合适的地址访问。 例如,如果将KEY/LED CS连接到CS0,则段代码地址为08004H,位代码地址为08002H。 七段码管的字体代码表如下表。 af b ge cd . dp为字形的gfedcba段代码0011111113 FH 1000011006 h 210110115 BH 3100111066 FH 4110011066 DH 611000011017 DH 8111111107 f 811111111117 f 9111111111017 f

3、00139 HD 10111105 ehe 111100179 HF 111000171 h 5、程序框图否初始化开始显示参数off全位显示读取显示数据输出段代码数据输出段代码栅极信号延迟位栅极信号移位指示下一个显示数据6位完成程序代码位控制端口OUTSEG equ 08004h; 段控制端口LEDBuf equ 60h; 显示缓冲区Num equ 70h; 显示的数据DelayT equ 75h; ljmp StartLEDMAP: 八段管显示码db 3fh、06h、5bh、4fh、66h、6dh、7dh、07hdb 7fh、6fh、77h、7c。

4、h、39h、5eh、79h、71h延时: mov r7,#0DelayLoop:djnz r7,DelayLoopdjnz r6,delayloopretdisplayled 3360 movr 0,#LEDBufmov r1,#6; mov r2,#b; Loop:mov dptr,#OUTBITmov a,#0movx dptr,a; mov a,r0mov dptr,#OUTSEGmovx dptr,amov dptr,#OUTBITmov a,r2movx dptr,a; mov r6,#01call Delaymov a,r2; 瑞达。

5、amov r2,ainc r0djnz r1,Loopmov dptr,#OUTBITmov a,#0movx dptr,a; retStart:mov sp,#40hmov Num,#0MLoop:inc Nummov a,Nummov b,amov r0,#LEDBufFillBuf:mov a,banl a,# 0fh mov dptt inc r0inc bcjne r0,#LEDBuf 6,FillBufmov DelayT,#0DispAgain:call DisplayLED; D .

6、jnz DelayT、DispAgainljmp MLoopend六、实验步骤(1) .连接实验台和PC机串口,根据实验台指示连接,然后开机。 )2) .在PC上用鼠标点击" Wave "图标,进入WINDOWS调试环境,进行初始化设置。 单击“仿真器设置”以显示“仿真器设置”窗口,然后配置仿真器设置。 )3) .用鼠标单击打开文件,输入文件名*.asm创建新文件,在该窗口中输入事先创建的程序。 )4) .用鼠标指向项目的所有编译窗口,编译当前源文件,然后反复修改程序直到编译通过。 )5) .首先跟踪执行程序,观察代码和DATA窗口,了解八段管二维码的保管情况和概要。

7、了解显示的八段码存放位置、八段管显示原理,掌握八段码显示程序的编写方法; 最后全速运行程序,观察整个程序的执行结果,并对整个程序进行注释。 硬件实验十一键盘扫描显示实验一、实验要求在硬件实验十的基础上,利用实验机提供的键盘扫描电路和显示电路,进行扫描键盘和数字显示实验,在六位数码管上显示键入的键码。 实验程序可以分为三个模块。 键输入模块:扫描键盘,一次读取键盘,将键值存入键值缓冲区。 显示模块:在显示器上动态显示显示单元的内容。 主程序:调用按键输入模块和显示模块。 二、实验目的1、掌握键盘与显示器的接口方法和编程方法。 2、掌握键盘扫描和LED段码显示器的工作原理。 三、实验电路和连接只有这里。

8、键盘草图,详细原理参考图1连接孔1连接孔21KEY/LED_CSCS0数据总线回读行代码

(0X001H)列码(0X002H)四、实验说明本实验仪提供了一个64的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如将KEY/LE。

9、D CS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作LED的位选通信号。五、实验框图否是主程序框图 显示程序框图见硬件实验十读键输入子程序框图否是是否开始显示缓冲区初始化LED显示读取键值键值转换为显示数据开始输出列扫描信号列扫描信号移位该列有键输入?读入行信号返回6列扫描完?有键输入?初始化地址参数按照行列计算键值查表得键码等待按键释放返回程序代码OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN equ 08001h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲ljmp StartL。

10、EDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共6个八段管mov r2, #b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #0movx dptr, a ; 关所有八段管mov a, r0mov 。

11、dptr, #OUTSEGmovx dptr, amov dptr, #OUTBITmov a, r2movx dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, LoopretTestKey:mov dptr, #OUTBITmov a, #0movx dptr, a ; 输出线置为0mov dptr, #INmovx a, dptr ; 读入键状态cpl aanl a, #0fh ; 高四位不用retKeyTable: ; 键码定义db 16h, 15h, 14h, 0ffhdb。

12、 13h, 12h, 11h, 10hdb 0dh, 0ch, 0bh, 0ahdb 0eh, 03h, 06h, 09hdb 0fh, 02h, 05h, 08hdb 00h, 01h, 04h, 07hGetKey:mov dptr, #OUTBITmov P2, dphmov r0, #Low(IN)mov r1, #bmov r2, #6KLoop:mov a, r1 ; 找出键所在列cpl amovx dptr, acpl arr amov r1, a ; 下一列movx a, r0cpl aanl a, #0fhjnz Goon1 ; 该列有键入djnz r2, KLoopmov 。

13、r2, #0ffh ; 没有键按下, 返回 0ffhsjmp ExitGoon1:mov r1, a ; 键值 = 列 X 4 + 行mov a, r2dec arl arl amov r2, a ; r2 = (r2-1)*4mov a, r1 ; r1中为读入的行值mov r1, #4LoopC:rrc a ; 移位找出所在行jc Exitinc r2 ; r2 = r2+ 行值djnz r1, LoopCExit:mov a, r2 ; 取出键码mov dptr, #KeyTablemovc a, a+dptrmov r2, aWaitRelease:mov dptr, #OUTBIT 。

14、; 等键释放clr amovx dptr, amov r6, #10call Delaycall TestKeyjnz WaitReleasemov a, r2retStart:mov sp, #40hmov LEDBuf+0, #0ffh ; 显示 8.8.8.8.mov LEDBuf+1, #0ffhmov LEDBuf+2, #0ffhmov LEDBuf+3, #0ffhmov LEDBuf+4, #0mov LEDBuf+5, #0MLoop:call DisplayLED ; 显示call TestKey ; 有键入?jz MLoop ; 无键入, 继续显示call GetKey 。

15、; 读入键码anl a, #0fh ; 显示键码mov dptr, #LEDMapmovc a, a+dptrmov LEDBuf+5, aljmp MLoopend六、实验步骤(1). 把实验平台与PC机串行口连起来,根据实验连线提示在实验台上连线,之后打开电源。(2). 在PC机上用鼠标点击“Wave”图标,进入WINDOWS调试环境,而后进行初始化设置。点击仿真器仿真器设置出现“仿真器设置”窗,进行仿真器的设置。(3). 用鼠标点一下文件打开文件,输入文件名*.asm,创建新文件,在该窗口中输入事先编好的程序。(4). 用鼠标点项目全部编译窗,对当前源文件进行编译,反复修改好程序,直到编。

16、译通过为止。(5). 全速运行程序,通过在键盘按键,观察八段管的显示结果,理解键盘扫描原理及程序编写方法。六位LED数码显示器、46 键盘电路本实验仪的LED显示电路和键盘电路如图1。显示控制的位码由74HC374输出,经ULN2003反向驱动后,做LED的位选通信号。位选通信号也可做为键盘列扫描码,键盘扫描的行数据从74HC245读回,374输出的列扫描码经245读入后,用来判断是否有键被按下,以及按下的是什么键。如果没有键按下,由于上拉电阻的作用,经245读回的值为高,如果有键按下,374输出的低电平经过按键被接到245的端口上,这样从245读回的数据就会有低位,根据374输出的列信号和245读回的行信号,就可以判断哪个键被按下。LED显示的段码由另一个74HC374输出。键盘和LED显示电路的地址译码见图,做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。位码输出地址为0X002H,段码输出地址为0X004H,键盘行码读回地址为0X001H,此处X是由KEY/LED CS 决定。例如将KEY/LED CS接到地址译码的CS0上,那么位码输出地址就为08002H,段码输出地址就是08004H,键盘行码读回地址为08001H。图1: 键盘及LED显示电路。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。