|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
喇叭发声原理 51单片机例子* d* ]0 V1 X1 P, M' q
( `8 ]1 u5 n2 t1 V6 B
5 k0 \, l9 y+ ]1 p9 B( r单片机源程序:1 V: I$ b6 T$ k0 v" `
/*-----------------------------------------------/ h' K- A; ^( ~4 D$ ]7 ^5 P" B& N8 n
名称:喇叭8 l6 [" }7 c' J/ W2 S. z
编写:shifang8 X0 M( r+ [# a3 F) \/ u
修改:无
6 o0 V5 u/ N/ R) n$ o 内容:通过发出一定频率方波,是喇叭发声$ G+ w+ p' V8 V! P3 U0 a+ H
------------------------------------------------*/
1 T: |6 F) F. t1 r3 o: }#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
8 L, f+ K' R1 _( n% `
/ L J/ o5 V3 }sbit SPK=P1^2; //定义喇叭端口
2 B8 b! a7 K4 Y0 d, Y- S/*------------------------------------------------
: P. a9 p/ H) R. G' Y1 w! z 函数声明/ z! H, [% Q) y/ s% n+ [4 ~- N j
------------------------------------------------*/7 S8 j7 W% L' g* P% _. ?) y) A
void DelayUs2x(unsigned char t);//函数声明
7 r" c3 d- M# {% Z- G- tvoid DelayMs(unsigned char t);" _* c' K( O' k1 t" ?6 D* I$ n* m
/*------------------------------------------------
4 R$ k x- x8 h; ~3 k! i) F, z. l 主函数
: Q9 u: U' E6 r4 w------------------------------------------------*/
' _3 [! @* Q7 [- ?5 cmain()
4 ]; q- e6 \+ s5 l0 V{
7 z2 Z: ?5 s8 O* K7 W1 t9 r while(1)0 Q" m* p R' }5 [3 _* a/ w) @* ~
{
4 e; q( L2 E8 C# P, i6 W: t( e( w
" J& d7 \$ R, L: F DelayMs(1); //发出大约500Hz的方波 频率越大声音越尖& E- I6 P. I! {4 h
SPK=!SPK;) b T6 s8 Z; K4 T3 t/ H
' @: |# {0 _2 v9 a/ c* l: j, [4 R' Y }; c; e9 n. F6 w8 s3 G8 k/ a
}
1 N- F2 \9 q! m) ~( l/*------------------------------------------------, L* H# D1 k+ C! e
uS延时函数,含有输入参数 unsigned char t,无返回值1 R- w: L' W( H4 n; C% E: h
unsigned char 是定义无符号字符变量,其值的范围是
, n0 ~9 j& B8 ^" w 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
5 j" E( W4 J. |/ @ 长度如下 T=tx2+5 uS $ z: ?2 {0 M/ Y. M
------------------------------------------------*/
+ P3 k( N4 L: t1 B, @2 ?void DelayUs2x(unsigned char t)
( Q& o7 b U( H7 M& l{ 4 }9 ]( U0 q& C u- U
while(--t);
5 m& k( G5 e% ^% I. m}
; x- u, N; v: K5 ]0 v# t9 S/*------------------------------------------------
9 T& N" Y6 g+ l: [ mS延时函数,含有输入参数 unsigned char t,无返回值
; a' ~* |2 q+ p! g4 i q5 f$ } unsigned char 是定义无符号字符变量,其值的范围是5 p: Q1 i, Q1 B3 l
0~255 这里使用晶振12M,精确延时请使用汇编) E) U6 ^7 w# {6 \
------------------------------------------------*/4 P7 s2 _( L; R5 G$ e
void DelayMs(unsigned char t)0 { L1 c0 ~' M0 ^
{( Q, h# W7 n) W# D' j9 K0 [3 n
" }1 w) @0 x+ [0 x0 e- M% S
' v) @9 ?6 z' b$ {8 g
…………限于本文篇幅 余下代码请从论坛下载附件…………
4 Z" |4 J' {/ u) A
5 o9 ^+ c1 H! h% N3 [; v7 G. c5 x, i; D. U! a
|
|