已知P2口接7段共阴发光数码管(a接P2.0,b接P2.1其他顺序类推),试编写一段测试程序,让数码管始终显示P1口的低4位的数值,例如P1为0时,数码管显示“0”,P1为09H时,数码管显示“9”。
请帮帮忙,已知P2口接7段共阴发光数码管(a接P2.0,b接P2.1其他顺序类推),试编写一段测试程序,让数码管始终显示P1口的低4位的数值,例如P1为0时,数码管显示“0”,P1为09H时,数码管显示“9”。
/***********************************************************************/
å·²ç¥P2å£æ¥7æ®µå ±é´åå æ°ç 管ï¼aæ¥P2.0ï¼bæ¥P2.1å ¶ä»é¡ºåºç±»æ¨ï¼ï¼è¯ç¼åä¸æ®µæµè¯
ç¨åºï¼è®©æ°ç 管å§ç»æ¾ç¤ºP1å£çä½4ä½çæ°å¼ï¼ä¾å¦P1为0æ¶ï¼æ°ç 管æ¾ç¤ºâ0âï¼
P1为09Hæ¶ï¼æ°ç 管æ¾ç¤ºâ9âã
ä½ è¯è¯ï¼æé®é¢ä½ å¨è¿½é®ã
/**********************************************************************/
#include<reg51.h>
#define uchar unsigned char
uchar table[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar temp=0xff;
void main()
{
int Value;
while(1)
{
temp=P1;
if (temp==0x00)
{
Value= 0;
}
else if (temp==0x01)
{
Value= 1;
}
else if (temp==0x02)
{
Value= 2;
}
else if (temp==0x03)
{
Value= 3;
}
else if (temp==0x04)
{
Value= 4;
}
else if (temp==0x05)
{
Value= 5;
}
else if (temp==0x06)
{
Value= 6;
}
else if (temp==0x07)
{
Value= 7;
}
else if (temp==0x08)
{
Value= 8;
}
else if (temp==0x09)
{
Value= 9;
}
else //å ¶ä»çå¼é½æ¾ç¤ºF
{
Value= 15;
}
P2=table[Value];
}
}
å·²ç¥P2å£æ¥7æ®µå ±é´åå æ°ç 管ï¼aæ¥P2.0ï¼bæ¥P2.1å ¶ä»é¡ºåºç±»æ¨ï¼ï¼è¯ç¼åä¸æ®µæµè¯
ç¨åºï¼è®©æ°ç 管å§ç»æ¾ç¤ºP1å£çä½4ä½çæ°å¼ï¼ä¾å¦P1为0æ¶ï¼æ°ç 管æ¾ç¤ºâ0âï¼
P1为09Hæ¶ï¼æ°ç 管æ¾ç¤ºâ9âã
ä½ è¯è¯ï¼æé®é¢ä½ å¨è¿½é®ã
/**********************************************************************/
#include<reg51.h>
#define uchar unsigned char
uchar table[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar temp=0xff;
void main()
{
int Value;
while(1)
{
temp=P1;
if (temp==0x00)
{
Value= 0;
}
else if (temp==0x01)
{
Value= 1;
}
else if (temp==0x02)
{
Value= 2;
}
else if (temp==0x03)
{
Value= 3;
}
else if (temp==0x04)
{
Value= 4;
}
else if (temp==0x05)
{
Value= 5;
}
else if (temp==0x06)
{
Value= 6;
}
else if (temp==0x07)
{
Value= 7;
}
else if (temp==0x08)
{
Value= 8;
}
else if (temp==0x09)
{
Value= 9;
}
else //å ¶ä»çå¼é½æ¾ç¤ºF
{
Value= 15;
}
P2=table[Value];
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-12-11
;如下即可:
ORG 0000H
MOV DPTR, #TABLE
LOOP:
MOV A, P1 ;读
ANL A, #0FH ;保留低四位
MOVC A, @A + DPTR ;查出对应的段码
MOV P2, A ;显示
SJMP LOOP ;无限循环
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END
ORG 0000H
MOV DPTR, #TABLE
LOOP:
MOV A, P1 ;读
ANL A, #0FH ;保留低四位
MOVC A, @A + DPTR ;查出对应的段码
MOV P2, A ;显示
SJMP LOOP ;无限循环
TABLE:
DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END