CC2530流水灯的设计

流水灯的设计

概述

控制LED,需要将IO口配置成输出模式,LED亮灭的电平控制又取决于发光二极管的电路设计,本文设计的电路是:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EzCbJlNB-1601626151714)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200925173344912.png)]

本文的LED需要使用低电平,是LED发光。

因此,本实验的目的就是通过设置相关IO口的电平,达到LED按照一定逻辑进行亮灭的目的。

CC2530IO口的使用

配置

要使用CC2530中的IO口,需要先对目标IO口进行配置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IKB3il9-1601626151719)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200925175211727.png)]

根据datasheet,要配置IO口是输出还是输入,需要控制PxDIR这个寄存器,这里需要将P1DIR中的0,1,4位拉高:

P1DIR |= 0x13; 

注释:此为或运算,我们可以简单的将P1DIR视作一个八位的运算符,其中我们将0x13转换为二进制,或运算的运算方式便是将其转换为1,从而拉高电平,而且,其转换为二进制时便是将0、1、4的电位拉高,从而点亮这几个灯。

控制输出电平

SFRBIT( P1      ,  0x90, P1_7, P1_6, P1_5, P1_4, P1_3, P1_2, P1_1, P1_0 )

注释:

1、P1DIR意思即为P1口方向控制寄存器.

2、关于16进制的运算:

在16进制中,0x表示此数为十六进制表示,是按照满十六进一的原则表示。

0 1 2 3 4 5 6 7 8 9 等同于十进制下的0-9

a=10 b=11 c=12 d=13 e=14 f=15 分别对应的是10-15

要表示16就应该进一位,十六进制表示16是0x10。

如0x13=1*16+3=19

0x7f=7*16+15

0x100=1*16^2

按键控制流水灯

概述

通过点击按键进行改变LED灯的亮灭,当按键松开时,为p0_1通过电阻,将电平上拉,此时为高电平;当按键闭合时,此时p0_1为低电平,电灯可以发亮。本文的电路设计思路是:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oH1tQi8X-1601626151722)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200926122937070.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CBTjYOcU-1601626151726)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200926122953921.png)]

本次实验需要使LED发光,故我们需要考虑将电平拉低,此时LED才能够发光。

因此本次实验我们通过对I/O口的控制,结合起来按键的控制可以达到按照电路逻辑控制LED的亮灭。

IO口的控制

配置

本次实验需要我们对CC2530的IO口进行配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W76jZszh-1601626151729)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200926124543303.png)]

根据datasheet 我们可知此次实验我们需要对,p0_1进行配置,需要用到的是:P0SEL寄存器.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFPGzNVo-1601626151730)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200926124805009.png)]

通过P0DIR我们可以进行的是:P0口的方向选择,即为按键拉低拉高电压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KP9kESC3-1601626151731)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200926124925111.png)]

配置P1DIR寄存器则是为了点亮p1_0,p1_1,p1_4.

控制输出电平

首先,我们需要设置p0_1口为输入模式,凭此条件我们可以通过按键来改变LED灯的亮灭,具体代码如下:

P0SEL &= ~0x02; //设置 P0.1 为普通 IO 口 
P0DIR &= ~0x02; //按键接在P0.1口上,设P0.1为输入模式

注释:&为和运算方式 ~为反运算,即将二进制倒置

接下来是对LED灯的控制,我们需要将p1_0,p1_1,p1_4设置为输出模式,具体代码如下:

P1DIR |=0x13;

按键控制LED灯开关

概述

本次实验,需要使用按键对灯的亮灭进行控制,即为IO口控制中的input,本次实验LED的亮灭取决于button的使用,在P1_0端输出低电平得时候D1会亮,输出高电平的时候D1熄灭,同理可以得到D2和D3亮灭。当button松开的时候,P0_1通过电阻上拉提升为高电平;button按下时,P0_1变为低电平。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkKALqXS-1601626151732)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930160346605.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aP1nkxjD-1601626151733)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930160359766.png)]

所以本次实验最主要的目的便是,通过button的控制,结合发光二极管的性质,通过按键控制电灯的亮灭。

IO口的控制

配置

首先需要对各个IO口进行配置,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0o7W0qkF-1601626151734)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930162516471.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldjK9VQi-1601626151735)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930163348741.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAqbLuaL-1601626151735)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930163536549.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-91ofl5Cp-1601626151736)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930163716522.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O692rp7O-1601626151737)(C:\Users~~\AppData\Roaming\Typora\typora-user-images\image-20200930163753203.png)]

对电灯D1的配置

P1SEL &=~0x01;//配置p1.0为通用IO口,默认为0,可以不设
P1DIR |=0x01;//p1.0定义为输出

对button的配置

P0SEL &=~0x02;//设置P01为普通IO口
P0DIR &=~0x02;//设置 P01为输入模式
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值