找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机单定时器PWM调LED亮度 仿真+程序

[复制链接]
跳转到指定楼层
楼主
PWM 调LED亮度  在实验板上通过
仿真电路图如下:(下载本帖最后附件可看清晰图)

51单片机源程序如下:
  1. #include <AT89X51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uint sec,miaoshu,tcnt,count,a;




  5. sbit p30=P3^0;
  6. sbit p31=P3^1;

  7. sbit p20=P2^0;
  8. sbit p27=P2^7;

  9. void Delay(uchar t)
  10. {
  11.         uchar i;
  12.         while(t--)
  13.         {
  14.                 for ( i = 0; i < 200 ;i ++);
  15.         }
  16. }



  17. void t0(void) interrupt 1 using 0 //定时T0中断服务函数
  18. {
  19.        
  20.         TH0=(65536-10)/256;
  21.     TL0=(65536-10)%256;

  22.     tcnt++;

  23.         if(tcnt<=miaoshu){p20=1;}
  24.         if(tcnt>miaoshu) {p20=0;}

  25.         if(tcnt==20) //调频率
  26.            {               
  27.                 tcnt=0;

  28.                 if(p30==1&&p31==1){a=0;p27=1;}
  29.                        
  30.                 if(a==0)
  31.                         {
  32.                           if(p30==0){if(miaoshu>0 ){miaoshu--;a=1;p27=0;}}        //调占空比
  33.                           if(p31==0){if(miaoshu<20){miaoshu++;a=1;p27=0;}}         //调占空比
  34.                         }

  35.            }
  36.      
  37. }

  38. void main(void)//主程序
  39. {   
  40.        
  41.         TMOD=0x01;
  42.     TH0=(65536-10)/256;
  43.     TL0=(65536-10)%256;

  44.         TR0=1; //开始定时
  45.         ET0=1; //允许T0 产生中断
  46.         EA=1;
  47.           
  48.         miaoshu=10;tcnt=0;
  49.         while(1)//调用各个函数模块,死循环
  50.         {
  51.           ;
  52.         }
  53. }

复制代码

仿真文件和程序下载: led调光.rar (43.44 KB, 下载次数: 39)

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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