单片机按键去抖显示led
来源:互联网 发布:百万公众网络测试登录 编辑:程序博客网 时间:2024/05/09 06:04
#include<reg52.h>
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
unsigned char led[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char flag;
void delayus(unsigned char t)
{
while(--t);
}
void delayms(unsigned char t)
{
while(--t)
{
delayus(245);
delayus(245);
}
}
void delay(unsigned char n)
{
unsigned int i,j;
for( i = n; i > 0; i--)
{
for( j = n; j > 0; j--)
{
;
}
}
}
void fun()
{
switch(P1)
{
case 0xfe:
{
//if(flag == 0)
//{
P0 = led[0];
//flag = 1;
//}
break;
}
case 0xfd:
{
//if(flag == 1)
// {
P0 = led[1];
//flag = 0;
//}
break;
}
case 0xfb:
{
//if(flag == 1)
// {
P0 = led[2];
//}
break;
}
case 0xf7:
{
// if(flag == 1)
// {
P0 = led[3];
// }
break;
}
case 0xef:
{
// if(flag == 1)
// {
P0 = led[4];
// }
break;
}
case 0xdf:
{
//if(flag == 1)
//{
P0 = led[5];
// }
break;
}
case 0xbf:
{
//if(flag == 1)
// {
P0 = led[6];
// }
break;
}
case 0x7f:
{
// if(flag == 1)
// {
P0 = led[7];
// }
break;
}
default:break;
}
}
void car()
{
// unsigned char flag;// = 0;
switch(P1)
{
case 0xfe:
{
if(!key1)
{
delayms(10);
if(!key1)
{
while(!key1);
flag++;
}
}
}
break;
case 0xfd:
{
if(!key2)
{
delayms(10);
if(!key2)
{
while(!key2);
while(1)
{
P0 = led[7];
delay(100);
P0 = 0xff;
delay(100);
}
}
}
}
break;
case 0xfb:
{
if(!key3)
{
delayms(10);
if(!key3)
{
while(!key3);
while(1)
{
P0 = 0x7e;
delay(100);
P0 = 0xff;
delay(100);
}
}
}
}
break;
default:break;
}
}
void main(void)
{
unsigned char i;
P1 = 0xff;
P0 = 0xff;
while(1)
{
//fun();
car();
if(flag%2)
{ P0 = led[0];
delay(100);
P0 = 0xff;
delay(100);
}
else
{P0 = 0xff;}
}
}
sbit key1 = P1^0;
sbit key2 = P1^1;
sbit key3 = P1^2;
unsigned char led[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char flag;
void delayus(unsigned char t)
{
while(--t);
}
void delayms(unsigned char t)
{
while(--t)
{
delayus(245);
delayus(245);
}
}
void delay(unsigned char n)
{
unsigned int i,j;
for( i = n; i > 0; i--)
{
for( j = n; j > 0; j--)
{
;
}
}
}
void fun()
{
switch(P1)
{
case 0xfe:
{
//if(flag == 0)
//{
P0 = led[0];
//flag = 1;
//}
break;
}
case 0xfd:
{
//if(flag == 1)
// {
P0 = led[1];
//flag = 0;
//}
break;
}
case 0xfb:
{
//if(flag == 1)
// {
P0 = led[2];
//}
break;
}
case 0xf7:
{
// if(flag == 1)
// {
P0 = led[3];
// }
break;
}
case 0xef:
{
// if(flag == 1)
// {
P0 = led[4];
// }
break;
}
case 0xdf:
{
//if(flag == 1)
//{
P0 = led[5];
// }
break;
}
case 0xbf:
{
//if(flag == 1)
// {
P0 = led[6];
// }
break;
}
case 0x7f:
{
// if(flag == 1)
// {
P0 = led[7];
// }
break;
}
default:break;
}
}
void car()
{
// unsigned char flag;// = 0;
switch(P1)
{
case 0xfe:
{
if(!key1)
{
delayms(10);
if(!key1)
{
while(!key1);
flag++;
}
}
}
break;
case 0xfd:
{
if(!key2)
{
delayms(10);
if(!key2)
{
while(!key2);
while(1)
{
P0 = led[7];
delay(100);
P0 = 0xff;
delay(100);
}
}
}
}
break;
case 0xfb:
{
if(!key3)
{
delayms(10);
if(!key3)
{
while(!key3);
while(1)
{
P0 = 0x7e;
delay(100);
P0 = 0xff;
delay(100);
}
}
}
}
break;
default:break;
}
}
void main(void)
{
unsigned char i;
P1 = 0xff;
P0 = 0xff;
while(1)
{
//fun();
car();
if(flag%2)
{ P0 = led[0];
delay(100);
P0 = 0xff;
delay(100);
}
else
{P0 = 0xff;}
}
}
0 0
- 单片机按键去抖显示led
- 单片机按键去抖原理
- 单片机按键去抖原理
- 单片机按键去抖原理
- 按键控制显示LED亮度
- 嵌入式S3C2440开发板LED灯和按键(去抖)驱动实验
- 矩阵键盘按键LED显示键值
- LED显示按键控制 CT1642、PT6964(1)
- 单片机学习记录——LED与独立按键
- 单片机==独立按键led灯(7)
- 51单片机控制LED显示汉字
- 51单片机控制LED显示汉字
- FPGA 按键去抖
- 按键去抖
- 按键去抖分析
- 单片机汇编语言编程:按键、计数及显示
- 按键+Led
- 按键-LED
- 变长vector uva 101
- PAT(甲级)1035. Password (20)
- 涂磊的经典语录
- 肤色检测(Skin-Detection)
- PAT乙级(Basic Level)真题1002
- 单片机按键去抖显示led
- UML之对象图
- 【SSH-商场】——概览
- 6-1
- 5-2 一元多项式的乘法与加法运算 (20分)
- BZOJ1895: Pku3580 supermemo Splay
- 螺旋矩阵II
- 如何启动 instrumentation ?(android )
- 6-2