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);//延时
}
本文发布于:2024-02-02 07:25:03,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682990242258.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |