|
各位大佬主要看主函數(shù)就行
Nixietube_number這個(gè)函數(shù)就是在數(shù)碼管第幾位顯示數(shù)字幾
這個(gè)代碼運(yùn)行個(gè)位數(shù)的時(shí)候就沒(méi)有問(wèn)題,把if那段刪了只留else里面的運(yùn)行兩位數(shù)也沒(méi)問(wèn)題,但是使用ifelse的話并不能像我預(yù)想中那樣,一位數(shù)時(shí)只顯示第四個(gè)燈,當(dāng)需要顯示數(shù)字為兩位數(shù)時(shí)再顯示兩個(gè)燈
反而在顯示數(shù)字為9之后會(huì)短暫什么都不顯示,然后第四個(gè)燈就開(kāi)始亂閃
希望大佬能指點(diǎn)一下我為什么用了ifelse顯示就出問(wèn)題了
單片機(jī)源程序如下:
#include <REGX52.H>
void Nixietube_number(int position,int number);
void Delay(long xms);
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
int n=0;
int i=0;
void main()
{
TMOD=0x01;
TH0=(65535-20000)/256;
TL0=(65535-20000)%256;
EA=1;ET0=1;
TR0=1;
while(1)
{
if(0<=n<10)
{
Nixietube_number(4,n);
}
else
{
Nixietube_number(4,n%10);
Nixietube_number(3,n/10);
}
}
}
void Delay(long xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void Nixietube_number(int position,int number)
{
unsigned char numberSize[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
switch(position)
{
case 1:
led1=1;led2=0;led3=0;led4=0;break;
case 2:
led1=0;led2=1;led3=0;led4=0;break;
case 3:
led1=0;led2=0;led3=1;led4=0;break;
case 4:
led1=0;led2=0;led3=0;led4=1;break;
}
P2=numberSize[number];
Delay(5);
}
void tiemr0() interrupt 1
{
TH0=(65535-20000)/256;
TL0=(65535-20000)%256;
i++;
if(i==50)
{
i=0;
n=n+1;
}
} |
|