找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1822|回复: 1
打印 上一主题 下一主题
收起左侧

adc0804输出一直为高电平,不知道是单片机程序问题还是硬件连接问题

[复制链接]
跳转到指定楼层
楼主
adc0804输出一直为高,不知道是程序问题还是硬件连接问题,求解
#include<reg51.h>
#include<intrins.h>
//sbit Cs=P2^0;
sbit Write=P2^1;
sbit Read=P2^2;
sbit WeiEN=P2^6;
sbit DuanEN=P2^7;
  unsigned char num;
unsigned char DuanMa[]= //段码数组为从0到9
                {0x3f,0x06,0x5b,0x4f,0x66,0x6d,
                0x7d,0x07,0x7f,0x6f};
unsigned char WeiXuan[]={0xfe,0xfd,0xfb,0xf7};//位选
void delay(unsigned int xMs)
{ unsigned char x,y;
  for(x=xMs;x>0;x--)
    for(y=110;y>0;y--);
}
void xianshi(num)
{ unsigned char        bai,shi,ge;
  bai=num/100;
  shi=num%100/10;
  ge=num%10;

  WeiEN=1;P1=WeiXuan[0];WeiEN=0; P1=0x00;
  DuanEN=1;P1=DuanMa[bai];DuanEN=0;delay(1000);

  WeiEN=1;P1=WeiXuan[1];WeiEN=0; P1=0x00;
  DuanEN=1;P1=DuanMa[shi];DuanEN=0;delay(1000);

  WeiEN=1;P1=WeiXuan[2];WeiEN=0;P1=0x00;
  DuanEN=1;P1=DuanMa[ge];DuanEN=0;delay(1000);
}
void write()
{
    Write=1;_nop_(); Write=0;_nop_(); Write=1;
        //一个下降沿
}
unsigned char read()
{  unsigned char num;
    P0=0XFF;           //先将P0口全部置1
    Read=1;_nop_();Read=0; _nop_(); num=P0; Read=1;
      //上升沿之前将数值转化为中间变量num
          return num;
}
int main()
{ //Cs=0;//片选
WeiEN=0;
DuanEN=0;//防止第一次显示错误
  while(1)
  {
  write();
  xianshi(num);
  read();
  }
}

ADC0804.PNG (104.1 KB, 下载次数: 21)

ADC0804.PNG

捕获.PNG (80.84 KB, 下载次数: 25)

捕获.PNG
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:461608 发表于 2019-1-6 09:35 | 只看该作者
unsigned char read()函数中重定义  unsigned char num; 全局变量num始终为0,显示000。
sbit Write=P2^1;sbit Read=P2^2;与电路图不符,应为sbit Write=P2^2;sbit Read=P2^1;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表