手机蓝牙控制的调光调色的LED灯的设计
4.2控制信号相关程序设计
首先创建一个用于控制信号的类publicclass PwmcontrolActivity extends Activity{},里面包含创建界面的类函数public voidonCreate(BundlesavedIn stan ceState){},发送控制信号类函数public void onStop TrackingTouch(SeekBar seekBar){}.
创建类class InitThread extends Thread{},实现资源加载线程,里面创建用于四路信号之间转换的public InitThread(PwmcontrolActivity act){}类函数,实现与蓝牙程序接口的public void run()线程体,用于软件退出的类函数public booleanonKeyDown(int keyCo de,KeyEvent event)。
5.单片机控制信号设计
5.1硬件电路设计
系统框图如图1所示,本硬件电路采用STC15F204EA单片机为主控器,CH-06蓝牙模块的TXD与单片机11管脚P3.0连接,RXD与P3.1相连,实现蓝牙串口通信连接,从P1.0,P1.1,P1.2,P1.3四个口输出四路可调占空比的PWM信号,采用一个L298芯片将单片机控制信号和LED电源驱动隔离,避免了单片机带负载能力弱的缺点,以实现驱动大功率LED.
图1系统框图
5.2程序设计
主函数流程图如图2所示,定义完相关变量和相关函数声明后,设计串口通信函数,设置定时器1中断,中断函数为占空比控制函数,然后设计数据接收函数,当串口服务函数接收到数据时,将数据发送到数据接收函数,然后将接受到的字符数据通过字符转型函数进行字符的转型,然后通过标志iCommdType判断控制哪一路信号,当无标志信号来时,一直循环检查,检查到相应的标志信号,然后执行占空比调节函数蓝牙模块与单片机之间的通信使用模拟串口实现的,串口为标准配置:波特率9600,编写一个串口初始化函数void UART_INIT(),初始化相关标志,和寄存器,然后编写中断接收函数void tm0()interrupt 1 using 1,接收串口发来的数据。设定定时器1中断并编写中断服务函数void tm1()interrupt 3 using1,实现P W M的占空比控制。编写数据接收函数char GetUartData(),将中断接收函数里接收到的数据发送这里,等待接收数据函数void WaitForChars(unsigned chariCount,char *Dest)通过调用数据接收函数char GetUartData(),将手机发送来的数据装载到定义好的变量数组,然后通过字符转型函数unsigned int GetCmdType(char*Commd),将字符型数据转成数字,通过标志判断,要控制哪一路PWM波,然后将相应的数据传到控制占空比的中断服务函数,改变其占空比的输出。
图2主函数流程图
6.结果展示
6.1手机端界面
如图3所示,其中W调节白光,从0到100R、B、G共有100万种组合,每一种组合对应一种颜色,通过改变RBG的组合,从而调节LED的颜色。
图3
6.2 PWM波输出效果
如图4所示,这是其中一路PWM波的控制信号,通过手机端控制其占空比,用示波器测出其波形。
图4
6.3实际调光调色效果
选择几种组合调色效果如图5所示。
图5
- 迎接移动多媒体高清视频挑战(10-07)
- 为 PDA 应用设计用户界面 (10-07)
- 天线设计面临小尺寸和多天线要求的挑战(11-06)
- 高集成度蓝牙耳机电源管理方案 (01-12)
- 设计剖析:面向音乐手机的蓝牙耳机套件(02-05)
- 如何在单个蓝牙设备上集成语音和立体声音乐功能(02-09)