zoukankan      html  css  js  c++  java
  • 基于51单片机增加减少键控制PWM(脉冲宽度调制)来调整LED亮灭程度

    #include<reg51.h> 
    #include<intrins.h>
    #define uchar unsigned char//宏定义,用uchar表示unsigned char,叫无符号字符型数据类型,取值范围为:0到255。
    #define uint unsigned int//宏定义,用uint表示unsigned int,叫无符号整数型数据类型,取值范围为:0到65535。
    sbit k1=P1^0;
    sbit k2=P1^5;
    sbit led=P3^4;
    uchar count,pwm,flag;
      void delay(uint z)//延时程序
    {
       uint x,y;
       for(x=z;x>0;x--)
        for(y=110;y>0;y--);
      }
      void keyscan()//按键扫描函数
    {
       if(k1==0)
     {
        delay(5);
        if(k1==0)
      {
         pwm++;
         if(pwm>=20)
         pwm=0;
        }
         while(!k1);
        }
       if(k2==0)
     {
        delay(5);
        if(k2==0)
      {
         if(pwm>0)
         pwm--;
         if(pwm<=0)
         pwm=0;
        }
         while(!k2);
        }
     }
      void TimerInit()//定时器0初始化函数
    {
       TMOD=0x01;//设定定时器0,工作模式为模式1。
       TH0=(65536-50000)/256;//TH0重新装值
       TL0=(65536-50000)%256;//TL0重新装值
    // TH1=0xfc;//TH1装初值
    // TL1=0x66;//TL1装初值
       EA=1;//开启定时器总中断
       ET0=1;//开启定时器0中断开关
       TR0=1;//启动定时器0
    // ET1=1;//开启定时器1中断开关
    // TR1=1;//启动定时器1
     }
      void timer0() interrupt 1//定时器0中断函数
    { 
       TH0=(65536-50000)/256;//中断定时50毫秒,表示高低电平占用周期50毫秒,也表示高低电平频率(计算工式:F=1/T,其中F单位为赫兹,即Hz,而T单位为秒,即s。)为1/0.05s(由50毫秒除以1000求得0.05秒)=20Hz。
       TL0=(65536-50000)%256;//
       count++;
       if(count>=20)//中断次数变量达到20次,表示1秒(即中断次数变量20次X中断定时50毫秒)时间到 ,也表示高低电平占用周期1秒,另外表示高低电平频率(计算工式:F=1/T,其中F单位为赫兹,即Hz,而T单位为秒,即s。)为1/1s=1Hz。
      {
        count=0;
       }
        if(count<pwm)
      {
         led=0;//led为低电平
        }
        else
      {
         led=1;//led为高电平
        } 
      }
      void main()//主函数
    {
       TimerInit();
       while(1)
     {
        keyscan();//按键扫描函数  
       } 
     }

  • 相关阅读:
    转载:CentOS7下部署Django项目详细操作步骤
    转载 js弹出框、对话框、提示框、弹窗总结
    python 博客开发之散乱笔记
    python 用 PIL 模块 画验证码
    RL
    c++ 基础知识 0001 const 知识2
    c++ 基础知识 0001 const 知识1
    神经网络的理论基础
    go set up on ubuntu
    ubuntu 上查看文件的内容,二进制形式展现
  • 原文地址:https://www.cnblogs.com/AChenWeiqiangA/p/12724989.html
Copyright © 2011-2022 走看看