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

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 3422|回復: 3

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

[復制鏈接]
1#
發表于 2018-11-5 20:08:17 | 只看該作者 |只看大圖 |正序瀏覽 |閱讀模式
本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯 ) a& T& Z' W3 o  U  m' c

9 }, N, z* w) `- _7 x用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該變為1KHz,此時頻率是對了,可是波形卻變得很奇怪。  求有經驗的大神指導下
" i' D) z( F: X$ B9 C3 T$ b這是產生的4KHZ正常波形,占空比為50%
) _1 @7 M- l0 B' p
+ o. [( y) s1 D  ?
: K1 G8 P' ?" x+ C
+ C( j# w$ i8 H# M: e' |這是1KHZ有問題的波形,占空比為60%
. v; S' R3 ^1 Q4 \. L
% x9 y* V/ c* V- J0 j( m2 l# R: m& S' i0 ?
回復

使用道具 舉報

4#
 樓主| 發表于 2018-11-6 14:45:37 | 只看該作者
遠祥 發表于 2018-11-6 07:38" w2 v/ \5 |& C1 y0 Q# ~  l
單片機常用問題嗎?

; G" B. h! X5 l6 }) K7 S. I3 _這個是用PIC單片機產生PWM波,應該比較常見吧
3#
發表于 2018-11-6 07:38:09 | 只看該作者
單片機常用問題嗎?
2#
 樓主| 發表于 2018-11-5 20:14:34 | 只看該作者
主要的程序我也貼上來各位看一下" t7 j% _# o0 `" H4 M' r! L

