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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4039|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

想用STC15W408AS16引腳的單片機(jī)PCA功能輸出PWM控制電機(jī)轉(zhuǎn)速,請(qǐng)大佬們指點(diǎn)指點(diǎn)。

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:731768 發(fā)表于 2021-6-5 08:55 來自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我想用STC15W408AS16引腳的單片機(jī)PCA功能輸出PWM控制電機(jī)轉(zhuǎn)速,在手冊(cè)上找了如下程序但是不明白怎么用,分為高,中,低,關(guān)幾個(gè)等級(jí)用1個(gè)按鍵每按一次轉(zhuǎn)速切換一個(gè)等級(jí),如何實(shí)現(xiàn)。芯片資料給出P1.0和P1.1引腳分別為CCP1和CCP0,是不是輸出PWM就用這兩個(gè)引腳,還請(qǐng)大佬們指點(diǎn)指點(diǎn)。
程序如下:
#include <reg51.h>
#include"intrins.h"
#define FOSC 11059200L
typedef unsigned char BYTE;
typedef unsigned int  WORD;
sfr    P_SW1    =    0xA2;    //外設(shè)功能切換寄存器1
#define CCP_S0 0x10            //P_SW1.4
#define CCP_S1 0x20           //P_SW1.5
sfr    CCON     =    0xD8;       //PCA控制寄存器sbit   CCF0     =    CCON^0; //PCA模塊0中斷標(biāo)志
sbit   CCF1     =    CCON^1;  //PCA模塊1中斷標(biāo)志sbit   CR       =    CCON^6; //PCA定時(shí)器運(yùn)行控制位
sbit   CF       =    CCON^7; //PCA定時(shí)器溢出標(biāo)志sfr    CMOD     =    0xD9; //PCA模式寄存器
sfr    CL       =    0xE9;        //PCA定時(shí)器低字節(jié)
sfr    CH       =    0xF9;        //PCA定時(shí)器高字節(jié)
sfr    CCAPM0   =    0xDA;//PCA模塊0模式寄存器sfr    CCAP0L   =    0xEA;//PCA模塊0捕獲寄存器LOW
sfr    CCAP0H   =    0xFA; //PCA模塊0捕獲寄存器HIGH
sfr    CCAPM1   =    0xDB;//PCA模塊1模式寄存器sfr    CCAP1L   =    0xEB;//PCA模塊1捕獲寄存器LOW
sfr    CCAP1H   =    0xFB;//PCA模塊1捕獲寄存器HIGH
sfr    CCAPM2   =    0xDC;//PCA模塊2模式寄存器sfr    CCAP2L   =    0xEC;//PCA模塊2捕獲寄存器LOW
sfr    CCAP2H   =    0xFC;//PCA模塊2捕獲寄存器HIGH
sfr    PCA_PWM0 =    0xf2;//PCA模塊0PWM寄存器sfr    PCA_PWM1 =    0xf3;//PCA模塊1PWM寄存器sfr    PCA_PWM2 =    0xf4;//PCA模塊2PWM寄存器void main()
{   
    ACC      =    P_SW1;        
    ACC     &=    ~(CCP_S0|CCP_S1);    //CCP_S0=0 CCP_S1=0        
    P_SW1    =    ACC;      //(P1.2/ECI,P1.1/CCP0,P1.0/CCP1,P3.7/CCP2)         
    CCON     =    0;        //初始化PCA控制寄存器                                                                           //PCA定時(shí)器停止                                                                           //清除CF標(biāo)志                                                                           //清除模塊中斷標(biāo)志        
    CL       =    0;                   //復(fù)位PCA寄存器         
    CH       =    0;        
    CMOD     =    0x02;                //設(shè)置PCA時(shí)鐘源                           //禁止PCA定時(shí)器溢出中斷        
    PCA_PWM0 =    0x00;                //PCA模塊0工作于8位PWM        
    CCAP0H   =    CCAP0L  =  0x20;            //PWM0的占空比為87.5%((100H-20H)/100H)         
    CCAPM0   =    0X42;//PCA模塊0為8位PWM模式        
    PCA_PWM1 =    0x40;//PCA模塊1工作于7PWM         
    CCAP1H   =    CCAP1L  =  0x20;            //PWM1的占空比為75%((80H-20H)/80H)         
    CCAPM1   =    0X42; //PCA模塊1為7位PWM模式        
    PCA_PWM2 =    0x80;//PCA模塊2工作于6PWM        
    CCAP2H   =    CCAP2L  =  0x20;            //PWM2的占空比為50%((40H-20H)/40H)         
    CCAPM2   =    0X42;//PCA模塊2為6位PWM模式         
    CR       =    1;             //PCA定時(shí)器開始工作         
    while(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2021-6-5 10:36 | 只看該作者
這是一個(gè)STC15W408AS的PWM初始化函數(shù),在主函數(shù)或其它函數(shù)改寫CCAP0H和CCAP1H就可以改變PWM0和PWM1的占空比。P1.0和P1.1是PWM1和PWM0的默認(rèn)輸出腳,可以通過設(shè)置AUXR1(P_SW1)寄存器在3組端口來回切換。
void PWM_Init(void)
{
        CCON = 0;                                //初始化PCA控制寄存器
        CL = 0;                 //復(fù)位PCA寄存器
        CH = 0;                 //復(fù)位PCA寄存器
//        CMOD = 0x00;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/12/256=3.600KHZ 278us
//        CMOD = 0x02;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/2/256=21.600KHZ 46us
//        CMOD = 0x04;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/1~65536/256=43.200KHZ~0.659HZ
//        CMOD = 0x06;                         //設(shè)置PCA時(shí)鐘源,PWM頻率= 外部時(shí)鐘/1/256
//        CMOD = 0x08;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/1/256=43.200KHZ 23us
//        CMOD = 0x0A;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/4/256=10.800KHZ 93us
//        CMOD = 0x0C;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/6/256=7.200KHZ 139us
        CMOD = 0x0E;                         //設(shè)置PCA時(shí)鐘源,PWM頻率=11.0592MHZ/8/256=5.400KHZ 185us
        PCA_PWM0 = 0x00;        //PCA模塊0工作于8位PWM
        PCA_PWM1 = 0x00;        //PCA模塊1工作于8位PWM
        CCAP0H = CCAP0L = 0xFF; //PWM0的占空比為0%
        CCAP1H = CCAP1L = 0xFF; //PWM1的占空比為0%       
        CCAPM0 = 0x42;                        //允許CCP0腳用作脈寬調(diào)節(jié)輸出
        CCAPM1 = 0x42;          //允許CCP1腳用作脈寬調(diào)節(jié)輸出
        CR = 1;                 //PCA定時(shí)器開始工作
}

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2021-6-5 10:43 | 只看該作者
這是個(gè)PWM控制的初始化程序,在這個(gè)基礎(chǔ)上加上你的其他程序。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:272119 發(fā)表于 2021-6-5 13:32 | 只看該作者
我剛做調(diào)試,可以調(diào)用PCA_Init (占空比值)來設(shè)置占空比做調(diào)速, 設(shè)置6位模式是100%做63級(jí)細(xì)分,設(shè)置7位模式是100%做127級(jí)細(xì)分,設(shè)置8位模式是100%做254級(jí)細(xì)分,足夠使用了.

#include <15W204S.h>
//#include "intrins.h"
#define CCP_S0 0x10                 //P_SW1.4
#define CCP_S1 0x20                 //P_SW1.5

void PWM_Inte()
{
    ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=1
    ACC |= CCP_S1;                  //(P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
    P_SW1 = ACC;
    //    ACC = P_SW1;
    //   ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
    //    P_SW1 = ACC;                    //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)

    //  ACC = P_SW1;
    //  ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=1 CCP_S1=0
    //  ACC |= CCP_S0;                  //(P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
    //  P_SW1 = ACC;
    CCON = 0;                       //初始化PCA控制寄存器
    //PCA定時(shí)器停止
    //清除CF標(biāo)志
    //清除模塊中斷標(biāo)志
    CL = 0;                         //復(fù)位PCA寄存器
    CH = 0;
    CMOD = 0x0000;                    //設(shè)置PCA時(shí)鐘源

}

void PCA_Init (uint osc)
{
    //禁止PCA定時(shí)器溢出中斷
    //PCA_PWM0 =0x80;                //PCA模塊0工作于8位PWM
    //CCAP0H = CCAP0L = osc;         //PWM0的占空比為87.5% ((100H-20H)/100H)
    //CCAPM0 = 0x42;                  //PCA模塊0為8位PWM模式

    PCA_PWM1 = 0x40;                //PCA模塊1工作于7位PWM
    CCAP1H = CCAP1L = osc;         //PWM1的占空比為75% ((80H-20H)/80H)
    CCAPM1 = 0x42;                  //PCA模塊1為7位PWM模式

    PCA_PWM2 = 0x20;                //PCA模塊2工作于6位PWM
    CCAP2H = CCAP2L = osc;         //PWM2的占空比為50% ((40H-20H)/40H)
    CCAPM2 = 0x42;                  //PCA模塊2為6位PWM模式
    CR = 1;                         //PCA定時(shí)器開始工作
}
void PCA_off (void)
{
    //CR = 0;
    CCON = 0;                       //初始化PCA控制寄存器
    //PCA定時(shí)器停止
    //清除CF標(biāo)志
    //清除模塊中斷標(biāo)志
}

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:731768 發(fā)表于 2021-6-6 10:29 來自觸屏版 | 只看該作者
wulin 發(fā)表于 2021-6-5 10:36
這是一個(gè)STC15W408AS的PWM初始化函數(shù),在主函數(shù)或其它函數(shù)改寫CCAP0H和CCAP1H就可以改變PWM0和PWM1的占空比 ...

需要把AUXR1(P_SW1)改成什么可以切換成默認(rèn)的輸出端口
回復(fù)

使用道具 舉報(bào)

6#
ID:230742 發(fā)表于 2021-6-6 15:50 | 只看該作者
不用改吧,默認(rèn)的就是默認(rèn)的輸出端口了。
回復(fù)

使用道具 舉報(bào)

7#
ID:731768 發(fā)表于 2021-6-6 15:52 來自觸屏版 | 只看該作者
啤酒瓶子老大 發(fā)表于 2021-6-6 15:50
不用改吧,默認(rèn)的就是默認(rèn)的輸出端口了。

我用的P1.0和P1.1引腳
回復(fù)

使用道具 舉報(bào)

8#
ID:731768 發(fā)表于 2021-6-6 16:17 來自觸屏版 | 只看該作者
wulin 發(fā)表于 2021-6-5 10:36
這是一個(gè)STC15W408AS的PWM初始化函數(shù),在主函數(shù)或其它函數(shù)改寫CCAP0H和CCAP1H就可以改變PWM0和PWM1的占空比 ...

請(qǐng)問我需要改輸出端口為P1.0和P1.1是改這里嗎?如果是應(yīng)該改成什么呀
#define CCP_S0 0x10            //P_SW1.4
#define CCP_S1 0x20           //P_SW1.5
回復(fù)

使用道具 舉報(bào)

9#
ID:213173 發(fā)表于 2021-6-6 17:44 | 只看該作者
jsq2020 發(fā)表于 2021-6-6 16:17
請(qǐng)問我需要改輸出端口為P1.0和P1.1是改這里嗎?如果是應(yīng)該改成什么呀
#define CCP_S0 0x10            / ...

默認(rèn)就是什么都不需要做。
回復(fù)

使用道具 舉報(bào)

10#
ID:731768 發(fā)表于 2021-6-6 17:47 來自觸屏版 | 只看該作者
wulin 發(fā)表于 2021-6-6 17:44
默認(rèn)就是什么都不需要做。

這里寫的1.4和1.5什么意思
回復(fù)

使用道具 舉報(bào)

11#
ID:213173 發(fā)表于 2021-6-6 18:13 | 只看該作者
jsq2020 發(fā)表于 2021-6-6 17:47
這里寫的1.4和1.5什么意思

默認(rèn)就是什么都不需要做。這兩條也可以不寫
#define CCP_S0 0x10            //P_SW1.4
#define CCP_S1 0x20           //P_SW1.5

回復(fù)

使用道具 舉報(bào)

12#
ID:731768 發(fā)表于 2021-6-11 10:35 來自觸屏版 | 只看該作者
明白了,已經(jīng)可以用了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人国产精品久久久 | 视频1区| 亚洲视频精品在线 | 欧美精品区 | a级毛片毛片免费观看久潮喷 | 夜夜骑天天干 | 成人精品一区 | 亚欧洲精品在线视频免费观看 | 精品www| 毛片一区二区 | 国产精品亚洲视频 | 男女爱爱网站 | 成人不卡视频 | 四虎影院在线免费观看 | 亚洲一区二区精品视频 | 国产精品av久久久久久毛片 | 九九久久精品 | 69视频在线播放 | 亚洲精品福利视频 | 午夜二区 | 日韩免费视频 | 国产精品视频久久久 | 亚洲精品乱码久久久久久按摩观 | 国产精产国品一二三产区视频 | 日韩欧美专区 | 中文字幕在线看第二 | 午夜爽爽男女免费观看hd | 亚洲综合在线视频 | 天天曰天天干 | 中文字幕99 | 国产小网站 | 色婷婷久久久久swag精品 | 精品国产乱码一区二区三区a | 日本成人区 | 日韩蜜桃视频 | 成人影视网址 | 久久青 | 免费久久视频 | 欧美视频在线看 | 精品国产免费人成在线观看 | 精品一区在线免费观看 |