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

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 3424|回復: 3

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

[復制鏈接]
1#
發表于 2018-11-5 20:08:17 | 只看該作者 |只看大圖 |倒序瀏覽 |閱讀模式
本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯
9 Y: T$ R' M: C$ v3 O" N! k0 K. |$ i4 N0 @6 m/ C2 K; n3 n3 V
用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該變為1KHz,此時頻率是對了,可是波形卻變得很奇怪。  求有經驗的大神指導下' a4 M2 z: ^, @1 h! T, |' I
這是產生的4KHZ正常波形,占空比為50%
# Y% s# b3 {- B& t5 w' p
* E/ K5 L7 S* E/ p! g! @! Z , }% D* y: i- S% K
0 m' u) r" O1 f% J3 h: Z+ ~
這是1KHZ有問題的波形,占空比為60%1 J- G' p- U" K. i" [
5 s) s/ x( ?' D; x. o; I

5 h$ W* s4 I+ O: Q1 G  B/ _: Z" N4 k
回復

使用道具 舉報

2#
 樓主| 發表于 2018-11-5 20:14:34 | 只看該作者
主要的程序我也貼上來各位看一下( ]" Q6 }! @+ q. Q
' L2 A9 J; [, D9 S" L! h4 F) Q* g/ s
/********端口初始化函數********/
: f. `- M# @! [* ]void init()
# H$ ~& \& y( u8 |& k{2 k6 E, J# x; I3 X- L% l
        ANSELH=0x00;                     //設置B口為數字I/O口
0 `" d! S/ Y! q* y, ~' T        OPTION_REG=0x00;
" X5 g0 P6 i- b9 j% r        WPUB=0xFF;         //設置B口弱上拉
3 z! z0 Y% G. W* \+ H' t        INTCON=0x00;       //關總中斷
6 j! ~1 n4 b3 q5 a9 _) @8 W        PIE1=0;            //PIE1的中斷禁止+ G1 }& w+ f$ q8 W: a8 i
        PIE2=0;            //PIE2的中斷禁止
3 W# e3 d9 m8 h3 q: C# s% G        TRISB0=1;
# Q# X" m* h" }        TRISB1=1;          //將RB1設置為輸入口,按按鍵2 ?9 _' f# X, E# M) ?( j
        TRISB2=1;          //將RB2設置為輸入口,按按鍵: l! i, {+ P, }; l
        TRISB3=1;
# [0 h+ M) e. \. m" w9 \) q        TRISB4=1;
4 ^) P" j& d6 I8 `5 U% I        RC1=0;0 Z, E9 x1 A# U9 I0 T
        TRISC1=0;          //脈寬調制輸出引腳,設置為輸出
