第四节 控制LED
来源:互联网 发布:vb declare function 编辑:程序博客网 时间:2024/05/01 11:44
第四节 控制LED
上一节点亮了单个LED灯,我们这堂课接着控制LED灯。这堂课我们要完成的是LED闪烁10次,蜂鸣器响1s钟。这里我们先使用延时函数进行。
我们的程序一定要做到结构清晰,可移植性强,阅读性高。程序设计不仅仅是实现了功能,如果那样的代码,那只有你自己可以看懂,是一手垃圾。真正的漂亮代码具有阅读性高、可移植性强、代码规范性好。
上一节点亮了单个LED灯,我们这堂课接着控制LED灯。这堂课我们要完成的是LED闪烁10次,蜂鸣器响1s钟。这里我们先使用延时函数进行。
我们的程序一定要做到结构清晰,可移植性强,阅读性高。程序设计不仅仅是实现了功能,如果那样的代码,那只有你自己可以看懂,是一手垃圾。真正的漂亮代码具有阅读性高、可移植性强、代码规范性好。
/****************************************************************************** 版权所有 (C), 2013-2020, 深圳市馒头科技有限公司 ****************************************************************************** 文 件 名 : delay.h 版 本 号 : V1.0 作 者 : 朱兆祺 生成日期 : 2014年06月07日 功能描述 : 主函数 函数列表 : 修改历史 : 1.日 期 : 2014年06月07日 作 者 : 朱兆祺 修改内容 : 创建文件******************************************************************************/#ifndef __DELAY_H__#define __DELAY_H__/***************************************************************************** 函 数 名 : Delay1ms 功能描述 : 延时函数 输入参数 : unsigned int uiDelay:延时1ms的数量 输出参数 : 无 返 回 值 : 修改历史 : 1.日 期 : 2014年6月7日 作 者 : 朱兆祺 修改内容 : 创建*****************************************************************************/extern void Delay1ms(unsigned int uiDelay);#endif/* end file */
/****************************************************************************** 版权所有 (C), 2013-2020, 深圳市馒头科技有限公司 ****************************************************************************** 文 件 名 : delay.c 版 本 号 : V1.0 作 者 : 朱兆祺 生成日期 : 2014年06月07日 功能描述 : 主函数 函数列表 : 修改历史 : 1.日 期 : 2014年06月07日 作 者 : 朱兆祺 修改内容 : 创建文件******************************************************************************//* 包含delay延时的头文件 */#include "delay.h"/***************************************************************************** 函 数 名 : Delay1ms 功能描述 : 延时函数 输入参数 : unsigned int uiDelay:延时1ms的数量 输出参数 : 无 返 回 值 : 修改历史 : 1.日 期 : 2014年6月7日 作 者 : 朱兆祺 修改内容 : 创建*****************************************************************************/void Delay1ms(unsigned int uiDelay){ unsigned int i; for ( ; uiDelay > 0; uiDelay--) { /* 大约延时1ms */ for (i = 0; i < 320; i++); }}/* end file */
/****************************************************************************** 版权所有 (C), 2013-2020, 深圳市馒头科技有限公司 ****************************************************************************** 文 件 名 : main.c 版 本 号 : V1.0 作 者 : 朱兆祺 生成日期 : 2014年06月06日 功能描述 : 主函数 函数列表 : 修改历史 : 1.日 期 : 2014年06月06日 作 者 : 朱兆祺 修改内容 : 创建文件******************************************************************************//* 包含CC254X的头文件 */#include <ioCC2540.h>#include "delay.h"/***************************************************************************** 函 数 名 : main 功能描述 : 主函数 输入参数 : 无 输出参数 : 无 返 回 值 : 修改历史 : 1.日 期 : 2014年6月6日 作 者 : 朱兆祺 修改内容 : 创建*****************************************************************************/int main(void){ /* 控制LED灯闪烁 */ unsigned char i; /* 驱动无源蜂鸣器 */ unsigned int j; /* 将P1.0、P1.1设置为IO口 */ P1SEL &= ~0x03; /* 将P1.0、P1.1设置为IO口的输出 */ P1DIR |= 0x03; /* 将P2.0设置为IO口 */ P2SEL &= ~0x01; /* 将P2.0设置为IO口输出 */ P2DIR |= 0x01; /* 主循环 */ while(1) { /* LED1,LED2闪烁10次 */ for (i = 0; i < 10; i++) { /* P1.0----LED2,P1.1----LED1 */ /* P1.0,P1.1输出高电平,即点亮LED2,LED1 */ /* FC : 1111 1100*/ P1 = (P1 & 0xFC) | 0x03; Delay1ms(1000); /* P1.0,P1.1输出低电平,即熄灭LED2,LED1 */ /* FC : 1111 1100*/ P1 = (P1 & 0xFC) & (~0x03); Delay1ms(1000); } /* 给出500HZ的方波驱动 */ for(j = 0; j < 1000; j++) { /* P2.0----蜂鸣器 */ P2 = (P2 & 0xFE) & (~0x01); Delay1ms(1); P2 = (P2 & 0xFE) | 0x01; Delay1ms(1); } } }/* end file */
这里需要注意的是,MT254X蓝牙4.0开发板使用的无源蜂鸣器,那么我们需要产生一个方波来驱动。如这代码:
/* 给出500HZ的方波驱动 */ for(j = 0; j < 1000; j++) { /* P2.0----蜂鸣器 */ P2 = (P2 & 0xFE) & (~0x01); Delay1ms(1); P2 = (P2 & 0xFE) | 0x01; Delay1ms(1); }
如果是有源蜂鸣器,则没有那么麻烦,直接给出低电平驱动。为什么是低电平,我们看下原理图:
使用的PNP三极管,并且使用续流二极管保护蜂鸣器。
本文章转载自
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
请勿用于商业
0 0
- 第四节 控制LED
- BeagleBone Black板第四课:简单LED控制实验
- led控制
- LED控制
- 控制LED
- 第四节:累计定时中断次数使LED灯闪烁。
- LED灯控制实验
- LED显示屏控制卡
- [iphone] LED闪光灯控制
- [iphone] LED闪光灯控制
- Led灯控制代码
- 6. LED控制
- OK6410 键盘控制LED
- 按键控制led
- 按键控制led驱动
- 按键控制led驱动
- 按键控制led应用程序
- LED控制实验
- iOS 学习日志:infoplist常用设置
- Gorgeous Sequence
- Ubuntu远程连接报错:xrdp_mm_process_login_response: login failed
- 一个bug断断续续纠结了半个月终于解决问题了~泪奔
- 移动互联网服务端相关问题
- 第四节 控制LED
- 【Symfony】 Doctrine 关系映射,一对一、一对多、多一对、多对多的关系映射(Association Mapping)
- 在eclipse中修改tomcat设置内存大小
- 能量函数在神经网络中的意义
- leetcode-51 N-Queens N皇后问题
- 知乎转载 小波变换
- eclipse 添加自定义快捷键
- Appium中部分api的使用方法
- Mysql数据库优化总结