找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23500|回复: 6
打印 上一主题 下一主题
收起左侧

单片机计数器实验显示按键按下次数

  [复制链接]
跳转到指定楼层
楼主
仿真原理图如下(51单片机显示按键按下次数的proteus仿真工程文件可到本帖附件中下载)

记录按键按下的次数是用中断写的,注意的是一开始按键显示0,只有一个数码管,所以只能显示到0~9,然后从重新从0开始计数

程序如下:
#include<reg51.h>
#include<intrins.h>
#define INT8U unsigned char
#define INT16U unsigned int
const INT8U SEG_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
INT16U Count=0;
sbit Clear_Key=P3^6;
void delay_ms(INT16U x)
{
  INT8U t;while(x--) for(t=0;t<120;t++);
}

void main()
{
  P0=0xff;
  IE=0X81;
  IT0=1;
  while(1)
  {
    if(Clear_Key==0) Count=0;
                if(Count>9) Count=0;
          P0=SEG_CODE[Count];
  }
}
void EX_INT0() interrupt 0           //利用中断来进行变化
{
  EA=0;
  delay_ms(10);
  Count++;
  EA=1;
}


完整内容请看压缩包全部资料51hei下载地址:
计数器实验(中断).rar (69.95 KB, 下载次数: 132)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:429750 发表于 2018-11-20 11:01 | 只看该作者
左边那个按键有什么用?
回复

使用道具 举报

板凳
ID:391717 发表于 2018-11-20 12:48 | 只看该作者
2402562367 发表于 2018-11-20 11:01
左边那个按键有什么用?

左边那个按键是程序运行中途需要单片机复位但又不想断电冷启动而设的.按下该键,9脚高电平复位,同时电容很快放电.松开该键,电容充电,单片机9脚又一次高电平,二次复位.
请注意:硬件方面,那个产生中断的按键是接在单片机的P3^2上的,程序里却把它写到P3^6上,即:
sbit Clear_Key=P3^6;
显然不对.
回复

使用道具 举报

地板
ID:429750 发表于 2018-11-20 18:20 来自手机 | 只看该作者
能不能讲这个的功能说明写一下,非常感谢
回复

使用道具 举报

5#
ID:502298 发表于 2019-5-4 16:32 | 只看该作者
为什么数码管不显示数啊
回复

使用道具 举报

6#
ID:66287 发表于 2019-5-5 08:28 | 只看该作者
Clear_Key 是清零按键,按下后计数从零重新开始计数。
P3^2 上应该接一个按键,按下后产生中断,从而计数。
回复

使用道具 举报

7#
ID:576935 发表于 2021-5-21 19:07 | 只看该作者
你好,这个proteus仿真,除了k1改接p3.2外,需要两个改进的地方
1,数码管接上拉电阻,P0.0至P0.6都需要接电阻。
2,在主函数中, if(Clear_Key==0) Count=0; 有误,实际仿真数码管会一直显示0
     所以应改成,if(Clear_Key==0) Count=Count;  这样就能正常显示了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表