久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2417|回復: 8
打印 上一主題 下一主題
收起左側

關于單片機按鍵控制PWM大小的問題?

[復制鏈接]
跳轉到指定樓層
樓主
ID:687423 發表于 2020-2-22 10:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這兩天學習了PWM,想通過按鍵來控制PWM的大小,在網上找了一個程序,程序沒有問題,但有些地方我沒明白,希望大家幫我思考一下。
下面是我的分析和我的疑問,對于分析有錯誤的地方希望大家幫我指正。
分析:這個程序我認為應該是用兩個定時器來控制的,定時器0控制的是周期,定時器1控制的是占空比,通過改變定時器1中TH1的大小改變占空比的值。
疑問:單片機定時器的方式2不是自動重裝嗎,不是該是TH0自動把值賦給TL0嗎。我把定時器0的TH0的初值設為0,刪掉定時器0中斷中的TL0=0這句話,為什么led產生的現象就不對了呢(按鍵3無法一直控制占空比增加,按鍵4也無法一直控制占空比減少)。
          主函數中對占空比增加的控制,為什么TH0<200就可以,我把句子改為TH0<250就不行了呢。
#include <reg52.h>
#define out P2
sbit key3=P3^2;   
sbit key4=P3^3;   
//-----------------------------------------------------------------
void Init(void)
{        
      
        TMOD=0x22;  //T1=T0=??????2??????
        TH1=0;     //??????(0.128ms)
        TL1=0xff;
        TH0=0;      //??????=0??????  
        TL0=0;   
      TR0=1;        //?????T0???
        ET1=1;
        ET0=1;   
        EA=1;       //???ж??
}

void Timer0(void) interrupt 1
{
        out=0xff;      //??led
  TL0=0;
        TR1=1;         //????????
}

void Timer1(void) interrupt 3
{
        out=~out;      //??led
        TR1=0;         //??????????
}   
void delay( unsigned int i)
{
while(i--);
}
void main()
{
    Init();
    while(1)
    {
  key3=1;
  key4=1;
  if(key3==0)
  {
   delay(1000);
            if(key3==0)  
            {
    if(TH1<200)
     TH1++;
            }
        }
        else if (key4==0)
        {
   delay(1000);
            if(key4==0)  
            {
                if(TH1>0)
      TH1--;
            }
          }
     }
   
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:342451 發表于 2020-2-22 12:49 | 只看該作者
PWM輸出用一個定時器就ok了,給你一段參考
void Timer1() interrupt 3
{
        static u16 p;
        TH1=0XFC;        //給定時器賦初值,定時1ms
        TL1=0X18;
        /****電機控制****/
        p++;
        if(p<PWM)EN=1;
        if(p>=PWM)EN=0;
        if(p==10)p=0;//周期10*1ms
}
改變PWM只需要用按鍵改變變量PWM的值即可,這樣就可以輸出一個頻率固定,占空比可調的PWM波
回復

使用道具 舉報

板凳
ID:687423 發表于 2020-2-22 15:39 | 只看該作者
之一知足 發表于 2020-2-22 12:49
PWM輸出用一個定時器就ok了,給你一段參考
void Timer1() interrupt 3
{

能把程序發完整嗎,你這個PWM是怎么變化的啊。
回復

使用道具 舉報

地板
ID:687423 發表于 2020-2-22 15:42 | 只看該作者
之一知足 發表于 2020-2-22 12:49
PWM輸出用一個定時器就ok了,給你一段參考
void Timer1() interrupt 3
{

如果PWM只是單純由按鍵控制的話,這個程序實現不了啊
回復

使用道具 舉報

5#
ID:342451 發表于 2020-2-22 18:09 | 只看該作者
。。jj 發表于 2020-2-22 15:39
能把程序發完整嗎,你這個PWM是怎么變化的啊。

你仔細看下這個定時器中斷函數里代碼什么意思,EN就是隨便定義的一個IO口,P和PWM是個變量,假如PWM值是4,p每1ms加一,所以前4ms EN是高電平,后6ms 輸出低電平,這不就是一個占空比40%的波形么
回復

使用道具 舉報

6#
ID:687423 發表于 2020-2-23 15:29 | 只看該作者
之一知足 發表于 2020-2-22 18:09
你仔細看下這個定時器中斷函數里代碼什么意思,EN就是隨便定義的一個IO口,P和PWM是個變量,假如PWM值是4 ...

你這個我試過了啊,根本無法控制。
void delay(ui i)
{
        while(i--);
}
void init()
{
        TMOD=0x01;
        TH0=0XFC;
        TL0=0X18;
        EA=1;
        TR0=1;
        ET0=1;
}
void anjian()
{
        if(key4==0)
        {
                delay(1000);
                if(key4==0)
                {
                        i++;
                }
        }
        while(!key4);
}
void main()
{
        while(1)
        {
                if(p>i)
                {
                        pwm=1;
                }
                else
                        pwm=0;
        }
}
void init1() interrupt 1
{
        TH0=0XFC;
        TL0=0X18;
        p++;
        if(p>10)
                p=0;       
}
回復

使用道具 舉報

7#
ID:462827 發表于 2020-2-23 17:32 | 只看該作者
一個定時器就夠了呀
回復

使用道具 舉報

8#
ID:342451 發表于 2020-2-23 18:04 | 只看該作者
。。jj 發表于 2020-2-23 15:29
你這個我試過了啊,根本無法控制。
void delay(ui i)
{

。。。你按鍵程序好像沒有放到循環里面吧
回復

使用道具 舉報

9#
ID:679425 發表于 2020-2-24 10:04 | 只看該作者
PWM只是單純由按鍵控制的話,這個程序實現不了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人免费视频网站高清观看视频 | 一区二区三区免费在线观看 | xxx视频 | 四虎影院新地址 | 亚洲成人三级 | 久久久久久久久久影视 | 国产精品综合色区在线观看 | 日日摸天天添天天添破 | 日韩中出| 欧美三级视频在线观看 | 精品国产乱码久久久久久丨区2区 | 亚洲一区二区免费看 | 伊人av在线播放 | 亚洲精品久久久久久宅男 | 91最新入口 | 日韩欧美专区 | 在线播放亚洲 | 91看片在线 | 亚洲精品456 | 中文字幕精品一区二区三区在线 | 亚洲专区在线 | 99热精品在线 | 亚洲国产精品人人爽夜夜爽 | 精品福利在线 | 久久久国产一区二区三区四区小说 | 欧美日韩亚洲一区 | 三级特黄特色视频 | 麻豆一区二区三区精品视频 | 在线观看中文字幕 | 嫩呦国产一区二区三区av | 成人在线视频免费观看 | www.一区二区 | 欧美最猛黑人 | 久久国产精品久久久久 | 午夜视频免费在线观看 | 日韩精品一区二区三区老鸭窝 | 久久69精品久久久久久久电影好 | 久久久久国产 | 欧美激情精品久久久久久变态 | 中文字幕一区二区三区在线观看 | 欧美一极视频 |