0-99按键扫描计数器
目的:通过IO口扫描对按键的次数进行计数,范围为0到99.
电路图:段选P0^0 ~P0^6口控制a,b,c,d,e,f,g,h
位选P1^0 ~P1^1口控制两位数码管的位选
按键P3^7
代码:
#include <reg52.h>
unsigned char code Tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90}; //数码管段选
unsigned char code Dis[] = {0xfe,0xfd,0xfb,0xf7,}; //数码管位选
sbit K1=P3^7; // 位定义按键
void delay(unsigned int z) //delay延时函数1ms
{ unsigned x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{ unsigned char num1;
while(1)
{
if(K1==0)
{
delay(10); //按键去抖
if(K1==0)
num1++;
if(num1==100)
num1=0;
delay(150); //稍微延时防止主程序执行过快显示不对
}
P0=Tab[num1%10];
P1=Dis[0]; // 显示个位
delay(10);
P0=Tab[num1/10]; // 显示十位数据
P1=Dis[1];
delay(10);
}
}
文章评论(0条评论)
登录后参与讨论