国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费
機械社區
標題:
用PIC單片機產生方波遇到這種波形
[打印本頁]
作者:
馮喆喆
時間:
2018-11-5 20:08
標題:
用PIC單片機產生方波遇到這種波形
本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯
2 V- p1 U) F7 r+ E4 E
5 D. m. ]. F X; u' C( v' Q. E% ?
用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該變為1KHz,此時頻率是對了,可是波形卻變得很奇怪。 求有經驗的大神指導下
5 f, F; Y& [4 c. o, `
這是產生的4KHZ正常波形,占空比為50%
4 _4 e+ {+ j/ i4 f
a% A7 a$ {9 T- |
(, 下載次數: 61)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
- c2 E) e- W t' Q$ ]
" V8 _: b A3 k1 p* ?3 D, i. o
這是1KHZ有問題的波形,占空比為60%
6 F' L3 u# m) e* y- Q
(, 下載次數: 56)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
" D+ j( j- D% w2 ^% P3 x; P' E
' f& i6 k+ c( }+ f
作者:
馮喆喆
時間:
2018-11-5 20:14
主要的程序我也貼上來各位看一下
( G+ j! c, o9 F1 A3 P) I7 t
/ |) x8 F- t$ e/ ]
/********端口初始化函數********/
6 y$ R. i8 S" S
void init()
( w. ?0 n' t5 q0 R {' _) w# J- s
{
3 N9 h8 r# b% e! p% S J, g, p2 r: q
ANSELH=0x00; //設置B口為數字I/O口
* Q. D1 G% |1 x& E$ M) @ X$ p
OPTION_REG=0x00;
. t+ m4 b- @- |
WPUB=0xFF; //設置B口弱上拉
- W: I. M& m( P4 q9 a+ \
INTCON=0x00; //關總中斷
8 b* s& s2 G) V& o2 c& Q
PIE1=0; //PIE1的中斷禁止
0 M4 v' c" Q @. p& E
PIE2=0; //PIE2的中斷禁止
' c2 ?/ T( [6 v. g+ p
TRISB0=1;
. W3 w! a; e" x) _& p5 C
TRISB1=1; //將RB1設置為輸入口,按按鍵
6 A5 q6 t. R, D( s
TRISB2=1; //將RB2設置為輸入口,按按鍵
& Y" `' W0 t2 q. r, Z! i E
TRISB3=1;
V, C( G0 b, k4 Y
TRISB4=1;
' Z' ^2 u7 G7 `. m6 c& U) Z
RC1=0;
& A3 r9 h6 h: }$ b; J" m$ j5 W
TRISC1=0; //脈寬調制輸出引腳,設置為輸出
; D1 B+ L, G& B2 c8 {
}
$ W- E: |9 i; j: t' O- z0 `8 ~
/********PWM初始化函數********/
" C; K, }# n4 s/ F7 d0 w
void PWM_Init()
! e, b6 J c1 X: I
{
/ E& f& N0 B% x& N% c5 W6 g* m
PR2=249; //脈寬調制波形的周期為1000us
/ N+ b- O" m# q2 u1 Z/ K4 [+ V) W
CCP2CON=0x0C; //CCP2模塊工作在PWM模式,占空因數的低兩位為00
0 }4 @* J9 o% V! e* c9 h
T2CON=0x02; //禁止TMR2,且前后分頻值為16,同時開始輸出PWM
7 H T, N0 z1 V5 {/ O
CCPR2L=0xB8; //脈寬調制波形的占空比初始值
! Z) ~1 C1 C2 m. V. o6 N+ h
}
8 Z/ H3 @9 j. c+ p" G
/********鍵盤掃描函數******* */
& a* H' n7 {, c. @0 u
void keyscan()
I7 Y: s N* x$ t- E4 j/ w0 R: C
{
: I4 m3 x2 s( g- n6 D" p3 F5 L
if(RB1==0) //如果是RB1鍵按下
+ |1 {2 \ Y1 c% S2 D6 M Y
{
0 ^4 \% y0 g- `# T
delay_ms(5); //延時去抖
" K8 g% W* K" f( Q r
if(RB1==0) //確認是否有鍵按下
$ s$ _; u) C/ r" G
{
: s$ K% ] F1 `
while(!RB1); //等待按鍵釋放
$ c4 p! K% f) e8 |% h4 w
CCP2CON=0x0C;
- {; q% y) y1 n7 L- l/ ~
CCPR2L=0xB8; //80%占空比
0 b' Y. n' |, n5 c8 i4 ~! I7 r
TMR2ON=1;
7 [7 Z, w% I1 k! L$ F" N
}
+ ? w3 u% Z- F
}
9 @* H% W& Z0 n8 I% p
if(RB2==0) //如果是RB2鍵按下
+ A* C! m4 J2 H& ~+ Q: Z5 }! V
{
. D; o/ ?) ^3 k- r, n* C
delay_ms(5); //延時去抖
" }# \; |, ?. G3 Q
if(RB2==0) //確認是否有鍵按下
0 `3 e/ x4 P' D& D) M
{
" ]! j% J. ]; k2 R# v2 e
while(!RB2); //等待按鍵釋放
! ^9 r! O" b: ?8 v5 }
CCP2CON=0x0C;
" f+ S U8 j- M, B7 y9 B
CCPR2L=0x96; //60%占空比
) K, U) N) D- m S' _+ _+ V" v
TMR2ON=1;
] i! E b3 o# ^0 e+ i% r' |" a
}
0 S5 c: ?4 j+ @. x9 j. ?5 A! A- n
}
H. R! C) S! s7 Q! j
if(RB0==0) //如果是RB0鍵按下
5 I; z9 k4 V9 ^! s
{
# U3 Y# a6 k" Y
delay_ms(5); //延時去抖
' z; d3 d& ~. S. o$ R, K
if(RB0==0) //確認是否有鍵按下
# ?3 C5 Z) I3 g/ Y
{
/ H# a0 _2 ^4 }( p' @# B1 J3 C
while(!RB0); //等待按鍵釋放
' k( V- N. U; ^
CCP2CON=0x00; //關PWM
5 K6 |; J' p7 ~3 F
TMR2ON=0; //禁止TMR2
/ z y& X+ B9 k9 t
//delay_ms(5);
# X% D7 i' ^3 Y. O5 m; M; V- k
RC1=0;
* x" I8 ?- l$ ?( U8 e
}
* P6 p! h O; d- H0 \) q
}
: x/ ~, N$ i: e! y8 e
}
2 G9 m" d$ H+ ^& r* B3 d- e
/********主函數********/
% S+ r- g3 B( |/ {( v1 _ g
void main()
@' Z5 P4 h9 ^$ `0 y
{
4 U$ @1 d, H/ i |8 H
init(); //系統初始化
! a+ K9 e q* {3 c% @( \
PWM_Init(); //脈沖寬度初始化
5 I! k2 H/ _. i
while(1)
7 n7 ~; m7 j/ L; A( ?/ p8 N" n; r
{
; Z- W& f n) ^( Y
keyscan(); //調用按鍵掃描處理脈寬因數
% e P# w& m; v2 c" R; a5 O
}
2 F( y/ E7 |) f0 z6 ~$ a2 D
}
作者:
遠祥
時間:
2018-11-6 07:38
單片機常用問題嗎?
作者:
馮喆喆
時間:
2018-11-6 14:45
遠祥 發表于 2018-11-6 07:38
0 r6 O) q, b2 X9 g: s
單片機常用問題嗎?
# x8 ^' K3 T" e) k
這個是用PIC單片機產生PWM波,應該比較常見吧
歡迎光臨 機械社區 (http://www.whclglass.com.cn/)
Powered by Discuz! X3.5