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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2386|回復: 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--;
            }
          }
     }
   
}


回復

使用道具 舉報

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只是單純由按鍵控制的話,這個程序實現不了啊
回復

使用道具 舉報

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%的波形么
回復

使用道具 舉報

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;       
}
回復

使用道具 舉報

ID:462827 發表于 2020-2-23 17:32 | 顯示全部樓層
一個定時器就夠了呀
回復

使用道具 舉報

ID:342451 發表于 2020-2-23 18:04 | 顯示全部樓層
。。jj 發表于 2020-2-23 15:29
你這個我試過了啊,根本無法控制。
void delay(ui i)
{

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

使用道具 舉報

ID:679425 發表于 2020-2-24 10:04 | 顯示全部樓層
PWM只是單純由按鍵控制的話,這個程序實現不了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文在线一区二区 | 欧美精品在欧美一区二区少妇 | 亚洲欧美日韩电影 | 久久久久久国产一区二区三区 | 2018天天干天天操 | 毛片网站在线观看 | 日本成人中文字幕在线观看 | 日本精品久久久一区二区三区 | 欧美在线亚洲 | 自拍偷拍中文字幕 | 99精品福利视频 | 久久大陆 | 久久9999久久 | 国产一区二区激情视频 | 91中文在线观看 | 亚洲性在线 | 超碰在线人人干 | www免费视频 | 欧美高清一区 | 综合久久一区 | 成人精品免费视频 | 性欧美hd| 日韩精品一区二区三区高清免费 | 日日摸夜夜添夜夜添特色大片 | 99久久久无码国产精品 | 狠狠操av | 国产91 在线播放 | 欧美精品久久久久久久久老牛影院 | 黄免费观看 | 国产精品久久久久久久久久久久久 | 久久精品综合 | 亚洲成人一二三 | 日韩在线视频一区二区三区 | 精品国偷自产在线 | 亚洲第一成人影院 | 成人欧美一区二区三区黑人孕妇 | 一区二区三区欧美在线 | av黄色国产 | 紧缚调教一区二区三区视频 | 国产高清在线观看 | 午夜精品久久久久久不卡欧美一级 |