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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
51单片机模拟警车发声源程序: j) {# M! S( b+ h0 B
  m+ j3 O( p) @) R

2 ^* ~: A( R& B" j  \" [/ {8 h7 G单片机源程序:  K$ I+ l/ k$ i& y1 P. K: m
/*-----------------------------------------------
& a  R: d' L6 ^3 |) f( Z  名称:喇叭
8 y/ w! Z% s0 z: m& \, Q6 W9 l2 s4 Y& B  编写:shifang. B7 ^* V7 A$ {
  修改:无* p; Z, K% a: G6 n# m
  内容:模拟警车发声8 |+ m1 P9 Y, q: A4 k( x4 b, Y
------------------------------------------------*/8 H$ I  r( \2 k! d8 G/ a1 ]2 `
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
( _- w( D) n) _. G  V# }9 P- O- ]. Q) ~

6 y* s: v+ u& Ksbit SPK=P1^2;    //定义喇叭端口
" ?6 J* V8 b' P: [  Punsigned char frq; # W( o9 N% i; x' g* C- o" q( b! ~) `
7 e' I: A8 B+ n( X( e6 ]- F0 q8 }

1 `9 T: k/ Q( O! v4 I& t# y$ Xvoid DelayUs2x(unsigned char t);//函数声明 % ^: I0 K$ i0 S6 X+ W6 r( C
void DelayMs(unsigned char t);$ h+ m( @* A! v( o2 j
/*------------------------------------------------
7 `( c7 f7 @* Z, w: x, x: T6 i                    定时器初始化子程序
  U4 m/ q4 |) b5 a# Z! y/ H1 h------------------------------------------------*/  Z! @# p# W$ K: k
void Init_Timer0(void)  z, ^- \1 `0 O2 ?* I
{3 I1 ~% X0 x6 E9 i9 D# \
TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     # g7 z7 c% K) D' `
//TH0=0x00;              //给定初值
: m+ _6 o8 V4 m: y/ l9 s) ] //TL0=0x00;
9 D/ e% |. n. ]- m5 F, [9 a4 N EA=1;            //总中断打开
$ x' B  @. D6 M1 z) ~" x ET0=1;           //定时器中断打开* q: s- y6 R" V3 {* x
TR0=1;           //定时器开关打开
9 x' b' P" n/ R1 _}% m: N% i5 \) R  Z* F! z
/*------------------------------------------------
' y" L1 \  B3 `- p6 a                    主函数
; V5 d- w) L( c: v( Y- D3 \------------------------------------------------*/
; U# P3 ?% U$ |main()  H5 Z( ^1 T- U7 J7 N& G
{: f- `( O& w$ S. w
Init_Timer0(); //初始化定时器
: y# |. [. r, @  a! M8 h( B4 j while(1)
1 N' K; Y* O" k! [8 E' l      {
6 `4 s+ ^% c/ C8 I- N       8 d. O- y/ T9 C* G! Z
      DelayMs(1); //延时1ms,累加频率值: j0 {, [, J, }$ y" @6 L% I
          frq++;
& i6 [0 A: a5 B( x5 A% `: A          5 A* N+ b3 Q6 `, D9 D
          }; Z  m( z8 f, T0 m$ K2 ?
}
. _' D6 _- ~6 i! o* N$ Y/*------------------------------------------------
; s; X0 w% z$ e  M3 |3 ^ uS延时函数,含有输入参数 unsigned char t,无返回值) b  V+ ]8 J- I& J
unsigned char 是定义无符号字符变量,其值的范围是4 r2 s0 u% x; r: r* I  \, Z
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时; q7 I2 A* c1 K8 d
长度如下 T=tx2+5 uS
( f6 q# A( u5 g------------------------------------------------*/
% c: M  [' A/ u2 [void DelayUs2x(unsigned char t)  b( d+ Q: T: T6 ]% F" O$ `; N
{   # j% f+ p' a9 B# ?  z& W2 J( {
while(--t);
1 z- Q. G7 V# e}
% ]% m% Q  z2 `/*------------------------------------------------
" W; Z5 Z2 r6 ?, U. n5 ` mS延时函数,含有输入参数 unsigned char t,无返回值' j% ^) p% d  ~% Q( M
unsigned char 是定义无符号字符变量,其值的范围是
& Q% o& e. }2 j7 I3 s' d5 f 0~255 这里使用晶振12M,精确延时请使用汇编
0 ^+ e9 }+ [2 q* m7 }2 S------------------------------------------------*/
3 |" z9 g% n" `" n' ~5 vvoid DelayMs(unsigned char t)- i5 y/ ]; ^9 b" Q! d! }+ R3 }
{
9 M$ t, P* T# Y9 ~& G! J     8 K8 s5 U+ E5 Y- g: f, o) L
while(t--)
9 e3 r5 D# m' k1 j3 A- t {
4 `7 Z3 N! l7 v6 B- E$ V( P     //大致延时1mS7 g& t! D- S4 Q* r, F( O; V
     DelayUs2x(245);; X0 {: q. ^5 k1 [, x* F6 w
         & }' d, a8 Y/ b% G

  A; X2 o: R9 y, Q
! J# d8 c7 c: ?/ k' L( _
…………限于本文篇幅 余下代码请从论坛下载附件…………/ c" K  q. F/ ^
游客,如果您要查看本帖隐藏内容请回复

7 Y  o4 N2 ?  k: E# Y! j6 l; |
7 w: {: f' b; D, j- C" D! {

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-19 05:40 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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