51单片机led灯与数码管问题

1、使用八颗共阳极LED(P0)和一个独立按键开关(P1.0,未被按下时为1),实现:保持按键被按下时,LED奇偶交替闪烁;松开按键时,LED全部熄灭。
2、使用四位数 共阴极 数码管,以一个独立按键作为外部中断源(P3.2),初始数码管显示为四个零,当中断第一次发生时,数码管显示加一,即显示为1111 ,每当中断发生一次,数码管加一,实现以下循环0000→1111→2222→……→8888→9999。
#include<reg52.h>
#define LED P2
char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};
void delay(int num)
{
int x,y;
for(x=num;x>0;x--)
for(y=110;y>0;y--){}
}
int i=0;
void main()
{
IE0=1;
IT0=1;
EX0=1;
EA=1;
while(1)
{LED=a[i];
}
i++;
/*while(X==1)
{
Z=~Z;
delay(100);
}*/
}
void int0() interrupt 0
{
P0=0xff;
LED=a[i];
delay(1000);
EX0=0;
i++;
EX0=1;
if(i==9){
i=0;
}
}
这是第二题做的,有错误只显示1111,
求大佬把正确的写上,感谢各位大佬,跪求了
51单片机

如果能看到的数字跟期望的一致,
根据经验,这种情况一般程序是对的,是仿真的问题
建议下载到实际电路板上跑跑看,如果数字有闪动,可调整动态扫描的速度。
实在要仿真,也可以尝试调整一下显示器件的 最小触发时间追问

我这是用的器材,有个学长告诉我少了一个主函数循环语句

追答

"实在要仿真,也可以尝试调整一下显示器件的 最小触发时间",在哪里调?

数码管模块 属性里面,有个 这个

没用诶,我想它只是固定几个数字会闪,会不会是因为两个中断时间上撞车了

最好使用实际电路板试一下,不然要是花一堆时间最后是仿真软件的问题那就.....
实在要求助的话,能否原始仿真图发出来?

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-25
不知道
第2个回答  2018-11-25
o(>﹏<)o千万别台5鱼5听听v
第3个回答  2018-11-25
第4个回答  2018-11-25
P0端口要接上拉电阻吧,LED别放在P0端口吧,
用到按键的话有延时检测吧。追问

怎么改》

51单片机led灯与数码管问题
如果能看到的数字跟期望的一致,根据经验,这种情况一般程序是对的,是仿真的问题 建议下载到实际电路板上跑跑看,如果数字有闪动,可调整动态扫描的速度。实在要仿真,也可以尝试调整一下显示器件的 最小触发时间

51单片机小白的一个问题,我编译的一个Led灯亮的程序烧入了之后反而是...
先弄懂硬件电路原理,看数码管和单片机是怎么连接的,然后再看程序中你操作了哪些管脚。当然也有可能不进行任何操作数码管就会亮。

关于51单片机数码管亮和led亮的问题~求高手解决
这个一般都会设置跳线帽的,是硬件方面的问题,跟代码无关。

51单片机直接驱动LED数码管感觉程序和硬件都没问题,却输出乱码,这是为...
输出乱码是固定的话,多数是软件问题。如果不固定,软硬件都有可能。你不应该用延时程序来点亮LED,这种程序结构容易造成CPU无法处理其他的事件,如果CPU在处理大量的数据时可能就没机会进入延时,应该灵活运用定时器引起的中断,来解决这个问题。你可以考虑下你的程序的总体结构,不要按照顺序的思路来考虑,...

51单片机如何控制LED数码管循环左移?
51单片机数码管循环左移是指将一个多位数的二进制数据在二进制数码管中进行左移操作,从而实现数字的循环移位。具体来说,可以按照以下几个步骤实现:1定义一个变量存储待移位的数值,并将其转换为二进制数形式。2将二进制数码管的对应端口输出全部清零。3利用位运算符 << 将数值向左移动一位,并将...

51单片机如何实现动态灭零数码管与LED小灯同时闪烁?
把数码管的控制函数放在中断里面,在中断里面用动态显示的方法,小灯泡的控制就放在主函数就好。

51单片机按键控制流水灯和数码管(最好用外部中断)?
51单片机按键控制流水灯和数码管,P1口接8个LED灯,P0口接一个共阳数码管,P3.2和P3.3各接一个按键,分别用外部中断0和中断1。早蜂鸣器接在P2.7上。仿真图如下。

51单片机数码管显示问题
只要保证在1秒内每个数码管能扫上个十几次二十几次,视觉上就好像同时点亮了所有数码管了。你这段程序就是这种方式:shuma=a[d1];\/\/送第d1位数码管的段码,d1范围是0~3共4位 LED_1=0;\/\/打开d1位数码管显示允许,数码管被点亮 delay_ms(1);\/\/保持显示1ms LED_1=1;\/\/关闭d1位数码管...

51单片机中开发板上的单个东西比如led,数码管,矩阵键盘灯操作起来都是...
难度低的就是自己在大循环里做几个小循环。每个小循环的执行时间不同。执行所需时间不同等等。。比如。按键扫描,至少没100MS扫描一次,数码管动态扫描的话要10毫秒扫描一次。LED100MS扫描一次。那就做10毫秒执行一次的循环一个,100ms执行一次的循环一个。把需要时间不同的任务放到不同的位置。。大概...

利用51单片机控制3个LED数码管在3个数码管上显示字符LED,怎样编写程序...
亮第一个数码管(这里当他为共阳极数码管):P2^0=1;P1=XXX;\/\/自己写出L的字形码 delay_ms(1);\/\/延迟1ms这个时间越小越好拉 P2^0=0;\/\/关掉第1个数码管显示 P2^1=1;\/\/开始第二个数码管显示 \/\/然后就以此类推,3个,4个甚至8个数码管这样子写 ...

相似回答