4、CC2530 按鍵控制LED開關(guān)
1.實(shí)驗(yàn)?zāi)康?/font>
1)、通過實(shí)驗(yàn)掌握CC2530芯片GPIO的配置方法
2)、掌握Led驅(qū)動(dòng)電路及開關(guān)Led的原理
3)、掌握檢測(cè)按鍵的方法
2.實(shí)驗(yàn)設(shè)備
硬件:PC 機(jī) 一臺(tái) EB2530(底板、核心板、仿真器、USB 線) 一套
軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開發(fā)環(huán)境
3.實(shí)驗(yàn)相關(guān)電路圖
發(fā)光二極管是屬于二極管的一種,具有二級(jí)管單向?qū)щ娞匦裕粗挥性谡螂妷海ǘ䴓O 管的正極接正,負(fù)極接負(fù))下才能導(dǎo)通發(fā)光。P1.0引腳接發(fā)光二極管(D1)的負(fù)極, 所以P1.0引腳輸出低電平D1亮,P1.0引腳輸出高電平D1熄滅,D2,D3同理。
注:D3燈的控制腳復(fù)用到了防真器,而防真器用到了鎖存器,所以要使得D3亮,必 須取下防真器。
按鍵S1接在P0_1上,當(dāng)按鍵松開時(shí),p0_1通過電阻上拉為高電平,當(dāng)按鍵S1按下時(shí),
p0_1為低電平。
4.實(shí)驗(yàn)相關(guān)寄存器
操作P1.0我們需要掌握相關(guān)寄存器的作用和配置方法。如下表所示:
寄存器 | 作用 | 描述 |
P1 (0x90) | 端口1 | 端口1。通用I / O端口。可以從SFR位尋址。 |
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)容,對(duì)P1.0口進(jìn)行配置,當(dāng)P1.0輸出低電平時(shí)D1被點(diǎn)亮。 所 以配置如下:
P1SEL &=~0x01; //配置P1.0為通用IO口 ,默認(rèn)為0的,可以不設(shè) P1DIR |= 0x01; //P10 定義為輸出
按鍵S1配置如下:
P0SEL &= ~0X2; //設(shè)置 P01 為普通 IO 口
P0DIR &= ~0X2; //按鍵在 P01 口,設(shè)置為輸入模式
5.源碼分析
1)、請(qǐng)打開工程,學(xué)習(xí)例程 \4、CC2530 按鍵控制 LED 開關(guān)\sz-yy-zigbee\sz-yy-zigbee.eww
2)、主代碼 main.c 如下:
- #include <ioCC2530.h>
- #define uint unsigned int
- #define uchar unsigned char
- //定義控制 LED 燈的端口
- #define LED1 P1_0 //LED1 為 P1.0 口控制
- #define KEY1 P0_1 //KEY1 為 P0.1 口控制
- //函數(shù)聲明
- void Delayms(uint); //延時(shí)函數(shù)
- void InitLed(void); //初始化 LED1
- void KeyInit(); //按鍵初始化
- uchar KeyScan(); //按鍵掃描程序
- /**************************** 延時(shí)函數(shù)
- *****************************/
- void Delayms(uint xms) //i=xms 即延時(shí) i 毫秒
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=587;j>0;j--);
- }
- /**************************** LED 初始化函數(shù)
- *****************************/
- void InitLed(void)
- {
- P1DIR |= 0x01; //P1_0 定義為輸出 LED1 = 1; //LED1 燈熄滅
- }
- /**************************** 按鍵初始化函數(shù)
- *****************************/
- void InitKey()
- {
- P0SEL &= ~0X2; //設(shè)置 P01 為普通 IO 口
- P0DIR &= ~0X2; //按鍵在 P01 口,設(shè)置為輸入模式
- }
- /**************************** 按鍵檢測(cè)函數(shù)
- *****************************/
- uchar KeyScan(void)
- {
- if(KEY1==0)
- {
- Delayms(10);
- if(KEY1==0)
- {
- while(!KEY1); //松手檢測(cè)
- return 1; //有按鍵按下
- }
- }
- return 0; //無按鍵按下
- }
- /*************************** 主函數(shù)
- ***************************/
- void main(void)
- {
- InitLed(); //調(diào)用初始化函數(shù) InitKey();
- while(1)
- {
- if(KeyScan()) //按鍵改變 LED 狀態(tài) LED1=~LED1;
- }
- }
復(fù)制代碼
6.實(shí)驗(yàn)步驟
1)、打開代碼工程,\4、CC2530 按鍵控制 LED 開關(guān)\sz-yy-zigbee\sz-yy-zigbee.eww,如 果 IAR 沒有很安裝,請(qǐng)按。\學(xué)習(xí)例程以及開發(fā)環(huán)境安裝\2.開發(fā)環(huán)境搭建.pdf 去安裝。
2)通過仿真器把開發(fā)板接到電腦上。
3)編繹下載。
程序已下載完成,可以運(yùn)行:
4).現(xiàn)象:每按下一次 S1,D1 的狀態(tài)會(huì)跟著變化。
全部資料51hei下載地址: