按要求C语言编程,实现4个按键控制8个LED灯1个数码管程序。具体要求如下:
1、按键一,清零作用。无论数码管以前显示何内容,都归零,显示0;
2、按键二,加一作用。数码管显示内容加1,显示到9后,要回0;
3、按键三,减一作用。数码管显示内容减1,显示到0后,要回9;
4、按键四,控制8个LED灯流水灯效果。效果可以自己任意选定,只要用到8个LED等,且8个灯都有有亮灭效果。
5、引脚连接电路图参考课程中提供的电路,调试也可以使用该电路调试。
程序代码如下:
/*********************************************************
> File Name: Key_Control.c
> Author: Wenfei6316
> Mail: 2500873570@qq.com
> Created Time: Sat 03 Feb 2018 10:40:21 AM CST
********************************************************/
#include"reg52.h"
#define LED P3
#define LED_SMG P0
typedef unsigned char u8;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
u8 smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 led[]={0xaa,0x55,0xc3,0x96,0x00,0xff,0xef,0x7d};
static u8 counter=0;
char num=0;
void delay(void) //延迟10ms
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void display(u8 num)
{
LED_SMG=smg[num];
}
void key(void)
{
if(K1==0)
{
delay();
if(K1==0)
{
num=0;
while(!K1);//按键释放
}
}
if(K2==0)
{
delay();
if(K2==0)
{
num++;
if(num==10)
{
num=0;
}
while(!K2);//按键释放
}
}
if(K3==0)
{
delay();
if(K3==0)
{
num--;
if(num==-1)
{
num=9;
}
while(!K3);//按键释放
}
}
if(K4==0)
{
delay();
if(K4==0)
{
counter++;
if(counter==8)
{
counter=1;
} //LED显示
switch(counter)
{
case(1):
LED=led[0];
break;
case(2):
LED=led[1];
break;
case(3):
LED=led[2];
break;
case(4):
LED=led[3];
break;
case(5):
LED=led[4];
break;
case(6):
LED=led[5];
break;
case(7):
LED=led[6];
break;
case(8):
LED=led[7];
break;
default:
break;
}
while(!K4);//按键释放
}
}
}
void main()
{
LED=0x00;
display(0);
while(1)
{
key();
display(num);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)