附件中包含原理图和程序全部内容。主要练习51单片机按键的应用,是一个非常简单和基础的内容,适合新手学习过程当中去做练习
按键控制数码管输出.zip
(53.6 KB, 下载次数: 12)
- #include<reg51.h>
- unsigned char scan_key( );
- void display(unsigned char i);
- void delayms(unsigned int t);
- unsigned char key;
- unsigned char a[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void main()
- {
- while(1)
- {
- scan_key();
- display(key);
- }
- }
- void display(unsigned char i)
- {
- P2=a[i];
- }
- void delayms(unsigned int t)
- {
- unsigned int i,j;
- for(i=0;i<t;i++)
- for(j=0;j<120;j++);
- }
- unsigned char scan_key () //???????
- {
- unsigned char hang,lie;
- P1=0x0f; //???????????
- if(P1!=0x0f)
- delayms(10);
- if(P1!=0x0f)
- {
- switch(P1&0x0f) //????к?
- {
- case 0x0e:hang=0;break;
- case 0x0d:hang=1;break;
- case 0x0b:hang=2;break;
- case 0x07:hang=3;break;
- }
- P1=0xf0; //?????????????????к?
- switch(P1&0xf0)
- {
- case 0xe0:lie=0;break;
- case 0xd0:lie=1;break;
- case 0xb0:lie=2;break;
- case 0x70:lie=3;break;
- }
- P1=0x0f;
- while(P1!=0x0f); //??????????
- key=hang*4+lie;
- }
- return (key);
-
- }
复制代码
|