问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机 用1个按键控制8盏灯,进行花样显示

发布网友 发布时间:2023-01-04 17:53

我来回答

3个回答

热心网友 时间:2023-10-13 22:04

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key=P2^1;//这里看你把按键设置在哪个引脚上
void delay(uint z)
unit x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void key1()
{
if(key==0)
{
P1=0x00; //灯全亮
}
void key2()
{
if(key==0)
{
P1=0xfe;
P1=P1<<1; //左移或右移,这个自己试一下
delay(1000);
.//继续移动到最后一个灯亮
if(P1=0x80) //判断最后一个灯是否亮了,亮了就全部灭
{
P1=0xff;
}
}
}
void key3()
{
if(key==0)
{
P1=0x00; //全亮
delay(1000);
P1=~P1; //全灭 这里灭亮几次可以用for循环,不过我是直接写的顺序
//亮灭到达三次
P1=0Xff; //最后全都灭了
}
}
void main()
{
while(1)
{
key1();
while(key);
key2();
while(key);
key3();
while(key);
}
}

不知道对不,你自己试下然后修改修改吧

热心网友 时间:2023-10-13 22:04

按照你的要求写的,你可以测试一下看看!

/*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**/
#include "REG52.H"

/*
* 按键
*/
sbit Key_In1 = P2^0;
sbit Key_In2 = P2^1;
sbit Key_In3 = P2^2;

bit Update_Flag1;
bit Update_Flag2;
bit Update_Flag3;

/* LED 0- 7 */
unsigned char const TABLE[] =
{
0xFE,
0xFD,
0xFB,
0xF7,
0xEF,
0xDF,
0xBF,
0x7F
};

/*
* 延时1ms
*/
void Delay_1ms(unsigned int Cnt)
{
unsigned int x, y;

for(x = Cnt; x > 0; x--)
for(y = 110; y > 0; y--);
}

void KeyScang(void)
{
unsigned char i;

/* 按键1 */
if(Key_In1 == 0)
{
Delay_1ms(5);
if(Key_In1 == 0)
{
Update_Flag1 = 1;
}
while(Key_In1 == 0);
}

/* 按键2 */
if(Key_In2 == 0)
{
Delay_1ms(5);
if(Key_In2 == 0)
{
Update_Flag2 = 1;
}
while(Key_In2 == 0);
}

/* 按键3 */
if(Key_In3 == 0)
{
Delay_1ms(5);
if(Key_In3 == 0)
{
Update_Flag3 = 1;
}
while(Key_In3 == 0);
}

//
/* LED全亮 */
if(Update_Flag1)
{
Update_Flag1 = 0;
P1 = 0x00; /* P1口LED全亮 */
}

/* 循环显示最后全灭 */
if(Update_Flag2)
{
Update_Flag2 = 0;
for(i = 0; i < 8; i++)
{
P1 = TABLE[i];
Delay_1ms(500);
}
P1 = 0xFF;
}

/* LED闪烁3次 */
if(Update_Flag3)
{
Update_Flag3 = 0;
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
P1 = 0x00;
Delay_1ms(500);
P1 = 0xFF;
Delay_1ms(500);
}
}

/*
*
*/
int main(void)
{
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;

while(1)
{
KeyScang();
}
}

热心网友 时间:2023-10-13 22:04

是需要编程吗?

用什么语言?

还检测按下第四下吗?追问需要编程 C51语言 要按第四下 跪求啊

追答#include "REG52.H"

sbit Key = P1^0;

void Delay_1ms(unsigned int Cnt)
{
unsigned int x, y;
for(x = Cnt; x > 0; x--) for(y = 110; y > 0; y--);
}

bit KeyRead(void)
{
if(!Key) {
Delay_1ms(5);
if(!Key) {
while(!Key);
return 0;
}
}
return 1;
}

void main()
{

while (1) {

while (KeyRead()); //等待第一次按键
P0 = 0; //全亮

while (KeyRead()); //等待第二次按键

P0 = 0xfe; Delay_1ms(500);//流水
P0 = 0xfd; Delay_1ms(500);
P0 = 0xfb; Delay_1ms(500);
P0 = 0xf7; Delay_1ms(500);
P0 = 0xef; Delay_1ms(500);
P0 = 0xdf; Delay_1ms(500);
P0 = 0xbf; Delay_1ms(500);
P0 = 0x7f; Delay_1ms(500);
P0 = 0xFF; //全灭

while (KeyRead()); //等待第三次按键

P0 = 0; Delay_1ms(500); //全亮
P0 = 0xFF; Delay_1ms(500); //全灭

P0 = 0; Delay_1ms(500); //全亮
P0 = 0xFF; Delay_1ms(500); //全灭

P0 = 0; Delay_1ms(500); //全亮
P0 = 0xFF; Delay_1ms(500); //全灭
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
多特后防四大天王是哪些 iPhoe4还原所有设置后变成语音朗读而且滑屏无法正常使用 金鱼在鱼缸里几天能不会死掉? 金鱼放鱼缸多久合适 金鱼放鱼缸的时间 想学会缅甸语请问大神昆明附近有没有好一点的班? 昆明哪里可以学缅甸语?哪里不贵,哪里有优势? 昆明哪里可以学缅甸语啊?想去学几个月。 要出去缅甸出差一段时间,请问下昆明什么地方有好的缅甸语培训?? 叔叔要去缅甸做生意,帮他找间学校学缅甸语,简单的就行了,只有两个月... 昆明学缅甸语哪里学呀??? 想学几个月,再去一次缅甸。 简单的51单片机设计,用8个按键独立控制8个灯的程序!(高分!)要求如下: C51单片机编程 求按下1次按键 8盏LED灯全亮源程序 在51单片机中用c语言keil写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全 在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按键灯亮,按下按键灯灭) 如何查询自己的银行卡是属于哪一类账户? 白色像电量的标志是什么软件 借贷宝怎么换绑定银行卡 借贷宝绑定了银行,可是密码输错了,没绑定成,这该怎么做 借贷宝绑定的银行卡密码忘了怎么办 怎么做自制香肠 宝宝肉肠怎么做的 猪肉香肠怎么做 大润发超市电话送菜是真的吗 大润发面包车配送怎么样 从大润发买东西派送安全吗 昆明大润发配送员有什么坑 陌陌未知距离怎么弄 昆明京东方的工资待遇 南京京东方外协怎么样 xr提示音怎么设置 我们玩过的足球游戏里有哪些材料请你把它画出来 龟背竹如何繁殖 办公桌旁边放个长条柜子好嘛? 360游戏大厅怎么玩爆枪突击 运动会观后感作文 冯笑龙胆紫年龄 冯笑新专辑怎么买 龙胆紫一共几张专辑 冯笑犯了什么事 国寿瑞鑫两全生命保障金是什么意思 一个号码注册了两个,怎么找回另一个? 一个号码注册了两个,怎么找回另一个如果? 一个手机号码注册了两个之前那个微信怎么找回来? 同一个手机号注册两个,旧的怎么找回 用同一个手机号注册了两个微信账号怎么找回 一个号码注册了两个,怎么找回另一个? 一个手机号码注册了两个,想找回第一个注册的,第二个号已经找不到了,怎么找到? 我用一个手机号注册了两个,但是我第一个微信不见了,我在怎样找回? 一个手机号码注册了两个之前那个微信怎么找回来? 重庆京东方那个厂好一点