实验四:数码管显示实验
一、 实训目的
1、 进一步理解共阴极、共阳极数码显示管的结构和显示特点; 2、 掌握单片机系统中共阴极、共阳极数码显示电路的连接方法;
3、 熟悉在单片机系统中实现数码管静态显示的软件编程方法和编程技巧; 二、 实验仪器、材料
1. 2. 3. 4.
微型计算机(PⅣ以上)
编程、汇编与模拟平台软件Keil uVision4 电子技术专业仿真软件protues运行平台 单片机实训开发电路板
U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617三、 实验内容和实验步骤 静态显示:
1. 共阳极1位数码管静态显示实验(0~9加1计数显示)
2. 共阳极3位数码管静态显示实验(0~999加1计数显示)
18XTAL2R2R3R4R5R6R7R8R93003003003003003003003009RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51C122pFR9R2R3R4R5R6R7R8R17R10R11R12R13R14R15R16R25R18R19R20R21R22R23R24220220220220220220220220220220220220220220220220220220220220220220220220U1X112MHz18XTAL219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617C222pFC3910uRSTR110K293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51
动态显示:
1、系统仿真电路参考原理图(共阳极4位数码管静态显示,0~255加1计数显示)
C130pF19U1X1XTAL112MHzP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7RXDTXDINT0INT1T0T1WRRDC230pF18XTAL2C3910uR110K293031RSTPSENALEEAP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7RP21P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7234567891KP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51P1.013P1.15P1.23P1.3112642U2:DU2:CU2:BU2:A74HC1474HC1474HC1474HC14 2、参考程序1(共阳极3位数码管静态显示0~255,靠延时加1计数)
四、实验要求
1、完成仿真电路设计,要求电路布局整齐规范,参数标注清楚;
2、在参考程序的基础上,编写源程序代码;
3、编译连接源程序,没有任何警告信息和错误信息出现; 4、编译连接的源程序代码,能在仿真电路上正常运行; 5、进一步精简修改原程序代码,使之更加完善; 6、总结本实验的编程方法和技巧;
参考程序: 静态显示:
1、共阳极1位数码管静态显示实验(0~9加1计数显示)
系统参考源程序1(使用查表指令MOVC A,@A+DPTR)
ORG 0000H DTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
LOOP1:MOV R3,#0AH DB 0F8H,80H,90H MOV R0,#00H MOV DPTR,#DTAB DELAY:MOV R7,#0FH LOOP: MOV A,R0 DELAY1:MOV R6,#08FH MOVC A,@A+DPTR DELAY2:MOV R5,#0FFH MOV P2,A DELAY3:DJNZ R5,DELAY3 ACALL DELAY DJNZ R6,DELAY2 INC R0 DJNZ R7,DELAY1 DJNZ R3,LOOP RET SJMP LOOP1 END
2、共阳极3位数码管静态显示实验(0~999加1计数显示) 系统参考源程序1(0~256加1计数显示)
BW DATA 31H SHW DATA 32H GW DATA 33H ORG 0000H MOV R0,#00H MOV DPTR,#TAB AJMP MAIN ORG 0030H MAIN:LCALL CHANGE MOV A,GW MOVC A,@A+DPTR MOV P3,A MOV A,SHW MOVC A,@A+DPTR MOV P2,A MOV A,BW MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC R0 SJMP MAIN
CHANGE:MOV A,R0
MOV B,#100 DIV AB MOV BW,A MOV A,#10 XCH A,B DIV AB MOV SHW,A MOV GW,B RET
DELAY:MOV R7,#0FFH ;延时程序 DELAY1:MOV R6,#8FH DELAY2:MOV R5,#01H DELAY3:DJNZ R5,DELAY3 DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
DB 0F8H,80H,90H,0FFH
END
系统参考源程序2(0~999加1计数显示)
ORG 0000H
START: MOV R0,#0FFH MOV R1,#00H MOV R2,#00H MOV P3,#0FFH MOV P2,#0FFH MOV P0,#0FFH DISPLY: INC R0 CJNE R0,#0AH,DISPLY1 MOV R0,#0FFH INC R1 CJNE R1,#0AH,DISPLY2
MOV R1,#00H
MOV P2,#0C0H INC R2 CJNE R2,#0AH,DISPLY3 SJMP START DISPLY3:MOV A,R2 ADD A,#16H ;对A进行地址修正 MOVC A,@A+PC ;查字形码表 MOV P0,A ;2 SJMP DISPLY ;2 DISPLY2:MOV A,R1 ;1 ADD A,#0EH ;2对A进行地址修正
MOVC A,@A+PC ;1查字形码表 MOV P2,A ;2 AJMP DISPLY ;2 DISPLY1:MOV A,R0 ;1 ADD A,#06H ;2对A进行地址修正 MOVC A,@A+PC ;1查字形码表 MOV P3,A ;2 ACALL DELAY ;2 SJMP DISPLY ;2
DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
DB 0F8H,80H,90H; 0~9共阳极字型码
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH DB 0CH,89H,7FH,0BFH;A~F共阳极字型码 DELAY:MOV R7,#0FFH ;延时程序 DELAY1:MOV R6,#8FH DELAY2:MOV R5,#01H DELAY3:DJNZ R5,DELAY3 DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END
动态显示:
1、系统仿真电路参考原理图(共阳极4位数码管静态显示,0~255加1计数显示) 参考程序1(共阳极3位数码管静态显示0~255,靠延时加1计数)
BW DATA 31H
SHW DATA 32H GW DATA 33H ORG 0000H MOV DPTR,#TAB AJMP MAIN ORG 0030H MAIN:MOV SP,#60H MOV R3,#5 MOV R0,#00H LOOP:LCALL CHANGE LOOP1:MOV P1,#0F7H MOV A,GW LCALL DIS LCALL DELAY MOV P1,#0FBH MOV A,SHW LCALL DIS LCALL DELAY MOV P1,#0FDH MOV A,BW LCALL DIS LCALL DELAY MOV P1,#0FEH MOV A,#0AH LCALL DIS LCALL DELAY DJNZ R3,LOOP1
MOV R3,#5
INC R0 SJMP LOOP CHANGE:MOV A,R0 MOV B,#100 DIV AB MOV BW,A MOV A,#10 XCH A,B DIV AB MOV SHW,A MOV GW,B RET
DIS:MOVC A,@A+DPTR MOV P0,A RET
DELAY:MOV R7,#0DH ;延时程序 DELAY1:MOV R6,#0FH DELAY2:MOV R5,#0FH DELAY3:DJNZ R5,DELAY3 DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H DB 0F8H,80H,90H,0FFH END
参考程序2(共阳极3位数码管静态显示0~255,靠定时器加1计数)
BW DATA 31H SHW DATA 32H GW DATA 33H ORG 0000H AJMP MAIN ORG 000BH AJMP COUNT ORG 0030H MAIN:MOV SP,#60H MOV TMOD,#01H MOV TH0,#0C0H MOV TL0,#0B0H SETB EA
SETB ET0
SETB TR0 MOV DPTR,#TAB;字型码首地址 MOV R1,#00H ;寄存器赋初值 MOV R4,#06H ;控制计数速度赋初值 LOOP:MOV R2,#03H MOV R3,#0F7H MOV R0,#GW LCALL CHANGE LOOP1:MOV P1,R3 MOV A,@R0 MOVC A,@A+DPTR MOV P0,A
LCALL DELAY DEC R0 MOV A,R3 RR A MOV R3,A DJNZ R2,LOOP1 SJMP LOOP COUNT:DJNZ R4,RRR MOV R4,#06H ;控制计数速度赋初值 INC R1
RRR:MOV TH0,#0C0H MOV TL0,#0B0H RETI
CHANGE:MOV A,R1 MOV B,#100 DIV AB MOV BW,A
MOV A,#10
XCH A,B DIV AB MOV SHW,A MOV GW,B RET
DELAY:MOV R7,#0FH ;延时程序 DELAY1:MOV R6,#0FH DELAY2:MOV R5,#0FH DELAY3:DJNZ R5,DELAY3 DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,0FFH END