找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2731|回复: 5
打印 上一主题 下一主题
收起左侧

求助这类单片机程序应该如何编写?(按键实现一灯闪烁和八灯闪烁的切换)

[复制链接]
跳转到指定楼层
楼主
ID:434886 发表于 2018-12-15 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用一个按键实现一灯闪烁和八灯闪烁的切换,萌新不懂该如何实时切换啊,程序思路应该怎么写?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:382454 发表于 2018-12-15 17:27 | 只看该作者
很简单.
先要写一个闪灯的函数,之后呢,按一个键,打开一个LED。再按一下键打开8个LED口。而按键标志位可以定义一个bit变量来实现。即标志位为0时,就打开一个IO口,当标志位为1时,就打开8个IO口,驱动8个LED灯。
回复

使用道具 举报

板凳
ID:434886 发表于 2018-12-15 17:39 | 只看该作者
univers 发表于 2018-12-15 17:27
很简单.
先要写一个闪灯的函数,之后呢,按一个键,打开一个LED。再按一下键打开8个LED口。而按键标志位可 ...

那求问大佬这一段的切换如何实现呢?
回复

使用道具 举报

地板
ID:423511 发表于 2018-12-17 17:28 | 只看该作者
我写了一个程序你看一下:
#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 num=1;
u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        m=num%2;
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();       
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }
}

评分

参与人数 1黑币 +10 收起 理由
yong761228 + 10 赞一个!

查看全部评分

回复

使用道具 举报

5#
ID:357520 发表于 2018-12-18 11:36 | 只看该作者
weiweimao1 发表于 2018-12-17 17:28
我写了一个程序你看一下:
#include

#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        if(m==2)
        {
                 m=0;
        }
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();        
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }
回复

使用道具 举报

6#
ID:357520 发表于 2018-12-18 11:37 | 只看该作者
#include<reg52.h>

typedef unsigned int u8;
#define led P2          //定义led由P2口控制

sbit key=P3^1;          //定义开关与P3^1口相连
sbit one=P2^0;          //8个IO口中的一个

u8 m;
void delay(u8 z)            //
{                                 //延时函数大概延时1us
        u8 x,y;                 //
        for(x=z;x>0;x--)
        for(y=114;y>0;y--);
}

void keypor()      //检测按键函数
{
        if(key == 0)
        {
                delay(10);
                if(key == 0)
                {
                   num++;
                }
        }
        while(!key);
        if(m==2)
        {
                 m=0;
        }
}

void oneLED()           //一个LED闪烁
{
          one=~one;
          delay(100);
}

void eightLED()         //8个LED闪烁
{
        led=0x00;
        delay(100);
        led=0xff;
        delay(100);

}

void main()              //主函数
{
        while(1)
        {
                keypor();        
                if(m==0)
                {
                        oneLED();
                }
                if(m==1)
                {
                        eightLED();
                }
        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表