性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

【單片機(jī)開(kāi)源學(xué)習(xí)】PIC單片機(jī)的逆變程序

大家好,我的PIC18F23K20逆變程序如下,可是效果不好,請(qǐng)諸位探討探討。


#include
#include
//系統(tǒng)配置
__CONFIG(HS&PWRTEN&BOREN&PROTECT&WDTDIS);
//關(guān)閉看門(mén)狗,選擇高速晶振,上電延時(shí)復(fù)位,掉電復(fù)位使能,代碼保護(hù)
//變量定義
//------------------------------------------------------------
//指示燈宏定義
#define L1_RED_ON   RB1=1;RB2=0;//L1紅燈亮
#define L1_RED_OFF  RB1=0;RB2=0;

#define L2_RED_ON   RB4=1;RB3=0;//L2紅燈亮
#define L2_RED_OFF  RB4=0;RB3=0;

#define L3_RED_ON   RB7=1;RB5=0;//L3紅燈亮
#define L3_RED_OFF  RB7=0;RB5=0;

#define L1_GREE_ON  RB2=1;RB1=0;//L1綠燈亮
#define L1_GREE_OFF RB2=0;RB1=0;

#define L2_GREE_ON  RB3=1;RB4=0;//L2綠燈亮
#define L2_GREE_OFF RB3=0;RB4=0;

#define L3_GREE_ON  RB5=1;RB7=0;//L3綠燈亮
#define L3_GREE_OFF RB5=0;RB7=0;
//-----------------------------------------------------------
//模擬輸入通道宏定義
#define AN0 CHS0=CHS1=HS2=0;
#define AN1 CHS=0;CHS1=CHS2=1;
#define AN2 CHS0=CHS2=1;CHS1=1;
//-----------------------------------------------------------
bit ccp1,k,ccp2;
unsigned char mode;
//-----------------------------------------------------------
//軟件延時(shí)子程序*/
void       DELAY()
{
unsigned int i;
   for(i=10000;i>0;i--);
}

//-----------------------------------------------------------
void adc_init()
{
//ad時(shí)鐘選擇
ADCS1=1;//FOSC/32
ADCS0=0;
//
PCFG0=0;
PCFG1=0;
PCFG2=0;//RA0=AN0,RA1=AN1,RA2=AN2,VREF=VDD-VSS
ADON=1;//打開(kāi)ad模塊
ADIF=0;//清除ad中斷標(biāo)志
ADIE=1;//打開(kāi)ad模塊中斷
PEIE=1;//打開(kāi)外圍模塊中斷
GIE=1;//打開(kāi)總中斷
}
//-----------------------------------------------------------
void port_init()//端口初始化
{
//端口b設(shè)置
TRISB0=0;TRISB1=0;TRISB2=0;TRISB3=0;TRISB4=0;TRISB5=0;
TRISB6=1;//輸入
TRISB7=0;//RB端口方向設(shè)置
PORTB=0;//輸出0
RBPU=0;//使能內(nèi)部弱上拉
INTE=0;//禁止RB0中斷
RBIF=0;
RBIE=1;//允許RB端口電平變化中斷

//端口c設(shè)置
TRISC=0X00;//PORTC are outputs
PORTC=0;//輸出為0
RC1=RC2=1;
//timer0 init
T0CS=0;//選擇內(nèi)部指令時(shí)鐘
T0IF=0;
//T0IE=1;//在第一次ccp1比較后打開(kāi)中斷使能
//timer1
TMR1CS=0;//定時(shí)器模式
}
//----------------------------------------------------------
void init_start()//開(kāi)始
{
L1_RED_ON;
L2_RED_ON;
L3_RED_ON;
DELAY();DELAY();DELAY();
L1_GREE_ON;
L2_GREE_ON;
L3_GREE_ON;
DELAY();DELAY();DELAY();
L1_GREE_OFF;
L2_GREE_OFF;
L3_GREE_OFF;
L1_GREE_ON;
}
//----------------
void CCP2_pwm()//ccp2 pwm初始化,CCP1比較初始化
{
TMR2ON=0;

//復(fù)位ccp
//CCP2M3=0;CCP2M2=0;CCP2M1=0;CCP2M0=0;
CCP1M3=0;CCP1M2=0;CCP1M1=0;CCP1M0=0;
GIE=0;PEIE=0;//禁止總中斷和外圍中斷
CCP1IF=0;
CCP1M3=1;CCP1M2=0;CCP1M1=0;CCP1M0=1;//比較模式
CCPR1H=0x17;
CCPR1L=0xe8;//每隔6個(gè)指令周期發(fā)生比較操作
TMR1L=TMR1H=0;
//--------
CCP2IF=0;
CCPR2L=0X6;//設(shè)置80%的脈寬輸出
CCP2X=CCP2Y=0;
CCP2M3=CCP2M2=1;//PWM模式
PR2=0Xff;//設(shè)置PWM的工作周期,20mhz,PWM周期=(PR2+1)*4*TOSC*TIMER2預(yù)分頻比=19.531khz
T2CKPS1=T2CKPS0=0;//timer2預(yù)分頻器1
TOUTPS3=TOUTPS2=TOUTPS1=TOUTPS0=0;//后分頻器1
//-------------------
CCP1IE=1;
TMR2ON=1;
GIE=1;

}

