0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于CD4511的两位数显脉冲计数器

CHANBAEK 来源:嵌入式开发教程 作者:郭学提 2023-07-12 11:51 次阅读

使用计数器T0,工作在方式0,对外部脉冲进行计数,当外部脉冲数量累计达到1000后LED显示值加1。其实验电路如图所示

图片

分析: 使用计数器与使用定时器类似,只是计数脉冲由系统时钟脉冲改为外部脉冲。也可以使用中断查询的方式进行编程,就是先给定时器寄存器赋初值,当计满后就清掉溢出标志TF0.再进入下一轮中断,当然也可以不使用中断查询,而直接使用数值比较完成要求,数值比较其实就是每次都将TH0和TL0与预设的Hight和Lower进行比较,当比较的结果都为真时,进行计数到后的服务程序。下面依次给出其程序清单。

(1)使用中断查询方式的程序清单如下:

sfr  data_buf=0xA0;   //显示数据端口
unsigned char conter; //全局变量,用于保存计数值
void main(void)
{  
   conter=0;
   Conter_Init();
   while(1)
   {
     Conter0();
     disply(conter);
   }
}
void Conter_Init(void)
{
   TMOD=0x04;          //工作方式设置
  /*计数器初值设置*/
   TH0=0xe0;          //初始值设置,7192转为13位后的高8位
   TL0=0x18;         //初始值设置,7192转为13位后的低5位
  /*关闭计数器中断*/
   EA=0  ;            //关中断
   ET0=0 ;            //关T0中断
 /*启动计数器*/
   TR0=1 ;            //启动T0
}
void Conter0(void)
{ 
      if(TF0==1)
      {
        TF0=0;
        /*计数器初值设置*/
        TH0=0xe0;        //  初始值设置
        TL0=0x18;  
        conter++;
        if(conter >=99)
          conter=0;
      }
}
void disply(unsigned char BCD)  //显示函数
{
   unsigned char x,y;      //定义x,y两个变量
   x=BCD%10;        //取i的个位字符BCD编码放于x中
   y=BCD/10;        //取i的十位字符BCD编码放于y中
   y< <=4;          //x左移4位
   data_buf=y|x;      //返回个位与十位的组合BCD编码并送P2口显示
}

通过上面案例可以看出使用定时器/计数器的基本步骤如下。

1 写TMOD,设置定时器/计数器的工作方式。

2 计算定时器/计数器的初值,并将初值写入TH0/TH1、TL0/TL1。

3 设置IE、IP,以开放或关闭相应的中断和设定中断优先级。

4 启动定时/计数器。

5 根据条件调用定时器/计数器服务函数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5030

    浏览量

    117733
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92985
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41025
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112040
  • CD4511
    +关注

    关注

    3

    文章

    24

    浏览量

    29233
收藏 人收藏

    评论

    相关推荐

    脉冲计数器

    跪求一个脉冲计数器的VI,有的留给我!!
    发表于 04-07 22:16

    一个有关cd4511芯片的问题

    cd4511不是低速芯片吗?为什么我用来做动态数码管没问题?(我的数码管程序1毫秒刷新一次)
    发表于 08-11 17:22

    大学生电子设计—脉冲宽度测量与显示

    CD4511(7段锁存/译码/驱动)驱动4个数码管。要求:测量出脉冲宽度(考虑正脉冲宽度),分辨力10us,最大测量脉冲宽度99.99ms
    发表于 04-22 21:31

    简易计数器的设计与制作资料分享

    计数器可实现按键计数、增减控制、手/自动清零等功能。需要准备下列元件:共阴极7段数码管、按键开关、CD4511(BCD锁存/7段译码/驱动)、C
    发表于 05-07 07:38

    CD4511 pdf datasheet

    The CD4511 - CMOS BCD-TO-7-SEGMENT LATCH DECODER DRIVERS - Texas Instruments
    发表于 12-01 16:19 123次下载

    cd4511引脚图管脚图及功能真值表

    cd4511引脚图管脚图图及功能真值表 CD4511引脚图及功能
    发表于 12-21 21:23 35.8w次阅读
    <b class='flag-5'>cd4511</b>引脚图管脚图及功能真值表

    脉冲计数器电路图

    脉冲计数器电路图,本计数器包括降整流电路,光控脉冲发生器,计数电路,译码,显示电路。
    发表于 04-03 13:37 3490次阅读
    <b class='flag-5'>脉冲计数器</b>电路图

    CD4511应用电路

    CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码
    发表于 09-27 13:20 1.8w次阅读
    <b class='flag-5'>CD4511</b>应用电路

    双向脉冲计数器

    双向脉冲计数器
    发表于 04-10 10:25 1439次阅读
    双向<b class='flag-5'>脉冲计数器</b>

    简易光控脉冲计数器电路图

    简易光控脉冲计数器电路图
    发表于 05-19 13:31 1345次阅读
    简易光控<b class='flag-5'>脉冲计数器</b>电路图

    模拟脉冲计数器原理图

    模拟脉冲计数器原理图都是值得参考的设计。
    发表于 05-11 17:11 42次下载

    cd4511工作原理_cd4511锁存、译码和消隐功能

    CD4511是一片CMOSBCD锁存/7段译码/驱动器,用于驱动共阴极LED(数码管)显示器的BCD码-七段码译码器。具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大
    发表于 11-22 19:54 6.2w次阅读

    利用ATmega328P和4位7段显示器制作两位数加减计数器

    电子发烧友网站提供《利用ATmega328P和4位7段显示器制作两位数加减计数器.zip》资料免费下载
    发表于 12-27 10:00 1次下载
    利用ATmega328P和4位7段显示器制作<b class='flag-5'>两位数</b>加减<b class='flag-5'>计数器</b>

    采用7段和IC4026的两位数计数器电路

    在医院,银行等中可以看到两位数计数器电路,用于计算任何过程。您可能已经在我们的网站上看到了使用7段的个位数计数器电路,这只是个位数
    的头像 发表于 07-02 14:20 560次阅读
    采用7段和IC4026的<b class='flag-5'>两位数</b><b class='flag-5'>计数器</b>电路

    数字7段脉冲计数器电路分享

    可以使用 7490 解码计数器和 7557A 构建脉冲计数器。该电路可以从9计数到3。所有 2 的引脚 7490 必须连接在一起。
    的头像 发表于 07-27 15:59 585次阅读
    数字7段<b class='flag-5'>脉冲计数器</b>电路分享