找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3068|回复: 0
收起左侧

单片机外部中断显示按键次数源程序+Proteus仿真

[复制链接]
ID:585660 发表于 2019-7-19 08:43 | 显示全部楼层 |阅读模式
学会用中断方式实现开发板按键K3和按键K4按键次数显示
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
学习了解中断的结构特点,设计并编程实现中断次数显示。
二、实验要求
1.设计出STC89C51的中断次数显示电路。
2.编程实现按键次数显示,观察实验现象。
三、可供选择实验仪器
51开发板、LED灯、USB转串口下载线、Keil软件等
四、实验提示
要求用中断方式实现开发板按键K3和按键K4按键次数显示。
五、实验电路


//你可以自己写一些其他的中断东西
CM1M1V~%W5[D7RU]HG$D[T6.png
0对应定时器1
1对应中断1
2对应定时器2
3对应中断2
4对应串口


#include <reg51.h>
#include <intrins.h>
sbit Key3=P3^2;
sbit Key4=P3^3;
unsigned char duan[8]={0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0};
unsigned char code wei[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//共阳极数码管                                   //0    1    2    3    4    5    6    7    8    9    A    b    C    d    e    F
unsigned char code DIG_CODE_CA[16]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管
//共阴极数码管                                   //0    1    2    3    4    5    6    7    8    9    A    b    C    d    e    F
unsigned char code DIG_CODE_CC[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管
//子函数
unsigned char i=0,j=0;
void display( );
void Delay1ms();
void DelayNms(unsigned int n);
//主函数
void main()
{
        TCON=0x05;//0000 0101
        EA=1;EX0=1;EX1=1;
        while(1)
        {
           display();
        }
}
void display()
{
  unsigned int n;
        duan[7]=DIG_CODE_CA[i%10];
        duan[6]=DIG_CODE_CA[i/10];
        duan[5]=DIG_CODE_CA[j%10];
        duan[4]=DIG_CODE_CA[j/10%10];
        duan[3]=DIG_CODE_CA[j/100];
  for(n=0;n<8;n++)
        {
                P2=wei[n];
                P1=duan[n];
                DelayNms(5);        
        }

}

//2 中断函数
void Timer0_ISR() interrupt 0
{
        i++;
        if(i==100)
        i=0;        
}
void Timer1_ISR() interrupt 2
{
        j++;
        if(j==1000)
        j=0;        
}
//子函数声明
void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;

        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}
void DelayNms(unsigned int n)
{
        while(n--)
        Delay1ms();
}

全部资料51hei下载地址:
中断显示次数.zip (372.2 KB, 下载次数: 11)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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