国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索

用PIC單片機產生方波遇到這種波形

查看數: 3426 | 評論數: 3 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2018-11-5 20:08

正文摘要:

本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯 ' Z( ~7 B& Z5 h ! d& M6 z: x2 Z6 C' R; @& C用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該 ...

回復

馮喆喆 發表于 2018-11-6 14:45:37
遠祥 發表于 2018-11-6 07:384 U) g: y* F8 E; U; e  p% h8 [
單片機常用問題嗎?
5 }! l  \! T  B7 J
這個是用PIC單片機產生PWM波,應該比較常見吧
遠祥 發表于 2018-11-6 07:38:09
單片機常用問題嗎?
馮喆喆 發表于 2018-11-5 20:14:34
主要的程序我也貼上來各位看一下
0 ^: G2 s' S( W. J5 E% Z& `
: s( m# B6 b. ~, o' l" ]/********端口初始化函數********/1 h0 j% _& o; s7 c0 |4 ?2 S! @
void init()
' Q6 I* r/ q$ T{
# J7 G* D# l. d        ANSELH=0x00;                     //設置B口為數字I/O口8 m0 F: p! @/ T2 v4 o* g8 j  d
        OPTION_REG=0x00;
. R8 c1 u4 J6 _) }2 ?        WPUB=0xFF;         //設置B口弱上拉7 @9 B0 q3 Z7 N, q/ @& p. p
        INTCON=0x00;       //關總中斷
5 C, s  G# K0 N$ a- J9 C8 }        PIE1=0;            //PIE1的中斷禁止" H' x  D# n& ~. u8 T0 q9 U
        PIE2=0;            //PIE2的中斷禁止2 ]8 C; X' w5 |+ C' p/ ^, N3 c( T" J$ d
        TRISB0=1;5 w8 c5 `. b5 i! p
        TRISB1=1;          //將RB1設置為輸入口,按按鍵  S% a( W$ A: u- G3 S1 z* [7 r$ h6 s- w
        TRISB2=1;          //將RB2設置為輸入口,按按鍵
, W: k* M# S) a8 b0 F        TRISB3=1;5 [8 s0 ~& G1 o6 F6 |8 b0 ~7 N
        TRISB4=1;3 j3 D/ [( f+ [, h2 R* e
        RC1=0;/ D+ z7 M& B9 ]7 c* a5 L
        TRISC1=0;          //脈寬調制輸出引腳,設置為輸出
! x6 C9 r% m5 {6 d) o: i- a}% }3 n- w" o" H: G1 y
/********PWM初始化函數********/4 j2 P7 z" A5 n4 U) B
void PWM_Init()5 l2 `+ V) X/ |% t$ ?4 F  v+ P
{
1 o  o- D& n' _7 L0 Q        PR2=249;           //脈寬調制波形的周期為1000us       
1 F) e( z+ R' n. S, t, C3 E, Y% C        CCP2CON=0x0C;      //CCP2模塊工作在PWM模式,占空因數的低兩位為00  z7 H+ J8 x8 l
        T2CON=0x02;        //禁止TMR2,且前后分頻值為16,同時開始輸出PWM" L7 u+ h2 k0 r. i! @% [8 I
        CCPR2L=0xB8;       //脈寬調制波形的占空比初始值* T* W( K" w) P% G% w0 E
}
! k$ ^  f0 d, A, Q/********鍵盤掃描函數*******    */
  K6 X8 K4 T9 A3 mvoid keyscan()
! ]) e/ {0 v( ]7 [{
- z% N( \7 v7 k% [, U0 J        if(RB1==0)                  //如果是RB1鍵按下. L) B# d) P5 _( |2 g
        {+ x  o; t: ]8 q, C, w+ ^! C9 R
                delay_ms(5);              //延時去抖( Y( B' c, F! O) j' _* K
                if(RB1==0)              //確認是否有鍵按下
4 p; O! ]5 e4 a: M                {  E' e5 q0 j4 u# \* b, }- m
                        while(!RB1);        //等待按鍵釋放' Z4 |. O+ Z' F# b0 E
                        CCP2CON=0x0C;0 T% x5 x+ ?0 B' {; W
                        CCPR2L=0xB8;                   //80%占空比. G! s6 F; J, R. e
                        TMR2ON=1;
% x2 c: v& x# J- z+ ~. K                }% m3 d9 p* w% O% N9 ]" w0 B
        }
0 o7 c. [6 f3 @% U        if(RB2==0)                  //如果是RB2鍵按下( V: P+ t- P) W' n; L* w: b
        {
  q; a* n* k* M0 U                delay_ms(5);              //延時去抖7 H2 E  H, q' G/ x3 S$ ^: M
                if(RB2==0)              //確認是否有鍵按下
; K) Z- e* u* r6 S1 a                {
( C% O( m4 T0 B                        while(!RB2);        //等待按鍵釋放( ]3 C! g7 t! C+ i: C, j% Q7 U
                        CCP2CON=0x0C;
1 O& w; Y1 u$ g2 z7 l( }/ R( o                        CCPR2L=0x96;                   //60%占空比$ |& `9 P2 Q, ]7 j
                        TMR2ON=1;
6 A  Q- G1 f2 G5 q3 I: H1 ]                }
: }4 h- L- R2 \- q; d        }
! Q1 M: ^7 T8 v2 G; ?  j* `        if(RB0==0)                  //如果是RB0鍵按下
8 q& l/ }$ [5 F9 }# k6 f$ A        {
3 m( h5 y4 {$ `( h" [                delay_ms(5);              //延時去抖
* j1 w" d  R% I7 `/ \                if(RB0==0)              //確認是否有鍵按下
, d) ^7 m0 g4 ?5 m$ T2 x! z                {
7 y8 o! m( {$ \0 m                        while(!RB0);        //等待按鍵釋放
" Y  B! C' m* [% M                        CCP2CON=0x00;                   //關PWM" j. V' M4 A7 u
                        TMR2ON=0;                        //禁止TMR27 f. {- H& ?' G6 L+ B8 c0 C3 h% |
                        //delay_ms(5);
' ~, }2 M  O6 l- d) s& z3 [  @) m                        RC1=0;. n0 C+ @; o* l( {
                }. c* G) Y- G& Z# b
        }
2 t6 s) D7 I, t4 u3 e}0 n# I1 ?4 Q  X- M
/********主函數********/+ j, x0 }2 v. [6 G
void main()
# }4 O2 X6 s- }/ e% @7 O# y7 U{0 q7 @7 z( x0 h3 `4 y% f8 J4 O
        init();                     //系統初始化' G- o. V* i2 Z6 Q2 F
        PWM_Init();                 //脈沖寬度初始化3 T) t" f) X4 \# n& u7 d
        while(1)
9 a8 \+ u' K0 h5 @1 ~        {
& N3 U7 Q) `' ^3 }/ J. @6 Y  T                keyscan();              //調用按鍵掃描處理脈寬因數
2 _7 q% P) [( M- N6 v        }
$ M3 p8 p- S( ]  J: `; J}

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-9-27 07:20 , Processed in 0.060898 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表