2019-07-15 22:20发布
fantek 发表于 2013-9-28 11:26 是不是和数码管的驱动控制电路有关啊.
fantek 发表于 2013-9-28 12:49 中断服务程序可以加一段类似按健消抖的程序,DELAY(5)就起这个作用,应该再判断中断引脚的信号是否为高电平或 ...
最多设置5个标签!
如果在最下面的中断函数里面加上delay(5);就可以。不知道为什么,求解释。
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define DataPort P0 //定义段数据端口 程序中遇到DataPort 则用P0 替换
#define SegPort P2 //定义位数据端口
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char code dofly_WeiMa[]={0,1,2,3,4,5,6,7};
//分别对应相应的数码管点亮,即位码
void Delay(unsigned int t); //函数声明
sbit led0 =P1^0;
void main()
{
char j=0;
EA=1;
EX0=1;
while(1)
{
led0=1;
SegPort=dofly_WeiMa[0]; //取位码
for(j=0;j<16;j++)
{
DataPort=dofly_DuanMa[j]; //取显示数据,段码
Delay(1000); //扫描间隙延时,时间太长会闪烁,太短会造成重影
}
}
}
void Delay(unsigned int t)
{
int i,k;
for (i=t;i>0;i--)
for(k=110;k>0;k--);
}
void intoLL()interrupt 0
{
led0=0;
//Delay(5);
}
中断服务程序可以加一段类似按健消抖的程序,DELAY(5)就起这个作用,应该再判断中断引脚的信号是否为高电平或低电平.用示波器看一下中断信号是否不太好啊,是用按键作中断源吗?按键按下时,是有抖动的,所以显示不停止,造成多次中断,就是你说的不停止的现象.P37脚控制573的11脚C锁存使能输入,程序中没有用到啊.138的E3脚有接到单片上吗?DELAY(1000)可根据人眼视觉特点计算.主要还是程序的问题.
是用杜邦线连的,我开发板上74hc573用跳冒直接接的vcc,138的那个接的vcc,不过刚又试了下,有不对了,加上delay(5)耶不成功了,明明上午还可以的啊,数码管一直再走,也不变慢了,改用下降沿触发灯耶不闪了,呜呜呜呜呜呜
一周热门 更多>