国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機按鍵控制流水燈

這篇具有很好參考價值的文章主要介紹了51單片機按鍵控制流水燈。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、按鍵的使用

<1>獨立按鍵的原理圖

51單片機按鍵控制流水燈

按鍵所對應的引腳為P3的0、1、2、3引腳口,并且這里總共有四個獨立按鍵,它們公共的一段都接到了GND電源的負極。這樣我們就知道按鍵上電的默認電平為高電平。所以我們只需要控制按鍵按下時給一個低電平0,不按下時默認高電平1就行。

?<2>按鍵控制LED燈的亮滅

按鍵消抖:抖動是機械按鍵存在的現(xiàn)象,是必須要進行處理的。一般處理有兩種方式:一種是硬件消抖,另一種是軟件消抖。硬件消抖不僅會增加開發(fā)成本,而且有時不穩(wěn)定。一般都會選擇軟件消抖。

#include  "reg51.h"	

sbit LED = P2^0;//LED燈引腳定義
sbit KEY = P3^1;//按鍵引腳定義

void delay(int x)//延時函數(shù)(ms)
{
	int i,j;
	for(i=0;i<x;i++)
		for(j=0;j<100;j++);
}

void main()
{
    while(1)
    {
        if(!KEY)//當按鍵按下時   
	    {
		    delay(15);//按鍵消抖
		    if(!KEY)//確定按鍵按下
		    {
		    	LED = !LED;//LED燈的狀態(tài)取反
		    }
	    }
    }
}

if(!KEY)的含義:因為按鍵默認高電平,所以!KEY的值為0,當按下按鍵電平變?yōu)榈碗娖剑?KEY的值也就變?yōu)?非0";這樣就可以做出判斷了。

 注意:獨立按鍵K1按鍵與K2按鍵按鍵網(wǎng)絡編號是相反的,K1=P3^1、K2=P3^0。

2、獨立按鍵控制LED燈

根據(jù)上一章流水燈、走馬燈代碼結(jié)合:

?LED流動正反方向中的type()函數(shù)與LED燈狀態(tài)切換文章來源地址http://www.zghlxwxcb.cn/news/detail-511043.html

#include "reg51.h"

#define LED P2

sbit KEY = P3^1;
bit direction;
char i;

void delay(int x)//延時函數(shù)(ms)
{
	int i,j;
	for(i=0;i<x;i++)
		for(j=0;j<100;j++);
}

void type()				//流水燈的翻轉(zhuǎn)
{
	if(!direction)	  
	{ 		   
		if(++i>8)			//正向移動
			i=0;
	}
	else
	{ 		   
		if(--i<0)			//反向移動
			i=8;
	}
}

