5.1 任务5.1 T1控制D3实现呼吸灯_第1页
5.1 任务5.1 T1控制D3实现呼吸灯_第2页
5.1 任务5.1 T1控制D3实现呼吸灯_第3页
5.1 任务5.1 T1控制D3实现呼吸灯_第4页
5.1 任务5.1 T1控制D3实现呼吸灯_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用技术项目五呼吸灯的实现任务5.1T1控制D3实现呼吸灯任务要求

观察可知,有些手机来信息后,手机指示灯会逐渐变亮,再逐渐变暗,再逐渐变亮,又逐渐变暗。本任务使用CC2530开发板的D3来实现呼吸灯效果。具体效果为:开发板上电后,D3逐渐变亮,然后逐渐熄灭,并循环此过程。1基础知识2相关寄存器3任务分析4任务实现一、基础知识

呼吸灯呼吸灯就是让LED灯的亮灭像呼吸一样,时而渐暗时而渐亮,利用LED的余辉和人眼的暂留效应,LED的亮灭看上去和呼吸一样。一、基础知识

PWM就是脉冲宽度调制,也就是占空比可调的脉冲波形。占空比:占空比是指在一组理想的脉冲周期序列(如方波)中,正脉冲的持续时间与脉冲周期的比值。占空比为80%一、基础知识

CC2530单片机的某个I/O引脚连接一个LED,当该I/O引脚输出高电平时,LED点亮,引脚输出低电平时,LED熄灭。让该引脚按照左图所示输出电平。从整体来看,该I/O引脚的输出电平既不是永恒的高电平,也不是永恒的低电平,而是在一个周期内,80%的时间为高电平,20%的时间为低电平,故LED通电时间是80%。此时,LED的亮度要比在一个周期内的全部时间都通高电平要暗一些。同理,如果高电平通电时间变成一个周期的30%,此时LED会更暗一些。一、基础知识

T1的PWM功能位置P0P17654321076543210位置1通道配置

43210

位置2通道配置34

012T1有5个独立的捕获/比较通道,每个通道单独占用一个I/O引脚,各通道可以在输出模式下,可以设置、清除或切换输出比较,在满足比较条件后,生成中断请求。位置1,T1的通道0到4,依次使用P0端口的P0_2、P0_3、P0_4、P0_5、P0_6引脚;位置2,T1的通道0到4,依次使用P1端口的P1_2、P1_1、P1_0、P0_7、P0_6引脚。一、基础知识

T1在输出PWM时,可以运行在自由运行模式、模模式或正计数/倒计数模式这三种模式的任一模式下。本任务中,以T1工作在自由运行模式下进行讲解与实现。在自由运行模式下,T1需要使用通道1或者通道2,才能输出PWM。二、相关寄存器PERCFG

位名称复位操作描述7

0R/W保留6T1CFG0R/WT1的I/O位置。0:位置1。1:位置25T3FG0R/WT3的I/O位置。0:位置1。1:位置24T4FG0R/WT4的I/O位置。0:位置1。1:位置23:2

00R0没有使用1U1CFG0R/WUSART1的I/O位置。0:位置1。1:位置20U0FG0R/WUSART0的I/O位置。0:位置1。1:位置2外设控制寄存器T1采用的I/O位置,是位置1,还是位置2二、相关寄存器T1CC2H、T1CC2L

T1通道2捕获/比较寄存器位名称复位操作描述7:0T1CC2[15:0]0x00R/WT1通道2捕获/比较值,高8位值位名称复位操作描述7:0T1CC2[7:0]0x00R/WT1通道2捕获/比较值,低8位值T1CC2HT1CC2L二、相关寄存器T1CCTL2

T1通道2捕获/比较控制寄存器位名称复位操作描述7RFIRQ0R/W设置时使用RF捕获而不是常规捕获输入6IM1R/W通道2中断屏蔽,设置时使能中断请求5:3CMP[2:0]000R/W选择通道2输出比较模式。当T1的当前计数值等于在T1CC2H、T1CC2L中的比较值时,选择输出方式。000:输出比较模式1,比较设置输出。001:输出比较模式2,比较清除输出。010:输出比较模式3,比较切换输出。011:输出比较模式4,向上比较设置输出,在0清除。否则在比较设置输出,在0清除。100:输出比较模式5,向上比较清除输出,在0设置。否则在比较清除输出,在0设置。101:输出比较模式6,当等于T1CC0值时清除,当等于T1CC2值时设置。110:输出比较模式7,当等于T1CC0值时设置,当等于T1CC2值时清除。111:初始化输出引脚。CMP[2:0]不变2MODE0R/W模式。选择T1通道2为捕获模式或者比较模式。0:捕获模式。1:比较模式二、相关寄存器

通道2比较模式选择000:比较设置输出001:比较清除输出010:比较切换输出011:向上比较设置输出,值为0时清除100:向上比较清除输出,值为0时设置;达到设置值时,清除。例如,设置为100,当前计数值为0时,置位,即通道2(在位置2下,P1_0引脚)输出高电平;当前计数值与设定值相等时,清除,即通道2输出低电平。三、任务分析

位置P0P17654321076543210位置1通道配置

43210

位置2通道配置34

012通道配置利用该开发板实现呼吸灯,既要满足通道配置要求,有需要该通道占用引脚外接有LED本开发板P1_0、P1_1、P1_3、P1_4引脚连接LED三、任务分析

1.设置T1工作在自由运行模式。2.设置T1使用位置2、通道2,即选用P1_0引脚连接的D3实现呼吸灯。3.设置T1通道2的比较模式,设置T1CC2L、T1CC2H寄存器的值。4.判断是否满足比较的条件,即通道2中断标志位是否置位。如果满足条件,则改变T1CC2L、T1CC2H寄存器的值,并重新设置。四、任务实现

初始化T1void

init_t1()

{

T1CTL

=

0x01;

PERCFG

=

0x40;

P1SEL

|=

0x01;

T1CCTL2

=

0x64;

T1CC2L

=

0xff;

T1CC2H

=

h;

}设置T1分频系数为1分频、工作在自由运行模式设置T1采用位置2,P1_0引脚对应T1的通道2设置P1_0为外设I/O设置比较模式,选择通道2的100模式。即T1的当前计数值为0的时候,通道2置位,即P1_2引脚输出高电平,D3点亮;当T1的当前计数值达到设定值时,清除,即P1_2引脚输出低电平,D3熄灭。四、任务实现

处理中断标志位if((T1STAT&0x04)>0)

//判断通道2中断标志位是否为1

{

T1STAT=T1STAT&0xfb;}虽然没有启用T1的中断,但是并不影响T1通道2的中断标志位置位。在本任务中,由于使用了T1的通道2的比较模式,故需要判断T1通道2的中断标志位,四、任务实现

main函数中处理PWM逻辑unsigned

char

a=1;

while(1)

{

if(T1STAT

&

0x04)

{

T1STAT

=

T1STAT

&

0xfb;

//清除T1的中断标志位

if(a

==

1)

//a=1为渐亮,a=2为渐灭

h++;

else

h--;

T1CC2L

=

0xff;

T1CC2H

=

h;

//重装比较值

if(h

>=

254)

//最大亮度

a=2;

//设为渐灭

if(h

==

0)

//最小亮度

a=1;

//设为渐亮

}

}

比较的设定值低8位,T1CC2L寄存器的值是固定的,取值为0xff

,高8位值,T1CC2H寄存器的值是变化的,取值是变量h,h的取值范围是从0到254。h是逐渐变大,还是逐渐变小,取决于a的值。当a值为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论