单片的的中断程序,有点小问题
时间:10-02
整理:3721RD
点击:
这是一个从0到60的一个计秒器的程序。最后测试了,能够正常完成计秒功能。但是,唯一让我费解的是,无论十位还是个位,轮到显示1和4的时候显不出来,数码管直接黑掉,然后轮到下一个数字的时候就可以正常显示。#include<reg52.h>#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
void display(uchar,uchar);
uchar num,num1,shi,ge;
uchar code SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint);
void main()
{
TMOD=0x11;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
display(shi,ge);
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar shi,uchar ge)
{
wela=1;
P0=0xbf;
wela=0;
P0=0x00;
dula=1;
P0=SZ[shi];
dula=0;
delay(5);
wela=1;
P0=0x7f;
wela=0;
P0=0x00;
dula=1;
P0=SZ[ge];
dula=0;
delay(5);
}
void t1time()interrupt 3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num++;
if(num==20)
{num=0;
num1++;
if(num1==60)
num1=0;
shi=num1/10;
ge=num1%10;
}
}
在数字代码里面,0x06是数字1,0x66数字4,当我将其换成别的数字代码的时候,可以正常显示,比如我把0x06换成0x4F,则可以正常显示一个3.求大神解答一下。还有哦,能告诉我这这个代码中
delay(5);
是起到一个什么作用。
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
void display(uchar,uchar);
uchar num,num1,shi,ge;
uchar code SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint);
void main()
{
TMOD=0x11;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
display(shi,ge);
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar shi,uchar ge)
{
wela=1;
P0=0xbf;
wela=0;
P0=0x00;
dula=1;
P0=SZ[shi];
dula=0;
delay(5);
wela=1;
P0=0x7f;
wela=0;
P0=0x00;
dula=1;
P0=SZ[ge];
dula=0;
delay(5);
}
void t1time()interrupt 3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num++;
if(num==20)
{num=0;
num1++;
if(num1==60)
num1=0;
shi=num1/10;
ge=num1%10;
}
}
在数字代码里面,0x06是数字1,0x66数字4,当我将其换成别的数字代码的时候,可以正常显示,比如我把0x06换成0x4F,则可以正常显示一个3.求大神解答一下。还有哦,能告诉我这这个代码中
delay(5);
是起到一个什么作用。
我用你的程序显示很正常,因为不知道你的数码管是共阴极还是共阳极的,因为我的数码管是共阴极,所以那个消影的我改为P0=0xff;了。都可以显示啊
你的显示函数形参和全局变量一样的?
另外你这句参数 void display(uchar,uchar);不能替代你下面的函数实现吧。
事实上是可以可以代替display(uchar,uchar)的,还有“你的显示函数形参和全局变量一样的?”这个是什么意思?没看懂,麻烦你解释下。
额,我这个是共阴极的,而且,数码管要高电平才显示,消影的话,我这改成0x00才可以。
你是说,你用我的程序显示是正常的是吧?那显示不出来是我这里的电子版的问题吗?
我用的是郭天祥单片机开发板,反正显示没有问题
小编程序没有问题
全局变量命名和局部变量一样,当你改变局部变量的时候,全局变量不就改变了。
那确实是我的开发板问题了。
