|

//P1口接8個(gè)按鍵,代表1~8。每按一個(gè)鍵在8位數(shù)碼管上從左到右顯示。
//D:\DPJ_C\OTHER\8位數(shù)碼管\8位數(shù)碼管.C
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
sbit KEY4=P1^3;
sbit KEY5=P1^4;
sbit KEY6=P1^5;
sbit KEY7=P1^6;
sbit KEY8=P1^7;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
bit flag;
uchar a,temp;
uchar code tab[]={
0x00,/*滅*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
};
uchar arr[9];
void delay (uint ms)
{
uchar i;
while(ms--)
for(i=0;i<123;i++);
}
void disp();
void main()
{
while(1)
{
disp();
if(flag==1)
{
flag=0;
a++;
if(a==9)
a=1;
arr[a]=temp;
}
while(!KEY1)
{
disp();
if(KEY1)
{
flag=1;
temp=1;
}
}
while(!KEY2)
{
disp();
if(KEY2)
{
flag=1;
temp=2;
}
}while(!KEY3)
{
disp();
if(KEY3)
{
flag=1;
temp=3;
}
}
while(!KEY4)
{
disp();
if(KEY4)
{
flag=1;
temp=4;
}
}
while(!KEY5)
{
disp();
if(KEY5)
{
flag=1;
temp=5;
}
}
while(!KEY6)
{
disp();
if(KEY6)
{
flag=1;
temp=6;
}
}while(!KEY7)
{
disp();
if(KEY7)
{
flag=1;
temp=7;
}
}
while(!KEY8)
{
disp();
if(KEY8)
{
flag=1;
temp=8;
}
}
}
}
void disp()
{
P2=tab[arr[1]];
P3_0=0;
delay(1);
P3_0=1;
P2=tab[arr[2]];
P3_1=0;
delay(1);
P3_1=1;
P2=tab[arr[3]];
P3_2=0;
delay(1);
P3_2=1;
P2=tab[arr[4]];
P3_3=0;
delay(1);
P3_3=1;
P2=tab[arr[5]];
P3_4=0;
delay(1);
P3_4=1;
P2=tab[arr[6]];
P3_5=0;
delay(1);
P3_5=1;
P2=tab[arr[7]];
P3_6=0;
delay(1);
P3_6=1;
P2=tab[arr[8]];
P3_7=0;
delay(1);
P3_7=1;
}
|
|