总体设计

设计的总体思路是:运用雨滴传感器感应雨量的大小,把感应信号输给单片机系统,然后通过软件控制雨刷电机根据相应的环境做出不同的转动。例如,当检测为小雨量的时候,电机工作在小雨模式(电机旋转一个来回要停留10秒再继续进行旋转);当检测为中大雨的时候则,启动中大雨运转模式(电机旋转一个来回停止5秒后再继续工作);当检测为大雨的时候,则启动大雨运转模式(电机连续进行来回旋转)。设计中运用STC89C51单片机,步进电机采用ULN2003AN驱动芯片进行驱动。
2.1.2 总体设计框架图
自动雨刷控制系统总体设计框图如图2-1所示,整体设计由6个部分构成,分别是:单片机最小系统、LCD1602显示模块、按键控制模块、雨量感应传感模块、步进电机控制电路模块。
单片机最小系统是自动雨刷控制系统的核心,连接数据采集端、状态显示端和命令控制端;
本设计中的显示部件由LCD1602显示模块组成,主要功能是显示雨量大小状态显示,雨量最低开启值显示,比较直观显示整个系统的状态;
键盘模块主要是雨量上下限值按键控制模块,实现手动操作设置雨量大小上下限值的设定;
雨量传感器采用专用的湿度传感器,成本低,控制灵活,电阻是模拟信号,需要经过信号调理电路,将其转变成数字信号传送给单片机;
步进电机控制电路模块是系统的控制端,其控制命令来源于单片机,但是是由传感器感应雨量大小触发的。


原理图:

单片机最小系统包括复位电路和时钟电路两部分,其中复位电路是由按键、保护电阻、上拉电阻和电容组成,可以实现按键手动复位和上电自动复位,与单片机的9脚复位端相连。52单片机是高电平复位,所以给单片机加5V电源(上电)启动时的,电容充电相当于短路,RSTET上的电压就是VCC,这时单片机就是复位状态。
最小系统如图4-1所示。

晶振电路。此单片机内部包括一个反相放大器和一个高增益,它的输入端为引脚XT1,其输出端为引脚XT2。通过两个引脚在并接一个振荡器和两个电容就构成了一个自激振荡器。STC89C51RC电路采用11.0592MHZ的晶振,

步进电机驱动电路

由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专用电路控制驱动器。典型步进电机控制系统:控制器可以发出脉冲频率从几赫兹到几十千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列。环形分配器的主要功能是把来自控制环节的脉冲
序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输人端,以驱动步进电机的转动。
步进电机主要通过ULN2003芯片进行驱动,驱动电路包括ULN2003主芯片,1个排阻,1个220uf电容。IN1-IN4为信号输入端,与单片机P1.0-P1.3接口对接进行驱动,同时需要10K的上拉排阻。IN1-IN4变化不同信号,OUT3-5作为输出信号控制电机旋转。ULN2003的8号引脚GND接地,9号引脚COM接VCC。驱动电路如图4-2所示。

按键电路

单片机组成的小系统中,有的需要人机交互功能,按键是最常见的输入方式。最常见的按键电路大致有,一对一的直接连接和动态扫描的矩阵式连接两种。一对一的直接连接就是一个按键直接对应一个CPU的输入口,这样的电路简单直接,一个按键独占一个端口,在按键数量较少端口数量富裕时可以直接使用。但很多场合需要的按键数比较多,要尽量少地占用端口就必须使用矩阵式的按键链接。
由于本设计按键所需不多,加上复位按钮一共4个按钮。因此每个按钮占用一个单片机接口。电路图如图4-4所示。P3.2-P3.4接的是单片机的P3端口,如果对应的按键被按下就会有对应的功能,最终实现对雨刷的控制。按键电路如图4-3所示:

系统软件

