找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4043|回复: 0
打印 上一主题 下一主题
收起左侧

基于单片机的蓝牙调光制作源码

[复制链接]
跳转到指定楼层
楼主
这是我以前做的一个课程设计,通过蓝牙APP发送指令,能够调节灯带亮度。灯带通过晶闸管控制的。控制部分:

硬件整体图:


单片机源程序如下:
  1. #include <STC15.h>
  2. #include "OLED_Init.h"
  3. #include "UART.h"
  4. #include "pwm.h"

  5. void main()
  6. {
  7.     Init_OLED();
  8.     UartInit();
  9.     Init_T0_PWM();
  10.    
  11.     EA = 1;
  12.    
  13.     while(1)
  14.     {
  15.         writeTime();
  16.         RH();       //读取温度
  17.         OLED_ShowString(48,2,timeData,16);      //显示当前时间
  18.         OLED_ShowNum(48,4,Temperature,2,16);    //显示温湿度
  19.         OLED_ShowNum(48,6,Humidity,2,16);
  20.     }
  21. }
复制代码

  1. /*------------------------------------------------------------------*/
  2. /* If you want to use the program or the program referenced in the  */
  3. /* article, please specify in which data and procedures from STC    */
  4. /*------------------------------------------------------------------*/

  5. #include <stc15.h>
  6. #include "PWM.h"

  7. /*************        功能说明        **************

  8. 本程序演示使用定时器做软件PWM。

  9. 定时器0做16位自动重装,中断,从T0CLKO高速输出PWM。

  10. 本例程是使用STC15F/L系列MCU的定时器T0做模拟PWM的例程。

  11. PWM可以是任意的量程。但是由于软件重装需要一点时间,所以PWM占空比最小为32T/周期,最大为(周期-32T)/周期, T为时钟周期。

  12. PWM频率为周期的倒数。假如周期为6000, 使用24MHZ的主频,则PWM频率为4000HZ。

  13. ******************************************/

  14. #define ZQ  10      //ZD:周期=ZD*100US
  15. #define ZB  
  16. #define                PWM_HIGH_MIN        0                                //限制PWM输出的最小占空比。用户请勿修改。
  17. #define                PWM_HIGH_MAX        10        //20级光强度调节

  18. sbit        PWM_OUT = P0^0;                //定义PWM输出引脚。

  19. typedef         unsigned char        u8;
  20. typedef         unsigned int        u16;
  21. typedef         unsigned long        u32;

  22. unsigned int PWM_Temp=0,PWM_ZB=1;


  23. /****************定时器1初始化****************/
  24. void Init_T0_PWM(void)                //100微秒@22.1184MHz
  25. {
  26.         AUXR |= 0x80;                //定时器时钟1T模式
  27.         TMOD &= 0xF0;                //设置定时器模式
  28.         TMOD |= 0x01;                //设置定时器模式
  29.         TL0 = 0x5C;                //设置定时初值
  30.         TH0 = 0xF7;                //设置定时初值
  31.         TF0 = 0;                //清除TF0标志
  32.         TR0 = 1;                //定时器0开始计时
  33.     ET0 = 1;
  34. }



  35. /********************* Timer0中断函数************************/
  36. void timer0_int (void) interrupt 1 using 1
  37. {
  38.         TL0 = 0x5C;                //设置定时初值
  39.         TH0 = 0xF7;                //设置定时初值
  40.    
  41.     if(PWM_Temp==ZQ) PWM_Temp=1;
  42.    
  43.     if(PWM_ZB >= PWM_HIGH_MAX)                PWM_ZB = PWM_HIGH_MAX;        //如果写入大于最大占空比数据,则强制为最大占空比。
  44.         if(PWM_ZB <= PWM_HIGH_MIN)                PWM_ZB = PWM_HIGH_MIN;        //如果写入小于最小占空比数据,则强制为最小占空比。   
  45.    
  46.     if(PWM_ZB>=PWM_Temp) {PWM_OUT=1;}else{PWM_OUT=0;}
  47.     PWM_Temp++;  
  48. }

复制代码



所有资料51hei提供下载:
蓝牙调光程序.rar (85.94 KB, 下载次数: 29)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表