基于51单片机利用中断实现100以内的按键计数(Proteus仿真)

 wechat:【嵌入式工程师成长日记】

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484090&idx=3&sn=ed67cb438e25cc13b32ac6c48ccebecb&chksm=cf4307e2f8348ef424109aacc5bb64a6f20d53581d57f15377ec67383e01a69e7a0292b500f6&token=3445295&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484090&idx=3&sn=ed67cb438e25cc13b32ac6c48ccebecb&chksm=cf4307e2f8348ef424109aacc5bb64a6f20d53581d57f15377ec67383e01a69e7a0292b500f6&token=3445295&lang=zh_CN#rd

具体功能实现:

按下“计数”按键可以自增1,按下“清零”按键可以将两位数码管全部置0

使用器件:

两只数码管、总线、排阻、两个按键、AT89C51芯片

Proteus仿真原理图: 

仿真: 

知识介绍 :

Proteus布线

为了让整个原理图看上去简洁明了,我们对元器件的导线进行标号,而不是直接和芯片相连。

数码管共阳、阳极断码

共阳极(1-9):

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

共阴极(1-9):

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

中断系统

执行现程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

中断初始化代码:

定时器:

定时器可以实现准确定时,定时功能,计数功能。

51单片机有2个16位的定时器/计数器,定时器0(T0位P3.4)和定时器1(T1为P3.5)

主要代码(C语言)KEIL5实现:

wechat:【嵌入式工程师成长日记】


#include <REGX52.H>

unsigned code Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f};
unsigned char count=0;

void main(){
  P0 = 0x00;
  P2=0x00;
  TMOD = 0X06;
  TH0=256-1;
  TL0=256-1;
  ET0=1;
  EX0=1;
  EA=1;
  IT0=1;
  TR0=1;
  while(1){
    P0=Code[count/10];
    P2=Code[count%10];
  }
}

void key_count() interrupt 1  //计数自增1 
{
  count++;
  if(count>100)
  {
    count=0;
  }
}

void clear() interrupt 0     //清零
{
  count=0;
}

问:Proteus如何快速布线?

答:按键按下大写的A,输入指令net=P0.#,然后点击“单击对象”,最后想要给哪根导线标号只需点击一下即可。

问:设计思路

答:利用计数器进行加数,利用中断系统做清零处理。

wechat:【嵌入式工程师成长日记】

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484090&idx=3&sn=ed67cb438e25cc13b32ac6c48ccebecb&chksm=cf4307e2f8348ef424109aacc5bb64a6f20d53581d57f15377ec67383e01a69e7a0292b500f6&token=3445295&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484090&idx=3&sn=ed67cb438e25cc13b32ac6c48ccebecb&chksm=cf4307e2f8348ef424109aacc5bb64a6f20d53581d57f15377ec67383e01a69e7a0292b500f6&token=3445295&lang=zh_CN#rd

  • 9
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值