#include <REGX52.H>
#include <ADC0832.H>
#include <LCD1602.H>
#include <eeprom52.H>uchar i=0;
uint dat;
uint dat1=0;
uint dat2=0;
uint dat_value=0;
uint DJ_dat=0,ms=0,ms_1=0;
uchar loop=0;sbit key_1=P3^1;
sbit key_2=P3^2;
sbit key_3=P3^3;
sbit key_4=P3^4;sbit led0=P2^0;
sbit led1=P2^1;bit key_1_flag=0;
bit key_2_flag=0;
bit key_3_flag=0;
bit key_4_flag=0;bit A_M=1;
uchar speed_flag=0;uint Value=1000;
uint water_h=0;
uint water_l=0;
uchar state=0;
bit  star_off=1,zheng_fan=1,s0=0,ir_on=0;uchar zz[]=                  //正转数据{0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};uchar fz[]=                //反转数据{0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};void display(){LCD1602_write(0,0x80);LCD1602_writebyte("Water:");if(dat>99) LCD1602_write(1,0x30+dat/100%10);else        LCD1602_write(1,' ');if(dat>9)  LCD1602_write(1,0x30+dat/10%10);  else        LCD1602_write(1,' ');LCD1602_write(1,0x30+dat%10);LCD1602_writebyte("% ");if(A_M==0) LCD1602_writebyte("A ");else       LCD1602_writebyte("M ");if(star_off==0) LCD1602_writebyte("K ");else       LCD1602_writebyte("G ");LCD1602_write(1,0x30+speed_flag%10);LCD1602_writebyte(" ");dat_value=dat;LCD1602_write(0,0xC0);LCD1602_writebyte("H:");if(state==1&&s0) LCD1602_writebyte("   ");else                               {if(water_h>99) LCD1602_write(1,0x30+water_h/100%10);else         LCD1602_write(1,' ');if(water_h>9)  LCD1602_write(1,0x30+water_h/10%10);  else        LCD1602_write(1,' ');LCD1602_write(1,0x30+water_h%10);           }LCD1602_writebyte("%    ");                  LCD1602_writebyte("L:");if(state==2&&s0) LCD1602_writebyte("   ");else{if(water_l>99) LCD1602_write(1,0x30+water_l/100%10);else       LCD1602_write(1,' ');if(water_l>9)  LCD1602_write(1,0x30+water_l/10%10);  else        LCD1602_write(1,' ');LCD1602_write(1,0x30+water_l%10);               }LCD1602_writebyte("%");      }
void key_dispose(){if(key_1==0){LCD1602_delay(20);if(key_1_flag){key_1_flag=0;state=(state+1)%3;}}else key_1_flag=1;if(key_2==0){LCD1602_delay(20);if(key_2_flag){key_2_flag=0;if(state==1) {if(water_h<100)       water_h++; SectorErase(0x2000);byte_write(0x2000,water_h);}if(state==2){if(water_l<water_h-1) water_l++;SectorErase(0x2200);byte_write(0x2200,water_l);} if(state==0){A_M=~A_M;   star_off=1;} }}else     key_2_flag=1;if(key_3==0){LCD1602_delay(20);if(key_3_flag){key_3_flag=0;if(state==1) {if(water_h>water_l+1) water_h--;SectorErase(0x2000);byte_write(0x2000,water_h);}if(state==2){if(water_l>0)         water_l--;SectorErase(0x2200);byte_write(0x2200,water_l);}if(state==0){if(A_M==1){star_off=~star_off;if(star_off==0) speed_flag=1;else            speed_flag=0;}}  }}else key_3_flag=1;if(key_4==0){LCD1602_delay(20);if(key_4_flag){key_4_flag=0;if(A_M){ speed_flag=(speed_flag+1)%3;}}}else key_4_flag=1;if(A_M==0) {led0=0;led1=1;}else {led1=0;led0=1;}if(speed_flag==2){Value=260;}else  if(speed_flag==1||speed_flag==0) {Value=500;}}void police_dispose()        {   ir_on=0;if(dat_value>water_h){star_off=0; speed_flag=2;}else  if(dat_value>=water_l&&dat_value<=water_h) {star_off=0; speed_flag=1;               } else if(dat_value<water_l){star_off=1;   speed_flag=0;  }}void main(){water_h=byte_read(0x2000);water_l=byte_read(0x2200);if(water_h<water_l||water_h>100||water_l<0){water_h=60;water_l=10;}TMOD=0x11;TH1=0x3c;TL1=0xb0;TH0=0x3c;TL0=0xb0;ET1=1;ET0=1;EA=1;TR0=1;TR1=1;LCD1602_cls();while(1){if(A_M==0) { police_dispose();      if(star_off==0){  if(DJ_dat==0) loop=0;while(DJ_dat<180){P1=P1&0xf0|zz[loop];                         loop=(loop+1)%8;if(loop==0) DJ_dat++;LCD1602_delay(Value);                    }          if(DJ_dat==120)loop=0; while(DJ_dat!=0){P1=P1&0xf0|fz[loop];loop=(loop+1)%8;if(loop==0) DJ_dat--;LCD1602_delay(Value);}}          }else {   if(speed_flag!=0) {if(star_off==0){   if(DJ_dat==0) loop=0;while(DJ_dat<180){P1=P1&0xf0|zz[loop];                         loop=(loop+1)%8;if(loop==0) DJ_dat++;LCD1602_delay(Value);                    }          if(DJ_dat==120)loop=0; while(DJ_dat!=0){P1=P1&0xf0|fz[loop];loop=(loop+1)%8;if(loop==0) DJ_dat--;LCD1602_delay(Value);}         }   }else {loop=0;  DJ_dat=0;}}          }      //1毫秒定时}void time_1(void) interrupt 1{TH0=0x3c;TL0=0xb0;ms_1++;  if(i<10){i++;dat1+=A_D(0);               //满量程0-255   实际完全浸入水中是255-36= 219     0-219  }else{i=0;  dat1=dat1/10;if(dat1<=36)   dat1=36;dat1=dat1-36;dat=100-(dat1/2.19);           dat1=0;       }if(ms_1>=10)   {ms_1=0;s0=~s0;} }void time_0(void) interrupt 3{TH1=0x3c;TL1=0xb0;display();key_dispose();}

.

链接:https://pan.baidu.com/s/1DZ-mRJ2Vway1UkccvNx-7g
提取码:li7c

.

基于51单片机的智能汽车雨刷控制系统方案原理图程序设计相关推荐

  1. 基于51单片机的智能鱼缸设计。 有原理图,程序,原文,可代做实物。 才用STC12C5A60S2,最新款国产51单片机

    基于51单片机的智能鱼缸设计. 有原理图,程序,原文,可代做实物. 才用STC12C5A60S2,最新款国产51单片机. 本系统设计的主要是基于单片机为核心,设计一款集温度检测.恒温控制.步进电机控制 ...

  2. T027基于51单片机的智能窗帘窗户控制系统proteus仿真原理图PCB

    功能: 0.本系统采用单片机STC89C52作为系统的主控芯片 1.系统采用LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.系统具有四个功能按键,支持手动按键/定时/遥控三种模式控制窗帘 ...

  3. 基于51单片机的智能汽车雨刮器的程序设计proteus仿真

    硬件设计 (末尾附文件) 代码设计 #include<reg51.h> #include<stdio.h> #include<intrins.h> #define ...

  4. 基于51单片机的智能停车场车位收费系统原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 2.采用LCD1602液晶屏可以实时查看车位使用情况 3.采用超声波模块HC-SR04来检测车位是否有车,且每个车位都附有LED指示灯来实时显示车 ...

  5. 基于51单片机的超声波倒车雷达防撞系统 原理图程序设计 数码管显示

    硬件设计 (末尾附文件) 刚刚讲了一下基于LCD1602显示的倒车雷达,接下来讲解基于数码管的 原理图: 程序设计 #include <reg52.h> //调用单片机头文件 #defin ...

  6. 基于51单片机的智能鱼缸设计

    基于51单片机的智能鱼缸设计. 有原理图,程序,原文,可代做实物. 才用STC12C5A60S2,最新款国产51单片机. 本系统设计的主要是基于单片机为核心,设计一款集温度检测.恒温控制.步进电机控制 ...

  7. 基于51单片机的智能教室系统

    目录 基于51单片机的智能教室系统 一.原理图 二.部分代码 三.视频演示 基于51单片机的智能教室系统 功能: 1.通过LCD实时温度.光照强度.人数以及手自动模式 2.温度过高且有人的情况下打开空 ...

  8. 3、基于51单片机的智能水箱控制系统-温度-PH值-水位(仿真+程序+原理图)

    目录 基于51单片机的智能水箱控制系统 1.主要功能 2.实验结果 3.仿真工程 4.原理图 5.程序源码 6.资源获取 基于51单片机的智能水箱控制系统 1.主要功能 51单片机检测水箱内温度,ph ...

  9. 基于51单片机的智能小车(寻迹功能)

    题目:基于C52的智能小车设计与制作 1设计目的 通过构建智能小车,培养设计并实现自动控制系统的能力,在实践过程中,熟悉以单片机为核心控制芯片,设计小车的检测,驱动和显示等外围电路,采用智能控制算法实 ...

最新文章

  1. “Assign Random Colors” is not working in 3ds Max 2015
  2. 国际顶级学界业界大咖云集,9 场技术论坛布道,2019 嵌入式智能国际大会强势来袭!...
  3. Maven 的这 7 个问题你思考过没有?
  4. QEMU-KVM自己主动创建虚拟机,以指定IP构造
  5. 类和类之间的关系解析-1
  6. 现在是2016-09-23,查询2个月后的月份和入职的月份相同的数据
  7. 在Ubuntu 上怎么连接装有iOS 7的iPhone或iPad
  8. Python_生成器Generator
  9. java 导出文件编码,java 导出文件编码问题
  10. 深度学习之optimizer 优化方法
  11. 54 - 算法 - 动态规划问题 连续子序列和最大
  12. jQuery form插件使用详解
  13. 中科院合肥物质科学研究院葛运建团队: 智能机器人带来更美好生
  14. 3dmax:3dmax的软件中右边工具栏的创建、修改、层次、运动、显示、几何体的粒子系统、工具、灯光、摄影、空间扭曲、系统、实用程序、辅助对象等使用技巧之详细攻略
  15. 附录E-分贝(dB和dBm)的理解
  16. 已解决:Torch not compiled with CUDA enabled
  17. 将ubuntu光盘作为安装源_Ubuntu之apt-get光盘源配置小结
  18. 【洛谷T2695 桶哥的问题——吃桶】
  19. python-数据分析(3-Matplotlib之各种图形应用)
  20. (16)万能查询还是万恶查询?

热门文章

  1. 开启阿里云80端口:如何配置阿里云服务器安全组
  2. 我的小游戏上线海外AppStore完整流程心得
  3. KEEP TURE
  4. 【雷达通信】雷达探测项目仿真(Matlab代码实现)
  5. python取模10^9+7_【Python爬虫】笨办法学python 习题1-10
  6. 回顾总结-----第九届中国云计算大会,量子计算机为最大亮点
  7. uniapp使用canvas完成手写电子签名
  8. 货郎问题(暴力求解)
  9. STM32基于固件库学习笔记(11)RTC实时时钟
  10. (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究(RTC-DS1302时钟)