实验功能
在普中51开发板上数码管1、2、3显示数字1、2、3。
实验分析
使用定时中断来充当延时,需要掌握好中断函数中计数参数的间隔,而且需要循环。
#include <REGX52.H>
unsigned char NixieTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int T0count,T0count1;
unsigned char Location,Number;
void Timer0_Init()
{
TMOD=0x01; //0000 0001
TF0=0;
TR0=1;
TH0=64535/256;
TL0=64535%256;
ET0=1;
EA=1;
PT0=0;
}
void Nixie(Location,Number)
{
switch(Location) //位选
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number]; //段选
}
void main()
{
Timer0_Init();
while(1)
{
if(T0count==3)
{
Nixie(1,1);
}
if(T0count==7)
{
Nixie(2,2);
}
if(T0count==11)
{
Nixie(3,3);
}
}
}
void Timer0_Routine() interrupt 1
{
TH0=64535/256;
TL0=64535%256;
T0count++;
if(T0count>11)
{
T0count=0;
}
}