单片机基础模块学习——NE555芯片

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

一、引言

在单片机应用系统中,NE555芯片是一款非常经典且实用的集成电路。它可以构成多谐振荡器、单稳态触发器和施密特触发器等多种电路,广泛应用于信号产生、定时、控制等领域。本文将详细介绍NE555芯片的原理、常见应用电路以及结合单片机的代码实现。

二、NE555芯片概述

2.1 芯片结构

NE555芯片内部由分压器、比较器、基本RS触发器、放电三极管和输出缓冲器等部分组成。它有8个引脚,各引脚功能如下:

  • 引脚1(GND):接地端。
  • 引脚2(TRIG):触发输入端,低电平触发。
  • 引脚3(OUT):输出端。
  • 引脚4(RESET):复位端,低电平有效。
  • 引脚5(CTRL):控制电压端,可通过外接电容来改变比较器的参考电压。
  • 引脚6(THR):阈值输入端。
  • 引脚7(DIS):放电端。
  • 引脚8(VCC):电源端。

2.2 工作原理

NE555芯片的工作原理基于内部比较器对输入电压的比较结果来控制RS触发器的状态,从而决定输出端的电平。当触发输入端(TRIG)的电压低于1/3VCC时,触发器置位,输出端(OUT)为高电平;当阈值输入端(THR)的电压高于2/3VCC时,触发器复位,输出端(OUT)为低电平。

三、NE555芯片的常见应用电路

3.1 多谐振荡器

多谐振荡器是NE555芯片最常见的应用之一,它可以产生矩形波信号。其电路结构主要由两个电阻(R1、R2)和一个电容(C)组成。

工作过程如下:电源接通后,电容C通过R1和R2充电,当电容电压上升到2/3VCC时,输出端变为低电平,同时放电三极管导通,电容C通过R2放电;当电容电压下降到1/3VCC时,输出端变为高电平,放电三极管截止,电容C又开始充电,如此循环,产生矩形波信号。

矩形波的周期计算公式为: T = 0.7 ( R 1 + 2 R 2 ) C T = 0.7(R_1 + 2R_2)C T=0.7(R1+2R2)C

3.2 单稳态触发器

单稳态触发器用于产生一个固定宽度的脉冲信号。它由一个触发脉冲输入和一个定时电容(C)、定时电阻(R)组成。

当触发输入端(TRIG)出现一个负脉冲时,触发器置位,输出端变为高电平,同时电容C开始充电;当电容电压上升到2/3VCC时,触发器复位,输出端变为低电平,电容C通过放电三极管放电,等待下一次触发。

输出脉冲的宽度计算公式为: t w = 1.1 R C t_w = 1.1RC tw=1.1RC

四、结合单片机的应用及代码实现

4.1 实验目的

利用NE555芯片构成多谐振荡器产生矩形波信号,通过单片机的定时器测量矩形波的周期,并将结果显示在数码管上。

4.2 硬件连接

  • NE555芯片的输出端(OUT)连接到单片机的外部中断引脚(如INT0)。
  • 数码管连接到单片机的相应I/O口。

4.3 代码实现(以51单片机为例)

#include <reg51.h>

// 定义数码管段码表
unsigned char code SEG_CODE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

// 定义全局变量
unsigned int count = 0;  // 定时器计数值
unsigned int period = 0; // 矩形波周期

// 定时器0初始化函数
void Timer0_Init() {
    TMOD |= 0x01;  // 设置定时器0为模式1
    TH0 = 0;       // 定时器初值
    TL0 = 0;
    ET0 = 1;       // 使能定时器0中断
    EA = 1;        // 全局中断使能
    TR0 = 1;       // 启动定时器0
}

// 外部中断0初始化函数
void Int0_Init() {
    IT0 = 1;  // 设置外部中断0为下降沿触发
    EX0 = 1;  // 使能外部中断0
    EA = 1;   // 全局中断使能
}

// 定时器0中断服务函数
void Timer0_ISR() interrupt 1 {
    TH0 = 0;  // 重新加载初值
    TL0 = 0;
    count++;  // 计数值加1
}

// 外部中断0中断服务函数
void Int0_ISR() interrupt 0 {
    period = count * 65536 + (TH0 << 8) + TL0;  // 计算矩形波周期
    count = 0;  // 计数值清零
    TH0 = 0;    // 定时器初值清零
    TL0 = 0;
}

// 数码管显示函数
void Display(unsigned int num) {
    unsigned char i;
    unsigned char digit[4];

    // 分离出每一位数字
    digit[0] = num / 1000;
    digit[1] = num % 1000 / 100;
    digit[2] = num % 100 / 10;
    digit[3] = num % 10;

    // 依次显示每一位数字
    for (i = 0; i < 4; i++) {
        P0 = SEG_CODE[digit[i]];
        // 延时一段时间,实现动态扫描
        for (unsigned int j = 0; j < 1000; j++);
    }
}

// 主函数
void main() {
    Timer0_Init();  // 初始化定时器0
    Int0_Init();    // 初始化外部中断0

    while (1) {
        Display(period);  // 显示矩形波周期
    }
}

4.4 代码解释

  • Timer0_Init() 函数:用于初始化定时器0,设置为模式1,并启动定时器。
  • Int0_Init() 函数:用于初始化外部中断0,设置为下降沿触发,并使能中断。
  • Timer0_ISR() 函数:定时器0中断服务函数,每溢出一次,计数值 count 加1。
  • Int0_ISR() 函数:外部中断0中断服务函数,当检测到矩形波的下降沿时,计算矩形波的周期,并将计数值清零。
  • Display() 函数:数码管显示函数,将矩形波的周期值显示在数码管上。
  • main() 函数:主函数,初始化定时器和外部中断,然后进入循环,不断显示矩形波的周期。

五、总结

NE555芯片作为一款经典的集成电路,在单片机应用系统中具有重要的作用。通过本文的介绍,我们了解了NE555芯片的原理、常见应用电路以及结合单片机的代码实现。在实际应用中,我们可以根据具体需求选择合适的应用电路,以实现信号产生、定时、控制等功能。同时,结合单片机的强大处理能力,可以对NE555芯片产生的信号进行进一步的处理和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值