标题:
用光敏电阻通过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