微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大家来看看我这个程序。。我新人一个

大家来看看我这个程序。。我新人一个

时间:10-02 整理:3721RD 点击:
这城西是希望实现一个0到9的数秒器。但是数码管却没反应,有大神能伴我看看这个代码吗?我是刚学编程的,希望各位能指导下
#include<reg52.h>
#define uint unsigned int
unsigned char code SZ[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint i,j,x;
void delay1s();
void main()
{
x=0;
while(1)
{
while(x<9)
{
P1=SZ[x];
delay1s();
x=x+1;                               
}     
x=0;   
  }
}
void delay1s()
{
for(i=1000;i>0;i--)
  for(j=110;j>0;j--);
}

程序没看出问题,建议把原理图贴上来。

没原理图我也不好说,不过你这程序少了点东西,先的请零啊。

原理图,没原理图不好办啊

请问原理图是指那一部分?是电路板的电路图?还是别的什么。

我上面直接令X=0,这是清零了。

数码管与单片机连接图。

在P1=SZ[x];这句话之前建议先消影!

以上是我在学习板上找到的资料,而且,我上面的代码0到9的显示是测试过的。但是,我将程序考到单片机里面的时候,并不能完成一个记秒器这么一个任务。

这个是数码管的电路图。


这个是单片机与电路板电路图


好的,我再仔细看看。消影我还有点不清楚,请问能够大概解释下嘛?谢谢。

没问题呀,接在独立的数码管可以显示0-8,你把x<9改成想x<=9就可以显示0-9了

意思就是说假如是公阳的,IO低电平表示亮,假如上一次显示8那么全部都是亮就是0X00,那么你这次想显示0那么上一次的低电平就会留在IO上,导致你显示出问题。

谢谢,这个后来我也看到了,现在搞清楚了。回了趟老家,没网最近没怎么上。

谢谢提醒,这个我确实没注意到。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top