独立键盘仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <REG51.H>
- sbit key1 = P3^0;
- sbit key2 = P3^1;
- sbit key3 = P3^2;
- sbit key4 = P3^3;
- unsigned char code displaytab[33]=
- {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
- 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,
- 0xff,0x00,0x40,0x73,0x76,0x6e,0x38,
- };
- unsigned char led[8];
-
- void delay_ms(unsigned int cnt) //延时
- {
- unsigned int t,i;
- for(i=0;i<cnt;i++)
- {
- t=115;
- while(--t);
- }
- }
- void display()
- { unsigned char nbit;
- for(nbit=0;nbit<8;nbit++)
- {P2=(P2&0xe3)+nbit*4;
- P0=displaytab[led[nbit]];
- delay_ms(1);
- P0=0;
- }
- }
- unsigned char keyscan()
- {
- unsigned char key;
-
- if(key1==0) key=1;
- else if(key2==0) key=2;
- else if(key3==0) key=3;
- else if(key4==0) key=4;
- else key=0;
- return key;
- }
- void main()
- {unsigned char cnt=100;
- led[7]=0x1b;
- led[6]=0x1b;
- led[5]=0x1b;
- led[4]=0x1b;
- led[3]=0x1b;
- while(1)
-
- { led[2]=cnt/100;
- led[1]=cnt%100/10;
- led[0]=cnt%10;
- display();
-
- if(keyscan()==1)
- {
- cnt++;
- while(keyscan()==1)display();
- }
- else if(keyscan()==2)
- {
- cnt--;
- while(keyscan()==2)display();
- }
- else if(keyscan()==3)
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
独立键盘.rar
(73.69 KB, 下载次数: 19)
|