欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

stc單片機(jī)IO配置與PWM

作者:黃大垣   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2013年11月27日   【字體:

I/O口配置

 

           STC2C5201AD系列單片機(jī)所有I/O口均可由軟件配置成4種工作類型之一,如下表所示。4種類型分別為:準(zhǔn)雙向口/弱上拉(標(biāo)準(zhǔn)8051輸出模式)、強(qiáng)推挽輸出/強(qiáng)上拉、僅為輸入(高阻)或開漏輸出功能。每個口由2個控制寄存器中的相應(yīng)位控制每個引腳工作類型。STC- 2C5201AD系列單片機(jī)上電復(fù)位后為準(zhǔn)雙向口/弱上拉(傳統(tǒng)805 I/O口)模式。2V以上時為高電平,0.8V以下時為低電平。每個I/O口驅(qū)動能均可達(dá)到20mA,但整個芯片最大不得超過90mA

 

P3口設(shè)定      <P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0>(P3口地址:B0H)口地址:B0H))

P3M1 [7:0]

P3M0 [7 : 0]

I/O 口模式

0

0

準(zhǔn)雙向口(傳統(tǒng)805  I/O 口模式)    ,

灌電流可達(dá)20mA , 拉電流為230μA ,

由于制誤差,    250uA 50uA

0

1

強(qiáng)推挽輸出( 強(qiáng)上拉輸出, 可達(dá)20mA, 限流電阻)

1

0

僅為輸入(    高阻)

1

1

開漏(Open Drain)      內(nèi)部上拉電阻斷開,    要外上拉

MOV P3M1,#10100000B

 

MOV P3M0 #10010000B

 

P3.7為開漏P3.5為高阻P3.4為強(qiáng)推挽輸出,其他為準(zhǔn)雙向

 

PWM輸出時I/O口的狀態(tài)

 

當(dāng)某個I/O口作為PWM輸出用時,該口的狀態(tài):

PWM      口的狀態(tài)

 

PWM時口的狀態(tài)

 

弱上拉/準(zhǔn)雙向口

強(qiáng)推挽輸出/強(qiáng)上拉輸出,要輸出限流電阻10K ~1K

強(qiáng)推挽輸出

強(qiáng)推挽輸出/強(qiáng)上拉輸出,要輸出限流電阻10K ~1K

僅為輸入/高阻

PWM

開漏

開漏

普通I/O---〉限流電阻用(10K1K-----〉接負(fù)載

 

4.6.如何讓I/O口上電復(fù)位時為低電平

 

普通8051單片機(jī)上電復(fù)位時普通I/O口為弱上拉高電平輸出,而很多實際應(yīng)用要求上電時某

 

I/O口為低電平輸出,否則所控制的系統(tǒng)(如馬達(dá))就會誤動作,現(xiàn)STC12系列單片機(jī)由于既有弱上拉輸出又有強(qiáng)推挽輸出,就可以很輕松的解決此問題。現(xiàn)可在STC12系列單片機(jī)I/O口上加一個下拉電阻(1K/2K/3K),這樣上電復(fù)位時,雖然單片機(jī)內(nèi)部I/O口是弱上拉/高電平輸出,但由于內(nèi)部上拉能力有限,而外部下拉電阻又比較小,無法將其拉高,所以該I/O口上電復(fù)位時外部為低電平。如果要將此I/O口驅(qū)動為高電平,可將此I/O口設(shè)置為強(qiáng)推挽輸出,而強(qiáng)推挽輸出時,I/O口驅(qū)動電流可達(dá)20mA,故肯定可以將該口驅(qū)動為高電平輸出。

 

 

 


 

 

 

 

 

 

10.3.4 脈寬調(diào)節(jié)模式(PWM)

 

   脈寬調(diào)制(PWMPulse Width Modulation)是一種使用程序來控制波形占空比、周期、相位波形的技術(shù),在三相電機(jī)驅(qū)動、D/A轉(zhuǎn)換等場合有廣泛的應(yīng)用。STC 2C520 AD系列單片機(jī)的PCA模塊可以通過程序設(shè)定,使其工作于8PWM模式。PWM模式的結(jié)構(gòu)如下圖所示。

 

 

 

 

 

所有PCA模塊都可用作PWM輸出(上圖)。輸出頻率取決于決于PCA定時器的時鐘源。

 

由于所有模塊共用僅有的PCA定時器,所有它們的輸出頻率相同。各個模塊的輸出占空

 

是獨(dú)立變化的,與使用的捕獲寄存器[EPCnL,CCAPnL]有關(guān)。當(dāng)寄存器寄存器CL的值小于[EPCnL,    CCAPnL]時,輸出為低;當(dāng)寄存器CL的值等于或大于[EPCnL,CCAPnL]時,輸出為高。當(dāng)CL的值由FF變?yōu)?/span>00溢出時,[EPCnH,CCAPnH]的內(nèi)容裝載到[EPCnL,CCAPnL]中。這樣就可實現(xiàn)無干擾地更新PWM。要使能PWM模式,模塊CCAPMn寄存器的PWMnECOMn位必須置位。由于PWM8位的,所以: PWM的頻率=PCA時鐘輸入源頻率/256   PCA時鐘輸入源可以從以下8種中選擇一種:SYSclkSYSclk/2SYSclk/4SYSclk/6SYSclk/8SYSclk/ 2,定時器0的溢出,ECI/P3.4輸入。。

 

