基于单片机实现声光控灯电路 C

本文记录了初学者使用单片机实现声光控灯电路的过程,从基本的高入低出、低入高出逻辑开始,逐步增加了声控功能和灯亮后的延时设定。通过单片机编程,实现了声控优先级高于光控的逻辑,详细注释贯穿整个项目,分享了学习与实践的心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚学单片机,第一个单片机程序,看到仿真成功还是非常激动的,功能很简单,就是高入低出,低入高出,有点类似非门,但搞了好长时间才弄出来。。。。。。详见注释

#include<reg52.h>
#define CRYSTAL_FREQ 12000000//晶振频率(Hz)
#define uchar unsigned char
#define uint unsigned int 
#define INTERRUPT_PERIOD 16//时钟配置1/16s
sbit led=P1^0;//定义led为输出端
sbit key=P0^0;//key输入端
void delayms(uint xms)//延时作用的子函数
{
	uint i,j;
	for(i=xms;i>0;i--)
	for(j=110;j>0;j--);
}
void Interrupt_Init()
{
	TMOD = 0x01;
	TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD) / 256;
	TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD) % 256;
	ET0 = 1;
	TR0 = 1;
	EA = 1;
}
void main()
{
	Interrupt_Init();//调用中断声明子函数 
	while(1);
}
void power()
{
	if(key==0)	   //检测输入端是否为低电平 
		{
			delayms(10);  //延时再次检测输入端是否为低电平   
			if(key==0)
			{
				led=1;	   //如果再次确认输入端为低,控制输出高电平,灯亮 
			}
			else
				led=0;	 //否则输出低电平,灯灭
		}
	
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值