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

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 3421|回復: 3

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

[復制鏈接]
1#
發表于 2018-11-5 20:08:17 | 只看該作者 |只看大圖 |倒序瀏覽 |閱讀模式
本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯
- \; e+ P& [1 x9 j0 h4 M4 Z
( c# v# D" x) ?8 u用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該變為1KHz,此時頻率是對了,可是波形卻變得很奇怪。  求有經驗的大神指導下% V. K4 \" v- ]0 x* u
這是產生的4KHZ正常波形,占空比為50%4 r  J  s+ I. h6 J& k$ c

' A) O$ M  g7 m& i/ n* S7 _
0 m4 P8 Y4 x. A9 _4 F3 ]& q
+ H# B; b& q. _" C4 V! }5 z這是1KHZ有問題的波形,占空比為60%
" G! g" v7 ~1 l, H" o9 \8 n 2 v, @( d: |4 J8 f" ?* M: w
; m% H4 D% Z% E9 F/ n0 R! I/ ^
回復

使用道具 舉報

2#
 樓主| 發表于 2018-11-5 20:14:34 | 只看該作者
主要的程序我也貼上來各位看一下' ^+ b! P2 r# u# F/ s
2 z) L5 v8 `3 S, A
/********端口初始化函數********/
+ D' D8 w/ N" b9 U- b* vvoid init()
) V8 g% u2 h& i! E{! M+ \9 f/ ]- e/ T
        ANSELH=0x00;                     //設置B口為數字I/O口
' H3 s  N: W* g$ Z# ]; \, q        OPTION_REG=0x00;# S7 u: ?0 ^$ E% E7 P3 j
        WPUB=0xFF;         //設置B口弱上拉
) D# L; {/ g. @- l) H        INTCON=0x00;       //關總中斷
4 w0 o' w% {* a        PIE1=0;            //PIE1的中斷禁止
. n3 \# u$ I' e        PIE2=0;            //PIE2的中斷禁止
5 Z  I. L) z  t# @0 T9 ]+ I! I3 n% D        TRISB0=1;$ y5 ]* _7 z3 K7 X. q: {9 r
        TRISB1=1;          //將RB1設置為輸入口,按按鍵
+ Z- X) ?# E2 I3 f. ^        TRISB2=1;          //將RB2設置為輸入口,按按鍵7 S( f: L9 k5 V# V
        TRISB3=1;, ^" {$ r$ V- V, d& X
        TRISB4=1;
- R: [8 C/ T& u1 H/ V% h        RC1=0;2 U' m. n2 i- r+ X5 h5 L
        TRISC1=0;          //脈寬調制輸出引腳,設置為輸出
1 s) J8 I) J* u, Y* Z}
: W* G  J$ b! N+ K: N) `5 P/********PWM初始化函數********/
1 ]) ?- C1 r  w+ y2 I: q5 kvoid PWM_Init(), P# T7 U; q+ F8 ^- Q
{, ?+ L' z9 _' }5 H
        PR2=249;           //脈寬調制波形的周期為1000us       
5 _4 Q2 B% D/ P/ R2 B: z        CCP2CON=0x0C;      //CCP2模塊工作在PWM模式,占空因數的低兩位為00
, @3 q" T& Q, Z" r+ q        T2CON=0x02;        //禁止TMR2,且前后分頻值為16,同時開始輸出PWM: P* A0 [3 s% ^0 W5 \! v
        CCPR2L=0xB8;       //脈寬調制波形的占空比初始值
