標(biāo)題: CC2530按鍵控制LED開關(guān)實驗詳解與源程序 [打印本頁]

作者: cc880    時間: 2017-12-14 01:54
標(biāo)題: CC2530按鍵控制LED開關(guān)實驗詳解與源程序
4、CC2530 按鍵控制LED開關(guān)

1.實驗?zāi)康?/font>
1)、通過實驗掌握CC2530芯片GPIO的配置方法
2)、掌握Led驅(qū)動電路及開關(guān)Led的原理
3)、掌握檢測按鍵的方法

2.實驗設(shè)備

硬件:PC 機 一臺 EB2530(底板、核心板、仿真器、USB 線) 一套

軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開發(fā)環(huán)境

3.實驗相關(guān)電路圖



發(fā)光二極管是屬于二極管的一種,具有二級管單向?qū)щ娞匦,即只有在正向電壓(二極 管的正極接正,負極接負)下才能導(dǎo)通發(fā)光。P1.0引腳接發(fā)光二極管(D1)的負極, 所以P1.0引腳輸出低電平D1亮,P1.0引腳輸出高電平D1熄滅,D2,D3同理。

注:D3燈的控制腳復(fù)用到了防真器,而防真器用到了鎖存器,所以要使得D3亮,必 須取下防真器。

按鍵S1接在P0_1上,當(dāng)按鍵松開時,p0_1通過電阻上拉為高電平,當(dāng)按鍵S1按下時,
p0_1為低電平。


4.實驗相關(guān)寄存器

操作P1.0我們需要掌握相關(guān)寄存器的作用和配置方法。如下表所示:

寄存器
作用
描述
P1 (0x90)
端口1
端口1。通用I / O端口?梢詮腟FR位尋址。
P0SEL
端口0 功能
選擇
P0.7 到P0.0功能選擇
0: 通用I / O
1: 外設(shè)功能
P0DIR
端口0方向
P0.7到P0.0的I/O方向
0: 輸入
1: 輸出
P1SEL
端口1 功能
選擇
P1.7 到P0.0功能選擇
0: 通用I / O
1: 外設(shè)功能
P1DIR
端口1 方向
P1.7到P1.0的I/O方向
0: 輸入
1: 輸出

按照表格寄存器的內(nèi)容,對P1.0口進行配置,當(dāng)P1.0輸出低電平時D1被點亮。 所 以配置如下:


P1SEL &=~0x01; //配置P1.0為通用IO口 ,默認為0的,可以不設(shè) P1DIR |= 0x01;              //P10 定義為輸出

按鍵S1配置如下:
P0SEL &= ~0X2;              //設(shè)置 P01 為普通 IO 口
P0DIR &= ~0X2;              //按鍵在 P01 口,設(shè)置為輸入模式

5.源碼分析

1)、請打開工程,學(xué)習(xí)例程 \4、CC2530 按鍵控制 LED 開關(guān)\sz-yy-zigbee\sz-yy-zigbee.eww
2)、主代碼 main.c 如下:

  1. #include <ioCC2530.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //定義控制 LED 燈的端口
  5. #define LED1 P1_0 //LED1 為 P1.0 口控制
  6. #define KEY1 P0_1              //KEY1 為 P0.1 口控制
  7. //函數(shù)聲明
  8. void Delayms(uint);              //延時函數(shù)
  9. void InitLed(void);              //初始化 LED1
  10. void KeyInit();              //按鍵初始化
  11. uchar KeyScan();              //按鍵掃描程序
  12. /**************************** 延時函數(shù)
  13. *****************************/
  14. void Delayms(uint xms)              //i=xms 即延時 i 毫秒
  15. {
  16. uint i,j;
  17. for(i=xms;i>0;i--)
  18. for(j=587;j>0;j--);
  19. }
  20. /**************************** LED 初始化函數(shù)
  21. *****************************/
  22. void InitLed(void)



  23. {
  24. P1DIR |= 0x01;              //P1_0 定義為輸出 LED1 = 1;              //LED1 燈熄滅
  25. }
  26. /**************************** 按鍵初始化函數(shù)
  27. *****************************/
  28. void InitKey()
  29. {
  30. P0SEL &= ~0X2;              //設(shè)置 P01 為普通 IO 口
  31. P0DIR &= ~0X2;              //按鍵在 P01 口,設(shè)置為輸入模式
  32. }
  33. /**************************** 按鍵檢測函數(shù)
  34. *****************************/
  35. uchar KeyScan(void)
  36. {
  37. if(KEY1==0)
  38. {
  39. Delayms(10);
  40. if(KEY1==0)
  41. {
  42. while(!KEY1);              //松手檢測
  43. return 1;              //有按鍵按下
  44. }
  45. }
  46. return 0;              //無按鍵按下
  47. }
  48. /*************************** 主函數(shù)
  49. ***************************/
  50. void main(void)
  51. {
  52. InitLed();              //調(diào)用初始化函數(shù) InitKey();
  53. while(1)
  54. {
  55. if(KeyScan())              //按鍵改變 LED 狀態(tài) LED1=~LED1;
  56. }



  57. }
復(fù)制代碼

6.實驗步驟

1)、打開代碼工程,\4、CC2530 按鍵控制 LED 開關(guān)\sz-yy-zigbee\sz-yy-zigbee.eww,如 果 IAR 沒有很安裝,請按。\學(xué)習(xí)例程以及開發(fā)環(huán)境安裝\2.開發(fā)環(huán)境搭建.pdf 去安裝。
2)通過仿真器把開發(fā)板接到電腦上。

3)編繹下載。





程序已下載完成,可以運行:

4).現(xiàn)象:每按下一次 S1,D1 的狀態(tài)會跟著變化。



全部資料51hei下載地址:
4、CC2530 按鍵控制LED開關(guān).rar (486.34 KB, 下載次數(shù): 13)




作者: tkiouy    時間: 2019-5-26 16:45
請問:cc2530的s2鍵端口是什么?





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1