void main()
{
    LED = buf[i];//LED燈的默認流向
    while(1)
    {
        if(!KEY)
        {
            delay(15);
            if(!KEY)
                direction = !direction;
        }
    }
}
#include  "reg52.h"	
#define	LED	P2				//宏定義LED引腳
sbit  K0=P3^1;				//定義按鍵引腳口
sbit  K1=P3^0;
sbit  K2=P3^2;
sbit  K3=P3^3;
bit   key_mark,direction;			//兩個標志位,key_mark用于結(jié)束循環(huán);direction用于LED燈亮滅的翻轉(zhuǎn)
char  Buf[] = {0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; 		//第一種流水燈方式,燈亮個數(shù)依次增加
char  Puf[] = {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};			//第二種流水燈方式,燈依次位移一位
char i;					//全局標量i,用于各個循環(huán)的使用
int n = 100;		//全局變量n用于延時的使用

void delay(int x)//延時函數(shù)(ms)
{
	int i,j;
	for(i=0;i<x;i++)
		for(j=0;j<100;j++);
}

void speed()			//延時的加減
{
	if(!K1)
	{
		delay(15);
		if(!K1)
		{
			n += 100;			//加100ms
			if(n>1000)
				n=1000;
		}
	}
	if(!K2)
	{
		delay(15);
		if(!K2)
		{
			n -= 100;			//減100ms
			if(n<300)
				n=300;
		}
	}
}

void type()				//流水燈的翻轉(zhuǎn)
{
	if(!direction)	  
	{ 		   
		if(++i>8)			//正向移動
			i=0;
	}
	else
	{ 		   
		if(--i<0)			//反向移動
			i=8;
	}
}

void mode1()		//模式1,當按下K0時,流水燈進行翻轉(zhuǎn)
{
		if(!K0)
		{
			delay(15);
			if(!K0)
			{
				direction = !direction;//標志位direction狀態(tài)取反
			}
		}
}

void mode2()		//模式2,當按下K1時流水燈使用第一種流水燈方式
{
	type();
	LED = Buf[i];   
	delay(n);		//延時n ms
}

void mode3()		//模式3,當按下K2時流水燈使用第二種流水燈方式
{
	type();
	LED = Puf[i];
	delay(n);
}

void mode4()		//模式4,當按下K3時,key_mark置為1,退出循環(huán)(在程序中起到一個暫停作用,用于流水燈狀態(tài)切換的使用)
{
	if(!K3)
	{
		delay(15);
		if(!K3)
			key_mark = 1;
	}
}

void main()
{
	while(1)
	{
		if(!K1 && !key_mark)//判斷按鍵是否按下K1,以及標志位key_mark是否為0(當key_mark不為0時說明此函數(shù)在其他循環(huán)中,則無法進入新循環(huán))
		{
			delay(15);
			if(!K1)
			{
				while(!key_mark)
				{
					speed();					//引用函數(shù),節(jié)省代碼量以及書寫的規(guī)范
					mode1();
					mode2();
					mode4();
				}
			}
		}
		if(!K2 && !key_mark)//判斷按鍵是否按下K2,以及標志位key_mark是否為0(當key_mark不為0時說明此函數(shù)在其他循環(huán)中,則無法進入新循環(huán))
		{
			delay(15);
			if(!K2)
			{
				while(!key_mark)
				{
					speed();
					mode1();
					mode3();
					mode4();
				}
			}
		}
		if(K0 || K1 || K2 ||K3)//沒有按鍵按下時,標志位key_mark自動置0
			key_mark=0;
	}
}

到了這里,關(guān)于51單片機按鍵控制流水燈的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 51單片機入門 - 詳解定時器實現(xiàn)按鍵控制流水燈方向

    操作系統(tǒng):Windows 10 x84-64 單片機:STC89C52RC 編譯器:SDCC 燒錄軟件:stcgal 1.6 開發(fā)板:普中51單片機開發(fā)板A2套件(2022) 在 VS Code 中新建項目到燒錄的過程: 左側(cè)EIDE圖標 - 新建項目 - 空項目 - 8位MCU項目 - 保存文件夾。 更改構(gòu)建配置: SDCC ;更改燒錄配置: stcgal 。 在項目文件

    2024年02月06日
    瀏覽(23)
  • 【51單片機】獨立按鍵,每個按鍵不同功能,數(shù)碼管數(shù)值的加減,控制流水燈模式,包含按鍵消抖,數(shù)碼顯示,流水燈

    【51單片機】獨立按鍵,每個按鍵不同功能,數(shù)碼管數(shù)值的加減,控制流水燈模式,包含按鍵消抖,數(shù)碼顯示,流水燈

    實驗內(nèi)容: 利用所學的單片機知識及電路知識編程實現(xiàn)單片機 I/O 口檢測按鍵輸入電平。 ????????1.選中 8 位數(shù)碼管的其中 1 位數(shù)碼管,當獨立按鍵 1 每按下一次,數(shù)碼管加一(按下期間加 1),范圍為 0—F; ????????2.選中 8 位數(shù)碼管的另 1 位數(shù)碼管,當獨立按鍵 2

    2024年02月06日
    瀏覽(20)
  • C51單片機按鍵控制流水燈模式(定時器版本)以及定時器時鐘

    C51單片機按鍵控制流水燈模式(定時器版本)以及定時器時鐘

    ? 上篇文章我們學了關(guān)于定時器的三大組成部分及許多寄存器的概念問題,這篇文章我們就要開始講解實操部分。 首先,我們先來看看本文最后寫成的代碼: ? ? ?以上三張是代碼的主函數(shù),此外,代碼中還需用到的獨立按鍵檢測代碼在下面: ?注意:頭文件中#ifndef和#def

    2023年04月17日
    瀏覽(26)
  • 【51單片機】按鍵操作(單個燈閃爍&&流水燈)

    【51單片機】按鍵操作(單個燈閃爍&&流水燈)

    ??專欄【51單片機】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【如愿】 大一同學小吉,歡迎并且感謝大家指出我的問題?? 目錄 ?注意 ??同一個燈? ??????效果 ??????代碼 ??????問題分析 ?注意 ?P3_1=0,表示按下按鍵? ?為什么while(

    2024年02月01日
    瀏覽(20)
  • 51單片機用定時器控制流水燈,呼吸燈

    讓LED從L1開始流到L8,(間隔1S,使用定時器)然后全滅LED,然后從L1開始進行呼吸燈狀態(tài)。之后L1,L3,L5,L7點亮,然后L2,L4,L6,L8點亮。最后所有LED全亮 #include REGX52.H #includeINTRINS.H sbit LED = P2 ^ 0; unsigned int TOTOTO = 0; int number = 0; unsigned int Time; unsigned int i; //配置定時器 void Timer0Init(

    2024年02月15日
    瀏覽(21)
  • 基于51單片機的51單片機的LED彩燈霓虹燈控制器(心形流水燈)設計

    基于51單片機的51單片機的LED彩燈霓虹燈控制器(心形流水燈)設計

    基于51單片機的51單片機的LED彩燈霓虹燈控制器(心形流水燈)設計 必看!!視頻講解 基于51單片機的LED彩燈霓虹燈心形流水燈設計 仿真圖:proteus8.9以上 程序代碼:KEIL4/KEIL5 原理圖:AD 設計編號:A0005 結(jié)合實際情況,基于51單片機設計一個LED彩燈控制器設計。該系統(tǒng)應滿足的功能要

    2024年02月02日
    瀏覽(26)
  • 【51單片機】鍵控流水燈

    設置k3作為啟動鍵,只有先按下k3才能開始控制流水燈,按下k3后LED閃爍提示開始成功。 在按下k3后,其余鍵即可控制流水燈。其中k1執(zhí)行從右到左,k2執(zhí)行從左到右。 按下k4,執(zhí)行外部中斷,立馬中止流水燈運行,需重新按下啟動鍵重啟。

    2024年02月06日
    瀏覽(21)
  • 51單片機入門流水燈

    上次已經(jīng)實現(xiàn)了LED的點亮了,這篇文章將帶大家實現(xiàn)流水燈。 要想實現(xiàn)流水燈首先就得知道什么是延時函數(shù),延時函數(shù)的作用就是等待。比如延時一毫秒就是讓程序在這里等待一毫秒。延時函數(shù)的本質(zhì)就是執(zhí)行一些空指令,因為執(zhí)行指令需要耗費時間,所以執(zhí)行一定數(shù)量的空

    2024年02月04日
    瀏覽(22)
  • 51單片機實現(xiàn)流水燈

    51單片機實現(xiàn)流水燈

    我們之前說過可以控制管腳口電平來控制LED的亮滅,低電平燈亮,高電平燈滅,具體可以看我之前的博客。 P20~P27可以用八位二進制數(shù)來表示每一位的電平,第八位是P20,第一位是P27,那么11111110就代表P20亮,其他滅,11101111就代表P24亮,其他滅。流水燈的代碼就可以寫成這樣

    2024年02月11日
    瀏覽(18)
  • 51單片機學習--LED流水燈

    51單片機學習--LED流水燈

    延時代碼可通過軟件生成,系統(tǒng)頻率要和開發(fā)板的晶振頻率相對應。 ?

    2024年02月16日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包