7 Z9 B4 ]' H( ^( G0 `! M* g$ p}& z% Z! I& ]$ w' w* K, r
/********鍵盤掃描函數*******    */
! Z# r# c% [/ S' fvoid keyscan()
; \* m8 h5 P" ]# l8 L5 z2 K{
3 P3 k2 H. L7 O3 M% T, S        if(RB1==0)                  //如果是RB1鍵按下
" @( A! g) e, D        {
5 [$ C" v! T7 `2 e0 E! |- n0 i                delay_ms(5);              //延時去抖4 ]- @3 g% Q9 X! P& l+ A+ D
                if(RB1==0)              //確認是否有鍵按下
  S9 Y2 _& p* E                {+ P2 M# t8 n5 O6 M1 q
                        while(!RB1);        //等待按鍵釋放% _6 s" ^/ j9 r% h) a6 L1 U* q
                        CCP2CON=0x0C;
* H& B+ M$ h2 Z                        CCPR2L=0xB8;                   //80%占空比
2 @. z- z2 ]1 Q                        TMR2ON=1;
$ b) D. I( \) x: }                }
. o4 Z  X& y0 P: h# v3 B) J. ?) C1 m        }
- P. r: h. a- w6 V& K        if(RB2==0)                  //如果是RB2鍵按下
. U, J. G0 D/ U0 h        {7 S! a) u- O9 I( X( ]/ W
                delay_ms(5);              //延時去抖
$ v, f7 u2 Z. j                if(RB2==0)              //確認是否有鍵按下
# L6 T$ \( D; J2 H9 o  r/ o) G                {8 g& l: `. w& q1 x9 l% l
                        while(!RB2);        //等待按鍵釋放, M* f0 X) y5 u2 g& e7 w: a
                        CCP2CON=0x0C;
* m1 ~5 w1 a" z1 k% u                        CCPR2L=0x96;                   //60%占空比6 t+ \; ^) [6 |% j2 P( K
                        TMR2ON=1;% m& O* T2 m- C! X) x% C3 H
                }! ~0 T# @' {% H, R) k! D8 B) \
        }
7 N4 D; k, O5 }+ |3 [# J! W        if(RB0==0)                  //如果是RB0鍵按下
2 J; r! C5 B; p1 o; K9 n& _. S        {9 I& C# j: y3 g2 d; f* m2 ^
                delay_ms(5);              //延時去抖
. x& }. A9 s6 q3 ?                if(RB0==0)              //確認是否有鍵按下
( U, `/ Y3 U, f6 e  }                {6 `5 l* S+ ~- [
                        while(!RB0);        //等待按鍵釋放
/ v% G, u% S" R( n/ B' p8 P9 J. {4 p0 O                        CCP2CON=0x00;                   //關PWM
8 y6 m1 i" x  k& V& `. ^2 g0 R, \                        TMR2ON=0;                        //禁止TMR2* N7 {" c) H6 n+ R% U3 Z, y$ `2 x
                        //delay_ms(5);! X" Z5 U! D# U% b0 s) i8 y
                        RC1=0;
6 U8 ]8 g# G& Z1 K- Z; T0 D                }
* j" l! B& X- X( H( T0 i! H# l        }+ F) l- U+ r# q4 Q0 \, j( I1 m! ]
}; e7 s$ A) m) j: h8 u# x  P
/********主函數********/4 U$ F- \# \% x4 b" H/ ~
void main()
4 p/ U* M% o; E. o- J9 m{5 h$ Z. M2 |0 p' L& R% B+ K
        init();                     //系統初始化
2 G9 X  ]1 _% T6 M+ p        PWM_Init();                 //脈沖寬度初始化
! j3 p. X- G4 D; a' g        while(1)
8 [7 U5 c! d  A0 J2 ^8 f  t        {
% p6 g7 j( Z! }9 c/ L' w+ L1 ?                keyscan();              //調用按鍵掃描處理脈寬因數9 `2 e0 s- k9 o# Q5 Q& P
        }
- E5 `+ f& F9 n8 f0 u$ `8 w7 w}
3#
發表于 2018-11-6 07:38:09 | 只看該作者
單片機常用問題嗎?
4#
 樓主| 發表于 2018-11-6 14:45:37 | 只看該作者
遠祥 發表于 2018-11-6 07:38
6 Z7 p1 M# {$ A2 Q. O( D單片機常用問題嗎?

) r$ p* y5 X' _4 c這個是用PIC單片機產生PWM波,應該比較常見吧
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

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

GMT+8, 2025-9-27 02:05 , Processed in 0.077146 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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