标题: 单片机的智能灯控制系统,是代码有问题还是电路有问题? [打印本页]

作者: 1751109498    时间: 2021-3-21 11:10
标题: 单片机的智能灯控制系统,是代码有问题还是电路有问题?
是代码有问题还是电路有问题呀!!我基础比价薄弱!改了很久了实在没办法了才拿出来问大家 希望大家帮帮忙
#include<reg51.h>//单片机 C语言的头文件
#include<intrins.h>//包含 51 单片机的几条汇编
语句的 C 语言调用接口
#include<absacc.h>//头文件
#define uc unsigned char
#define ui unsigned int//定义
sbit GM=P1^0;//光敏
sbit RT=P1^5;//人体红外
sbit KZ=P3^5;//继电器控制灯
uc sec=0;
void init()//初始化子函数
{
GM=0;//光敏置低 //光敏输出低电平(复
位)
RT=0;//人体红外置低 //红外输出低电平
(复位)
TMOD=0x01;//定时器 0工作方式 1
TH0=0x3c;
TL0=0xb0;//赋初值 50ms
ET0=1;//打开定时中断 0允许开关
TR0=1;//打开定时器 0定时开关
EA=1;//打开中断 0总开关
}
void main()//主函数
{
init();//初始化函数
while(1);//空循环
}
void T0_time()interrupt 1 //定时器执行函数,
热释电模块和光线感应和控制继电器都是在定时器
里完成
{
uc m;//定义变量 m
TH0=0x3c;
TL0=0xb0;//重新赋初值 50 ms
m++;//m 加一次是 50 ms
if(m>=20)//加到 20次,就是一秒
{
m=0;//m 清零
if(RT==0||GM==0) //当热释电和光敏
有一个不符合条件(符合条件就是热释电检测到人,
光敏检测到环境光线弱)
{
sec++;//sec变量加
if(sec>10)//从亮灯到条件不符熄灯,中间延时
10秒钟
{
sec=0;//sec清零
KZ=1;//控制继电器关闭
}
}
if(RT==1&&GM==1)//当 热 释 电 和 光
敏都符合条件,则秒计时参数归零,开灯
{
sec=0;//sec清零
KZ=0;//控制继电器打开
}
}
}

X6LC3(SYWMTE4F}`HZF3~IB.png (71.84 KB, 下载次数: 59)

X6LC3(SYWMTE4F}`HZF3~IB.png

作者: 张天师    时间: 2021-3-21 11:59
第一个:KZ端口没有初始化;
第二个:uc m;//定义变量 m。m为局部变量,不能实现累加功能。要改为全局变量或静态局部变量。
第三个:仿真晶体没频率值
作者: taotie    时间: 2021-3-21 12:25
程序中  ;  () {}这些都是中文字符把他都替换成英文
作者: 1751109498    时间: 2021-3-21 13:31
taotie 发表于 2021-3-21 12:25
程序中  ;  () {}这些都是中文字符把他都替换成英文

好的 十分感谢
作者: 1751109498    时间: 2021-3-21 13:32
张天师 发表于 2021-3-21 11:59
第一个:KZ端口没有初始化;
第二个:uc m;//定义变量 m。m为局部变量,不能实现累加功能。要改为全局变 ...

好的 我改改试试  十分感谢
作者: taotie    时间: 2021-3-21 13:51






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