标题:
中颖单片机PWM按键控制电机转速SH88F516源程序
[打印本页]
作者:
weihu
时间:
2017-11-18 04:47
标题:
中颖单片机PWM按键控制电机转速SH88F516源程序
实现本功能的中颖MCU源码如下:
/******************************
说明:
SH88F516单片机继承了3个8位PWM模块,可以分别通过各自的PWMCON寄存器控制PWM模块的时钟,PWMP寄存器控制PWM输出波形的周期,PWMD寄存器控制PWM输出波形的
占空比,从而产生周期和占空比分别可调整的脉宽调制波形.在PWM输出允许期间可以修改这三个寄存器,但在下一个PWM周期修改才会起作用. PWM定时器提
供3个中断源,在每个PWM周期都会产生中断.他们有不同的标志位,共享一个中断向量地址.
本程序通过按键S1,S2,S3来调节电机转速,S1--慢速 S2--中速 S3--快速
直流电机的调速实际上是通过改变PWM的占控比来实现的,因而可以实现多档速度的控制.
要求:打开J14的1脚
************************/
#include <sh88f516.h>
unsigned char Temp;
void init();
main()
{
init();
while(1) ;
}
void init()
{
CLKCON = 0x00; //系统时钟=osc
PWM0P = 100; //PWM0输出周期 = PWM0P[7-0]*PWM0时钟
PWM0D = 90; //PWM0输出占空比 = PWM0D[7-0]*PWM0时钟
PWM0CON = 0xB1; //PWM0控制寄存器; 1000 0001---打开PWM0定时器,并从PWM0管脚输出 占空比极性为高,时钟为系统时钟的1/16
IENC = 0x70; //IENC = 0111 0000B 即 EX4选择寄存器打开4,5,6三个通道
EXF0 = 0x01; //EX4采用下降沿方式触发
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的中断号共享为12.
{
if(PWM0CON & 0x02) //判断是否为PWM0中断?
{
PWM0D = Temp; //占空比可调
}
PWM0CON &= 0xFD; //清除中断标志位 PWMIF=0但是这边不能使用位操作,不具备位寻址功能
}
void EX4_INT() interrupt 13 //using 2 //外部中断4的中断号为13.
{
IEN1 &= 0xBF;
if(IF44) //高速
Temp = 100;
if(IF45) //中速
Temp = 90;
if(IF46) //慢速
…………
…………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
压缩包里面包含有中颖单片机sh88f516常用功能的源码,中文注释都很详细.
下载地址
:
http://www.51hei.com/bbs/dpj-98300-1.html
作者:
51293032
时间:
2018-7-21 22:34
下载研究一下,高手有时间吗,我有个类似的 有偿帮我开发
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1