DIY创意家庭:实现LED台灯的智能化,提供软硬件解决方案的设计细节
PSoC3内部PWM实现电路图如下:
图七、PSoC3内部PWM电路实现
4.4、按键防抖实现
由于按键本身的机械特性使得,按键使用过程中均存在不同周期的抖动,主要是按键按下和按键释放时,为此,在使用按键输入时,都必须对其进行防抖处理,传统的按键防抖包括软件延迟和硬件中断+定时器两种方式,或多或少都会占有一些系统资源。
这里,本设计充分利用PSoC3内部的数字逻辑器件,利用D触发器和与门,实现并行内部硬件电路防抖,取得了非常好的防抖效果,保证了用户设置的可靠输入。
具体的PSoC3内部按键硬件防抖电路如下,串联的3个D触发器均有同一个200Hz的时钟触发,每个按键的输入与三个D触发器的输出一起相与后输出,可以去除4*5ms=20ms的按键抖动,相应的按键输入信号和硬件防抖后的信号对比如图所示:
图八、PSoC3内部按键硬件防抖电路实现
图九、按键防抖效果(逻辑分析仪截图)
五、系统软硬件设计
5.1、硬件设计
CYPRESS独特的PSoC器件编程特性以及PSoC Creator 1.0软件所提供的丰富外设模拟数字资源,使得整个智能LED台灯的设计和编程变得十分灵活和简单。
整个智能LED台灯硬件设计电路图如下:
图十、整个智能LED台灯硬件设计电路图
特别是其关键的随意分配,极大提高了硬件电路的设计灵活性和效率。硬件管脚分配如下:
图十一、硬件管脚分配表
5.2、软件设计
1)PWM波形输出 :流程
环境光线采集修正PWM控制LED亮度流程图如下:详细的软件代码参见附录6.3 的modules.c——函数SmartAdjust().
2)超声波 中断测距 :
超声波测距离控制LED台灯开启/关断 流程图:
详细的软件代码参见附录6.3 的modules.c——函数DistanceMeasure().以及CY_ISR(isr_ECHO_Interrupt)
3)光强AD转换
详细的软件代码参见附录6.3 的modules.c——函数ADC_LightingSample ().
4|)按键中断流程
详细的软件代码参见附录6.3 的三个按键中断函数以及超声波测距中断函数
——CY_ISR(isr_INC_Interrupt)和CY_ISR(isr_DEC_Interrupt)
智能台灯使用距离/光强用户自定义+/-按键中断处理流程:
5)整体流程(main主循环和个按键中断处理流程图)
详细的软件代码参见附录6.3 的main.c和三个按键中断函数以及超声波测距中断函数——CY_ISR(isr_ADJ_Interrupt)
整个智能LED台灯设计工程软件编译结果(报告)如下:
segment .xdata is 514 bytes long
segment .bss is 35 bytes long
segment .pdata is 0 bytes long
segment .text is 14558 bytes long
segment .bit is 9 bytes long
segment .sfr is 0 bytes long
Flash used: 14557 of 65536 bytes (22.2 %).
SRAM used: 514 of 8192 bytes (6.3 %).
DIY LED台灯 光敏电阻 PSoC3 超声波测距 URF04 相关文章:
- DIY之乐:基于PIC32的以太网音箱设计案例,硬件框图、器件选型、数据结构、软件流程(04-09)
- DIY小设计:智能闹钟的简单软硬件实现(04-14)
- DIY智能家居之多功能一体化触屏遥控器的设计实现(04-14)
- DIY智能家居:基于AVR的智能节能插排的系统解决方案(04-16)
- DIY你的电子玩具:网络音乐电台,给你系统解决方案、软硬件设计实现(04-16)
- DIY机器人:神通广大的核辐射探测机器人设计方案,完整流程框图(05-04)