标题: 用光敏电阻通过ADC0832控制LED灯的亮灭,大神们帮忙看看我的程序哪里错了,灯一直亮 [打印本页]

作者: 橘生淮南    时间: 2017-6-13 20:24
标题: 用光敏电阻通过ADC0832控制LED灯的亮灭,大神们帮忙看看我的程序哪里错了,灯一直亮
用光敏电阻通过ADC0832控制LED灯的亮灭,大神们帮忙看看我的程序哪里错了,灯一直亮

作者: 51mcu    时间: 2017-6-14 06:37
你让人帮你看程序,你要把程序贴出来啊?
作者: lingwise    时间: 2017-6-14 09:59
用单片机模拟采集到最大、最小的ADC数据;255,0,分别输出控制LED看看能不能让LED正常亮灭,要是LED都不能亮灭应该是LED的控制方式不对吧,要是最大最小ADC可以让灯亮灭,那就检查ADC的程序吧,
PS,你提供的资料太少,电路图框图、关键控制程序都没一丁点,让人家怎么帮你呢
作者: 橘生淮南    时间: 2017-6-24 14:35
51mcu 发表于 2017-6-14 06:37
你让人帮你看程序,你要把程序贴出来啊?

#include<reg52.h>
#include <intrins.h>
#define    uchar  unsigned char
#define    uint   unsigned int
sbit Cs0832         =P2^0; //ADC0832 片选
sbit Clk0832  =P2^2; //ADC0832 时钟
sbit Di0832         =P2^1; //ADC0832 数据输入                /*因为单片机的管脚是双向的,且ADC0832的数据输入输出不同时进行,
sbit Do0832        =P2^1; //ADC0832 数据输出                /*为节省单片机引脚,简化电路所以输入输出连接在同一个引脚上
sbit D1 = P0^0;
sbit D2 = P0^1;
sbit D3 = P0^2;
sbit D4 = P0^3;
uint yushe_dy=3;
uint dy;

void delay(uint z)
{ uint x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
  
}
uchar ADC0832(uchar Channel) //入口:通道0或1 出口:数值。
{
uchar i,Dat1=0,Dat2=0;
Clk0832=0;
Di0832=1;
Cs0832=0;
Clk0832=1;

Clk0832=0; //第一脉冲,开始位
Di0832=1;
Clk0832=1;
Clk0832=0; //第二脉冲,模式选择
Di0832=Channel;//通道选择,0或1
Clk0832=1;

Clk0832=0; //第三脉冲,通道选择
Di0832=1; //释放输入线
for(i=0;i<8;i++)   //从高到低取一次数
  {
   Clk0832=1; //下降沿有效
   Clk0832=0;
   if(Do0832) Dat1|=0x80>>i;
   }
for(i=0;i<8;i++)   //从低到高取一次数
  {
  if(Do0832) Dat2|=0x01<<i;
  Clk0832=1; //下降沿有效
  Clk0832=0;
  }
Cs0832=1;
Di0832=1;
Clk0832=1;  //数据读取完成,释放所有数据线
if(Dat1==Dat2)
return Dat1; //校验两次数相等,输出
}

void main()
{         dy=ADC0832(0);                               
        dy=(5*dy/256);
  while(1)
  {if(dy<yushe_dy){
   D2=0;
  }
  else{
          D2=1;
  }
  }


  
}
作者: 过过过儿    时间: 2019-1-3 19:33
sbit D1 = P0^0;
sbit D2 = P0^1;
sbit D3 = P0^2;
sbit D4 = P0^3;
uint yushe_dy=3;
uint dy;
D0 D1这些是什么意思?
作者: Romanticyang    时间: 2022-4-19 18:15
请问 uint yushe_dy=3;是什么意思?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1