相关问答
单片机驱动数码管显示问题
前不久刚弄的类似显示程序,调整了下给你,看看有用不。电路图是4位显示的,程序已经改成了2位显示。;单片机内存分配申明!TEMPER_L EQU 28H ;用于保存计数值A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置ORG 0000HLJMP MAINORG 0040HMAIN: MOV SP,60HMOV A,#00HMOV P2,ASTAR: MOV TEMPER_L,#0 ;初始化计数器,从0开始stlop:ACALL DISPLAY;调用显示子程序INC TEMPER_L;对计数器加1MOV A,TEMPER_LCJNE A,#100,NEXT ;判断计数器是否满100?MOV TEMPER_L,#0;满100就清零NEXT: LJMP stlop;不满就循环执行DISPLAY:MOV A,TEMPER_LMOV B,#10 ;10进制/10=10进制DIV ABMOV B_BIT,A ;十位在aMOV A_BIT,B ;个位在bMOV DPTR,#NUMTAB ;指定查表启始地址DPL1: MOV R7,#250 ;显示250次,数越小,显示频率越高,递增的越快。DPLOP: MOV A,A_BIT ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码MOV P0,A ;送出个位的7段代码SETB P2.3 ;开个位显示ACALL D1MS ;显示1msCLR P2.3MOV A,B_BIT ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码MOV P0,A ;送出十位的7段代码SETB P2.2 ;开十位显示ACALL D1MS ;显示1msCLR P2.2DJNZ R7,DPLOP ;250次没完循环RET;1MS延时(按12MHZ算)D1MS: MOV R5,#80 DJNZ R5,$RET;7段数码管0~9数字的共阳显示代码NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090HEND
- 联系人 覃佐朝
- 联系电话 9-159-00052525
- 公司地址 中国广东省中山市 古镇 海州