蓝桥杯按键数码管程序
单片机源程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar table_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar table_we[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} ;
- uchar shi,ge;
- uchar temp;
- void delayms(uint z)
- {
- uint i,j;
- for(i=0;i<z;i++)
- for(j=0;j<110;j++);
- }
- void display()
- {
- P2=0x00;
- P0=0xff;
- if(shi!=0)
- {
- P0=table_du[shi];
- P2 |= 0xe0;
- P2 &= 0x1f;
- P0=table_we[6];
- P2 |= 0xc0;
- P2 &= 0x3f;
- delayms(1);
- }
- P0=table_du[ge];
- P2 |= 0xe0;
- P2 &= 0x1f;
- P0=table_we[7];
- P2 |= 0xc0;
- P2 &= 0x3f;
- delayms(1);
- }
- uchar matrix() //m为局部变量,但值有延续性
- {
- uchar m;
- P3=0xfe;
- switch(P3)
- {
- case 0x7e : m=0;break;
- case 0xbe : m=1;break;
- case 0xde : m=2;break;
- case 0xee : m=3;break;
- default :break;
- }
- P3=0xfd;
- switch(P3)
- {
- case 0x7d : m=4;break;
- case 0xbd : m=5;break;
- case 0xdd : m=6;break;
- case 0xed : m=7;break;
- default :break;
- }
- P3=0xfb;
- switch(P3)
- {
- case 0x7b : m=8;break;
- case 0xbb : m=9;break;
- case 0xdb : m=10;break;
- case 0xeb : m=11;break;
- default :break;
- }
- P3=0xf7;
- switch(P3)
- {
- case 0x77 : m=12;break;
- case 0xb7 : m=13;break;
- case 0xd7 : m=14;break;
- case 0xe7 : m=15;break;
- default :break;
- }
- return m;
- }
- void main()
- {
- while(1)
- {
- temp=matrix();
- shi=temp%100/10;
- ge =temp%10;
- display();
- }
- }
复制代码
所有资料51hei提供下载:
国信长天杯电子设计专业人才大赛_程序、矩阵键盘.doc
(28.5 KB, 下载次数: 7)
|