找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5536|回复: 4
打印 上一主题 下一主题
收起左侧

超级逼真的警车报警模拟声音 源程序

[复制链接]
跳转到指定楼层
楼主
超级逼真的警车报警模拟声音


代码:
  1. /*-----------------------------------------------
  2.   名称:喇叭
  3.   编写:shifang
  4.   日期:2009.5
  5.   修改:无
  6.   内容:模拟警车发声
  7. ------------------------------------------------*/
  8. #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

  9. sbit SPK=P2^0;    //定义喇叭端口
  10. unsigned char frq;

  11. void DelayUs2x(unsigned char t);//函数声明
  12. void DelayMs(unsigned char t);
  13. /*------------------------------------------------
  14.                     定时器初始化子程序
  15. ------------------------------------------------*/
  16. void Init_Timer0(void)
  17. {
  18. TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     
  19. //TH0=0x00;              //给定初值
  20. //TL0=0x00;
  21. EA=1;            //总中断打开
  22. ET0=1;           //定时器中断打开
  23. TR0=1;           //定时器开关打开
  24. }
  25. /*------------------------------------------------
  26.                     主函数
  27. ------------------------------------------------*/
  28. main()
  29. {
  30. Init_Timer0(); //初始化定时器
  31. while(1)
  32.       {
  33.       
  34.       DelayMs(1); //延时1ms,累加频率值
  35.           frq++;
  36.          
  37.           }
  38. }
  39. /*------------------------------------------------
  40. uS延时函数,含有输入参数 unsigned char t,无返回值
  41. unsigned char 是定义无符号字符变量,其值的范围是
  42. 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
  43. 长度如下 T=tx2+5 uS
  44. ------------------------------------------------*/
  45. void DelayUs2x(unsigned char t)
  46. {   
  47. while(--t);
  48. }
  49. /*------------------------------------------------
  50. mS延时函数,含有输入参数 unsigned char t,无返回值
  51. unsigned char 是定义无符号字符变量,其值的范围是
  52. 0~255 这里使用晶振12M,精确延时请使用汇编
  53. ------------------------------------------------*/
  54. void DelayMs(unsigned char t)
  55. {
  56.      
  57. while(t--)
  58. {
  59.      //大致延时1mS
  60.      DelayUs2x(245);
  61.          DelayUs2x(245);
  62. }
  63. }
  64. /*------------------------------------------------
  65.                  定时器中断子程序
  66. ------------------------------------------------*/
  67. void Timer0_isr(void) interrupt 1
  68. {
  69. TH0=0xfe;                  //重新赋值
  70. TL0=frq;         //低8位值在主程序中不断累加

  71. SPK=!SPK;        //端口电平取反

  72. }
复制代码

下载:
超级逼真的警车声音.rar (18.82 KB, 下载次数: 53)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:218959 发表于 2018-7-2 02:58 | 只看该作者
利害,以用上不错!!!!!!!!!!!
回复

使用道具 举报

板凳
ID:167679 发表于 2019-10-26 00:33 | 只看该作者
效果不错 在proteus里面模拟了一下 效果挺好. 不知道在现实硬件表现如何
回复

使用道具 举报

地板
ID:347158 发表于 2020-1-14 18:34 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
ID:214276 发表于 2020-3-26 04:00 | 只看该作者
请问楼主,我的T0定时器已经用在控制LED的功能上了,如何能实现你的声音功能,还能用T0定时器吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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