$ f0 r8 M# i( F8 j2 u6 s}) t5 p. h7 t7 V/ d$ S
/********PWM初始化函數********/
" o# K9 |1 r& d, [) g) y9 Cvoid PWM_Init()
, @  F; y' U) K' ]( q0 e0 d  b{& P, L( k2 F  ?. V' p
        PR2=249;           //脈寬調制波形的周期為1000us        8 Y' Q) C; x$ b# J3 Y* w
        CCP2CON=0x0C;      //CCP2模塊工作在PWM模式,占空因數的低兩位為00
- o+ `* q) F2 S. ]) z* R        T2CON=0x02;        //禁止TMR2,且前后分頻值為16,同時開始輸出PWM3 k8 I; \  C* s* C
        CCPR2L=0xB8;       //脈寬調制波形的占空比初始值; o5 b8 f; i" M2 V* ~$ d" F' f+ Z
}
2 E- Y* N' I8 {& q6 j7 M/********鍵盤掃描函數*******    */( u3 Z6 [6 T+ l4 N; A3 O$ o
void keyscan(); _- r- I- s4 x* z* _: i+ w/ M+ S
{, s7 N; Y2 q7 ?$ A. _% R9 E. X' R! D
        if(RB1==0)                  //如果是RB1鍵按下0 y) ?$ d2 v  p4 a: C/ K
        {  _2 w$ s# u, R+ |, b
                delay_ms(5);              //延時去抖
- C: e' I) F6 E. t+ \) R9 d; t( I                if(RB1==0)              //確認是否有鍵按下( }: p9 @3 Q, E* x( P/ x
                {
( a2 V! L! h- Z7 ]: @9 h; n8 T                        while(!RB1);        //等待按鍵釋放# O8 a) F3 U; q4 ?+ Y. Z) f1 d
                        CCP2CON=0x0C;
! J- v( y* `5 ?7 V$ w) Y                        CCPR2L=0xB8;                   //80%占空比
, [, Z6 e9 I7 m; ~: C# Q8 J                        TMR2ON=1;
: g9 W8 x  K+ C2 ~                }
- ?7 m8 B0 A7 K5 Q5 a) d        }$ Z$ P7 v3 m& N& h
        if(RB2==0)                  //如果是RB2鍵按下9 Q. I5 r' j% f5 t/ K* P* v
        {$ H/ I% F$ @; C  G
                delay_ms(5);              //延時去抖
! f# s9 o# J6 [5 v; r6 T+ X, a# g. |2 t                if(RB2==0)              //確認是否有鍵按下3 n" J, \3 P7 L. V* ]
                {
5 U$ m' h9 @. p" J( \6 B- f  R                        while(!RB2);        //等待按鍵釋放+ \4 h4 k' j# \) K
                        CCP2CON=0x0C;
6 m8 p5 B. v- U) ?7 q                        CCPR2L=0x96;                   //60%占空比# ^; R  p  U5 @/ C
                        TMR2ON=1;
; T+ Z' M7 p) [+ B# \+ S9 W                }+ f+ i7 }6 i& h" E7 I  T
        }
( l1 @0 k' B; U5 U, V( A        if(RB0==0)                  //如果是RB0鍵按下
( a( t7 d, l- L7 i        {  b) t- ]' j: E/ P
                delay_ms(5);              //延時去抖/ @/ b% c1 k% z: z* x# e
                if(RB0==0)              //確認是否有鍵按下8 Y  M# J6 f0 C' }& j
                {
. v7 U' [& ~2 }" o                        while(!RB0);        //等待按鍵釋放! t: H' s# K# w+ i( m5 I. P2 h0 [
                        CCP2CON=0x00;                   //關PWM, k6 ^8 t" b- E% [+ A% a
                        TMR2ON=0;                        //禁止TMR2
6 z/ {4 K- a" t                        //delay_ms(5);
2 q1 R: D- J0 L" r9 @! |) O( M                        RC1=0;! E$ F- J6 V; L, p' x  G! p
                }
: g( m4 N8 L: _, U4 u" c: y! N        }! B" O8 E1 n( }  v
}! C* y: J6 h3 i) t( D9 ^! t# S
/********主函數********/
9 Q+ `7 S- p1 f& o; P1 s' z! Cvoid main()
6 L& B* _6 P& r, C4 ]6 h( ?) M{
0 p+ ]. R) l& @4 z        init();                     //系統初始化8 ^# @& B' V# ~$ s( a! i: ?- k' E
        PWM_Init();                 //脈沖寬度初始化
) N: L- m* p! K6 R1 Q& S        while(1)
) C" @4 C- d9 E) K: A* ?        {: D' U7 I! L& a6 S' e
                keyscan();              //調用按鍵掃描處理脈寬因數* ^8 x4 T6 i3 g- R% Q' Z( I
        }/ J2 R- Z* H! T! S, _, w
}
3#
發表于 2018-11-6 07:38:09 | 只看該作者
單片機常用問題嗎?
4#
 樓主| 發表于 2018-11-6 14:45:37 | 只看該作者
遠祥 發表于 2018-11-6 07:38
* p: m" s* C( l單片機常用問題嗎?
5 J# d+ h) r9 p/ s
這個是用PIC單片機產生PWM波,應該比較常見吧
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

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

GMT+8, 2025-9-27 05:42 , Processed in 0.067822 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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