標(biāo)題:
中穎單片機(jī)PWM按鍵控制電機(jī)轉(zhuǎn)速SH88F516源程序
[打印本頁(yè)]
作者:
weihu
時(shí)間:
2017-11-18 04:47
標(biāo)題:
中穎單片機(jī)PWM按鍵控制電機(jī)轉(zhuǎn)速SH88F516源程序
實(shí)現(xiàn)本功能的中穎MCU源碼如下:
/******************************
說(shuō)明:
SH88F516單片機(jī)繼承了3個(gè)8位PWM模塊,可以分別通過(guò)各自的PWMCON寄存器控制PWM模塊的時(shí)鐘,PWMP寄存器控制PWM輸出波形的周期,PWMD寄存器控制PWM輸出波形的
占空比,從而產(chǎn)生周期和占空比分別可調(diào)整的脈寬調(diào)制波形.在PWM輸出允許期間可以修改這三個(gè)寄存器,但在下一個(gè)PWM周期修改才會(huì)起作用. PWM定時(shí)器提
供3個(gè)中斷源,在每個(gè)PWM周期都會(huì)產(chǎn)生中斷.他們有不同的標(biāo)志位,共享一個(gè)中斷向量地址.
本程序通過(guò)按鍵S1,S2,S3來(lái)調(diào)節(jié)電機(jī)轉(zhuǎn)速,S1--慢速 S2--中速 S3--快速
直流電機(jī)的調(diào)速實(shí)際上是通過(guò)改變PWM的占控比來(lái)實(shí)現(xiàn)的,因而可以實(shí)現(xiàn)多檔速度的控制.
要求:打開J14的1腳
************************/
#include <sh88f516.h>
unsigned char Temp;
void init();
main()
{
init();
while(1) ;
}
void init()
{
CLKCON = 0x00; //系統(tǒng)時(shí)鐘=osc
PWM0P = 100; //PWM0輸出周期 = PWM0P[7-0]*PWM0時(shí)鐘
PWM0D = 90; //PWM0輸出占空比 = PWM0D[7-0]*PWM0時(shí)鐘
PWM0CON = 0xB1; //PWM0控制寄存器; 1000 0001---打開PWM0定時(shí)器,并從PWM0管腳輸出 占空比極性為高,時(shí)鐘為系統(tǒng)時(shí)鐘的1/16
IENC = 0x70; //IENC = 0111 0000B 即 EX4選擇寄存器打開4,5,6三個(gè)通道
EXF0 = 0x01; //EX4采用下降沿方式觸發(fā)
IEN1 = 0x60; //IEN1 = 0110 0000B 即 EX4=1 EPWM=1 打開外部中斷4 開啟PWM中斷 不能使用位操作,不具備位尋址功能
EA = 1; //開啟總中斷
Temp = 90;
}
void PWM_INT() interrupt 12 using 3 //PWM0/1/2的中斷號(hào)共享為12.
{
if(PWM0CON & 0x02) //判斷是否為PWM0中斷?
{
PWM0D = Temp; //占空比可調(diào)
}
PWM0CON &= 0xFD; //清除中斷標(biāo)志位 PWMIF=0但是這邊不能使用位操作,不具備位尋址功能
}
void EX4_INT() interrupt 13 //using 2 //外部中斷4的中斷號(hào)為13.
{
IEN1 &= 0xBF;
if(IF44) //高速
Temp = 100;
if(IF45) //中速
Temp = 90;
if(IF46) //慢速
…………
…………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
壓縮包里面包含有中穎單片機(jī)sh88f516常用功能的源碼,中文注釋都很詳細(xì).
下載地址
:
http://www.torrancerestoration.com/bbs/dpj-98300-1.html
作者:
51293032
時(shí)間:
2018-7-21 22:34
下載研究一下,高手有時(shí)間嗎,我有個(gè)類似的 有償幫我開發(fā)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1