0 引言
“飞思卡尔”杯全国大学生智能车竞赛是以迅速发展的汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多个交叉学科的科技创意性比赛,该项目由大赛组委会统一提供车模,利用指定的微控制器作为核心控制单元,各参赛队伍在此基础上自主进行系统设计,完成智能车的制作,使其能够在专门设计的跑道上自动识别道路,并以最高速度行驶。此项赛事旨在加强大学生的创新意识、团队合作精神和培养学生的创新能力。本文设计了基于MC9S12XS128(飞思卡尔指定芯片)的单片机开发系统,为即将参加此项竞赛的同学提供学习平台。实际应用结果表明,此项开发板的应用大大提高了大学生制作智能车的开发效率。
1 系统硬件设计
MC9S12XS128单片机开发板由MC9S12XS128单片机最小系统、电源模块、CAN/LIN总线接口、USB转串口、标准异步串行接口、MAX 485通信接口、4×4矩阵键盘键号的识别与显示电路(包括数码管和液晶显示接口)和电机驱动接口组成,系统框图如图1所示。
1.1 电源模块设计
此开发板上提供2种输出电压,分别为5 V和12 V,输出的12 V电压可以通过LIN总线接口外接,同时提供2种电压输入方式,通过公用一个电源插头给此开发板送入5 V或12 V电压,当输入5 V电压时,开关s,需打到5 V档上,板内芯片ST662将5 V的电压转换为12 V电压,给需要12 V电压的模块供电。当选择使用输入12 V电压给开发板供电时,开关S1需打到12 V档上。此供电系统的原理图如图2所示。
1.2 CAN总线与LIN总线设计
TJA1041高速CAN收发器通过接头与MC9S12XS128的CAN总线引脚相连。考虑到CAN总线的不常使用,和功耗比较大,所以系统不但设计了这2种总线接口,为了方便又设计了J-CAN-SELECT接头和J-LIN-Selector接头。当使用CAN总线时,用跳线帽把J-CAN-SELECT接头选通,当使用LIN总线时,用跳线帽把J-LIN-SELECT接头选通。CAN总线原理图(LIN总线原理图略)如图3所示。
1.3 通信接口设计
文中采用单片机与PC机之间的异步通信模式,将单片机看成另外一个PC机,只需3根线:发送线,接收线和固定公地线。由于MC9S12XS 128内部集成有2个串口控制器,可以选用其中一个作为RS 232串口使用,另外一个作为485总线的控制器。单片机内部TTL电平与RS 232信号电平之间的电平转换选用MAXIM公司的MAX 232芯片。串口和485接口原理图如图4所示。
其中PS1为对应的单片机上串行控制接口0的发送端,PS0为接口0的接收端。另外为了方便应用,设计了USB转串口电路,原理图如图5所示。由于MC9S12XS128内部只集成有2个SCI控制器,所以USB转串口,串口,LIN,485四种通信接口需要公用2个SCI控制模块:串口与USB转串口公用SCI0,485与LIN公用SCI1。USB协议转换成串口通信协议选用PL2303芯片。
1.4 直流电机驱动电路
直流电机驱动电路采用组委会推荐的专用电机驱动芯片MC33886,驱动电路如图6所示。其中,V1+接电池正极;VCC接系统+5 V;OUT+和OUT2-接直流电机;IN1和IN2控制MC33886输出不同的值。
1.5 矩阵键盘按键识别
在MC9S12XS128单片机的I/O口设计4×4行列式键盘,采用程序扫描识别键号,当有按键按下时,其键号显示在共阴极LED数码管上。其电路如图7所示。在键盘的按键识别中通常采用“行扫描法”(逐行或列)扫描查询法。判断键盘中有无键按下时,将列线PT0~PT3置为输出,将其中一条线置低电平其余3条线输出高电平,然后检测行线的状态。只要有一行的电平为低,则表示键盘中有键被按下,而且闭合的键为被拉低的低电平行线与4根列线中低电平线相交叉的对应按键。若判断所有行线均为高电平,则键盘中无键按下(具体可用查表的方法)。
但是此种方法单片机需要通过不停的扫描查询,方可准确的检测到按键值。考虑到PP口有中断功能所以可将这4个口设置成中断的模式来获得按键值,本设计中是将拉高的4位通过一个与门接到单片机的带中断的引脚上,这样当任意键按下时就会产生低电平发生中断,这时单片机再进行按键判断,从而无需一直查询,减少了MCU的负荷量。
数码管显示电路采用共阴极使用两个锁存器74HC573分别接到PORTA口和PORTB口来实现。也可应用液晶显示接口:1602和12864接口显示。
2 系统软件设计
系统软件采用C语言编写,由于存在键盘阵列、数码管显示和液晶显示,它可以完成较多的常规实验项目。如LED流水灯实验、基于PWM控制的蜂鸣器实验、数码管驱动、键盘驱动、1602液晶驱动、ATD转换等多个实验;还可以进行目前工业控制所常用的通信试验,如串口,IIC,CAN,LIN,485总线实验,基本具备单片机开发工业控制系统的能力。下面以电子钟为例来介绍其软件设计思想。
在电子钟设计中对于时间的产生,选择PIT0,即对周期中断定时器0做初始化,使其每隔1 ms产生1次中断,定义4个变量分别为:毫秒,秒,分,时,然后在中断服务程序中根据这4个变量在实际中的关系更新这4个变量。在主程序中判断键盘按键值和进行时间显示,这里定义3个键值:1,2,3。软件程序流程图如图8所示。
3 结语
本套单片机开发板为即将参加“飞思卡尔”竞赛的学生提供了一个灵活高效的学习平台,同时可为大学本科学生学习嵌入式开发系统以及为汽车电子行业工程师提供良好的开发平台,具有较高的实用性和推广价值。