《数码管动态显示汇编程序例子.docx》由会员分享,可在线阅读,更多相关《数码管动态显示汇编程序例子.docx(7页珍藏版)》请在三一办公上搜索。
1、数码管动态显示汇编程序例子;数码管动态显示汇编程序例子,显示12(时)38(分)H10 EQU 65HH1 EQU 66HM10 EQU 67HM1 EQU 68HSHOUR EQU 69HSMIN EQU 6AHDISH10 EQU 6FHDISH1 EQU 70HDISM10 EQU 71HDISM1 EQU 72HMEMA EQU 75HMEMB EQU 79HORG 0000HAJMP STARORG 0030H;数码管数据表格TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80HDB 90H,88H,83H,0C6H,0A1H,86H,8EH
2、;0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,FORG 0050HSTAR: MOV SHOUR,#12; 设为12时MOV SMIN,#38; 设为38分MOV MEMA,#0MOV MEMB,#0MOV SP,#30HMOV PSW,#00H ;#MAIN: MOV SP,#30HMOV PSW,#00HMOV MEMA,SHOURMOV MEMB,SMINACALL TLED; 把要显示的数转换成数码管代码ACALL DISPLAY; 显示小时,分钟MOV P0,#0FFHMOV P1,#0FFHAJMP MAIN;# ; 显示小时,分钟 DISPLAY:MOV P0,D
3、ISH10MOV P1,#11111110BACALL D1MSMOV P0,DISH1MOV P1,#11111101BACALL D1MSMOV P0,DISM10MOV P1,#11111011BACALL D1MSMOV P0,DISM1MOV P1,#11110111BACALL D1MSRET;# ; 把要显示的数转换成数码管代码TLED: MOV P0,#0FFHMOV A,MEMAMOV B,#10DIV ABMOV H10,AMOV H1,BMOV A,MEMBMOV B,#10DIV ABMOV M10,AMOV M1,BMOV A,H10MOV DPTR,#TABMOVC
4、 A,A+DPTRMOV DISH10,AMOV A,H1MOV DPTR,#TABMOVC A,A+DPTRMOV DISH1,AMOV A,M10MOV DPTR,#TABMOVC A,A+DPTRMOV DISM10,AMOV A,M1MOV DPTR,#TABMOVC A,A+DPTRMOV DISM1,ARET;#;延时D1MS: MOV R7,#0AHLOOP1: MOV R6,#32HLOOP2: DJNZ R6,LOOP2DJNZ R7,LOOP1RET用AT89C51实验板的两位数码管显示0099依次循环的汇编语言程序a_bit equ 20h ;数码管个位数存放内存位置b_
5、bit equ 21h ;数码管十位数存放内存位置temp equ 22h ;计数器数值存放内存位置 star: mov temp,#0 ;初始化计数器,从0开始stlop: acall display;调用显示子程序inc temp;对计数器加1mov a,tempcjne a,#100,next ;判断计数器是否满100?mov temp,#0;满100就清零重新开始next: ljmp stlop;不满就循环执行;显示子程序display: mov a,temp ;将temp中的十六进制数转换成10进制mov b,#10 ;10进制/10=10进制div abmov b_bit,a ;十
6、位在amov a_bit,b ;个位在bmov dptr,#numtab ;指定查表启始地址mov r0,#4dpl1: mov r1,#250 ;dplop: mov a,a_bit ;取个位数MOVC A,A+DPTR ;查个位数的7段代码mov p0,a ;送出个位的7段代码clr p2.7 ;开个位显示acall d1ms ;显示162微秒setb p2.7;关闭个位显示,防止鬼影mov a,b_bit ;取十位数MOVC A,A+DPTR ;查十位数的7段代码mov p0,a ;送出十位的7段代码clr p2.6 ;开十位显示acall d1ms ;显示162微秒setb p2.6;关闭十位显示,防止鬼影djnz r1,dplop ;循环执行250次djnz r0,dpl1 ;循环执行250X4=1000次ret;2+2X80=162微秒,延时按12MHZ计算D1MS: MOV R7,#80DJNZ R7,$RET;实验板上的7段数码管09数字的共阴显示代码numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBHend;如果是共阳数码管的显示代码numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H