实现目标
1、巩固数码管、外部中断知识
2、具体实现:按键K4(INT1)每按一次,数码管从0依次递增显示至F,再按则循环显示。
一、共阳数码管
1.1 共阳数码管结构
1.2 共阳数码管码表
共阳不带小数点0-F段码为:{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
效果如下:
二、原理图设计
器件: 数码管(共阳)7SEG-MPX1-CA、按键BUTTON
三、程序设计
#include <REGX52.H>sbit K4 = P3^3;
unsigned int num = 0;
unsigned char seg_code[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void Delay10ms() //@11.0592MHz
{unsigned char i, j;i = 18;j = 235;do{while (--j);} while (--i);
}void INT1_Init(void) //外部中断函数初始化 子程序
{ EA = 1; //打开总中断开关EX1 = 1; //打开外部中断1 IT1 = 1; //外部中断1设为低电平触发 // 1则为下降沿触发
}void main() //主程序
{INT1_Init(); //调用外部中断初始化程序,让它等待条件触发while(1) {P2 = seg_code[num];}
} void INT1_int() interrupt 2 //当按键按下,下降沿触发,满足触发条件进来执行该中断程序
{if(K4 == 0){Delay10ms();// 按下消抖if(K4 == 0){num++;if(num >15){num = 0;}}}
}