为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汽车远近光灯智能控制系统的设计与实现

2017-10-07 17页 doc 76KB 292阅读

用户头像

is_682974

暂无简介

举报
汽车远近光灯智能控制系统的设计与实现汽车远近光灯智能控制系统的设计与实现 汽车电子设计竞赛 汽车远近光灯智能控制系统的设计与实现 设计人员: 指导老师: 完成时间: 1 摘 要: 本汽车远近光灯智能控制系统分为远光灯和近光灯光强检测部分、汽车环 境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮 灭情况部分、主动按键自由控制部分。整个系统主要以模拟电路为主,配合数字 电路控制,全系统通过AT89S52单片机进行全局控制,利用光敏电阻进行可靠的 可见光光强检测。通过论证,本系统能够很好地实现汽车的灯光亮度调节和远近 光灯的转换。...
汽车远近光灯智能控制系统的设计与实现
汽车远近光灯智能控制系统的与实现 汽车电子设计竞赛 汽车远近光灯智能控制系统的设计与实现 设计人员: 指导老师: 完成时间: 1 摘 要: 本汽车远近光灯智能控制系统分为远光灯和近光灯光强部分、汽车环 境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮 灭情况部分、主动按键自由控制部分。整个系统主要以模拟电路为主,配合数字 电路控制,全系统通过AT89S52单片机进行全局控制,利用光敏电阻进行可靠的 可见光光强检测。通过论证,本系统能够很好地实现汽车的灯光亮度调节和远近 光灯的转换。 关键字:远光灯,近光灯,AT89S52,光强检测,调节光亮度 The Auto Distance Headlight Automatic Monitoring Electrical System Abstract: The auto distance headlight automatic monitoring electrical system can be divided into long-and-short distance light force monitoring part, auto environment light force automatic monitoring part, clock monitoring automatic power-on part, liquid crystal displaying long and short distance light on-and-off part, active automatic pressing controlling part. The whole system is focused on analogous circuit and accompanied with digital circuit monitoring. The system controls the whole condition through 51MCU and detects the visible light force brightness by photoresistor reliably. Based on demonstrations, the system can perform auto light force adjustment and long and short distance light transferring. Key words: long distance light short distance light AT89S52, light force detection adjusting light force brightness 2 (一)系统: 系统方案的选择与论证 基本方案论证 本设计硬件电路分为系统控制部分、远光灯和近光灯光强检测部分、汽车 环境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远 近光灯亮灭情况部分、自动按键自由控制部分六大部分。 方案 系统采用AT89S52进行全局控制,汽车环境光强检测并自动调光部分采用光敏电阻与BTS629A所组成的外围电路来检测灯光与自动调光,无需单片机控制;远光灯和近光灯光强检测部分采用了光敏电阻与比较器根据“0”、“1”电平来判别远光灯和近光灯;时钟检测智能开启灯光部分采用了DS1307实时时钟芯片,使单片机能够实时根据白天和黑夜的两个时间段分别控制,实时操作;自动按键自由控制部分,具备人性化操作,无论在那个时间、那种情况,司机都可以自由的操作车灯;液晶显示部分则采用LCD1602来提醒司机当前车灯的情况。 (二)功能指标 1.功能:系统通过AT89S52单片机进行全局控制,利用光敏电阻进行可靠的可见光光强检测,很好地实现了汽车的灯光亮度调节和远近光灯的转换,也可以通过键盘实现车灯的自动控制和手动控制的切换,同时灯也可以根据时间来开启和关闭,液晶显示当前灯的开启情况。 (三)实现原理 (1)系统硬件主要组成部分 系统控制模块:本模块采用了AT89S52便宜的51内核单片机,晶振为11.0592MHz,其中外围电路包括复位电路。 远近光灯检测模块:本模块采用了光敏电阻和比较器为基础的光强测量电路,比较器采用了uA741集成运放。通过调整电位器来实现光强强度检测,比较器输出为高电平,则为远光灯,否则就是近光灯。 自动调光模块:该模块采用了BTS629A与光敏电阻构成的环境光强检测与自动调光电路,当汽车所在环境中的光线变强,光敏电阻立刻检测到光线的变化,并且转换为电压的变化,输出到调光芯片BTS629A的2号管脚,实现同步调光。 时钟模块:该模块用于检测白天和黑夜,使单片机可以在不同情况下控制车灯的亮灭。 液晶显示模块:该模块用于提醒提示司机当前的车灯亮灭情况。 主动按键自由控制模块:该模块由3个简单的按键构成,其中一号按键是开启远光灯,二号按键是开启近光灯,三号按键是自由模块,由远近光灯检测模块来判断是开启远光灯还是近光灯。方便司机随时操作车灯。 3 (四)硬件框图 CPU AT89S52 系统控制 远近光 灯检测远近光灯 模块 按键模块 液晶显示 时钟模块 自动调光模块 图1 硬件组成方案 (五)软件流程 4 开始(Initial()函数) 读时钟(Read_RTC()) 时间在夜晚吗,(时钟规定时间) 检测p3.2高电平还是低电 平, 远光灯 P1.2||p1.3||p1.4||=0 近光灯 时间还在晚上 吗, 自动 调节 模式 读时钟(Read_RTC()) 显示时钟(Display()) 检测(p1.2||p1.3||p1.4||时间在晚上吗,)是否动作, 5 (六)系统测试方案 系统分为远光灯和近光灯光强检测部分、汽车环境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮灭情况部分、主动按键自由控制部分。首先是进行单个模块的测试,然后再将所有的模块结合软件一起测试。由于本系统的时钟模块和液晶模块,平常接触较多,相对比较熟悉,所以就只测试了远光灯和近光灯光强检测部分和汽车环境光强检测并自动调光部分。 测试设备:示波器,万用表、稳压直流电源、手电筒、电脑和编程器 测试数据: 测试: 由调试的数据可以知道,车灯根据外界环境的变化,当在晚上的时间里,单片机会根据车的状态自动开灯,在外界光强暗时,车灯功率大,当外界功光强强时,车灯功率小,此时达到一个节能的效果。 实现功能: 晚上汽车会车时,根据系统远光灯和近光灯光强检测部分检测对面汽车远近光的开启情况,来自动切换自己车灯的远近光灯,以此减少交通事故。同时汽车还会根据汽车环境光强检测并自动调光部分检测到的环境光强来调节自身车灯的光强,以大到节能的目的。 特色:通过远近光灯的切换,可以减少司机由于光照过强,而引起的交通事故,达到了安全的效果。汽车环境光强检测并自动调光部分可以自动调节汽车的灯的亮度,减少了汽车的灯泡的功率消耗,从而实现了节能,环保的理念。 (七)附录 1、含源代码和程序清单(一部分) #include #include /**********************定义LCD1602控制字******************************/ 6 #define LCD_SYS_MODE 0X38 //8位数据总线,2行显示,5*7点阵 #define LCD_NO_FLASH 0X0c //开显示,光标不显示,光标不闪烁 #define LCD_SH 0X14 //光标左移 #define LCD_NO_SHIFT 0X06 //AC加1,光标移动,内容不移动 #define LCD_CLEAR_SCREEN 0X01 //清屏 #define LCD_GO_HOME 0X02 //AC=0,光标,画面回HPME //输入方式设置 #define LCD_AC_AUTO_INCREASEMENT 0X06 //数据读写操作后,AC自动增一 #define LCD_AC_AUTO_DECREASEMENT 0x04 // 减一 #define LCD_MOVE_ENABLE 0X05 //数据读写操作后,画面平移 #define LCD_MOVE_DISABLE 0X04 // 不动 //设置显示,光标及闪烁开关 #define LCD_DISPLAY_ON 0X0C //显示开 #define LCD_DISPLAY_OFF 0X08 //显示关 #define LCD_CURSOR_ON 0X0A //光标显示 #define LCD_CURSOR_OFF 0X08 //光标不显示 #define LCD_CURSOR_BLINK_ON 0X09 //光标闪烁 #define LCD_CURSOR_BLINK_OFF 0XO8 //光标不闪烁 //光标,画面移动,不影响DDRAM #define LCD_LEFT_MOVE 0X18 //LCD显示左移一位 #define LCD_RIGHT_MOVE 0X1C //LCD显示右移一位 #define LCD_CURSOR_LEFT_MOVE 0X10 //光标左移一位 #define LCD_CURSOR_RIGHT_MOVE 0X14 // 右 //工作方式设置 #define LCD_DISPLAY_DOUBLE_LINE 0x38 //两行显示 #define LCD_DISPLAY_SIGLE_LINE 0X30 //一行显示 /***********************LCD1602地址相关 ******************************/ #define LINE1_HEAD 0x80 // 第一行DDRAM起始地址 #define LINE2_HEAD 0xc0 // 第二行DDRAM起始地址 #define LINE1 0 //第一行 #define LINE2 1 //第二行 #define LINE_LENGTH 16 //每行的最大字符长度 7 /***********************LCD1602接线引脚定义 ************************** **********************可根据实际电路改变 *******************************/ #define LCDIO P0 //定义P2口与LCD1602的数据口相接 sbit LCD_RS=P2^7; sbit LCD_RW=P2^6; sbit LCD_EN=P2^5; sbit P3_2=P3^2; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P2_2=P2^2; sbit P1_4=P1^4; sbit P2_3=P2^3; /**********************另外相关的定义 *********************************/ #define DELAYTIME 100 // #define HIGH 1 #define LOW 0 #define TURE 1 #define FALSE 0 #define uchar unsigned char #define uint unsigned int /*************************以下是函数的申明部分 *************************/ void LCD_init(void); //LCD1602初始化 void LCD_send_command(uchar command); // void LCD_send_data(uchar dat); void LCD_write_string(uchar x,uchar y,char *Data); void LCD_delay(void); void LCD_write_char( unsigned x,unsigned char y,unsigned char dat); void LCD_set_position(unsigned char x); void Display1(void); /*********************结束 ***********************************************/ 8 /***************************DS1307开始 *****************************************************************/ #define Wait1us _nop_(); #define Wait2us {_nop_();_nop_();} #define Wait4us {Wait2us;Wait2us;} #define Wait8us {Wait4us;Wait4us;} #define Wait10us {Wait8us;Wait2us;} #define WRITEDS1307 0xD0 #define READDS1307 0xD1 sbit SDA=P2^1; //DS1307 Serial-Data Input pin 5 sbit SCL=P2^0; //DS1307 Serial-Clock Input pin 6 /************************************************************/ void I2C_start(void);//I2C start function void I2C_stop(void);//I2C stop function //void I2C_send_ack(void);//I2C send responsion function void I2C_send_noack(void); unsigned char I2C_write_byte(unsigned char IIC_data);//I2C bus write byte function unsigned char I2C_read_byte(void);//I2C bus read byte function /***********************************************************************/ void Write1307(unsigned char add,unsigned char dat);//write information to ds1307 unsigned char Read1307(unsigned char add);//read information from ds1307 void Read_RTC(void);//read RTC void Set_RTC(void);//set RTC /***********************************************************************/ code unsigned char set_rtc_code[7]={55,59,20,4,07,8,8};//秒分时周日月年0到7 code unsigned char rtc_address[7]={0x00,0x01,0x02,0x03,0x04,0x05,0x06}; code unsigned char *day[7]={"Mon","Tue","Wen","Thu","Fri","Sat","Sun"}; unsigned char read_rtc_code[7]; /***********************************************************************/ void Initial(void);//system initize function void Display(void);//RTC display function /***********************************************************************/ void main(void) { int i; Initial(); 9 while(1) { P1_2=LOW; P1_3=LOW; P1_4=LOW; Read_RTC(); if((0<=read_rtc_code[2]&&read_rtc_code[2]<=6||18<=read_rtc_code[2]&&read_rtc_ code[2]<=24)&&P2_2==HIGH&&P2_3==LOW) { while((0<=read_rtc_code[2]&&read_rtc_code[2]<=6||18<=read_rtc_code[2]&&read_ rtc_code[2]<=24)&&P1_2==LOW&&P1_3==LOW&&P1_4==LOW) { P1_4=HIGH; Read_RTC(); Display(); } } else LCD_send_command(LCD_CLEAR_SCREEN ); while(P1_2==LOW&&P1_3==LOW&&P1_4==LOW&&6
/
本文档为【汽车远近光灯智能控制系统的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索