舉例:要求PWM輸出頻率為38KHz,選SYSclkPCA/PWM時鐘輸入源,求出SYSclk的值

 

由計算公式38000=SYSclk/256   ,得到外部時鐘頻率SYSclk=38000 x 256 x =9,728,000

 

如果要實現(xiàn)可調(diào)頻率的PWM輸出,可選擇定時器0的溢出率或者ECI腳的輸入作為PCA/PWM的時鐘輸入源

 

當(dāng)EPCnL = 0CCAPnL=0x00H,PWM固定輸出高

 

當(dāng)EPCnL = 1CCAPnL=0xFFH,PWM固定輸出低

 

例:

 

#define           PCA_IDLE_DISABLE  0            //1:MCUIDLE模式時禁止PCA工作。                                                  0:  MCUIDLE模式時允許PCA工作。

 

#define           PCA_SOURCE_SELECT     1            //選擇PCA的基準(zhǔn)時鐘源。

 

                                                                      //0:系統(tǒng)時鐘Fosc/12

 

                                                                      //1:系統(tǒng)時鐘Fosc/2

 

                                                                      //2:定時器0的溢出。

 

                                                              //3ECI/P3.4腳的外部時鐘輸入(最大=Fosc/2)。

 

                                                                      //4:系統(tǒng)時鐘Fosc

 

                                                                      //5:系統(tǒng)時鐘Fosc/4

 

                                                                      //6:系統(tǒng)時鐘Fosc/6

 

                                                                      //7:系統(tǒng)時鐘Fosc/8

 

void en_PCA(void)

 

{

 

       CMOD= (PCA_IDLE_DISABLE << 7) | (PCA_SOURCE_SELECT << 1);    //初始化PCA模式寄存器。

 

       CL= 0x00;            //清除PCA計數(shù)機(jī)

 

       CH= 0x00;

 

       CR= 1;                 //啟動PCA計數(shù)機(jī) CL  00->FF

 

}

 

void initPWM()

 

{

 

 

 

 

 

      

 

       PWM=0x00;

 

       PCA_PWM0=0x02;    //初始化輸出0

 

       CCAP0H= 0xFF;         //初始化輸出0 

 

       CCAPM0= 0x42;         //設(shè)置PCA模塊0工作在PWM模式               .......................

 

      PCA_PWM1=0x02;    //初始化輸出0

 

       CCAP1H= 0xFF;         //初始化輸出0

 

       CCAPM1= 0x42;         //設(shè)置PCA模塊1工作在PWM模式

 

       en_PCA();                    //打開PMW

 

  }

 

 

 

 

 

DALE R01F采樣電阻,阻值是  0.01

 

 

 

RXD 為接收數(shù)據(jù)的引腳,TXD 為發(fā)送數(shù)據(jù)的引腳

PMW0 輸出全1 

 PCA_PWM0=0x00;
 CCAP0H = 0x00;


PMW0輸出全0
 PCA_PWM0=0x00;
 CCAP0H = 0x00;  //set PWM wide

關(guān)閉窗口

相關(guān)文章