找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制LED闪烁次数及快慢

[复制链接]
跳转到指定楼层
楼主
#include"reg51.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long

sbit KEY1=P2^1;
sbit LED=P2^0;
bit LED_Flash_flag;

void flash(u8 number,u16 const_time_level) //LED闪烁函数 可以精确闪烁次数number  闪烁快慢
{
        static u8 flash_count=0;//闪烁次数=flash_count/2
        static u16 count=0;//闪烁计数
        number+=number;
        if(LED_Flash_flag)
                {
                flash_count=number;LED_Flash_flag=0;
                }
        if(flash_count)
        {        if(count>const_time_level)//闪烁计数 时间越长,闪的越慢
                {
                        //LED^=1;//异或运算 实现位取反 占用5字节
                        count=0;
                        flash_count--;
                        if(LED)LED=0;//语句判断 占用9字节
                        else LED=1;
                        //LED=~LED;//位取反  占用2字节
                }
                count++;
        }
}
//void flash1() //LED闪烁函数 长闪
//{
//        static u16 count=0;//闪烁计数
//        

//if(count>const_time_level)//闪烁计数 时间越长,闪的越慢
//                {
//                        //LED^=1;//异或运算 实现位取反 占用5字节
//                        count=0;
//        
//                        if(LED)LED=0;//语句判断 占用9字节
//                        else LED=1;
//                        //LED=~LED;//位取反  占用2字节
//                }
//                count++;
//        }

        
///*********LED闪烁函数**********************/        
//void flash2() //LED闪烁函数 长闪
//{
//        static u16 count=0;//闪烁计数
//        

//if(count%100==0)//闪烁计数 时间越长,闪的越慢
//                {
//                        //LED^=1;//异或运算 实现位取反 占用5字节
//                        count=0;
//                        
//                        if(LED)LED=0;//语句判断 占用9字节
//                        else LED=1;
//                        //LED=~LED;//位取反  占用2字节
//                }
//                count++;
//        }
void delay(u16 i)
{
while(i--);

}
        
void main()
{
        LED=0;
  while(1)
  {
                if(KEY1==0)
                {
                delay(10000);
                        if(KEY1==0)
                        {
                        LED_Flash_flag=1;
                        }
                }
   flash(5,10000);        
         //flash2();
  }
}

51hei截图_20211019092854.png (33.44 KB, 下载次数: 67)

51hei截图_20211019092854.png

评分

参与人数 1黑币 +20 收起 理由
tang12345678 + 20 回帖助人的奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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