请高手帮忙解答,单片机原理及应用​知识的难题,非常感谢。

已知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];
}
}
温馨提示:答案为网友推荐,仅供参考
第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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网