www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]一、8個(gè)按鍵控制8個(gè)LED燈1 /*******************************************************************************2 實(shí)驗(yàn)名稱: 8個(gè)獨(dú)立按鍵控制8盞LED燈(按下哪個(gè)鍵,那個(gè)鍵對(duì)應(yīng)的LED亮)3 實(shí)驗(yàn)時(shí)間: 2015/1/2

一、8個(gè)按鍵控制8個(gè)LED燈


1 /*******************************************************************************

2 實(shí)驗(yàn)名稱: 8個(gè)獨(dú)立按鍵控制8盞LED燈(按下哪個(gè)鍵,那個(gè)鍵對(duì)應(yīng)的LED亮)

3 實(shí)驗(yàn)時(shí)間: 2015/1/20

4 *******************************************************************************/

5 #include

6

7 #define LED_KEY P0 //LED燈用P0口

8 #define IO_KEY P1 //獨(dú)立按鍵用P1口

9

10 void Delay(); //延時(shí)函數(shù)

11 unsigned char Key_Scan(); //獲取按鍵值

12

13 void main()

14 {

15 unsigned char Key_Value, LED_Value;

16

17 while(1)

18 {

19 Key_Value = Key_Scan();

20 switch(Key_Value)

21 {

22 case(0xFE): //K1按下

23 LED_Value = 0x01;

24 break;

25 case(0xFD): //K2按下

26 LED_Value = 0x02;

27 break;

28 case(0xFB): //K3按下

29 LED_Value = 0x04;

30 break;

31 case(0xF7): //K4按下

32 LED_Value = 0x08;

33 break;

34 case(0xEF): //K5按下

35 LED_Value = 0x10;

36 break;

37 case(0xDF): //K6按下

38 LED_Value = 0x20;

39 break;

40 case(0xBF): //K7按下

41 LED_Value = 0x40;

42 break;

43 case(0x7F): //K8按下

44 LED_Value = 0x80;

45 break;

46 default:

47 break;

48 }

49

50 LED_KEY = LED_Value; //點(diǎn)亮相應(yīng)LED

51 }

52 }

53

54 unsigned char Key_Scan()

55 {

56 unsigned char Key_Value,i;

57

58 if(IO_KEY != 0)

59 {

60 Delay(); //消除抖動(dòng)

61

62 if(IO_KEY != 0xFF)

63 {

64 Key_Value = IO_KEY;

65 i = 0;

66 if((i<50)&&(IO_KEY != 0xFF)) //判斷按鍵是否松開

67 {

68 Delay();

69 i++;

70 }

71 }

72 }

73 return Key_Value;

74 }

75

76 void Delay() //延遲10ms

77 {

78 unsigned char a,b,c;

79

80 for(c=1;c>0;c--)

81 {

82 for(b=38;b>0;b--)

83 {

84 for(a=130;a>0;a--)

85 {};

86 }

87 }

88 }



獨(dú)立按鍵原理是這樣的:按鍵沒按下的時(shí)候,相應(yīng)端口是高電平狀態(tài),而當(dāng)按鍵按下的時(shí)候,相應(yīng)的端口則是低電平。所以可以根據(jù)這個(gè)現(xiàn)象,實(shí)現(xiàn)相應(yīng)的功能。


還有一點(diǎn)應(yīng)該注意的是:按鍵在閉合和斷開時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象。


在實(shí)際情況下,我們需要的是穩(wěn)定閉合的那部分狀態(tài)。所以可以采用延時(shí)的方法來解決這個(gè)問題,具體的過程就是先看看有沒有鍵按下,有鍵按下了,再延遲一段時(shí)間,再看看有沒有鍵按下,

這時(shí)候如果還是有鍵按下的話那就真的是有鍵按下了。

而這個(gè)抖動(dòng)的時(shí)間大概是10ms,所以只要用一個(gè)延時(shí)10ms的子函數(shù)就行。

上面代碼的第66行那個(gè)判斷按鍵是否松開也是必要的,雖然在這個(gè)程序中有和沒有區(qū)別不大,但是在有的程序中加入要求按鍵松開之后才出現(xiàn)什么現(xiàn)象之類的東西的話,那這部分就顯得必要了。



二、LED顯示鍵值


1 1 /***************************************************

2 2 實(shí)驗(yàn)名稱: LED顯示鍵值(按下哪個(gè)鍵,那個(gè)鍵對(duì)應(yīng)的LED不亮)

3 3 實(shí)驗(yàn)時(shí)間: 2015/1/22

4 4 ****************************************************/

5 5 #include

6 6

7 7 #define LED_KEY P0 //LED燈用P0口

8 8 #define IO_KEY P1 //獨(dú)立按鍵用P1口

9 9

10 10 void Delay(); //延時(shí)函數(shù)

11 11 unsigned char Key_Scan(); //獲取按鍵值

12 12

13 13 void main()

14 14 {

15 15 unsigned char Key_Value, LED_Value;

16 16

17 17 while(1)

18 18 {

19 19 Key_Value = Key_Scan();

20 20 if (Key_Value != 0) //有按鍵按下

21 21 {

22 22 LED_Value = Key_Value;

23 23 }

24 24

25 25 LED_KEY = LED_Value; //點(diǎn)亮相應(yīng)LED

26 26 }

27 27 }

