0
나는 그런 프로그램을 가지고있다. LED 디스플레이의 버튼을 눌러 번호를 얻습니다. 그러나이 프로그램을 변경해야만 * 또는 #을 누르면 디스플레이에 마지막으로 누른 숫자가 2 개 표시됩니다. 예를 들어 '1 2 3 4 5 #'을 (를) 누릅니다. 디스플레이에는 마지막 숫자 인 '4 5'만 표시됩니다. 어떻게해야합니까? 대신 P1을 할당하는 각 버튼을 누를에 대해 다음과 같이매트릭스 키보드와 LED 디스플레이가있는 마이크로 컨트롤러 8051
#include <REGX52.h>
#define SEG P1
#define keypad P2
sbit r1 = P2^0;
sbit r2 = P2^1;
sbit r3 = P2^2;
sbit r4 = P2^3;
sbit c1 = P2^4;
sbit c2 = P2^5;
sbit c3 = P2^6;
sbit c4 = P3^7;
void scan(void);
unsigned int Display[12] = {0x0, 0x1, 0x2, 0x3,0x4,0x5,0x6,0x7,0x8,0x9};
void main(void)
{
while(1)
{
scan();
}
}
void scan(void){
r1=0;
r2=r3=r4=1;
if(c1==0)
{
while(c1==0){
P1=Display[1];
}
}
if(c2==0)
{
while(c2==0){
P1=Display[2];
}
}
if(c3==0)
{
while(c3==0){
P1=Display[3];
}
}
r2=0;
r1=r3=r4=1;
if(c1==0)
{
while(c1==0){
P1=Display[4];
}
}
if(c2==0)
{
while(c2==0){
P1=Display[5];
}
}
if(c3==0)
{
while(c3==0){
P1=Display[6];
}
}
r3=0;
r1=r2=r4=1;
if(c1==0)
{
while(c1==0){
P1=Display[7];
}
}
if(c2==0)
{
while(c2==0){
P1=Display[8];
}
}
if(c3==0)
{
while(c3==0){
P1=Display[9];
}
}
r4=0;
r1=r2=r3=1;
if(c2==0)
{
while(c2==0){
P1=Display[0];
}
}