第一范文网 - 专业文章范例文档资料分享平台

基于单片机的视力保护器电路的设计

来源:用户分享 时间:2025/5/30 2:00:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

sbit GetLight=P2^0; //光照输入 sbit GetDis=P3^2; //测距中断

sbit Set40=P3^0;//555超声波发射使能端 //全局变量定义

uchar minutes,seconds,counter; //分、秒、时计数 uchar timeflag=0; //45分钟到标志 uchar time5sflag=0;//光照太弱 uint time=0;//超声波传播的距离 uchar backwaveflag=0;//检测到回波标志 uint distance=0;//计算的距离

uchar countwave=0;//接收到的超声波个数 忽略几个 减少干扰 void main(void) {

//变量定义

uint countlight=0,counttime=0,countdis=0; uint i=0; //端口初始化

Set40=0;//发送超声波禁止 ASoundTime=1; P1=0XFF;//关LED P2=0XFF;//准备输入 Init(); while(1) {

//光照太弱 进行报警 if(GetLight==0) {

countlight++;

if(countlight==15000){ALight=~ALight;countlight=0;}

26

} else {ALight=1;}

}

//45分钟时间到 if(timeflag==1) { }

//1s中到发射测距

for(i=0;i<10;i++)

{ASoundTime=~ASoundTime;ATime=~ATime;delayms(400);} timeflag=0;

if(time5sflag==1 ) { }

if(backwaveflag==1)//检测到回波 { }

time=TH1;

time=(time<<8)|TL1;

distance=(int)((time*170)/1000); if(distance

else if(distance>DISBOUND) ADistance=1; backwaveflag=0;

SendSound(8); time5sflag=0;

27

}

/*********************初始化子程序*************************/ void Init(void) {

TMOD=0x11;//定时器0 定时器1 16位定时模式

IT0=1;//INT0下降沿触发中断

TH0=(65536-46075)/256;

TL0=(65536-46075)%6;

ET0=1; //定时器0中断允许位 TR0=1;//启动定时器0

counter=0;minutes=0;seconds=0; }

/**********************发射超声波***************************/ void SendSound(uchar nums) {

uint i=0; Set40=0; nums=nums; Set40=1;

for(i=0;i

ET1=1; //定时器1中断允许位 TR1=1;//启动定时器1

EX0=1; //开启中断0

28

}

/********************外部中断0计算距离***********************/ void int0srv(void) interrupt 0 {

//distance=SOUNDSPEED*time/1000000/2; countwave++; if(countwave==2)

{ }

/*****************T0计时子程序 计算是否超过45分钟******************/ void timer0() interrupt 1 using 2 //45分钟到则标志位置1报警 {

TH0=(65536-46075)/256;

TL0=(65536-46075)%6;

ET1=0; //定时器1中断允许位

TR1=0;//启动定时器1

EX0=0;//INT0允许中断 backwaveflag=1; countwave=0;

}

counter++;

if(counter==20) {

seconds++;

// if(seconds==5)

{time5sflag=1;}

counter=0;

if(seconds==60) {

29

搜索更多关于: 基于单片机的视力保护器电路的设计 的文档
基于单片机的视力保护器电路的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5b3yt12yjo4oweh0q68m0sr9z0p01l00o1f_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top