单片机(AT89C51)定时/计数器实验案例
继上篇的《单片机(AT89C51)定时/计数器详解及其实验案例》由于各种原因里面没有实验案例现在在此补上。 单片机(AT89C51)定时/计数器详解见上篇:https://blog.csdn.net/weixin_45629315/article/details/105418365 目录 案例分析 实验一(已知8051单片机的fosc=12MHz用T1定时,试编程由P1.0引脚分别输出周期为2ms的方波) 方法一(查询法): 方法二(中断法): 实验结果图: 实验二(已知8051单片机的fosc=12MHz用T1定时。试编程由P1.0引脚分别输出周期为2s的方波): 单片机(AT89C51)的定时/计数器是其核心功能之一,广泛应用于各种实时控制和信号处理。在这个实验案例中,我们将深入理解如何利用定时器T1来实现不同周期的方波输出,以及如何通过查询法和中断法来控制输出。 实验一的目标是使用T1定时器在P1.0引脚输出周期为2ms的方波。我们需要计算合适的定时器初值。给定的单片机时钟频率fosc为12MHz,我们需要设置定时器以在每个周期结束后产生中断或查询条件。对于2ms的周期,计算初值的方法是:T初值 = (2^16 - 1ms/1us),但在这里我们直接用代码来设置。采用查询法,我们需要在一个无限循环中不断检查定时器是否溢出,然后翻转P1.0引脚的电平。而中断法则是在定时器溢出时自动触发中断服务程序,同样翻转P1.0电平并重新装载初值。 实验二的目标是输出周期为2s的方波。由于2s超过了定时器的最大定时范围,我们需要采用分段计数的方法。将2s分为20ms的小周期,共50次,因此每个小周期的初值为T初值 = (2^16 - 20ms/1us)。无论是查询法还是中断法,都需要在每次小周期结束时重复这一过程。 实验三要求在P1.0输出周期为20ms、占空比为20%的矩形脉冲。这里,我们需要精确地控制定时器的重装载值,使得脉冲的高电平持续时间占总周期的20%,即4ms。因此,我们先设定一个定时器初值来生成4ms的高电平,然后在中断服务程序中重新装载初值,确保低电平的16ms。 通过这三个实验,我们可以总结出以下知识点: 1. **定时器工作模式**:AT89C51的T1可以工作在模式1,这是一个16位定时器,允许更大的计数范围。 2. **定时器初值计算**:根据所需周期和系统时钟频率计算合适的初值,确保定时器在预期的时间间隔后溢出。 3. **查询法与中断法**:查询法需要不断地检查定时器状态,而中断法则更高效,当定时器溢出时自动触发中断服务程序。 4. **周期拆分**:如果需要的周期超过定时器的最大计数范围,可以将大周期拆分成多个小周期,通过累加小周期达到目标周期。 5. **占空比控制**:通过精确控制定时器溢出和重装载,可以实现不同占空比的脉冲输出。 6. **中断服务程序**:中断服务程序负责处理定时器溢出事件,通常包括重装载初值和更新输出引脚状态。 7. **晶振频率**:单片机的时钟频率对定时器的精度有直接影响,需根据实际情况调整计算。 通过这些实验,学习者能够掌握AT89C51单片机的定时/计数器应用,从而为其他更复杂的实时控制系统打下基础。
- 粉丝: 5
- 资源: 959
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论5