找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2654|回复: 6
打印 上一主题 下一主题
收起左侧

跪求大佬讲解51单片机做呼吸灯,定时器模拟PWM 求帮助

[复制链接]
跳转到指定楼层
楼主
ID:482395 发表于 2019-2-28 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求51单片机做呼吸灯,定时器模拟PWM!!!!跪求!!!

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

举报

沙发
ID:412827 发表于 2019-2-28 22:15 | 只看该作者
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char

sbit PWM=P2^0;//  P2.0输出pwm
uchar time;  // 定义占空比的变量

void main()
{
        TMOD=0x01;//定时器0工作方式1
        TH0=0xff;//(65536-10)/256;//赋初值定时
        TL0=0xf7;//(65536-10)%256;//0.01ms
        EA=1;//开总中断
        ET0=1;//开定时器0中断
        TR0=1;//启动定时器0
        while(1)
        {                       
        }                       
}

void tim0() interrupt 1
{
        TR0=0;//赋初值时,关闭定时器
        TH0=0xff;//(65536-10)/256;//赋初值定时
        TL0=0xf7;//(65536-10)%256;//0.01ms
        TR0=1;//打开定时器

        time++;
        if(time>=100)  //1khz
          time=0;   
        if(time<=30)   //占空比%30,可改
          PWM=1;  
        else PWM=0;
}

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

举报

板凳
ID:473159 发表于 2019-3-1 01:56 | 只看该作者
不要开口就跪求跪求地,坛子里一大把例程,先找一下。没黑币就多上来发一下看法就有了
回复

举报

地板
ID:164602 发表于 2019-3-1 08:14 | 只看该作者
我这里有一个学习视频,只有七天期限哦。
链接:https://pan.baidu.com/s/1Haue97fPfAbQWzRFcibB1Q
提取码:s1gh
回复

举报

5#
ID:62762 发表于 2019-3-1 10:52 | 只看该作者
搜一下郭天祥单片机,看看第6,7集,应该是关于延时和中断的,就会自己写自己的代码了。
回复

举报

6#
ID:480842 发表于 2019-3-3 10:14 | 只看该作者
#include<reg51.h> #include<intrins.h> sbit  K1 =P3^4 ;           //PWM?????? sbit  K2 =P3^5;           //PWM?????? sbit  BEEP =P3^6;         //?????? unsigned char PWM=0x7f ;   //????? void Beep(); void delayms(unsigned char ms); void delay(unsigned char t); /*********************************************************/ void main() {        P1=0xff;     TMOD=0x21 ;         TH0=0xfc ;           //1ms???????     TL0=0x66 ;           //??????     TH1=PWM ;            //???????     TL1=0 ;         EA=1;         ET0=1;         ET1=1;          TR0=1 ;    while(1)    {         do{             if(PWM!=0xff)                   {PWM++ ;delayms(10);}         else Beep() ;            }     while(K1==0);         do{       if(PWM!=0x02)             {PWM-- ;delayms(10);}       else Beep() ;            }     while(K2==0);   } } /*********************************************************/ // ?????0?ж???????  ?????? /*********************************************************/ void timer0() interrupt 1  {       TR1=0 ;     TH0=0xfc ;     TL0=0x66 ;     TH1=PWM ;     TR1=1 ;     P1=0x00 ;      //?????? } /*********************************************************/ // ?????1?ж??????? ??????? /*********************************************************/ void timer1() interrupt 3  {      TR1=0 ;     P1=0xff ;     //??????? } /*********************************************************/ //??????????? /*********************************************************/ void Beep()        {     unsigned char i  ;     for (i=0  ;i<100  ;i++)       {         delay(100)  ;         BEEP=!BEEP  ;                //Beep???       }      BEEP=1  ;                        //????????         delayms(100);   }  /*********************************************************/ // ???????? /*********************************************************/   void delay(unsigned char t)  {     while(t--)   ;  } /*********************************************************/ // ???????? /*********************************************************/ void delayms(unsigned char ms)  {    unsigned char i ;    while(ms--)     {       for(i = 0 ; i < 120 ; i++) ;     } }
回复

举报

7#
ID:480842 发表于 2019-3-3 10:14 | 只看该作者
这个不知道用得着不,你参考下,共同学习
回复

举报

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

本版积分规则

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

Powered by 单片机教程网

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