汽车远近光灯智能控制系统的设计与实现及汽车空调控制系统模拟仿真电路设计1.docx
《汽车远近光灯智能控制系统的设计与实现及汽车空调控制系统模拟仿真电路设计1.docx》由会员分享,可在线阅读,更多相关《汽车远近光灯智能控制系统的设计与实现及汽车空调控制系统模拟仿真电路设计1.docx(49页珍藏版)》请在冰豆网上搜索。
汽车远近光灯智能控制系统的设计与实现及汽车空调控制系统模拟仿真电路设计1
汽车电子设计竞赛
汽车远近光灯智能控制系统的设计与实现
设计人员:
指导老师:
完成时间:
摘要:
本汽车远近光灯智能控制系统分为远光灯和近光灯光强检测部分、汽车环境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮灭情况部分、主动按键自由控制部分。
整个系统主要以模拟电路为主,配合数字电路控制,全系统通过AT89S52单片机进行全局控制,利用光敏电阻进行可靠的可见光光强检测。
通过论证,本系统能够很好地实现汽车的灯光亮度调节和远近光灯的转换。
关键字:
远光灯,近光灯,AT89S52,光强检测,调节光亮度
TheAutoDistanceHeadlightAutomaticMonitoringElectricalSystem
Abstract:
Theautodistanceheadlightautomaticmonitoringelectricalsystemcanbedividedintolong-and-shortdistancelightforcemonitoringpart,autoenvironmentlightforceautomaticmonitoringpart,clockmonitoringautomaticpower-onpart,liquidcrystaldisplayinglongandshortdistancelighton-and-offpart,activeautomaticpressingcontrollingpart.Thewholesystemisfocusedonanalogouscircuitandaccompaniedwithdigitalcircuitmonitoring.Thesystemcontrolsthewholeconditionthrough51MCUanddetectsthevisiblelightforcebrightnessbyphotoresistorreliably.Basedondemonstrations,thesystemcanperformautolightforceadjustmentandlongandshortdistancelighttransferring.
Keywords:
longdistancelightshortdistancelightAT89S52,lightforcedetectionadjustinglightforcebrightness
(一)系统方案:
系统方案的选择与论证
基本方案论证
本设计硬件电路分为系统控制部分、远光灯和近光灯光强检测部分、汽车环境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮灭情况部分、自动按键自由控制部分六大部分。
方案
系统采用AT89S52进行全局控制,汽车环境光强检测并自动调光部分采用光敏电阻与BTS629A所组成的外围电路来检测灯光与自动调光,无需单片机控制;远光灯和近光灯光强检测部分采用了光敏电阻与比较器根据“0”、“1”电平来判别远光灯和近光灯;时钟检测智能开启灯光部分采用了DS1307实时时钟芯片,使单片机能够实时根据规定白天和黑夜的两个时间段分别控制,实时操作;自动按键自由控制部分,具备人性化操作,无论在那个时间、那种情况,司机都可以自由的操作车灯;液晶显示部分则采用LCD1602来提醒司机当前车灯的情况。
(二)功能指标
1.功能:
系统通过AT89S52单片机进行全局控制,利用光敏电阻进行可靠的可见光光强检测,很好地实现了汽车的灯光亮度调节和远近光灯的转换,也可以通过键盘实现车灯的自动控制和手动控制的切换,同时灯也可以根据时间来开启和关闭,液晶显示当前灯的开启情况。
(三)实现原理
(1)系统硬件主要组成部分
系统控制模块:
本模块采用了AT89S52便宜的51内核单片机,晶振为11.0592MHz,其中外围电路包括复位电路。
远近光灯检测模块:
本模块采用了光敏电阻和比较器为基础的光强测量电路,比较器采用了uA741集成运放。
通过调整电位器来实现光强强度检测,比较器输出为高电平,则为远光灯,否则就是近光灯。
自动调光模块:
该模块采用了BTS629A与光敏电阻构成的环境光强检测与自动调光电路,当汽车所在环境中的光线变强,光敏电阻立刻检测到光线的变化,并且转换为电压的变化,输出到调光芯片BTS629A的2号管脚,实现同步调光。
时钟模块:
该模块用于检测白天和黑夜,使单片机可以在不同情况下控制车灯的亮灭。
液晶显示模块:
该模块用于提醒提示司机当前的车灯亮灭情况。
主动按键自由控制模块:
该模块由3个简单的按键构成,其中一号按键是开启远光灯,二号按键是开启近光灯,三号按键是自由模块,由远近光灯检测模块来判断是开启远光灯还是近光灯。
方便司机随时操作车灯。
(四)硬件框图
图1硬件组成方案
(五)软件流程
(六)系统测试方案
系统分为远光灯和近光灯光强检测部分、汽车环境光强检测并自动调光部分、时钟检测智能开启灯光部分、液晶显示远近光灯亮灭情况部分、主动按键自由控制部分。
首先是进行单个模块的测试,然后再将所有的模块结合软件一起测试。
由于本系统的时钟模块和液晶模块,平常接触较多,相对比较熟悉,所以就只测试了远光灯和近光灯光强检测部分和汽车环境光强检测并自动调光部分。
测试设备:
示波器,万用表、稳压直流电源、手电筒、电脑和编程器
测试数据:
测试分析:
由调试的数据可以知道,车灯根据外界环境的变化,当在晚上的时间里,单片机会根据车的状态自动开灯,在外界光强暗时,车灯功率大,当外界功光强强时,车灯功率小,此时达到一个节能的效果。
实现功能:
晚上汽车会车时,根据系统远光灯和近光灯光强检测部分检测对面汽车远近光的开启情况,来自动切换自己车灯的远近光灯,以此减少交通事故。
同时汽车还会根据汽车环境光强检测并自动调光部分检测到的环境光强来调节自身车灯的光强,以大到节能的目的。
特色:
通过远近光灯的切换,可以减少司机由于光照过强,而引起的交通事故,达到了安全的效果。
汽车环境光强检测并自动调光部分可以自动调节汽车的灯的亮度,减少了汽车的灯泡的功率消耗,从而实现了节能,环保的理念。
(七)附录
1、含源代码和程序清单(一部分)
#include
#include
/**********************定义LCD1602控制字******************************/
#defineLCD_SYS_MODE0X38//8位数据总线,2行显示,5*7点阵
#defineLCD_NO_FLASH0X0c//开显示,光标不显示,光标不闪烁
#defineLCD_SH0X14//光标左移
#defineLCD_NO_SHIFT0X06//AC加1,光标移动,内容不移动
#defineLCD_CLEAR_SCREEN0X01//清屏
#defineLCD_GO_HOME0X02//AC=0,光标,画面回HPME
//输入方式设置
#defineLCD_AC_AUTO_INCREASEMENT0X06//数据读写操作后,AC自动增一
#defineLCD_AC_AUTO_DECREASEMENT0x04//减一
#defineLCD_MOVE_ENABLE0X05//数据读写操作后,画面平移
#defineLCD_MOVE_DISABLE0X04//不动
//设置显示,光标及闪烁开关
#defineLCD_DISPLAY_ON0X0C//显示开
#defineLCD_DISPLAY_OFF0X08//显示关
#defineLCD_CURSOR_ON0X0A//光标显示
#defineLCD_CURSOR_OFF0X08//光标不显示
#defineLCD_CURSOR_BLINK_ON0X09//光标闪烁
#defineLCD_CURSOR_BLINK_OFF0XO8//光标不闪烁
//光标,画面移动,不影响DDRAM
#defineLCD_LEFT_MOVE0X18//LCD显示左移一位
#defineLCD_RIGHT_MOVE0X1C//LCD显示右移一位
#defineLCD_CURSOR_LEFT_MOVE0X10//光标左移一位
#defineLCD_CURSOR_RIGHT_MOVE0X14//右
//工作方式设置
#defineLCD_DISPLAY_DOUBLE_LINE0x38//两行显示
#defineLCD_DISPLAY_SIGLE_LINE0X30//一行显示
/***********************LCD1602地址相关******************************/
#defineLINE1_HEAD0x80//第一行DDRAM起始地址
#defineLINE2_HEAD0xc0//第二行DDRAM起始地址
#defineLINE10//第一行
#defineLINE21//第二行
#defineLINE_LENGTH16//每行的最大字符长度
/***********************LCD1602接线引脚定义**************************
**********************可根据实际电路改变*******************************/
#defineLCDIOP0//定义P2口与LCD1602的数据口相接
sbitLCD_RS=P2^7;
sbitLCD_RW=P2^6;
sbitLCD_EN=P2^5;
sbitP3_2=P3^2;
sbitP1_2=P1^2;
sbitP1_3=P1^3;
sbitP2_2=P2^2;
sbitP1_4=P1^4;
sbitP2_3=P2^3;
/**********************另外相关的定义*********************************/
#defineDELAYTIME100//
#defineHIGH1
#defineLOW0
#defineTURE1
#defineFALSE0
#defineucharunsignedchar
#defineuintunsignedint
/*************************以下是函数的申明部分*************************/
voidLCD_init(void);//LCD1602初始化
voidLCD_send_command(ucharcommand);//
voidLCD_send_data(uchardat);
voidLCD_write_string(ucharx,uchary,char*Data);
voidLCD_delay(void);
voidLCD_write_char(unsignedx,unsignedchary,unsignedchardat);
voidLCD_set_position(unsignedcharx);
voidDisplay1(void);
/*********************结束***********************************************/
/***************************DS1307开始*****************************************************************/
#defineWait1us_nop_();
#defineWait2us{_nop_();_nop_();}
#defineWait4us{Wait2us;Wait2us;}
#defineWait8us{Wait4us;Wait4us;}
#defineWait10us{Wait8us;Wait2us;}
#defineWRITEDS13070xD0
#defineREADDS13070xD1
sbitSDA=P2^1;//DS1307Serial-DataInputpin5
sbitSCL=P2^0;//DS1307Serial-ClockInputpin6
/************************************************************/
voidI2C_start(void);//I2Cstartfunction
voidI2C_stop(void);//I2Cstopfunction
//voidI2C_send_ack(void);//I2Csendresponsionfunction
voidI2C_send_noack(void);
unsignedcharI2C_write_byte(unsignedcharIIC_data);//I2Cbuswritebytefunction
unsignedcharI2C_read_byte(void);//I2Cbusreadbytefunction
/***********************************************************************/
voidWrite1307(unsignedcharadd,unsignedchardat);//writeinformationtods1307
unsignedcharRead1307(unsignedcharadd);//readinformationfromds1307
voidRead_RTC(void);//readRTC
voidSet_RTC(void);//setRTC
/***********************************************************************/
codeunsignedcharset_rtc_code[7]={55,59,20,4,07,8,8};//秒分时周日月年0到7
codeunsignedcharrtc_address[7]={0x00,0x01,0x02,0x03,0x04,0x05,0x06};
codeunsignedchar*day[7]={"Mon","Tue","Wen","Thu","Fri","Sat","Sun"};
unsignedcharread_rtc_code[7];
/***********************************************************************/
voidInitial(void);//systeminitizefunction
voidDisplay(void);//RTCdisplayfunction
/***********************************************************************/
voidmain(void)
{
inti;
Initial();
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{
Read_RTC();
Display1();
P2_2=LOW;
P2_3=HIGH;
}
PT:
Read_RTC();
while(P1_2==LOW&&P1_3==LOW&&(0<=read_rtc_code[2]&&read_rtc_code[2]<=6||18<=read_rtc_code[2]&&read_rtc_code[2]<=24))
{
if(P3_2)
{
LCD_write_string(0x00,LINE1,"LIGHT1_ON");
LCD_write_string(0x00,LINE2,"LIGHT2_OFF");
P2_2=HIGH;
P2_3=HIGH;
for(i=0;i<10000;i++)
{
;
}
P2_3=HIGH;
P2_2=LOW;
for(i=0;i<10000;i++)
{
;
}
P2_2=HIGH;
P2_3=HIGH;
for(i=0;i<10000;i++)
{
;
}
while(P3_2==HIGH&&P1_2==LOW&&P1_3==LOW&&(0<=read_rtc_code[2]&&read_rtc_code[2]<=6||18<=read_rtc_code[2]&&read_rtc_code[2]<=24))
{
Read_RTC();
P2_2=HIGH;
P2_3=HIGH;
}
}
else
{
LCD_write_string(0x00,LINE1,"LIGHT1_OFF");
LCD_write_string(0x00,LINE2,"LIGHT2_ON");
P2_2=LOW;
P2_3=LOW;
for(i=0;i<10000;i++)
{
;
}
P2_2=HIGH;
P2_3=HIGH;
for(i=0;i<10000;i++)
{
;
}
P2_2=LOW;
P2_3=LOW;
for(i=0;i<10000;i++)
{;
}
while(P3_2==LOW&&P1_2==LOW&&P1_3==LOW&&(0<=read_rtc_code[2]&&read_rtc_code[2]<=6||18<=read_rtc_code[2]&&read_rtc_code[2]<=24))
{
Read_RTC();
P2_2=LOW;
P2_3=LOW;
}
}
}
if(P1_2)
{
LCD_send_command(LCD_CLEAR_SCREEN);
while(P1_3==LOW&&P1_4==LOW)
{
P2_2=HIGH;
P2_3=HIGH;
LCD_write_string(0x00,LINE1,"LIGHT1_ON");
LCD_write_string(0x00,LINE2,"LIGHT2_OFF");
}
}
elseif(P1_3)
{
LCD_send_command(LCD_CLEAR_SCREEN);
while(P1_2==LOW&&P1_4==LOW)
{
P2_2=LOW;
P2_3=LOW;
LCD_write_string(0x00,LINE1,"LIGHT1_OFF");
LCD_write_string(0x00,LINE2,"LIGHT2_ON");
}
}
elseif(P1_4)
{
gotoPT;
}
}
}
2、扩展应用系统电路图
3、查新报告
1.基于HT46R24的汽车车灯智能控制器设计。
设计了一种基于HT46R24的汽车车灯智能控制器,对该控制器的单片机控制电路、环境光检测电路与光强判断电路、继电控制车灯电路。
结果表明研制的汽车车灯智能控制器设计原理新颖,硬件简单,具有可靠的自动变光功能。
与汽车远近光灯智能控制系统比较
1.基于HT46R24的汽车车灯智能控制器是通过光敏电阻来检测光,把环境光检测电路的光通过光强判断电路来把光分为3种等级,微光区,弱光区,无光区。
通过检测到的状态来控制示宽灯,远光灯,近光灯的开启,通过控制3种车灯的开启来实现车灯的调节,利用等级来调光。
2.汽车远近光灯智能控制系统是通过光敏电阻来检测远光灯,实现远近光灯的自动切换,而自动调光是由BTS629芯片来实现,它是随着外界光强的变化来改变车灯的亮度,点对点的调光,实现的方法不同,而本系统能实现节能的效果。
4、应用资料与参考文献目录
【1】单片机原理与控制技术张志良
【2】51单片机及其C语言程序开发实例清华大学出版社
学院
毕业设计
汽车空调控制系统模拟仿真电路设计
系别:
专业名称:
学生姓名:
学号:
指导教师姓名、职称:
学院本科毕业论文(设计)开题报告
选题
汽车空调控制系统模拟仿真电路设计
院系
专业
学生姓名
指导教师
本选题的意义及国内外发展状况:
汽车空调作为提高汽车乘坐舒适性的一种重要手段已被广大汽车制作工作者及用户认可,汽车空调装置已经成为汽车中具有举足轻重的附件,不再是奢侈品。
汽车空调成为提高汽车竞争能力的重要标志之一。
本选题着重探讨汽车空调的自动化控制,对控制系统模拟仿真设计进行研究。
基于单片机的汽车空调控制器结构简单,成本低廉,在目前追求环保节省的工业设计趋势下,具有非常广阔的市场。
从1727年第一台汽车空调装置的出现到现在,其发展经历了行李箱式→仪表板式→整体式三个阶段。
环保和能源问题成为世界关注的焦点,也成为影响汽车业发展的关键因素,各种替代能源动力车的出现,为汽车空调业提出了新的课题与挑战。
最近及以后几年,汽车空调将在下列方面得到进一步发展。
一,系统控制向自动