打印

AD0808的程序有点问题 搞了几个小时不知道错哪啦!

[复制链接]
2831|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AD, ISP, TE, ST, code
这是我的protues仿真图  最大值还不到3v 大家帮我看看程序到底错那了???

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit ST=P1^0;
sbit EOC=P1^1;
sbit OE=P1^5;
//控制输入
sbit da=P1^2;
sbit db=P1^3;
sbit dc=P1^4;
uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码
void delay()
{
unsigned char a,b;
     for(b=1;b>0;b--)
         for(a=47;a>0;a--);
}
void start()
{
  uchar t=0;
  da=t&0x01;
  db=t&0x02;
  dc=t&0x04;
  ST=0;
  ST=1;
  ST=0;
}
uchar read()
{
   uint date=0;
   while(EOC==0);
   OE=1;
   date=P2;
   OE=0;
   date=(date*500)/256;
   return date;
  }
void display(a)
{
   uchar i;
   uchar a1=0,a2=0,a3=0;
  a1=a/100;
  a2=(a%100)/10;
   a3=a%10;
P3=0x10;
P0= dispcode[a1];
delay();
     P3=0x20 ;
P0= dispcode[a2];
delay();
  P3=0x40 ;
P0= dispcode[a3];
delay();
}
void main()
{ uchar a;
  while(1)
{
   start();
   a= read();
   display(a);
}
}

相关帖子

沙发
liang7143| | 2010-10-30 17:45 | 只看该作者
扔掉protues,自己拿块板子试吧~~

使用特权

评论回复
板凳
chenke1988|  楼主 | 2010-10-30 17:53 | 只看该作者
2# liang7143
你的意思是我的程序没问题吗?

使用特权

评论回复
地板
chenke1988|  楼主 | 2010-10-30 17:55 | 只看该作者

使用特权

评论回复
5
aihe| | 2010-10-30 20:16 | 只看该作者
P2的顺序反了吧,我没看程序!

使用特权

评论回复
6
jack_shine| | 2010-10-31 12:11 | 只看该作者
楼主没有把问题的描述讲清楚

使用特权

评论回复
7
jack_shine| | 2010-10-31 12:14 | 只看该作者
void display(a)  是不是要写成void display(uchar a)

使用特权

评论回复
8
aihe| | 2010-10-31 13:52 | 只看该作者
楼主啊,0808和和单片机的位顺序反了,调整过来再试
要不然除了0和0xff,其他的信号都会错的
你仔细看看自己的图
先要硬件正确,才能保证正确的软件有正确的输出

使用特权

评论回复
9
chenke1988|  楼主 | 2010-11-1 12:58 | 只看该作者
搞定了!是我的数据类型搞错啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

58

帖子

0

粉丝