实现目标
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;
}
}
}
}