八段数码管编码
- 格式:doc
- 大小:32.00 KB
- 文档页数:4
(1)一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成;
因为发光二极管导通的方向是一定的(导通电压一般取为),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管);
故可分共阳极(公共端接高电平或+5V电压)和共阴极(共低电平或接地)两种数码管(2)其中每个段均有0(不导通)和1(导通发光)两种状态,但共阳极数码管和共阴极数码管显然是不同的
(3)它在程序中的应用是用一个八位二进制数表示,A为最低位,...,F为最高位(第八位)(4)共阳极:
位选为高电平(即1)选中数码管,
各段选为低电平(即0接地时)选中各数码段,
由0到f的编码为:
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
共阴极:
位选为低电平(即0)选中数码管,
各段选为高电平(即1接+5V时)选中各数码段,
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};。
硬件实验四 八段数码管显示一、实验要求利用实验箱提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示。
三、实验线路及连线四、实验说明1.本实验箱提供了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 。
连线 连接孔1连接孔2 1KEY/LED_CS CS0 位选通信号 (0x002H) 段码输出(0x004H) 数据总线七段数码管的字型代码表如下表:五、程序参考程序、框图OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data endscode segmentassume cs:code, ds:dataDelay proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,axloop $pop cxpop axretDelay endpDisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 00100000b ; 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endpStart proc nearmov ax, datamov ds, axmov Num, 0MLoop:inc Nummov ch,Nummov ah,0mov cl,6mov bx,offset LEDBufFillBuf:mov si, offset LEDMapmov al,chand al,0fhadd ax,simov si,axmov al,[si] ; 数据转换成显示码 mov [bx], al ; 显示码存入显示缓冲 inc bxinc chdec cljnz FillBufmov DelayT,20DispAgain:call DisplayLED ; 显示dec DelayTjnz DispAgainjmp MLoopStart endpcode endsend start六、实验步骤(1) 在实验箱断电的情况下连好线。
硬件实验十 八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示三、实验线路及连线四、实验说明1.本实验仪提供了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 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线连线 连接孔1 连接孔2 1 KEY/LED_CS CS0七段数码管的字型代码表如下表:五、程序框图程序代码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, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;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 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 ;djnz DelayT,DispAgain ljmp MLoopend硬件实验十一 键盘扫描显示实验一、实验要求在硬件实验十的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验七八段数码管显示
1.实验目的:
了解数码管动态显示的原理。
2.实验要求:
利用实验仪提供的显示电路,动态显示一行数据.
3.实验说明:
本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。
此处X是由CS40 决定,参见地址译码。
做键盘和LED实验时,需将CS40孔接到相应的地址译码上。
以便用相应的地址来访问。
例如,将CS40孔接到CS0上,则段码地址为08004H,位码地址为08002H。
4.实验器材:
(1)G2100 实验平台 1 台(2)LabMON51 仿真器 1 台
(3)计算机 1 台(4)实验连线若干
5.程序框图:
6.实验电路:
七段数码管的字型代码表如下表:
7.实验步骤:
(1)把第“40”号模块“键盘显示”的片选信号CS40孔接第“36”号模块“片选信
号”YS0(08000-08FFFH )孔。
(2)编程并调
试。
单片机LED共阳/阴极全部段码表【熄灭】数码管结构数码管由8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字0〜9,字符A〜F、H、L、P、R、U、Y等符号及小数点“.”。
数码管又分为共阴极和共阳极两种类型。
数码管工作原理共阳极数码管中8个发光二极管的阳极(二极管正端)连接一起, 即为共阳极接法,简称共阳数码管。
通常, 公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输入端为低电平时, 该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流, 还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阴极数码管中8 个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法,简称共阴数码管。
通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时, 该端所连接的字符导通并点亮, 根据发光字段的不同组合可显示出各种数字或字符。
同样,要求段驱动电路能提供额定的段导通电流, 还需根据外接电源及额定段导通电流来确定相应的限流电阻。
单片机LED共阳极段码表【0-F】DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H [0-7]DB 80H,90H,88H,83H,0c6H,0a1H,86H,8eH [8-F]单片机LED共阴极段码表【0-F】DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H [0-7]DB 7FH,6FH ,77H,7CH,39H,5EH,79H,71H,76H[8-F]为了满足某些特殊用户需要有时也会用到以下特别字符的段码表单片机LED共阳极段码表【HLPRUY-熄灭】DB 89H,0C7H,8CH,0CEH,0C1H,91H,0BFH,7FH,0FFH [ HLPRUY-.熄灭] 单片机LED共阴极段码表【HLPRUY-熄灭】DB 76H,38H,73H,31H,3EH,6EH,40H,80H,00H [ HLPRUY-.熄灭] 其中[ HLPRUY-, 熄灭] ,这些特殊字符中有些看起来不是很形象,但有时不可避免的会用到.。
⽤汇编语⾔实现⼋段数码管显⽰⽤汇编语⾔实现⼋段数码管显⽰⼀、实验要求利⽤实验仪提供的显⽰电路,动态显⽰⼀⾏数据.⼆、实验⽬的1. 了解数码管动态显⽰的原理。
2. 了解⽤总线⽅式控制数码管显⽰三、实验线路及连线四、实验说明1.本实验仪提供了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 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码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, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0djnz r7, DelayLoop djnz r6, DelayLoop ret DisplayLED:mov r0, #LEDBuf mov r1, #6 ;mov r2, #00100000b ; Loop:mov dptr, #OUTBIT mov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEG movx @dptr,amov dptr, #OUTBIT mov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBIT mov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0 MLoop:inc Nummov a, Nummov 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 ;djnz DelayT,DispAgain ljmp MLoop end。
(1)一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成;因为发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管);故可分共阳极(公共端接高电平或+5V电压)和共阴极(共低电平或接地)两种数码管(2)其中每个段均有0(不导通)和1(导通发光)两种状态,但共阳极数码管和共阴极数码管显然是不同的(3)它在程序中的应用是用一个八位二进制数表示,A为最低位,...,F为最高位(第八位)(4)共阳极:位选为高电平(即1)选中数码管,各段选为低电平(即0接地时)选中各数码段,由0到f的编码为:uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};共阴极:位选为低电平(即0)选中数码管,各段选为高电平(即1接+5V时)选中各数码段,uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};共阳极带小数点:0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,共阴极带小数点:0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,共阴极不带小数:0x3f,0x06,0x5b;0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f共阳极不带小数点:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。
八段数码管显示汇编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, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;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 amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0MLoop:mov Num, #0inc Nummov a, Nummov b, amov r0, #LEDBuf FillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0 DispAgain:call DisplayLED ;djnz DelayT,DispAgainljmp MLoopendc语言#include<reg51.h>#define LEDLen 6xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口unsigned char LEDBuf[LEDLen]; // 显示缓冲code unsigned char LEDMAP[] = { // 八段管显示码0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d};void Delay(unsigned char CNT){ unsigned char i;while (CNT-- !=0)for (i=100; i !=0; i--);}void DisplayLED(){ unsigned char i;unsigned char Pos;unsigned char LED;Pos = 0x20; // 从左边开始显示for (i = 0; i < LEDLen; i++){ OUTBIT = 0; // 关所有八段管LED = LEDBuf[i];OUTSEG = LED;OUTBIT = Pos; // 显示一位八段管Delay(1);Pos >>= 1; // 显示下一位}OUTBIT = 0; // 关所有八段管}void main(){ unsigned char i = 0;unsigned char j;while(1){ LEDBuf[0] = LEDMAP[i%6];LEDBuf[1] = LEDMAP[(i+1)%6];LEDBuf[2] = LEDMAP[(i+2)%6];LEDBuf[3] = LEDMAP[(i+3)%6];LEDBuf[4] = LEDMAP[(i+4)%6];LEDBuf[5] = LEDMAP[(i+5)%6];i++;for(j=0; j<100; j++)DisplayLED(); // 显示}}。
单片机实验报告(四)实验名称八段数码管显示(51/96/88)一、实验目的1.了解数码管动态显示的原理。
2.了解用总线方式控制数码管显示二、实验原理1.本实验仪提供了 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。
三、实验所用仪器LED 、 89C51 、试验箱、导线四、操作步骤图1-1 实验电路及其连线图1-2 七段数码管的字形代码表图1-3 实验框图五、实验程序1、wave实验箱实验程序ORG 0100HMAIN: MOV SP,#70HMOV 75H,#1MOV 76H,#1MOV 77H,#5MOV 78H,#9MOV 79H,#9MOV 7AH,#1MOV R4,#6ONE: LCALL BRITHDAY ;进入死循环,让数码管都一直亮着 LJMP ONEBRITHDAY:MOV R0,#75H;给R0一个单元地址75HMOV R3,#01H ;位选码只让第一个数码管亮MOV A,R3 ;将R3的值给ALOOP: MOV DPTR,#8002HMOVX @DPTR,AINC DPTRINC DPTRMOV A,@R0ADD A,#0DHMOVC A,@A+PCMOVX @DPTR,AACALL DL1MSINC R0MOV A,R3JB ACC.5,LOOP1RL AMOV R3,AAJMP LOOPLOOP1:RETTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,DB 7DH,07H,7FH,6FH,77H,7CHDL1ms: MOV R7,#02HLOOP2: MOV R6,#0F6H ;1LOOP3: DJNZ R6,LOOP3 ;2DJNZ R7,LOOP2 ;2 1000-1*2-2*2-2*2*2-1*2=948 948%4=246(F6H)RET程序设计思路:在89c51内部的RAM中设置6个缓冲单元,分别存放显示器要显示的6位的数据。
一、数码管显示字符表一个数码管有八段:a,b,c,d,e,f,g,dp(小数点),即由八段发光二极管组成。
因为发光二极管导通的方向是一定的(导通电压一般取为1.7V),这八个发光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共阴极数码管);故可分共阳极(公共端接高电平或+5V电压)和共阴极(共低电平或接地)两种数码管。
其中每个段均有0(不导通)和1(导通发光)两种状态,但共阳极数码管和共阴极数码管显然是不同的。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
对于共阳数极码管:各段选为低电平(即0接地时)选中各数码段, 位选为高电平(即1)选中数码管。
对于共阴极数码管:各段选为高电平(即1接+5V时)选中各数码段,位选为低电平(即0)选中数码管。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
字母显示:共阳极的数码管0~f的段编码:unsigned char code table[]={ //共阳极0~f数码管编码0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0x88,0x83,//8~b0xc6,0xa1,0x86,0x8e //c~f};共阴极的数码管0~f的段编码是:unsigned char code table[]={//共阴极0~f数码管编码0x3f,0x06,0x5b,0x4f, //0~30x66,0x6d,0x7d,0x07, //4~70x7f,0x6f,0x77,0x7c, //8~b 0x39,0x5e,0x79,0x71 //c~f };。
八段数码管显示1.实验目的:(1)了解数码管动态显示的原理。
(2)了解74LS164 扩展端口的方法。
2.实验内容:利用实验仪提供的显示电路,动态显示一行数据。
7.参考程序(SY10.ASM):OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164 时钟位) DAT164 equ 0e102h ; 段控制口(接164 数据位) IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75horg 0000hljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h Delay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共6 个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, cANL A, #0FDHmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管retStart: mov dptr,#0e100hmov a,#03hmovx @dptr,amov 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,#30DispAgain:call DisplayLED ; 显示djnz DelayT,DispAgainljmp MLoopEND八位数码管显示:8155控制参考程序2:对8155初始化,使I/O口控制LED的显示情况。
用汇编语言实现八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示三、实验线路及连线四、实验说明1.本实验仪提供了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 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码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, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;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 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 ;djnz DelayT,DispAgain ljmp MLoopend。
八段数码管数码管编码译码表以下是八段数码管编码译码表:
共阳极数码管编码:
0:0xC0 (11000000)
1:0xF9 (11111001)
2:0xA4 (10100100)
3:0xB0 (10110000)
4:0x99 (10011001)
5:0x92 (10010010)
6:0x82 (10000010)
7:0xF8 (11111000)
8:0x80 (10000000)
9:0x90 (10010000)
共阴极数码管编码:
0:0x3F ( 00111111)
1:0x06 ( 0000006)
2:0x5B ( 01011011)
3:0x4F ( 01001111)
4:0x66 ( 0110011)
5:0x6D ( 011011)
6:0x7D ( 011111)
7:0x7F ( 0111 1)
8:7F,8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F: 8: 7F :F8 (转置位元):对于共阳极的LED数码管,使用高电平驱动显示段,低电平不显示。
对于共阴极的LED数码管,使用低电平驱动显示段,高电平不显示。
因此,共阳极数码管的编码可以直接用作驱动信号,而共阴极数码管需要取反后才能驱动显示。
例如,数字“2”的共阳极编码为A4,可以直接驱动共阳极数码管显示;数字“2”的共阴极编码为5B,需要取反后才能驱动共阴极数码管显示。