資源簡(jiǎn)介
用STC12C5A60S2控制直流電機(jī),PWM控制轉(zhuǎn)速,按鍵s1、s2控制加速減速
因只控制一路電機(jī)所以只用到一路PWM,若用到兩路則打開另一路即可

代碼片段和文件信息
/**************************************************************
用STC12C5A60S2控制直流電機(jī),PWM控制轉(zhuǎn)速,按鍵s1、s2控制加速減速
因只控制一路電機(jī)所以只用到一路PWM,若用到兩路則打開另一路即可
***************************************************************/
#include?//頭文件
sbit?s1?=?P2^3;//加速控制
sbit?s2?=?P3^7;//減速控制
unsigned?int?z;
//*********************//延時(shí)程序
void?delay_ms(unsigned?int?time)
{
int?xy;
for(x=time;x>0;x--)
?for(y=115;y>0;y--);//229
}
//******************************
//******************PWM初始化程序
void?PWM_init?(void)
{
CMOD=0x02;?//設(shè)置PCA定時(shí)器
? CL=0x00;?
? CH=0x00;
CCAPM0=0x42;?//PWM0設(shè)置PCA工作方式為PWM方式(0100?0010)
? CCAP0L=0x00;?//設(shè)置PWM0初始值與CCAP0H相同
? CCAP0H=0x00;?//?PWM0初始時(shí)為0
CCAPM1=0x42;?//PWM1設(shè)置PCA工作方式為PWM方式(使用時(shí)刪除//)
CCAP1L=0x00;?//設(shè)置PWM1初始值與CCAP0H相同
? CCAP1H=0x00;?//?PWM1初始時(shí)為0
? CR=1;?//啟動(dòng)PCA定時(shí)器
}
//******************************
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:PWM0占空比設(shè)置函數(shù)
調(diào)??用:PWM0_set();
參??數(shù):0x00~0xFF(亦可用0~255)
返回值:無
結(jié)??果:設(shè)置PWM模式占空比,為0時(shí)全部高電平,為1時(shí)全部低電平
備??注:如果需要PWM1的設(shè)置函數(shù),只要把CCAP0L和CCAP0H中的0改為1即可
/**********************************************************************************************/
void?PWM0_set?(unsigned?char?a)//PWM0是IO口P1.3
{
CCAP0L=?a;?//設(shè)置值直接寫入CCAP0L
? CCAP0H=?a;?//設(shè)置值直接寫入CCAP0H
}
/*
void?PWM1_set?(unsigned?char?a)//PWM0是IO口P1.4
{
CCAP1L=?a;?//設(shè)置值直接寫入CCAP1L
? CCAP1H=?a;?//設(shè)置值直接寫入CCAP1H
}*/
/**********************************************************************************************/
void?main?()
{
PWM_init();?//PWM初始化
PWM0_set?(0);
PWM0_set?(z);
z=250;
while(1)
{
PWM0_set?(z);// PWM信號(hào)輸出
??//delay_ms(500);
if(s2==0)
{
delay_ms(50);
if(s2==0)
{
while(s2==0);//等待按鍵松開?
if((z+5)<250) ??
{??
??z+=5;
}
PWM0_set?(z);
?}
?} ???
if(s1==0)
{
delay_ms(50);
if(s1==0)
{
while(s1?==?0);//等待按鍵松開
if(z>=5) ??
?{??
???z-=5;
?}
PWM0_set(z);
}
}
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????2409??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\main.c
?????文件???????5586??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\main.LST
?????文件???????3913??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\main.OBJ
?????文件???????3458??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM
?????文件????????613??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.hex
?????文件?????????39??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.lnp
?????文件???????5693??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.M51
?????文件????????971??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.opt.bak
?????文件????????379??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.plg
?????文件???????2100??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.Uv2.bak
?????文件??????73137??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.uvopt
?????文件??????13226??2019-01-17?12:14??STC12C5A60S2內(nèi)部PWM-DA程序\PWM.uvproj
?????文件???????1134??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM_Opt.Bak
?????文件??????????0??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\PWM_Uv2.Bak
?????文件??????17800??2019-01-17?12:13??STC12C5A60S2內(nèi)部PWM-DA程序\STC12C5A60S2.h
?????目錄??????????0??2019-01-17?12:14??STC12C5A60S2內(nèi)部PWM-DA程序
-----------?---------??----------?-----??----
???????????????130458????????????????????16
評(píng)論
共有 條評(píng)論