原理圖.png (125.82 KB, 下載次數: 24)
下載附件
原理圖
2018-5-18 21:47 上傳
- #include "SST89x5x4.h"
- #include "Absacc.h"
- #define C8255_A XBYTE[0xFF7C] //8255
- #define C8255_B XBYTE[0xFF7D]
- #define C8255_C XBYTE[0xFF7E]
- #define C8255_CON XBYTE[0xFF7F]
- sbit P22=P2^2;
- sbit P20=P2^0;
- sbit P17=P1^7;
- unsigned char a[] = {0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
- 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
- unsigned char key_down;
- void int0_isr() interrupt 0 //ía2¿ÖD¶ÏINT0
- {
- while(P22==0);
- {
- P17=0;
- P1=0;
- C8255_B = 0x00;
- }
- }
- void delay(unsigned int time ) //Ñóê±oˉêy
- {
- unsigned int i;
- for(i=0;i<time;i++);
- }
- void int_timer0() interrupt 1 //¶¨ê±Æ÷0ÖD¶Ï
- {
- P1=P1^0x33;
- TH0=0x88;
- TL0=0x00;
- }
- void keyscan() //é¨ÃèêÇ·ñóD°′¼ü
- {
- unsigned char cc;
- C8255_A = 0x00;
- cc = C8255_C;
- key_down = (~cc) & 0x0f;
- }
- void xinhao_1() //×ó×a
- {
- while(key_down==0)
- {
- P1=0x80;
- delay(20000);
- P1=0x87;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_2() //óò×a
- {
- while(key_down==0)
- { P1=0x80;
- delay(20000);
- P1=0xB8;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_3() //½ô¼±
- {
- while(key_down==0)
- {
- P1=0x80;
- delay(20000);
- P1=0xBF;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_4() //é23μ
- {
- while(key_down==0)
- {
- P1=0x80;
- delay(20000);
- P1=0xA1;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_5() //×ó×aé23μ
- {
- while(key_down==0)
- {
- P1=0xA0;
- delay(20000);
- P1=0xA7;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_6() //óò×aé23μ
- {
- while(key_down==0)
- {
- P1=0x81;
- delay(20000);
- P1=0xB9;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_7() //é23μ½ô¼±
- {
- while(key_down==0)
- {
- P1=0xA1;
- delay(20000);
- P1=0xBF;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_8() //×ó×aé23μ½ô¼±
- {
- while(key_down==0)
- {
- P1=0xA0;
- delay(20000);
- P1=0xBF;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_9() //óò×aé23μ½ô¼±
- {
- while(key_down==0)
- {
- P1=0x81;
- delay(20000);
- P1=0xBF;
- delay(20000);
- keyscan();
- }
- }
- void xinhao_10() //í£¿¿
- {
- while(key_down==0)
- {
- keyscan();
- }
- ET0=0;
- }
- void clear() //êyÂë1üÇåáã
- {
- C8255_B = 0x00;
- }
- void getkey() //2éÑˉ¼üÅìËù°′ÏÂμÄλÖÃ
- {
- unsigned char value;
- unsigned int i;
- C8255_A = 0x0e ; //μúò»áD
- value = C8255_C;
- switch(value)
- {
- case (0x0e):
- {
- C8255_B=a[0]; //DÅoÅ1-×ó×a
- xinhao_1();
- break;
- }
- case(0x0d):
- {
- C8255_B=a[4]; //DÅoÅ5-×ó×aé23μ
- xinhao_5();
- break;
- }
- case(0x0b): //DÅoÅ9-óò×aé23μ½ô¼±
- {
- C8255_B=a[8];
- xinhao_9();
- break;
- }
- case(0x0f): //μúò»áDÎT°′¼ü°′ÏÂ
- {
- break;}
- default:
- { P1=0; //μúò»áD±¨¾ˉDÅoÅ
- for(i=0;i<10;i++)
- {
- P20=1;
- delay(10);
- P20=~P20;
- delay(10);
- }
- }
- }
- C8255_A = 0x0d ; //μú¶táD
- value = C8255_C;
- switch(value)
- {
- case (0x0e): //DÅoÅ2-óò×a
- {
- C8255_B=a[1];
- xinhao_2();
- break;
- }
- case(0x0d): //DÅoÅ6-óò×aé23μ
- {
- C8255_B=a[5];
- xinhao_6();
- break;
- }
- case(0x0b): //DÅoÅ10-í£¿¿
- {
- C8255_B=a[9];
- P1=0x80;
- TH0=0x88;
- TL0=0x00;
- ET0=1;
- TR0=1;
- delay(30000);
- xinhao_10();
- break;
- }
- case(0x0f): //μú¶táDÎT°′¼ü°′ÏÂ
- {
- break;}
- default:
- { clear(); //μú¶táD±¨¾ˉDÅoÅ
- P1=0;
- for(i=0;i<10;i++)
- {
- P20=1;
- delay(10);
- P20=~P20;
- delay(10);
- }
- }
- }
- C8255_A = 0x0b ; //μúèyáD
- value = C8255_C;
- switch(value)
- {
- case (0x0e): //DÅoÅ3-½ô¼±
- {
- C8255_B=a[2];
- xinhao_3();
- break;
- }
- case(0x0d): //DÅoÅ7-é23μ½ô¼±
- {
- C8255_B=a[6];
- xinhao_7();
- break;
- }
- case(0x0b): //DÅoÅμÆ»ØÕy
- {C8255_B=a[10];
- P1=0;
- break;}
- case(0x0f): //μúèyáDÎT°′¼ü°′ÏÂ
- {
- break;}
- default:
- { clear(); //μúèyáD±¨¾ˉDÅoÅ
- P1=0;
- for(i=0;i<10;i++)
- {
- P20=1;
- delay(10);
- P20=~P20;
- delay(10);
- }
- }
- }
- C8255_A = 0x07 ; //μúËÄáD
- value = C8255_C;
- switch(value)
- {
- case (0x0e): //DÅoÅ4-é23μ
- {
- C8255_B=a[3];
- xinhao_4();
- break;
- }
- case(0x0d): //DÅoÅ8-×ó×aé23μ½ô¼±
- {
- C8255_B=a[7];
- xinhao_8();
- break;
- }
- case(0x0f): //μúËÄáDÎT°′¼ü°′ÏÂ
- {
- break;}
- default:
- { clear(); //μúËÄáD±¨¾ˉDÅoÅ
- P1=0;
- for(i=0;i<10;i++)
- {
- P20=1;
- delay(10);
- P20=~P20;
- delay(10);
- }
- }
- }
- }
- void main()
- {
- P1=0x00;
- clear();
- EX0=1;
- IT0=0;
- EA=1;
- TMOD=0x11;
- C8255_CON = 0x81; //82553õê¼»ˉ
- while(P22==1)
- {
- P17=P22;
- clear();
- keyscan();
- if(key_down) //·à¶¶¶ˉ
- {
- delay(300);
- clear();
- keyscan();
- if(key_down)
- {
- key_down=0;
- getkey();
- }
- }
- }
- }
復制代碼
|