PWM波

本文介绍了如何利用单片机和8253可编程定时计数器在Proteus中创建波形发生器。通过详细说明电路连接和配置,包括8253的地址线连接、控制信号以及计数器设置。电路中,P1.0、P1.1和P1.2口用于控制脉宽,且提供了仿真结果。文章适合未接触中断的初学者,建议熟悉中断的读者可以结合中断实现更高效的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于可编程定时计数器8253的波形发生器

首先,在proteus里选择相关器件并连接电路如图所示:
在这里插入图片描述 电路如图所示,单片机通过总线方式和8253接口。
P0口数据总线和8253的数据总线连接,P0口经过74LS373地址锁存器锁存低8位地址,其中低两位地址线A0和A1与8253的A0、A1连接,单片机的地址锁存信号ALE作74LS373的锁存信号,单片机的读控制/RD和写控制/WR分别与8253的/RD和/WR信号相连。
8253的片选信号/CS由单片机最高位地址P2.7控制,由图可知8253的三个计数器数据口和命令口地址为0x7ff8~0x7ffb。计数通道0的时钟信号频率fclk0=1.19318MHz,GATE0信号由单片机P1.0控制。P1.1、P1.2口控制脉宽。
仿真结果如图:
低占空比
占空比50%

占空比高
该方法基于查询方式,对于还没有学到中断小伙伴有借鉴意义,若已学过中断则可采用外部中断来检测按键按下处理,效果更好。

#include<reg51.h>		   				//51单片机特殊功能寄存器定义
#include<absacc.h>		   				//包含XBYTE宏定义,写外部数据
//端口定义
#define CMD_ADDR      XBYTE[0X7FFB] 	//写命令寄存器
#define TIMERO_ADDR0  XBYTE[0X7FF8] 	//计数器0初值寄存器
#define TIMER1_ADDR0  XBYTE[0X7FF9] 	//计数器1初值寄存器
#define TIMER2_ADDR0  XBYTE[0X7FFA] 	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值