stc12c5a60s2單片機頭文件
STC12C5A60S2.h頭文件:
工程功能 :PWM輸出
** MCU:STC12C5A60S2
** 晶振:11.0592MHz
* 配置PCA模塊為8位PWM輸出模式,PCA計數(shù)脈沖設置為Timer0的溢出頻率,配置步驟如下:
* 1、PCA模塊0在空閑模式下扔然計數(shù),選擇T0計數(shù)溢出頻率為PCA模塊0的計數(shù)脈沖,禁止PCA0的溢出中斷,即CMOD=0X84;
* 2、不使用PCA中斷,將PCA各模塊中斷請示標志清除,即CCON=0X00;
* 3、PCA計數(shù)器清0,即使CH=CL=0;
* 4、T0設置為工作方式2,8位自動重裝模式,即TMOD=0X02;
* 5、將計數(shù)初值裝入T0;
* 6、開啟T0計數(shù)器,開啟PCA0計數(shù)器,即TR0=1; CR=1;
* 7、PWM輸出端口為P1.3,另一端接直流電機使用ULN2003驅動
* 8、啟動后電機轉速最慢。
主程序如下,有意向的同學可以在此基礎再增加控制功能。
#include<stc12c5a60s2.h>stc12c5a60s2.h>
#include
#define uint unsigned int
#define uchar unsigned char
sbit K2 =P2^0; //PWM值減小鍵
sbit K1 =P2^1; //PWM值增大鍵
sbit BEEP =P3^7 ; //蜂鳴器
sbit mt =P1^3; //PWM輸出接入直流電機
void delay(unsigned char t) //10us延時子程序
{
while(t--) ;
}
void Delay_ms(uchar ms) //延時函數(shù)
{
uchar i ;
while(ms--)
{
for(i=0 ; i<114 ; i++) ;
}
}
void Beep() // 蜂鳴器子程序
{
unsigned char i ;
for (i=0 ;i<100 ;i++)
{
delay(100);
BEEP = !BEEP; //Beep取反
}
BEEP = 1; //關閉蜂鳴器
Delay_ms(100);
}
void main()
{
PCA_init();
Timer0_init();
while(1) //在while(1)循環(huán)中通過連續(xù)改變CCAP0H改變PWM0輸出的PWM信號的占空比,PWM信號在P1.3腳輸出
{ //修改后的代碼使用按鍵直接加減CCAP0H的值來改變PWM0輸出的PWM信號的占空比,加/減到最大/小時FMQ響,
do
{
if(CCAP0H!=0x02)
{
CCAP0H--;
Delay_ms(60);
}
else Beep();
}
while(K2==0);
do
{
if(CCAP0H!=0xFF)
{
CCAP0H++;
Delay_ms(60);
}
else Beep();
}
while(K1==0);
}
}