久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱
機械社區
標題:
用PIC單片機產生方波遇到這種波形
[打印本頁]
作者:
馮喆喆
時間:
2018-11-5 20:08
標題:
用PIC單片機產生方波遇到這種波形
本帖最后由 馮喆喆 于 2018-11-5 20:11 編輯
) p6 ]% F& Y, a! I7 J* m) e
4 M0 O2 }, _, U9 u$ F
用PIC16F887單片機產生方波,當我把方波頻率設為4KHz時波形是正常的,當我改變TIMER2的分頻值,從4改為16 ,此時頻率應該變為1KHz,此時頻率是對了,可是波形卻變得很奇怪。 求有經驗的大神指導下
0 T% Y: f+ D* z) J+ P; u; F' O, d
這是產生的4KHZ正常波形,占空比為50%
* \) |% y1 V" Q! {/ e: o
- K7 B. G% ^4 p$ N
(, 下載次數: 55)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
% ~$ r+ D) Z7 |7 S
. [6 J o: p) {- S
這是1KHZ有問題的波形,占空比為60%
+ l% E3 M$ K5 g _/ m# B, _
(, 下載次數: 47)
上傳
點擊文件名下載附件
下載積分: 威望 -10 點
$ }( e0 s4 x' X7 d4 M
- T; b2 C/ K+ y* K. e
作者:
馮喆喆
時間:
2018-11-5 20:14
主要的程序我也貼上來各位看一下
g/ M7 X' K6 U! j# a/ V
5 N; j- p/ h- w/ A' O% @) `* A
/********端口初始化函數********/
, }8 G' W% Q: `' A3 Y2 u
void init()
: B7 o! C0 ?; L. B: ]* y
{
1 W8 Y" s) _& c8 R4 @
ANSELH=0x00; //設置B口為數字I/O口
) ]; y& d2 [! Z4 ? J# u
OPTION_REG=0x00;
" ] Y: K$ H* ^) r; l3 N' d
WPUB=0xFF; //設置B口弱上拉
) E& f% A2 s# S% V# w1 A# j
INTCON=0x00; //關總中斷
L3 V! B. m# u0 Z( W) h. i
PIE1=0; //PIE1的中斷禁止
|& M" `( T7 \$ x
PIE2=0; //PIE2的中斷禁止
4 C! S8 v" F- X! ?/ D
TRISB0=1;
) h6 `: R1 e9 L, J
TRISB1=1; //將RB1設置為輸入口,按按鍵
- D& b& j9 c, O% z
TRISB2=1; //將RB2設置為輸入口,按按鍵
1 Y: k8 m5 S+ l5 \1 ~
TRISB3=1;
# l( @4 Q0 B& q# z3 }
TRISB4=1;
8 \1 D7 ~, x& M# E1 g
RC1=0;
6 y- g. r/ L K! d
TRISC1=0; //脈寬調制輸出引腳,設置為輸出
+ r% h5 H# K% `& j' }% q& W
}
/ ^2 @$ o7 {$ z% L7 M4 ]6 _' `4 K
/********PWM初始化函數********/
+ E$ B5 s% t# e* Z' ]! M' j& f9 H' V
void PWM_Init()
i- h E# Z7 S- }, [2 u
{
( h# W, }, S- ^8 M2 Y) x1 v+ J; }, ]
PR2=249; //脈寬調制波形的周期為1000us
8 p" P" [) d0 K
CCP2CON=0x0C; //CCP2模塊工作在PWM模式,占空因數的低兩位為00
7 s* A; M$ S! [2 O9 M0 {7 E
T2CON=0x02; //禁止TMR2,且前后分頻值為16,同時開始輸出PWM
( J+ |) m& b% L ^7 |( v$ I+ Z* N3 b
CCPR2L=0xB8; //脈寬調制波形的占空比初始值
" l) o1 c8 |, R; B M' d! [
}
$ X3 I6 ~) @ E$ u( R$ q
/********鍵盤掃描函數******* */
" v- p$ m& A8 i1 o9 Y: N
void keyscan()
) t! i" d: n8 A* ^& X
{
) G+ [% J+ u( O0 a6 h! r
if(RB1==0) //如果是RB1鍵按下
# d8 S0 C0 W+ _" g0 h5 y
{
$ r7 {2 s9 O! ?2 O7 v+ Q+ A
delay_ms(5); //延時去抖
# o) v }3 L9 m! n" O$ k% n
if(RB1==0) //確認是否有鍵按下
) O" z7 ~3 _; L& C) V
{
% e. D4 t. c: G9 {: ~0 _( d* u" H
while(!RB1); //等待按鍵釋放
7 Q Z! i( q# ?- ~
CCP2CON=0x0C;
% n1 P- W! _% Z9 u. y) F; n
CCPR2L=0xB8; //80%占空比
9 L% M; p$ u3 S1 X
TMR2ON=1;
" Z- ^, s3 b$ f4 q
}
) ^" B, S, F& J4 Z
}
2 x( }8 j! `! Q3 I+ E. z7 i% N% e( z
if(RB2==0) //如果是RB2鍵按下
1 {# { C) k; C( N
{
* Y$ n$ y3 [4 p! \: V
delay_ms(5); //延時去抖
9 e& y0 g% U6 t( P1 f
if(RB2==0) //確認是否有鍵按下
+ c- p7 z3 w' I- l* T; E) I
{
+ ^3 d+ J" w3 h0 b4 F
while(!RB2); //等待按鍵釋放
?) |- j1 D" r2 s
CCP2CON=0x0C;
- [4 w1 f+ x" q
CCPR2L=0x96; //60%占空比
: q7 F0 j, p! H+ g2 z6 g4 `
TMR2ON=1;
# z/ W& S4 s# [4 U) A& j
}
& H9 [1 i0 H2 |; V* V
}
/ [2 ]# Q& i6 F* W2 V [; {" v
if(RB0==0) //如果是RB0鍵按下
; m9 T" }* K! X f! T$ p
{
0 [4 G9 R! x L0 Y6 f" I' T
delay_ms(5); //延時去抖
8 n4 h w1 ^- Z
if(RB0==0) //確認是否有鍵按下
* ]% {+ n7 G2 D2 {
{
P) v0 V5 W9 f* Z7 n3 m; n1 r+ [
while(!RB0); //等待按鍵釋放
4 S) X" B( R' A6 c8 V
CCP2CON=0x00; //關PWM
6 `3 z- I, a0 p% f* h
TMR2ON=0; //禁止TMR2
f; H0 P) N* B& ]
//delay_ms(5);
3 } o) ~# y& W T6 ^
RC1=0;
# Q0 X; N1 n- a6 ^. |7 l! S7 Z: I) Z; m
}
5 f% S G- ]! p5 P3 T* `, S
}
. [% `9 M- X5 E, M l1 q
}
7 W% }! f& \ A& L7 G! H u1 R
/********主函數********/
( k3 Z( T. Z" f# G! J' c7 P
void main()
1 e: @. ^& H# \/ v; d. I4 W$ W
{
# O, q! T8 g7 T' g
init(); //系統初始化
; E/ ~/ r- F3 [8 {* s7 E8 J" M! b8 i
PWM_Init(); //脈沖寬度初始化
# a7 A; S# a/ D( ^0 J$ S
while(1)
. I$ N+ X# G+ }1 N V
{
+ N3 r- N0 d; H/ s2 L
keyscan(); //調用按鍵掃描處理脈寬因數
% w2 L: B9 d- Q( i, ~ k b1 e
}
4 |# {, M7 B6 K v; v3 K
}
作者:
遠祥
時間:
2018-11-6 07:38
單片機常用問題嗎?
作者:
馮喆喆
時間:
2018-11-6 14:45
遠祥 發表于 2018-11-6 07:38
( h, M: `' V2 t9 D& C; V
單片機常用問題嗎?
/ g' W9 F2 q7 I0 L
這個是用PIC單片機產生PWM波,應該比較常見吧
歡迎光臨 機械社區 (http://www.ytsybjq.com/)
Powered by Discuz! X3.5