- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
什么是单片机 单片机控制系统中的两个通路 能量通路 即能量的变换与传输通路。包括系统电源,摄像头/光电管驱动电路,电机H桥驱动电路,舵机驱动电路等等。 信号通路 即信号的变换与传输通路。包括道路信号采集以及A/D变换,信号处理分析、电机控制PWM输出、舵机控制PWM输出等等。 单片机在智能车中的应用 如何构建一个智能车的单片机控制系统? 道路识别 速度检测 数据分析计算 电机驱动 舵机驱动 智能车单片机系统基本结构 设计中使用到的单片机模块 通用输入输出模块 中断系统 定时器 输入捕捉模块 A/D转换模块 PWM发生模块 SCI/SPI串行总线 MC9S12XS128 Flash容量:128KB RAM容量:12KB CAN总线:1个 SCI总线:2个 SPI总线:1个 A/D转换:8通道,8/10位 定时器:8通道,16位 I/O数量:91/59/44个(112/80/64引脚) 通用输入输出模块 MC9S12XS128(80QFP封装)有通用I/O口59个,采用与功能模块的引脚复用模式,并通过寄存器来选择。 I/O 口分为: ? Port A, B 和 K 为通用 I/O ? Port E 与IRQ, XIRQ 中断复用 ? Port T 与1 个定时器模块复用 ? Port S 与2 个SCI模块和1 个SPI 模块复用 ? Port M 与1 个MSCAN模块复用 ? Port P 连接至 PWM 模块另外可以作为外部中断源 ? Port H 和 J 是通用I/O 也可以作为外部中断源 ? Port AD 与 AD转换模块复用 通用I/O 口的应用 通用I/O寄存器 按键实例 外部中断控制寄存器 中断程序示例 Void main() { IRQCR = 0XC0;//设置为允许下降沿中断 EnableInterrupts; } #pragma CODE_SEG NON_BANKED void interrupt 6 ISR(void) { ISR6Function(); } #pragma CODE_SEG DEFAULT void ISR6Function() { } 中断系统在智能车系统中的应用 定时中断 用来控制系统计时,速度检测,算法控制等 外部中断 用于处理无线控制信号等 输入捕捉中断 用于摄像头行场同步信号采集等 A/D转换终止中断 用于检测AD转换结束 定时器 MC9S12XS128中有增强型定时器模块(Enhanced Capture Timer Module) 1个16位自由运行计数器 8个16位输入捕捉/输出比较通道 1个16位脉冲累加器 定时器 定时器在智能车系统中的应用 速度检测 道路信息定时采样 系统输出定时控制 定时器例子 void interrupt 15 C4I_ISR(void) //定时中断控制程序 { unsigned int i; long int Avg_Dir=0; DisableInterrupts; TFLG1=0X80;//清中断标志 for(i=0;i100;i++) { Avg_Dir+=dir[i]; } Avg_Dir/=100; Last_A_Dir=A_Dir;//上次采样平均值 A_Dir=Avg_Dir; TC7=2000; EnableInterrupts; } A/D转换模块 MC9S12XS128内置1个16通道12位的逐次逼近模数转换器 可选8/10/12位转换精度 转换时间短 可由外部触发控制 可选择单次或连续转换 A/D转换实例 #include hidef.h /* common defines and macros */ #include mc9s12XS128.h /* derivative information */ void ADCInit() { ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x20; // 每个序列4次转换, No FIFO, Freeze模式下继续转换 ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3, divider=8 ATD0CTL5=0xA0; //右对齐无符号,单通道采样,通道0 ATD0DIEN=0x00; // 禁止数字输入 } A/D转换实例 void main(void) { ADCInit(); //AD
文档评论(0)