找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于STC15单片机的SI7021 IDC机房放火控制系统源码

[复制链接]
跳转到指定楼层
楼主
粘贴一段STC15W4K32S4的PWM程序,希望大家喜欢,里面用了SI7021温湿度传感器,提供全部源码

单片机源程序如下:
  1. #include <STC15F2K60S2.H>
  2. #include <STC15_PWM.H>


  3. #define EAXSFE() P_SW2 |= 0x80;     //CPU访问外部扩展
  4. #define EAXRAM() P_SW2 &= 0x7F;                //CPU访问内部RAM

  5. unsigned int PWM_Duty = 600;
  6. int PWM_Right_Duty = 100,PWM_Left_Duty = 100;
  7. unsigned int PWM_Freq = 2200;

  8. void PWM_init()
  9. {
  10.         PWMCFG = 0;          //PWM配置寄存器 全部初始低电平
  11.         EAXSFE();        
  12.         PWMCKS = 0x00;//不分频,分频数=低四位加一               
  13.         PWM2CR = 0x08;
  14.         PWM3CR = 0x00;
  15.         P2M0 |= (1<<7);
  16.         P2M0 |= (1<<1);
  17.         PWM2T1H = PWM3T1H = 0;
  18.         PWM2T1L = PWM3T1L = 0;
  19.         PWM_Flash_Freq(PWM_Freq);
  20.         PWM_Flash_Duty(PWM_Duty);
  21.         EAXRAM();
  22. /////////////////////////////////////        
  23.         PWMCR = 0x83;        //PWM选择控制寄存器
  24. //PWMCR 启用PWMn对应为置“1”        ,
  25. //ENPWM/ECBI/EN7/EN6/EN5/EN4/EN3/EN2/        
  26. //        1                        0                0                0                0                0                1                1
  27. //////////////////////////////////////        
  28. }

  29. void PWM2_Flash_Duty(uint Duty)
  30. {
  31.         PWM_Right_Duty = Judgment_value(Duty);
  32.         EAXSFE();
  33.         PWM2T2H = PWM_Duty / 256;
  34.         PWM2T2L = PWM_Duty % 256;               
  35.         EAXRAM();        
  36. }

  37. void PWM3_Flash_Duty(uint Duty)
  38. {
  39.         PWM_Left_Duty = Judgment_value(Duty);
  40.         EAXSFE();
  41.         PWM3T2H = PWM_Duty / 256;
  42.         PWM3T2L = PWM_Duty % 256;               
  43.         EAXRAM();
  44. }

  45. void PWM_Flash_Duty(uint Duty)
  46. {
  47.         PWM_Duty = Judgment_value(Duty);
  48.         EAXSFE();
  49.         PWM2T2H =        PWM3T2H = PWM_Duty / 256;
  50.         PWM2T2L =        PWM3T2L = PWM_Duty % 256;
  51.         EAXRAM();        
  52. }        

  53. void PWM_Flash_Freq(uint Freq)        
  54. {
  55.         Freq = Judgment_value(Freq);
  56.         EAXSFE();
  57.         PWMCH = Freq / 256;
  58.         PWMCL = Freq % 256;               
  59.         EAXRAM();
  60. }

  61. uint Judgment_value(uint value)
  62. {
  63.         if(value>(PWM_Freq-20))
  64.                 value=PWM_Freq-20;
  65.         if(value<11)
  66.                 value=20;
  67.         return value;
  68. }
复制代码

所有资料51hei提供下载:
防火控制.rar (747.29 KB, 下载次数: 31)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:205015 发表于 2019-3-25 13:45 | 只看该作者
感谢开源分享,借鉴一下。
回复

使用道具 举报

板凳
ID:461266 发表于 2019-12-15 13:22 | 只看该作者
感谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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