微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AD和LED 郭天祥板子遇到的问题

AD和LED 郭天祥板子遇到的问题

时间:10-02 整理:3721RD 点击:
这是原理图
由于AD的输出和LED都接的是P1口
所以在做AD实验时候LED不接锁存器的话会随机的亮
下面是AD的代码
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned  int
sbit led1=P1^1;
sbit dula=P2^6;
sbit wela=P2^7;
sbit adwr=P3^6;
sbit adrd=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};
void delay(uint x)
{
   uint y,z;
   for(y=x;y>0;y--)
      for(z=110;z>0;z--);
}
void display(uchar bai,uchar shi,uchar ge)
{
   dula=1;
   P0=table[bai];
   dula=0;
   P0=0xff;
   wela=1;
   P0=0x7e;
   wela=0;
   delay(5);
   dula=1;
   P0=table[shi];
   dula=0;
   P0=0xff;
   wela=1;
   P0=0x7d;
   wela=0;
   delay(5);
   dula=1;
   P0=table[ge];
   dula=0;
   P0=0xff;
   wela=1;     
   P0=0x7b;
   wela=0;
   delay(5);
}
void main()
{
   
   uchar a,a1,a2,a3,adval;
   wela=1 ;
   P0=0;
   wela=0;
   while(1)
   {      
      adwr=1;
      _nop_();
      adwr=0 ;    //启动AD转换
      _nop_();
      adwr=1;
     
      P1=0xff;
      adrd=1;
      _nop_();
      adrd=0;            //AD读数据
      _nop_();   
      adval=P1;
      adrd=1;
      led1=0;
      
      a1=adval/100;
      a2=adval%100/10;
      a3=adval%10;  
      
      display(a1,a2,a3);   
   }
   
}
现在虽然知道LED处锁存器的作用
板子默认的是高电平
为什么我我改变阻值时候LED并没有亮?
虽然在主函数里面已经给P1=0xff;让等全灭
但是没有关闭LED锁存器啊
当下一步读取AD输出的时候 肯定会有0出现的啊
为什么灯不亮啊?
求解





最后我认为应该是板子的设计缺陷
LED的锁存器没起到作用

你得再看一下74HC573的真值 表。当E端为低电平时,L端由高电平变为低电平时锁存。你做AD时不操作锁存器,当然看不到LED闪烁了。
如果想看到LED闪,把74HC573换成74HC245就行了,闪的你心慌。呵呵.

郭天祥的板子上貌似有3块74HC573,连到P25上的那个应该是LED驱动。你这段程序从头到尾都没操作过P25啊。老大。

不是我没操作
这个程序是郭天祥的
他没有操作P25口
现在知道啦

路过  进来看看

有道理啊

A/D让我困惑......   

学习.

                                                   

哦哦哦

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

网站地图

Top