|
里面找到個文件名為f的文件,沒有擴展名。可能是源碼。現(xiàn)在貼出來。
- #include<reg51.h>
- #define PKEY P1
- #define PDIG P2
- sbit LSA = P3 ^ 0;
- sbit LSB = P3 ^ 1;
- sbit LSC = P3 ^ 3;
- sbit IN0 = P3 ^ 4;
- sbit IN1 = P3 ^ 5;
- sbit E = P3 ^ 6;
-
- unsigned char code smgnum[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//?????0~9??
- unsigned char code smgmum[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//?????0~9??
- unsigned int gd;
- unsigned int num=99;
- unsigned int keyswitch, tuiwei, wei = 0, x, y;
- unsigned int box[8]={0};
- unsigned int i;
- void delay(unsigned int x) //延遲函數(shù)
- {
- unsigned int i, j;
- for (i = 0; i < x; i++)
- for (j = 0; j < 120; j++) ;
- }
- void kaishi() //電機正轉(zhuǎn)
- {
- IN0 = 1;
- IN1 = 0;
- delay(5);
- }
-
- void daofang() //電機倒轉(zhuǎn)
- {
- IN1 = 1;
- IN0 = 0;
- delay(5);
- }
- void int0_init(void) //開啟外部中斷
- {
- EX0=1;
- IT0=1;
- EA=1;
- }
-
- void key_scan() //矩陣鍵盤檢測函數(shù)
- {
- unsigned char temp0 = 0, temp1 = 0, temp = 0;
- unsigned int a = 0;
- PKEY = 0xf0;
- if (PKEY != 0xf0)
- {
- delay(20);
- if (PKEY != 0xf0)
- {
- temp0 = PKEY;
- PKEY = 0x0f;
- if (PKEY != 0x0f)
- {
- temp1 = PKEY;
- }
- temp = temp0 + temp1;
- if (temp == 0xee) { num = 1; }
- else if (temp == 0xed) { num = 2; }
- else if (temp == 0xeb) { num = 3; }
- else if (temp == 0xe7) { num = 12; }
- else if (temp == 0xde) { num = 4; }
- else if (temp == 0xdd) { num = 5; }
- else if (temp == 0xdb) { num = 6; }
- else if (temp == 0xd7) { num = 13; }
- else if (temp == 0xbe) { num = 7; }
- else if (temp == 0xbd) { num = 8; }
- else if (temp == 0xbb) { num = 9; }
- else if (temp == 0xb7) { num = 14; }
- else if (temp == 0x7e) { num = 10; }
- else if (temp == 0x7d) { num = 0; }
- else if (temp == 0x7b) { num = 11; }
- else if (temp == 0x77) { num = 15; }
- if (num == 0 || num == 1 || num == 2 || num == 3 || num == 4 || num == 5 || num == 6 || num == 7 || num == 8 || num == 9)
- keyswitch = 1;
- if (num == 10)
- tuiwei = 1;
- while ((a < 50) && (PKEY != 0x0f))
- {
- delay(10);
- a++;
- }
- }
- }
- }
-
- void smg() //數(shù)碼管顯示函數(shù)
- {
- LSA = 1; LSB = 1; LSC = 1;
- PDIG = smgnum[box[0]];
- delay(1); PDIG = 0x00;
-
- LSA = 0; LSB = 1; LSC = 1;
- PDIG = smgnum[box[1]];
- delay(1); PDIG = 0x00;
-
- LSA = 1; LSB = 0; LSC = 1;
- PDIG = smgnum[box[2]];
- delay(1); PDIG = 0x00;
-
- LSA = 0; LSB = 0; LSC = 1;
- PDIG = smgnum[box[3]];
- delay(1); PDIG = 0x00;
-
- LSA = 1; LSB = 1; LSC = 0;
- PDIG = smgnum[box[4]];
- delay(1); PDIG = 0x00;
-
- LSA = 0; LSB = 1; LSC = 0;
- PDIG = smgnum[box[5]];
- delay(1); PDIG = 0x00;
-
- LSA = 1; LSB = 0; LSC = 0;
- PDIG = smgnum[box[6]];
- delay(1); PDIG = 0x00;
-
- LSA = 0; LSB = 0; LSC = 0;
- PDIG = smgnum[box[7]];
- delay(1); PDIG = 0x00;
- }
- void main() //主函數(shù)
- {
- int0_init();
- while (1)
- {
- smg();
- key_scan();
- if (num == 12) //按鍵控制直流電機正轉(zhuǎn)
- {
- x = 1;
- y = 0;
- }
- if (x == 1)
- {
- kaishi();
- if ((box[7] == 0) && (box[6] == 0) && (box[5] == 0) && (box[4] == 0))
- {
- kaishi();
- }
- else
- {
- if ((box[3] == box[7]) && (box[2] == box[6]) && (box[1] == box[5]) && (box[0] == box[4]))
- {
- num = 13;
- }
- }
- }
- if (num == 14) //按鍵控制直流電機倒轉(zhuǎn)
- {
- y = 1;
- x = 0;
- }
- if (y == 1)
- daofang();
- if ((box[7] == 0) && (box[6] == 0) && (box[5] == 0) && (box[4] == 0))
- {
- daofang();
- }
- else
- {
- if ((box[3] == box[7]) && (box[2] == box[6]) && (box[1] == box[5]) && (box[0] == box[4]))
- {
- num = 13;
- }
- }
- }
- if (num == 13) //按鍵控制直流電機停止
- {
- E = 1;
- IN0 = 1;
- IN1 = 1;
- x = 0;
- y = 0;
- num = 99;
- }
- if ((keyswitch == 1) && (wei < 4)) //預(yù)設(shè)數(shù)值輸入
- {
- for (i = 7; i > 4; i--)
- { box[i] = box[i - 1]; }
- box[4] = num;
- keyswitch = 0;
- wei++;
- }
- if (num == 11) //預(yù)設(shè)數(shù)值清零
- {
- for (i = 4; i < 8; i++)
- {
- box[i] = 0;
- }
- wei = 0;
- }
- if (num == 15) //計數(shù)數(shù)值清零
- {
- gd = 0;
- num = 99;
- }
- if (tuiwei == 1) //預(yù)設(shè)數(shù)值退位
- {
- box[4] = box[5];
- box[5] = box[6];
- box[6] = box[7];
- box[7] = 0;
- if (wei > 0)
- wei--;
- tuiwei = 0;
- }
- box[0] = gd % 10;
- box[1] = gd / 10 % 10;
- box[2] = gd / 100 % 10;
- box[3] = gd / 1000 % 10;
- }
- }
-
- void int0() interrupt 0 //中斷函數(shù)
- {
- gd++;
- delay(200);
- }
復(fù)制代碼 |
|