找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
ID:266784 发表于 2017-12-25 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
赚黑币分享

单片机源程序如下:
  1. /*-
  2.   名称:喇叭模拟警车发声
  3.   编写:szjcdz
  4.   日期:2010.9
  5.   内容:模拟警车发声
  6. ------------------------------------------------*/
  7. #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

  8. sbit SPK=P1^2;    //定义喇叭端口
  9. unsigned char frq;

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

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

  71. }
复制代码

所有资料51hei提供下载:
报警声.rar (2.52 KB, 下载次数: 19)


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

使用道具 举报

沙发
ID:118110 发表于 2019-12-3 14:47 | 只看该作者

不用按下按键,就能闪灯咋回事
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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