28 28

29 29 unsigned char Key_Scan()

30 30 {

31 31 unsigned char Key_Value,i;

32 32

33 33 if(IO_KEY != 0)

34 34 {

35 35 Delay(); //消除抖動(dòng)

36 36

37 37 if(IO_KEY != 0xFF)

38 38 {

39 39 Key_Value = IO_KEY;

40 40 i = 0;

41 41 if((i<50)&&(IO_KEY != 0xFF)) //判斷按鍵是否松開

42 42 {

43 43 Delay();

44 44 i++;

45 45 }

46 46 }

47 47 }

48 48 return Key_Value;

49 49 }

50 50

51 51 void Delay() //延遲10ms

52 52 {

53 53 unsigned char a,b,c;

54 54

55 55 for(c=1;c>0;c--)

56 56 {

57 57 for(b=38;b>0;b--)

58 58 {

59 59 for(a=130;a>0;a--)

60 60 {};

61 61 }

62 62 }

63 63 }


三、按鍵選擇花樣顯示


1 /***********************************************

2 實(shí)驗(yàn)名稱: 按鍵選擇花樣顯示

3 實(shí)驗(yàn)時(shí)間: 2015/1/22

4 ***********************************************/

5 #include

6 #include

7

8 #define IO_KEY P1

9 #define LED_KEY P0

10

11 void Delay(unsigned char c); //延時(shí)函數(shù)

12 unsigned char Key_Scan(); //按鍵掃描函數(shù)

13 void Key1(); //按下按鍵1的操作

14 void Key2(); //按下按鍵2的操作

15 void Key3(); //按下按鍵3的操作

16 void Key4(); //按下按鍵4的操作

17 void Key5(); //按下按鍵5的操作

18 void Key6(); //按下按鍵6的操作

19 void Key7(); //按下按鍵7的操作

20 void Key8(); //按下按鍵8的操作

21

22 void main()

23

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動(dòng),MAX7219包含一個(gè)自動(dòng)掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機(jī)和STM32無疑是兩種極具代表性的微控制器。對(duì)于初學(xué)者而言,選擇學(xué)習(xí)路徑時(shí)往往會(huì)面臨一個(gè)抉擇:是直接跨越51單片機(jī),挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進(jìn)階?本文旨在探討直...

關(guān)鍵字: 51單片機(jī) STM32

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(jī)(簡(jiǎn)稱C51)進(jìn)行編程時(shí),數(shù)據(jù)類型的選擇與定義對(duì)程序的性能和可讀性至關(guān)重要。C51語言在標(biāo)準(zhǔn)C語言的基礎(chǔ)上進(jìn)行了擴(kuò)展,以適應(yīng)單片機(jī)特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機(jī)

在嵌入式系統(tǒng)領(lǐng)域,51單片機(jī)作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動(dòng)化控制系統(tǒng)中。其外部引腳作為單片機(jī)與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號(hào)輸出等重要功能。本文將通過對(duì)51單片機(jī)外部引腳的案例分析,結(jié)合實(shí)際代碼,深...

關(guān)鍵字: 51單片機(jī) 單片機(jī)

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨(dú)特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機(jī)這一經(jīng)典的嵌入式開發(fā)平臺(tái),LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個(gè)生動(dòng)而富有創(chuàng)意的實(shí)例。本文將帶您深入探索...

關(guān)鍵字: 51單片機(jī) LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計(jì)中,51單片機(jī)作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時(shí)器中斷是51單片機(jī)中一個(gè)非常實(shí)用的功能,它可以在特定的時(shí)間間隔內(nèi)自動(dòng)觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機(jī) 定時(shí)器

STM32與51單片機(jī)之間有什么差異呢?兩者可以說是一場(chǎng)科技與性能的較量了。在科技飛速發(fā)展的今天,微控制器(MCU)已廣泛應(yīng)用于各類電子設(shè)備和系統(tǒng)中,發(fā)揮著舉足輕重的作用。其中,STM32和51單片機(jī)作為兩種常見的微控制...

關(guān)鍵字: STM32 51單片機(jī) MCU

51單片機(jī)將是下述內(nèi)容的主要介紹對(duì)象,通過這篇文章,小編希望大家可以對(duì)51單片機(jī)的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。

關(guān)鍵字: 單片機(jī) 51單片機(jī)

在嵌入式系統(tǒng)開發(fā)中,單片機(jī)是不可或缺的重要組成部分。其中,STM32單片機(jī)和51單片機(jī)是兩種常見的單片機(jī)芯片。本文將對(duì)比分析這兩種單片機(jī)的區(qū)別,并探討STM32單片機(jī)的優(yōu)勢(shì)。

關(guān)鍵字: stm32單片 51單片機(jī)

51單片機(jī)是指由美國(guó)INTEL公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了許多品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基...

關(guān)鍵字: 51單片機(jī) 串行通信
關(guān)閉