资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,电子工程基础讲座,智能车及光寻迹原理,一.,智能车寻迹简介,1,.,赛道,与小车寻迹前进,一.,智能车寻迹简介,2,.,小车硬件组成,2,.,小车硬件组成,小,车,车,模,Freescale,A,型车模,Freescale,B,型车模,Freescale,C,型车模,Freescale,D,型车模,一.,智能车寻迹简介,2,.,小车硬件组成,小,车,车,模,一.,智能车寻迹简介,2,.,小车硬件组成,电 机,驱 动,舵机控制,路径检测,速度,检测,小车,电路,MCU,二.,光寻迹,1.,光寻迹原理,光源选择,-,主动光源、被动光源,光谱选择,-,可见光、红外光,光性质,选择,-,普通光、激光,分类,:,反射式检测原理,红外发射管、红外接收二极管、红外接收三极管,红外反射式光电管,红外光电管,类型,2.,工作电路,二.,光寻迹,红外,发光管的正向导通压降约1V、额定工作电流100mA。我们在设计电路时,常设定其,(,I,1,),最大工作电流,50mA。,支路电阻=(,V,cc,-,V,D1,) /,I,max,为了提高路径检测稳定性和灵敏度。可在发光支路再是增串一只发光二级管,D,2,。此时,支路电阻应为多大?,V,CC,+,-,U,o,MCU,AD,红外寻迹工作电路,(2),发光电路:,光电转换电路:,T,1,是一只光敏三级管。在接收到前方射入的红外光时便产生电流,I,2,,,I,2,随接收的光强度而变;,I,2,流过,W,2,,便产生随射入,光强度而变的,电压降,U,0,。,I,2,v,cc,+,-,+,-,u,o,MCU,AD,红外寻迹工作电路,(1),R,1,W,1,W,2,D,1,+,-,U,o,T,1,I,1,D,2,三.,51,单片机,的,AD,转换,1.,STC12C5A60S2系列单片机,性能与特点,STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的新一代8051单片机。指令代码与8051完全兼容,;I/O口分布,与8051,类似;,与8051相比具有以下特点:,1.,增强型 8051 CPU,1T,单时钟/机器周期,,2. 工作电压:有5.5V - 3.5V(5V单片机)也有3.6V - 2.2V(3V单片机),3. 工作频率范围:035MHz,相当于普通8051的 0420MHz,4. 用户应用程序空间 8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节,.,5. 片上集成1280字节 RAM,6.,通用I/O口可设置成四种模式,:弱上拉、强推挽/强上拉、仅为输入/高阻、开漏,7.,ISP(在系统可编程)/ IAP(在应用可编程),无需专用编程器,无需专用仿真器,8. 有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM),9. 看门狗,10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地),11. 外部掉电检测电路: 在P4.6口有一个低压门槛比较器,12. 时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为5% 到10% 以内),13. 共4个16位定时器,14. 3个时钟输出口,15. 外部中断I/O口7路,16.,PWM(2路)/ PCA(可编程计数器阵列,2路),17.,A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次 ),三.,51,单片机,的,AD,转换,2.,STC12C5A60S2单片机,的AD模块,STC12C5A60S2,单片机,A/D,转换器结构图,三.,51,单片机,的,AD,转换,2.,STC12C5A60S2单片机,的AD模块,单片机,内资源的状态控制方法,- 设置相关的寄存器,与A/D转换相关的寄存器,:,三.,51,单片机,的,AD,转换,与A/D转换相关的寄存器,:,三.,51,单片机,的,AD,转换,1.,功能选择寄存器,上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的P1口可继续作为I/O口使用(建议只作为输入)。需作为A/D使用的口需先将P1ASF特殊功能寄存器中的相应位置为1,将相应的口设置为模拟功能,2.,控制寄存器,ADC电源控制位,模数转换器转,换速度控制位,模拟输入,通道选择,模数转换器转,换结束标志位,模数转换器(ADC),转换启动控制位,三.,51,单片机,的,AD,转换,3.,A/D转换结果寄存器,ADC_RES、ADC_RESL,4.,辅助控制寄存器,当ADRJ=0时,10位A/D转换结果的高8位存放在ADC_RES中,,ADC_RESL的低2位存放转换结果的,低2位,。,当ADRJ=1时,10位A/D转换结果的高2位存放在ADC_RES的低2位中,低8位存放在ADC_RESL中,。,ADC_RES和ADC_RESL寄存器用于保存A/D转换结果,三.,51,单片机,的,AD,转换,3. 实现AD转换的程序,#include,/包含头文件,包含特殊功能寄存器的定义,unsigned char AD_Data3;,unsigned char G_Black2;,char G_RunState;,/*Declare SFR associated with the ADC */,sfr ADC_CONTR = 0xBC; /ADC control register,sfr ADC_RES = 0xBD; /ADC hight 8-bit result register,sfr ADC_LOW2 = 0xBE; /ADC low 2-bit result register,sfr P1ASF = 0x9D; /P1 secondary function control register,/*Define ADC operation const for ADC_CONTR*/,#define ADC_POWER 0x80 /ADC power control bit,#define ADC_FLAG 0x10 /ADC complete flag,#define ADC_START 0x08 /ADC start control bit,#define ADC_SPEEDLL,0x00 /540 clocks,#define ADC_SPEEDL 0x20 /360 clocks,#define ADC_SPEEDH 0x40 /180 clocks,#define ADC_SPEEDHH 0x60 /90 clocks,/*-Initial ADC sfr-*/,void InitADC(),P1ASF = 0xff; /Open 8 channels ADC function,ADC_RES = 0; /Clear previous result,ADC_CONTR = ADC_POWER | ADC_SPEEDLL;,Delay(2); /ADC power-on and delay,/*-DataGather-*/,void DataGather(),unsigned char i;,for(i=0;i3;i+) AD_Datai = GetADCResult(i); ,/*-主程序-*/,void main(),InitADC();,while (1),DataGather();,P2=AD_Data00xff;,/*-Software delay function,-*/,void Delay(unsigned int n),unsigned int x;,while (n-)x = 5000;,while (x-);,/*-Get ADC result-*/,unsigned char GetADCResult(unsigned char ch),ADC_CONTR,=,ADC_POWER | ADC_SPEEDLL |,ch,| ADC_START;,while (!(ADC_CONTR ,ADC_CONTR /Close ADC,return ADC_RES; /Return ADC result,四.,小车程序运行,设计,1.,小车,运行控制,程序,应包含的,内容,运行数据采集,运行数据分析,运行控制,开始,初始化,控制量输出,-包含硬件资源初始状态设置、参数设置、系统初始形态的确立等。,-包括 行车偏离路径相关量、行车速度等采集,-分析行车状况。包括 行车路径,偏离,状况、行车速度与理想速度之差等,-根据预先设定的控制策略与分析得到的行车状况数据形成控制数据,控制小车运行。,-将前面算出的控制数据输出,控制片外对象动作。,系统运行流程图(1),四.,小车程序运行,设计,1.,小车,运行控制,程序,应包含的,内容,运行数据采集,运行数据分析,运行控制,开始,控制量输出,返回,键入查询,开始,初始化,数据显示,主函数,中断服务函数,系统运行流程图(2),四.,小车程序运行,设计,运行数据采集,运行数据分析,运行控制,开始,初始化,控制量输出,系统运行流程图(1),void main(),void InitADC(),void DataGather(),2. 简易光寻迹,小车程序,设计实例,/*-,主程序,-*/,void main(),InitADC(); /Init ADC sfr,while (1),DataGather();,DataAnalysis();,ContrCaculat,();,ContrOutput,();,四.,小车程序运行,设计,#include,/包含头文件,包含特殊功能寄存器的定义,unsigned char AD_Data3;,unsigned char G_Black2;,char G_RunState;,/*Declare SFR associated with the ADC */,sfr ADC_CONTR = 0xBC; /ADC control register,sfr ADC_RES = 0xBD; /ADC hight 8-bit result register,sfr ADC_LOW2 = 0xBE; /ADC low 2-bit result register,sfr P1ASF = 0x9D; /P1 secondary function control register,/*Define ADC operation const for ADC_CONTR*/,#define ADC_POWER 0x80 /ADC power control bit,#define ADC_FLAG 0x10 /ADC complete flag,#define ADC_START 0x08 /ADC start control bit,#define ADC_SPEEDLL,0x00 /540 clocks,#define ADC_SPEEDL 0x20 /360 clocks,#define ADC_SPEEDH 0x40 /180 clocks,#define ADC_SPEEDHH 0x60 /90 clocks,/*-Software delay function,-*/,void Delay(unsigned int n),unsigned int x;,while (n-)x = 5000;,while (x-);,/*-Get ADC result-*/,unsigned char GetADCResult(unsigned char ch),ADC_CONTR,=ADC_POWER | ADC_SPEEDLL |,ch,| ADC_START;,while (!(ADC_CONTR ,ADC_CONTR ,return ADC_RES;,/*-Initial ADC sfr-*/,void InitADC(),P1ASF = 0xff; /Open 8 channels ADC function,ADC_RES = 0; /Clear previous result,ADC_CONTR = ADC_POWER | ADC_SPEEDLL;,Delay(2); /ADC power-on and delay,/*-DataGather-*/,void DataGather(),unsigned char i;,for(i=0;i3;i+) AD_Datai =GetADCResult(i); ,/*-,-DataAnalysis-,-*/,void DataAnalysis(),G_Black1=0;,if(AD_Data0=170)G_Black1|=1;,if(AD_Data1=170)G_Black1|=0x08;,if(AD_Data2=170)G_Black1|=0x40;,if(G_Black1=1)G_RunState=-1;,else if(G_Black1=,0x08,)G_RunState=0;,else if(G_Black1=,0x40,)G_RunState=1;,P2=G_Black10xff;,/*-,空函数,-*/,Void,ContrCaculat,(), ,Void,ContrOutput,(), ,2. 简易光寻迹,小车程序,设计实例,
展开阅读全文