完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 上弦月ゝ 于 2012-12-14 21:07 编辑
这是声光控智能开关的电路原理图,不知道为什么仿真总之跟理论上的不同。检查了下电路。发现灯电路那块不管P点电压高还是低。灯总是亮的。正常情况灯应该是低的亮高时灭。另外。单片机还总是输出高电平,影响到了光控电路与声控电路的电平接受。本人菜鸟求大神指点呀。另附单片机中c程序 #include #define uint unsigned int //宏定义 #define uchar unsigned char /******************************************************* 端口定义 ********************************************************/ ***it guang=P1^0; //光敏电阻接的IO口 ***it deng= P3^5; //灯接的IO口 /*******************************************************/ uchar num=0; uint num1=0; bit flag=0; /*************************************************** 函数名称:主函数 函数功能: ****************************************************/ void main() { TMOD=0x01; //设置定时器0工作方式0 TH0=(65536-50000)/256; //装初值 TL0=(65536-50000)%256; EA=1; //开总中断 ET0=1; //开定时器中断 TR0=0; //启动定时器0 deng=1; //控制灯的IO口置1 EX0=1; //开外部中断0 IT0=1; //设置中断方式为下降沿出发方式 while(1) { if(flag==1) { deng=1; flag=0; } } } /****************************************************** 函数名称:定时器/计时器0中断子函数 函数功能: ******************************************************/ void T0_time() interrupt 1 //打开定时器 { TH0=(65536-50000)/256; //重装初值 TL0=(65536-50000)%256; num++; //50ms num加1 if(num>=20) //等于20 一秒时间到 { num=0; //num清0 num1++; //num1++ if(num1>=60) //一分钟到 { TR0=0; //定时器关闭 num1=0; //num1清0 flag=1; //标志位flag置1 } //一秒自加一次 } } void int1() interrupt 0 //有声音 声音IO口出现一个低电平 引起外部中断 { if(guang==1) //光暗的时候 { TR0=1; //开定时器 deng=0; //开灯 } } |
|
相关推荐
2个回答
|
|
怎么没人
|
|
|
|
谢谢分享。。。。。。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4999 浏览 3 评论
6295 浏览 1 评论
6557 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
8307 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1248 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 12:04 , Processed in 0.686530 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号