我想实现这样一个功能:
希望单片机控制小led和蜂鸣器,没有光的时候小led会亮,蜂鸣器响。有光小led就灭,蜂鸣器不响。但是点下载后却一直说在检测单片机,烧不进去。COM口,单片机型号(STC89C52)都是对的。然后我把光敏电阻传感器模块和杜邦线拔了之后再下载了个流水灯程序,又下载进去了而且能正常工作。硬件应该没有问题。
我是这样连光敏电阻传感器模块的,(第一次连,可能有错):传感器VCC接开发板VCC,传感器GND接开发板GND,传感器DO(数字量输出)接板子P3.0。
这是我的程序:
#include<reg52.h>sbit RL1=P3^0; //传感器与单片机接口I/O口 //RL1是无光输出高电平1,有光输出低电平0sbit led=P1^0; //led灯I/O 口sbit sb1=P2^3; //sb1是蜂鸣器I/O口void Delay() //延时函数{ unsigned int Delaytime=20000; while(DelayTime--);} void main(){ led=0; //开led,但还没亮 sb1=0; //开蜂鸣器,但不响 while(1) //一直重复 { if(RL1==0) //如果有光 { sb1=!sb1; //蜂鸣器不响 led=!led; //led灭 Delay(); //延时时led不亮,蜂鸣器不响 } else //如果没光 { sb1=0; //蜂鸣器响 led=0; //led亮 Delay(); //延时时led亮,蜂鸣器响 } }}
下面是传感器的原理
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include<reg52.h>
sbit RL1=P3^0; //传感器与单片机接口I/O口 //RL1是无光输出高电平1,有光输出低电平0
sbit led=P1^0; //led灯I/O
void delay(unsigned int z) //延时函数
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1) //一直重复
{
if(RL1==0) //如果有光
{
led=1; //led灭
delay(0.5); //延时时led不亮,蜂鸣器不响
}
else //如果没光
{
led=0; //led亮
delay(0.5); //延时时led亮,蜂鸣器响 //当把延时调得太大的时候,灭时看起来亮灭比较明显,就像电压不稳,所以延时药少一点,但也不能趋近于0
}
}
}
你的意思是51的都得先拔下来,才能把程序下载进去?那哪些可以连上直接下载呢?
评分
查看全部评分
嗯,谢谢。刚刚学到键盘检测原理,想先做个小东西试一下,你说的应该是在串口通讯里面?马上就学到。。
一周热门 更多>