$ }: p7 F% r- S  E/********端口初始化函數********/6 n' y7 s, O7 _1 N# r
void init()/ A) y; R  n8 t6 u' N( Z
{# E2 i6 @3 X; V& V# `) C
        ANSELH=0x00;                     //設置B口為數字I/O口9 D6 f( D+ f8 r" y0 c! S
        OPTION_REG=0x00;
- g9 n( b. i6 w  r8 y. X        WPUB=0xFF;         //設置B口弱上拉
# x' C: n5 M" N4 w' R3 Z        INTCON=0x00;       //關總中斷1 `4 U; F9 \$ S# f
        PIE1=0;            //PIE1的中斷禁止
& x! ]: t, i& V0 S( E! J        PIE2=0;            //PIE2的中斷禁止- r8 [3 L6 e, j& g4 x* x  k
        TRISB0=1;
8 H' |4 k( q1 S& F) v8 K5 }( u        TRISB1=1;          //將RB1設置為輸入口,按按鍵
9 T) x' j/ O4 d6 _# e        TRISB2=1;          //將RB2設置為輸入口,按按鍵
# r& O$ L3 a/ Q4 t! M2 u" |        TRISB3=1;% e" l6 V- i! g# ?
        TRISB4=1;
7 t8 I% x  d. I* H        RC1=0;* _0 W9 P4 t+ s2 K
        TRISC1=0;          //脈寬調制輸出引腳,設置為輸出8 P* F9 a) Z7 s' u
}) G# G' Z. y" \( `( i
/********PWM初始化函數********/
  Q9 [% S# [, h. Svoid PWM_Init()# J  n' Q: Y) H
{' ?2 M( M, `' C; P% u/ A
        PR2=249;           //脈寬調制波形的周期為1000us        5 K" ^( X7 q3 G0 X6 ]# i* S" w
        CCP2CON=0x0C;      //CCP2模塊工作在PWM模式,占空因數的低兩位為00
$ y0 c/ |7 g9 F- `        T2CON=0x02;        //禁止TMR2,且前后分頻值為16,同時開始輸出PWM
% Q) G: _; g- W        CCPR2L=0xB8;       //脈寬調制波形的占空比初始值+ P+ J% l0 A! ^) A2 ?. f
}
! z8 f3 f  N! X& q/********鍵盤掃描函數*******    */
% }+ U- n+ N+ _2 Svoid keyscan()! w1 m, ?' p  G" ^0 e
{  m6 V; h' S4 X1 E
        if(RB1==0)                  //如果是RB1鍵按下9 v. p0 W# \. y& ^7 O1 F
        {* @6 |' N# t1 k  c# T
                delay_ms(5);              //延時去抖7 V* j4 p: [7 w* Z" i
                if(RB1==0)              //確認是否有鍵按下7 @2 Y/ k$ }8 O- P& n1 e
                {, J; s! t1 p- f# t( f8 N( ]2 l" `
                        while(!RB1);        //等待按鍵釋放9 b( ~9 \8 K* c8 N
                        CCP2CON=0x0C;
; W) [# k) G; ?$ ^& s' O" J% F                        CCPR2L=0xB8;                   //80%占空比
4 K& t6 P5 |+ x, G                        TMR2ON=1;1 S  N; c/ v. K4 r* A# i
                }
- Z$ b. n; ^1 L: ?# `        }
. r' C3 n' z" p" }) M        if(RB2==0)                  //如果是RB2鍵按下2 ~* t% s' p% H3 m" ?
        {
; G4 x& }4 _+ m: ^                delay_ms(5);              //延時去抖
  {# v$ F* v' U$ |0 K                if(RB2==0)              //確認是否有鍵按下( \, n, ~+ ~, h4 W" N  T
                {  f" [3 I8 H3 R7 Z/ T0 i
                        while(!RB2);        //等待按鍵釋放. H  [6 n. ^5 t9 R2 x% @0 D! u: X
                        CCP2CON=0x0C;
1 R4 Y& K2 R$ C' ?4 y/ ~) Q                        CCPR2L=0x96;                   //60%占空比
/ N' [6 H# [! [$ t  a/ [9 q                        TMR2ON=1;
& A6 Y: l- p0 H* Y                }
  r" W9 u/ ]4 n* z        }+ T$ e- v/ Q" h1 l  x' c8 q
        if(RB0==0)                  //如果是RB0鍵按下7 Z0 N4 c( T9 N2 O
        {
* X$ `+ X$ h0 Y& F, E: V4 s. V                delay_ms(5);              //延時去抖
6 O" E1 d& ~8 _  r" S. t                if(RB0==0)              //確認是否有鍵按下& L: Z% N5 F/ }, F7 j, W
                {
6 S9 f1 a" L4 v$ ~5 m5 o( w; \' }                        while(!RB0);        //等待按鍵釋放* V; ^- p" e, f8 p( W; U1 U# e
                        CCP2CON=0x00;                   //關PWM4 ^! f  @: {9 d' X6 }
                        TMR2ON=0;                        //禁止TMR2
2 q  M4 \( [3 t                        //delay_ms(5);
7 J4 ]7 E8 x, ^3 k- l                        RC1=0;+ Z$ E) ^7 i; r9 N7 c4 ^: y$ e
                }; ^% w0 o2 Z7 @4 I
        }. m! P0 B( q7 {7 h- p% L- T) j: D
}
. t- k* }$ x% H5 M/********主函數********/
* P( B! w+ A5 Y( }9 X$ y0 u' bvoid main()
( O- y8 p( S: o8 O, g3 o" @{* X2 G( o( u/ ^$ x3 u% z; O
        init();                     //系統初始化3 m. V- s# _0 S) D) c7 r( Q
        PWM_Init();                 //脈沖寬度初始化* }+ s. M8 e2 x/ m2 {9 ~
        while(1)1 q( _$ f8 j% O0 v0 c8 D( L8 k
        {7 e  O- D& G8 I. _2 o/ y9 M7 l
                keyscan();              //調用按鍵掃描處理脈寬因數
8 }3 N" a: W/ y0 g! ~        }
6 Z* l. \) U& W/ [  D, ?}
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

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

GMT+8, 2025-9-27 04:02 , Processed in 0.073656 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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