基于可编程定时计数器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口控制脉宽。
仿真结果如图:



该方法基于查询方式,对于还没有学到中断小伙伴有借鉴意义,若已学过中断则可采用外部中断来检测按键按下处理,效果更好。
#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] //计数器2初值寄存器

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





