1.實(shí)驗(yàn)?zāi)康?/h3>
1 通過實(shí)驗(yàn)掌握 CC2530 芯片 GPIO 的配置方法
2 掌握 Led 驅(qū)動(dòng)電路及開關(guān) Led 的原理
3 掌握 PWM 原理`
2.實(shí)驗(yàn)設(shè)備
硬件:PC 機(jī)一臺(tái) 阎姥、ZB2530(底板绎狭、核心板、仿真器眉抬、USB 線) 一套
軟件:2000/XP/win7 系統(tǒng)吴藻,IAR 8.10 集成開發(fā)環(huán)境
3.實(shí)驗(yàn)相關(guān)電路圖
LED1 電路
發(fā)光二極管是屬于二極管的一種瞒爬,具有二級(jí)管單向?qū)щ娞匦裕粗挥性谡螂妷海ǘO管的
正極接正沟堡,負(fù)極接負(fù))下才能導(dǎo)通發(fā)光侧但。
P1.0 引腳接發(fā)光二極管(D1)的負(fù)極,所以 P1.0 引腳輸出 低電平 D1 亮,P1.0 引腳輸出高電平 D1 熄滅航罗。
4. 實(shí)驗(yàn)相關(guān)寄存器
操作 GPIO 口需要了解的寄存器禀横,P0、P1 相同以下只列出 P1 的寄存器伤哺,在頭文件
“ioCC2530.h ”里對(duì)所有的寄存器都有定義燕侠,如端口 0 的方向選擇者祖,即為:P0DIR。
如下表所示:
寄存器作用描述
按照表格寄存器的內(nèi)容绢彤,對(duì) P1.0 口進(jìn)行配置七问,當(dāng) P1.0 輸出低電平時(shí) D1 被點(diǎn)亮。
配置如
下:
P1DIR |= 0x01; // P1.0 定義為輸出
LED1 = 1; // LED1 燈初始化為熄滅狀態(tài)
5. PWM 原理
PWM 就是 Pulse-Width Modulation (脈沖寬度調(diào)制)茫舶,這里面的脈沖寬度即在一個(gè)周期內(nèi)
輸出高電平的時(shí)間械巡,假如說周期 T=64US,脈沖寬度 D=32us,則占空比=D/T=32/64=50% 饶氏,脈
沖寬度調(diào)整就是占空比的調(diào)整讥耗。
6.代碼分析
/*-----------------------------------------------
名稱:PWM調(diào)光
內(nèi)容:通過PWM(脈寬調(diào)制)調(diào)節(jié)LED的亮度
------------------------------------------------*/
#include <ioCC2530.h> //包含頭文件,一般情況不需要改動(dòng)疹启,頭文件包含特殊功能寄存器的定義
#define uint unsigned int
#define uchar unsigned char
//定義控制燈的端口
#define LED0 P1_0 //定義LED1為P10口控制
//函數(shù)聲明
void Delay(unsigned int t); //函數(shù)聲明
void InitIO(void); //初始化LED控制IO口函數(shù)
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期并賦值
InitIO();
while (1) //主循環(huán)
{
LED0=1;
Delay(60000); //特意加延時(shí)古程,可以看到熄滅的過程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
//PWM_LOW表示低
//電平時(shí)間,這個(gè)循環(huán)中低電平時(shí)長從1累加到CYCLE(周期)的值喊崖,即600次
LED0=0; //點(diǎn)亮LED
Delay(PWM_LOW);//延時(shí)長度挣磨,600次循環(huán)中從1加至599
LED0=1; //熄滅LED
Delay(CYCLE-PWM_LOW);//延時(shí)長度,600次循環(huán)中從599減至1
}
LED0=0;
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
//與逐漸變亮相反的過程
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
//主循環(huán)中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延時(shí)函數(shù)荤懂,含有輸入?yún)?shù) unsigned int t茁裙,無返回值
unsigned int 是定義無符號(hào)整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
/****************************
//初始化IO口程序
*****************************/
void InitIO(void)
{
P1DIR |= 0x1; //P10定義為輸出
}
7.實(shí)驗(yàn)結(jié)果
看到 D1 由亮變暗节仿,由暗變亮 不斷變化晤锥。