//---------------
void CCP1_pwm()//ccp1 pwm初始化,CCP2比較初始化
{
TMR2ON=0;

//復(fù)位ccp
CCP2M3=0;CCP2M2=0;CCP2M1=0;CCP2M0=0;
//CCP1M3=0;CCP1M2=0;CCP1M1=0;CCP1M0=0;
GIE=0;PEIE=0;//禁止總中斷和外圍中斷
//-------------------設(shè)置CCP2比較模式
CCP2IF=0;
CCP2M3=1;CCP2M2=0;CCP2M1=0;CCP2M0=1;//比較模式
CCPR2H=0x17;
CCPR2L=0xe8;//每隔6個(gè)指令周期發(fā)生比較操作
TMR1L=TMR1H=0;
//-------
CCP1IF=0;
CCPR1L=0X6;//設(shè)置80%的脈寬輸出
CCP1X=CCP1Y=0;
CCP1M3=CCP1M2=1;//PWM模式
PR2=0Xff;//設(shè)置PWM的工作周期,20mhz,PWM周期=(PR2+1)*4*TOSC*TIMER2預(yù)分頻比=19.531khz
T2CKPS1=T2CKPS0=0;//timer2預(yù)分頻器1
TOUTPS3=TOUTPS2=TOUTPS1=TOUTPS0=0;//后分頻器1
//-------------------
CCP2IE=1;
TMR2ON=1;
GIE=1;
}

//------------------
void interrupt key_ccp_timer()
{
if(RBIF){RBIF=0;if(!RB6)k=1;}
if(CCP1IF){RC2=1;TMR1L=TMR1H=0;CCP1IF=0;mode++;if(mode==32){mode=0;ccp1=1;L1_GREE_ON;}}
if(CCP2IF){RC1=1;TMR1L=TMR1H=0;CCP2IF=0;mode++;if(mode==32){mode=0;ccp2=1;L1_RED_ON;}}
if(T0IF){T0IF=0;}
if(ADIF){ADIF=0;}

}
//------------------------------------------------------------------------
void main(void)
{
port_init();
init_start();
adc_init();
while(1)
 {
if(k){DELAY();if(k&RB6)k=0;ccp2=1;}
if(ccp2){ccp1=0;CCP2_pwm();}
if(ccp1){ccp2=0;CCP1_pwm();}
 }
}



全部回復(fù)(18)
正序查看
倒序查看
2014-11-17 11:53
幫樓主頂一個(gè),希望你的問(wèn)題早點(diǎn)解決~
0
回復(fù)
苑留記
LV.8
3
2014-11-17 13:58

樂(lè)老師,程序怎么那么長(zhǎng)啊。

0
回復(fù)
2014-11-17 19:58

我們正在用這款單片機(jī)做EPS——6KW的,目前3KW沒(méi)問(wèn)題,6KW器件沒(méi)回來(lái)

0
回復(fù)
2014-11-18 11:09
@苑留記
樂(lè)老師,程序怎么那么長(zhǎng)啊。
樂(lè)老師在哪
0
回復(fù)
2014-11-20 11:34
@西華楊林
我們正在用這款單片機(jī)做EPS——6KW的,目前3KW沒(méi)問(wèn)題,6KW器件沒(méi)回來(lái)
你們直接做硬件?不軟件仿真嗎?
0
回復(fù)
2014-11-20 11:35
@電源網(wǎng)-娜娜姐
幫樓主頂一個(gè),希望你的問(wèn)題早點(diǎn)解決~

你看看有嗎問(wèn)題嗎?為什么我的仿真不了呢

0
回復(fù)
2014-11-20 12:03
@liuzhengkun98
你們直接做硬件?不軟件仿真嗎?
沒(méi)有,我們的3KW已經(jīng)在做樣機(jī)了
0
回復(fù)
xiaqing
LV.7
9
2014-11-20 19:43
好帖!頂一個(gè)!
0
回復(fù)
2014-12-31 15:20
@liuzhengkun98
你們直接做硬件?不軟件仿真嗎?
仿真文件能不能貼上來(lái)
0
回復(fù)
gohoshi
LV.2
11
2015-02-04 16:30
現(xiàn)在是什么具體問(wèn)題?
0
回復(fù)
wangminwr
LV.2
12
2016-02-12 00:19
有圖嗎?
0
回復(fù)
zcq760622
LV.4
13
2016-02-12 19:19
看一看
0
回復(fù)
tt98650207
LV.1
14
2016-02-14 17:26
來(lái)看看你的正弦波是怎樣產(chǎn)生的!
0
回復(fù)
loudianxin
LV.7
15
2016-02-23 17:40
問(wèn)一下  輸出穩(wěn)壓怎么實(shí)現(xiàn)
0
回復(fù)
zhaowenming
LV.6
16
2017-02-14 21:32
@loudianxin
問(wèn)一下 輸出穩(wěn)壓怎么實(shí)現(xiàn)
0
回復(fù)
苑留記
LV.8
17
2017-02-15 13:22
路過(guò)
0
回復(fù)
ruohan
LV.9
18
2017-03-23 13:13
@苑留記
路過(guò)

單片機(jī)的型號(hào)是什么,

0
回復(fù)
2017-11-11 15:41
三年后看到這東西,怎么沒(méi)有看到電流環(huán)電壓環(huán)程序
0
回復(fù)
發(fā)