八段数码管数字显示实验c语言,硬件实验十 八段数码管显示

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

1、硬件实验十 八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。2. 了解用总线方式控制数码管显示三、实验线路及连线连线连接孔1连接孔21KEY/LED_CSCS0位选通信号(0x002H)段码输出(0x004H)数据总线四、实验说明1本实验仪提供了6 位8段码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片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段码001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fhA111011177hb11111007chC0111。

3、00139hd10111105ehE111100179hF111000171h五、程序框图否是开始初始化显示参数关所有位显示取显示数据输出段码数据 输出位选通信号延时位选通信号移位指向下一个显示数据返回6位完成程序代码OUTBIT equ 08002h ; 位控制口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, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #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 ; rr 。

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, #0fhmov dptr, #LEDMapmovc a, a+dptr ; mov r0,a ; 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). 先跟踪运行程序,观察CODE和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显示电路。

    原文作者:国服露娜
    原文地址: https://blog.csdn.net/weixin_33410914/article/details/117180264
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