叮咚 产生的方式

仿真

程序代码

#include<reg51.h>
sbit key=P3^4;//设置一个按键的接口
sbit beep=P1^5;//设置门铃接口
#define CRYSTAL_FREQ 12000000  //晶振
#define INTERRUPT_PERIOD_0 4000//分频系数  1/4000s=250us
#define uchar unsigned char
#define uint  unsigned intuchar ding,dong,start,stop;
uint flag;
//
//
void delayms(uchar x)//按键消抖毫秒级延时
{int i,j;for(i=x;i>0;i--)for(j=0;j<120;j++);
}
//https://blog.csdn.net/qq_43033547/article/details/89678078
//关于延时函数的一些说明
void Canshu_Init()
{ding=0;dong=0;start=0;stop=0;flag=0;
}
//
//
void Interrupt_Init()//中断初始化,注意事先关闭定时器0所以TR0先没有赋1
{TMOD = 0x01;  TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) / 256;TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) % 256;ET0 = 1;   EA  = 1;
}
//
//
void main()
{
Canshu_Init();
Interrupt_Init();
while(1)                            //一直检测有没有按键按下{if(key==0){delayms(5);if(key==0){TR0 = 1;//timer0 startwhile(stop);//直到按键松开}}}
}//
//void Timer0() interrupt 1//重点函数
{TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) / 256;TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD_0) % 256;flag++;//记录每一个250usif(flag==2000)//0.5s get                    函数1,切换叮咚{flag=0;if(start==0)  //{start=~start;}else{start=0;stop=~stop;TR0=0;//关闭定时器,等待下次按铃}}if(start==0)//                              函数2,检测到按键后ding响,0.5s后执行函数1,让start=1{ding++;if(ding==3){ding=0;beep=~beep;}}else //                                  函数3,start=1之后开始执行,执行完执行函数1{dong++;if(dong==4){dong=0;beep=~beep;}}}

用定时器设计门铃,按下按键时蜂鸣器发出叮咚的门铃声相关推荐

  1. html打开时按钮自动触发事件,html在用户按下按键时触发的事件属性onkeydown

    实例 当用户按键时执行一段 JavaScript: 浏览器支持 IE Firefox Chrome Safari Opera 所有主流浏览器都支持 onkeydown 属性. 定义和用法 onkeyd ...

  2. 按键使蜂鸣器发出报警声

    #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit SPK = P2^2; sbit ...

  3. c语言写按键控制蜂鸣器,51单片机用按键控制蜂鸣器发出do re mi fa...的声音,...

    满意答案 0fhk9 2017.12.30 采纳率:53%    等级:7 已帮助:1961人 T0HEQU 30H T0L EQU 31H ORG 0000H LJMP MAIN ORG 000BH ...

  4. html 键盘按下时间,HTML OnKeypress 事件属性|用户按下键盘按键时触发

    定义与用法 onkeypress 属性在按下按键时触发. 提示: 与 onkeypress 事件相关的事件触发顺序: onkeydown onkeypress onkeyup 提示: onkeypre ...

  5. 技术精讲丨多线程环境下时间轮-海量定时任务的定时器设计

    多线程环境下海量定时任务处理-定时器设计 1.  定时器设计 2.  红黑树.最小堆以及跳表的实现对比 3.  时间轮的实现 视频讲解如下,点击观看: 技术精讲丨多线程环境下时间轮-海量定时任务的定时 ...

  6. 多线程环境下海量定时任务的定时器设计丨时间轮实现丨红黑树,跳表分析

    多线程环境下海量定时任务定时器设计 1. 定时器分析 2. 红黑树,最小堆,跳表实现比较分析 3. 时间轮实现 [Linux后端开发系列]多线程环境下海量定时任务的定时器设计丨时间轮实现丨红黑树,跳表 ...

  7. Linux下按键设备驱动开发以及对中断的上半部分和下半部分详细介绍

    文章目录 一.编写并且加载设备树插件 (1)检测管脚是否占用 (2)添加设备树插件 (3)加载设备树插件 二.中断相关函数 (1)request_irq中断注册函数 (2)free_irq中断注销函数 ...

  8. 51单片机课程设计——利用51单片机的定时器设计一个时钟论文

    计科在读,分享自己做过的作业,欢迎指正,有需要课程设计论文的可以私信我 摘要 单片机是一种数字集成电路芯片,是指集成在一块芯片上的微型计算机.一个比较完整的单片机应该包括微处理器(CPU). 存储器( ...

  9. 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检

    串口调试技巧 可以将调试时会用到,但实际演示是不需要用到的代码用 #if xxx   //这里放调试代码 #endif xxx是 一个宏定义,如果等于0则不编译相关代码,如果为1则编译相关代码 TFT ...

最新文章

  1. hdu4829 带权并查集(题目不错)
  2. 【二分查找万能模板,告别死循环、告别越界】Leecode 34. 在排序数组中查找元素的第一个和最后一个位置
  3. 多线程创建方式 线程池、Future和CompletableFuture
  4. mongodb 监听不到端口_干货|MongoDB简单操作和通过python进行操作
  5. Windows Live Messenger 新功能预览
  6. 设计模式学习笔记(1)——单例模式
  7. Binary Tree Paths
  8. 【解决方案】客户端请求数据较大时,nginx返回数据被截断
  9. unity怎么设置游戏页面_王者荣耀李小龙粤语语音包怎么得?李小龙粤语语音包获取与设置方法介绍[多图] - 游戏攻略...
  10. 九大CTO畅谈软件定义未来
  11. [Android]应用语言切换的三种方法
  12. Docker基础(下)
  13. 微软公司按照成熟度把服务器端企业,战略性新兴产业基础知识(公需课作业).pdf...
  14. 解决Python中TypeError: unbound method 问题
  15. 如何缩小pdf的大小?如何将pdf文件变小一点?
  16. 基于ASP.NET通用后台管理系统模板
  17. 项目开发 | 转载 | 需求评审与技术评审
  18. android 4.4 hifi,海贝(HiBy)R5安卓高解析无损播放器 4.4平衡随身听便携HIFI 双向蓝牙 铝合金黑色...
  19. 【rem】什么是rem,如何使用rem
  20. Linux-动态监控进程

热门文章

  1. 日常之卸载奇安信相关~
  2. 2020年2月15日 考试【更新中】
  3. 紫外线杀菌装置:过流式Photoscience紫外线杀菌器
  4. 智能玩具存在的安全隐患须知
  5. UTS安装与卸载-Linux篇
  6. java学生成绩统计
  7. 【年终总结】2017年下半年年终总结——试着将一切归零,整装再出发
  8. 有一种爱,我们不能称之为爱情
  9. 安装python与编译工具vs code(中文版)和pycharm(中文版)
  10. 华为服务器批量BMC修改密码,华为服务器批量修改bmc地址