c++ 定时器_555定时器及其应用

555定时器:

555定时器简化原理图如图所示; 它由3个阻值为5kW的电阻组成的分压器、两个电压比较器C1和C2、基本RS触发器、放电晶体管T以及缓冲器G组成;

RD为复位输入端, 当RD为低电平时, 不管其它输入端的状态如何,输出uO为低电平;

当5脚悬空时, 比较器C1和C2的电压分别为(2/3)VCC和(1/3)VCC;

b42bc53ac9d363c6a93861b402f42765.png

555定时器

40142f456d4b71ae9511eb73b4bf5de6.png

功能表

如果在电压控制端(5脚)施加一个外加电压VIC(其值在0~VCC之间),比较器C1和C2的电压分别为VIC和(1/2)VIC;

555定时器的应用

1、555构成不可重复单稳态触发器

电源接通瞬间, 电源通过电阻R向电容C充电, 当uC上升到(2/3)VCC时, 触发器复位, uO为低电平, 放电BJT T导通,电容C放电, 电路进入稳定状态。

稳态:uO=0,T导通, uI1=uC=0 。

输入负脉冲触发, 触发器发生翻转, 电路进入暂稳态,uO输出高电平, 且BJT T截止; 此后电容C充电至uC=(2/3)VCC时, 电路又发生翻转, 电路恢复到稳定状态。

51bd88b87d2cb136d825bfb026035d9c.png

不可重复单稳态触发器

2、555构成占空比可调多谐振荡器

具体工作过程和原理见下图

2acae2dbef91c06b6f3283a428a9b25e.png

3、555构成施密特触发器

特点:有输入, uI1、uI2并接到输入信号。

结论:

1)如果在555定时器的放电BJT输出端(7脚)外接一电阻, 并与另一电源VCC1相连, 则由uO2输出的信号可实现电平转换。

2)如果将图中5引脚外接控制电压uic, 改变uic的大小, 可以调节回差电压范围。

详细见下图

812a0f0b8f285607625c7955c48b3749.png

例题:

1、用555定时器驱动电机

85fc34c789157ead16648a332f515abd.png

例题1

经分析得其原理:

1)仅按下S1 ,则 uo=1 ,电机转动 ;即使放开 S1 ,uo 保持为1 , 电机继续转动 ;

2) 仅按下S2 ,则 uo=0 ,电机停止转动 ;即使 放开 S2 ,uo 保持为0 , 电机仍然不会转动。

2、简易防盗报警电路

0692454545644b8272cd1b4a62110a8f.png

例题2

分析其工作原理:

ab处连接:清零端有效,输出为低电平,喇叭不响;

ab处断开:清零端无效,输出一定频率的信号,驱动喇叭。

3、双音门铃

836cad0dbbdc503753986523a1e7b466.png

例题3

分析工作原理:

门铃按下:D1导通,R1R2C组成充放电回路,产生频率f1。同时P点电压通过C3充电为6V。

门铃松开:C3放电,在C3电压未放电到低电平期间,R1R2R3C组成充放电回路,产生频率f2。C3电压放电到低电平音乐停止。

4、简易电子琴电路

fc2a9a094a60a24c1e10dabd8f02cbbd.png

例题4

简易电子琴就是通过改变R21-R28 的阻值来改变输出方波的周期 ,使外接的喇叭发出不同的音调 .

5、555定时器接成的延迟报警器

8adab61c687859f8319300eeb6cea45e.png

例题5

分析得工作原理:

图是用两个555定时器接成的延迟报警器。当开关S断开后,经过一定的延迟时间 后扬声器开始发出声音。如果在延迟时间内将S重新闭合,扬声器不会发出声音。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,可以使用计时器(timer)来实现定时器的功能。常用的实现方式有以下几种: 1. 使用C++11中的<chrono>头文件 该头文件中提供了高精度计时的类和函数,可以用于实现定时器功能。例如,以下代码实现了一个一秒钟的定时器: ``` #include <iostream> #include <chrono> #include <thread> int main() { auto start = std::chrono::steady_clock::now(); while (true) { auto end = std::chrono::steady_clock::now(); auto diff = end - start; if (std::chrono::duration_cast<std::chrono::seconds>(diff).count() >= 1) { std::cout << "One second passed." << std::endl; start = end; } } return 0; } ``` 2. 使用Windows API中的SetTimer函数 SetTimer函数是Windows API中的一个函数,可以用于创建一个定时器。例如,以下代码实现了一个每隔一秒钟输出一次的定时器: ``` #include <iostream> #include <Windows.h> void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) { std::cout << "One second passed." << std::endl; } int main() { SetTimer(NULL, 0, 1000, TimerProc); MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } ``` 3. 使用第三方库 除了上述两种方式,还可以使用第三方库来实现定时器功能。例如,Boost库中提供了定时器的实现,可以方便地使用。以下是一个使用Boost库的定时器的示例: ``` #include <iostream> #include <boost/asio.hpp> void TimerHandler(const boost::system::error_code& ec) { if (!ec) { std::cout << "One second passed." << std::endl; } } int main() { boost::asio::io_context io; boost::asio::steady_timer timer(io, boost::asio::chrono::seconds(1)); timer.async_wait(TimerHandler); io.run(); return 0; } ``` 以上是几种常用的C++定时器实现方式,您可以根据自己的实际需求进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值