找回密码
 注册
关于网站域名变更的通知
查看: 338|回复: 1
打印 上一主题 下一主题

51单片机模拟警车发声源程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-28 09:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
51单片机模拟警车发声源程序- d6 ^$ R6 {+ J- O" \

- f4 Y' q: @1 ?7 y, k

& Z2 P1 a6 e* ]: M  j/ S& o8 j' o单片机源程序:8 @; _: X+ A* w, f8 _& U' h6 d
/*-----------------------------------------------1 R1 P3 ?  A3 X( t
  名称:喇叭
5 A9 ]8 s* e( u/ q  编写:shifang7 e/ q( I! p; G; C4 @! q. I$ n
  修改:无  A( ?4 |( S; ?2 W5 ^8 W7 `
  内容:模拟警车发声
) E7 l- C+ I0 b6 ]6 P------------------------------------------------*/
5 B8 v: B$ ?, Y" u5 ]! F#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义0 L% U. Q: Z9 n% t$ l
. a7 G- E; b# j3 C* g
4 W7 g* J! o2 i8 P
sbit SPK=P1^2;    //定义喇叭端口
# E& J) e- Y* ~  dunsigned char frq; - x8 [( X+ G. C. L+ ~6 d
6 f* P1 j, L+ ]; A

# D" ~8 S' V; \5 Y" lvoid DelayUs2x(unsigned char t);//函数声明
$ ^+ u0 f# H& a- y9 J5 avoid DelayMs(unsigned char t);
# F9 M( Q, m6 k6 E# s/*------------------------------------------------8 M8 k% N/ O+ d
                    定时器初始化子程序
1 m% _/ X! A) a6 c  Q$ @------------------------------------------------*/% P' }  \3 _$ E! X+ N' C7 a. a' k$ @
void Init_Timer0(void): f0 d: `" @& O
{6 n7 P* K1 ~' F
TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     ' O2 F( u+ h0 C: L! @
//TH0=0x00;              //给定初值
4 M* `  C& p  d5 } //TL0=0x00;3 q7 o7 \7 N+ l" Q% o9 A
EA=1;            //总中断打开# _/ }$ C" `4 m: [5 `; z0 u0 k
ET0=1;           //定时器中断打开
) c8 f4 P& Z4 V+ I9 l+ x( }2 t TR0=1;           //定时器开关打开
7 s" H" I" E' }. d, @) e}) O: X1 v3 r" ]" @/ ^, {: D
/*------------------------------------------------
, o5 w- u& [5 z( {% m                    主函数$ x5 y) G: `2 Y* W% j6 G
------------------------------------------------*/
" \; O! G% c- @3 x4 nmain()
7 k7 R7 w6 _1 C6 V5 X{
* c( C1 X( o4 X* i" C; h Init_Timer0(); //初始化定时器2 h) _( f5 h; W( ~( u6 u1 |
while(1)
9 `* }& h# A$ ^      {* i) [: N) {9 A! R
      
. p8 z! S# `' F& u# r  B. ^3 R! |( }      DelayMs(1); //延时1ms,累加频率值0 o- r7 ~" f  v) D. t0 G% R+ w
          frq++;
) i7 l" i+ s) [: G2 F4 u          2 R: m- {* \$ x9 R( Z. }' r( c8 B
          }" G1 l! q+ k! I2 M) V+ u  q* Q
}
0 P5 E8 g( D1 N* R$ q/*------------------------------------------------
3 d) y3 k6 X  P2 I" K, {" T uS延时函数,含有输入参数 unsigned char t,无返回值
. b# z  s1 i; r: I unsigned char 是定义无符号字符变量,其值的范围是" _9 G; h0 s" y3 V
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时; A5 k' s( \* M
长度如下 T=tx2+5 uS $ k! i0 q. a1 j1 V" P& ~, w' r7 z
------------------------------------------------*/, g+ ]( V9 N4 u( I5 ^; _
void DelayUs2x(unsigned char t)
1 \4 F6 Y) `' o: q# X{   4 n6 b! B- R# W& c' n- M
while(--t);3 V6 }: Y9 f, }' P
}. [( F/ m0 e' C2 g$ w9 x/ H
/*------------------------------------------------
! n" c# P- E. s  {' @$ y mS延时函数,含有输入参数 unsigned char t,无返回值, V0 A* s( ]- `' U' o
unsigned char 是定义无符号字符变量,其值的范围是, I! }" h$ \! ]/ @
0~255 这里使用晶振12M,精确延时请使用汇编
* o: Z" C8 e) D/ [------------------------------------------------*/# s  y* b3 o* J; T" J1 r
void DelayMs(unsigned char t)
8 M  V# g: n9 G) K6 v) `{
4 s6 a6 E# i# [, Y     6 L8 \5 e5 c+ C5 ?! R5 e
while(t--)6 V0 [. Z/ Z/ ^2 x  i0 }: @& J
{) ^4 ~7 |( l$ B6 H. q+ _& I
     //大致延时1mS
2 K; Y: b- G! n8 D     DelayUs2x(245);0 D# d6 O7 |+ q2 e  T& ^1 ^; r! n, K
         8 l5 _- z" X# N* |7 z
7 M% A# \' j- a3 y
7 S* A. f, w6 N
…………限于本文篇幅 余下代码请从论坛下载附件…………
, Y) A- y2 }: C; j
游客,如果您要查看本帖隐藏内容请回复

- I6 y. ^) p# i" W
, i; D$ o# J! r4 k' E. z# D

该用户从未签到

2#
发表于 2018-11-28 11:04 | 只看该作者
感谢雷锋分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-6 18:08 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表