概要
51单片机只用一个数码管,开始显示值为0,按一次显示值加一次,用十六进制0~F循环计数。
按键使用外部中断工作方式,数码管为共阴极数码管公共端接地(共阳极数码管公共端接电源,然后取反输出Nixie =~ NixieTable[i];)
代码
#include <REGX52.H>
#include <intrins.h>
#define u8 unsigned char //定义字符类型
#define u16 unsigned int
#define Nixie P2 //定义IO口P2
u8 i= 0;
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void Delay(u16 xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void init()//初始化,即打开各中断开关
{
IT0=1;//外部中断0为跳变沿触发方式
EA=1;//开总中断
EX0=1;//打开外部中断0
}
void main()
{
init(); //初始化
while(1)
{
Nixie = NixieTable[i];
}
}
void int0() interrupt 0 //外部中断0的执行程序。
{
i = i+1;
i &=0x0f;
Delay(50);//延时
}