找回密码
 注册

QQ登录

只需一步,快速开始

搜索

基于51单片机的超声波视力保护眼睛程序设计 光敏-PCF8591

[复制链接]
eng 发表于 2021-6-11 18:41:48 | 显示全部楼层 |阅读模式
本设计由STC89C52单片机电路+超声波模块电路+蜂鸣器报警电路+光敏电阻电路+PCF8591电路+1602液晶电路+电源电路。

1、通过超声波测距,通过光敏电阻检测光照,并且把距离和光照值(分为1-4档,显示1-4)实时显示在液晶上。
2、当距离小于30cm或者光线小于2档时,蜂鸣器报警。
3、系统上电后,无论什么情况,20秒时间到,蜂鸣器报警。(提醒人休息)

基于51单片机的超声波视力保护眼镜设计电路原理图如下: 1.png
部分源码:完整见附件
  1. #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  2. #include<stdio.h>
  3. #include "1602.h"
  4. #include "i2c.h"
  5. #include "delay.h"
  6. #include "math.h"

  7. sbit Echo=P1^1;                //触发使用
  8. sbit Trip=P1^0;
  9. sbit buzzer = P1^2;
  10. char displaytemp[16];
  11. unsigned long time_20ms;
  12. unsigned char DisFlag=0;
  13. unsigned char lighNum = 0;

  14. float JuLi;
  15. long JlCoun=0;

  16. void TIM2Inital(void);
  17. unsigned long times =0;
  18. void main (void)
  19. {  
  20.         TMOD|=0x01;                   //设T0为方式1,GATE=1;
  21.         TH0=0;
  22.         TL0=0;         
  23.         ET0=1;             //允许T0中断
  24.         EA=1;                           //开启总中断       
  25.                              
  26.         LCD_Init();           //初始化液晶
  27.         DelayMs(20);          //延时有助于稳定
  28.         LCD_Clear();

  29.        
  30.         while (1)         //主循环
  31.         {
  32.                 Trip=1;                           //启动一次模块                //不可以使用其他终端 容易造成死循环
  33.                 DelayUs2x(4);
  34.                 Trip=0;
  35.                 while(!Echo);                //当RX为零时等待
  36.                 TR0=1;                            //开启计数
  37.                 while(Echo);                        //当RX为1计数并等待
  38.                 TR0=0;                               
  39.                 JlCoun=(long)(TH0*256+TL0);
  40.                 TH0=0;
  41.                 TL0=0;
  42.                 JuLi=(float)(JlCoun*17)/100.0*1.08;     //算出来是mm
  43.                 if(JuLi<0)
  44.                 {
  45.                          JuLi = 0;
  46.                 }

  47.                 lighNum=ReadADC(0)*99/255;                                //读取AD光照
  48.                                
  49.                
  50.                 if((JuLi<300)||(lighNum<2))
  51.                 {buzzer =0;}
  52.                
  53.         }
  54. }
复制代码


原理图和完整源码: 基于51单片机的超声波视力保护眼镜设计-超声波-光敏-PCF8591-(电路图 程序源码).zip.zip (91.18 KB, 售价: 2 E币)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-11-23 16:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表