PCX的无铭小窝

CC2530基础实验--23.CC2530 PWM调光

实验目的
  • 过实验掌握CC2530芯片GPIO的配置方法
  • 掌握Led驱动电路及开关Led的原理
  • 掌握PWM原理
寄存器 作用 描述
P1 (0x90) 端口1 端口1。通用I / O端口。可以从SFR 位寻址。
P1SEL(0xF4) 端口1 功能选择 P1.7 到P0.0功能选择 0: 通用I / O ,1: 外设功能 P1DIR
P1DIR(0xFE) 端口1 方向 P1.7到P1.0的I/O方向 0: 输入 1: 输出
P1INP(0xF6) 端口1 输入模式 P1.7到P1.2的I/O输入模式。由于 P1.0 和P1.1 没有上拉/下拉功能, P1INP暂时不需要配置, 了解一下为 后面的实验打下基础 0: 上拉/下 拉(见P2INP (0xF7)–端口2输入模 式) 1: 三态

按照表格寄存器的内容,对P1.0口进行配置,当P1.0输出低电平时D1被点亮。配置如 下:

==P1DIR |= 0x01; // P1.0 定义为输出 LED1 = 0; // LED1灯初始化为熄灭状态 #F44336==

PWM 原理 PWM 就是Pulse-Width Modulation (脉冲宽度调制),这里面的脉冲宽度即在一个周期内 输出高电平的时间,假如说周期T=64US,脉冲宽度D=32us,则占空比=D/T=32/64=50% ,脉 冲宽度调整就是占空比的调整。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <ioCC2530.h>	//包含头文件
#define uint unsigned int
#define uchar unsigned char

//定义控制LED灯的端口
#define LED1 P1_0 //定义控制LED1灯的为P10端口

//函数声明
void Delay(uint); //延时函数
void InitIO(void); //初始化LED控制IO口函数

//主函数
void Delay(void){
unsigned int CYCLE = 600,PWM_LOW = 0; //定义周期并赋值
InitIO();
while(1){
LED1 =0;
Delay(60000); //加延时,便于观察熄灭过程
for(PWM_LOW = 1; PWM_LOW < CYCLE; PWM_LOW++){
//PWM_LOW表示低电频时间,这个时间从1逐渐加到CYCLE周期、
LED1 = 1; //点亮
Delay(PWM_LOW);
LED1 =0//熄灭
Delay(CYCLE-PWM_LOW);
}

LED1 =1;
for(PWM_LOW = CYCLE-1; PWM_LOW > 0; PWM_LOW--){
//与逐渐变亮过程相反
LED1 = 0; //熄灭
Delay(PWM_LOW);
LED1 = 1; //点亮
Delay(CYCLE-PWM_LOW);
}
}
//延时函数
void Delay(uint t){
while(--t);
}
//初始化LED灯控制口IO函数
void InitIO(void){
P1DIR |= 0X01; //定义P10为输出
}
}
更多创作支持内容请移步至顶端标签💖发电💖