第一篇:飞思卡尔技术报告个人小结
读技术报告个人小结
最近这段时间读了一些关于智能车的技术报告,现在我最大的感觉就是对智能车有了新的较为全面的一些了解,当然这也只是对智能车构造有了一些认识,不再像以前只是知道智能车的存在。在读技术报告的过程中,我有了自己的收获,同时也了解到了现在自身存在的问题。首先我想将自己所读技术报告中的一些关键技术做一个简单的总结。
电磁组
一.智能车机械结构调整与优化
关于智能车前轮定位的调整有以下几个参数。主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时主销后倾回正作用大,低速时主销内倾的回正作用大。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少.关于舵机的安装可以使用站立式。系统执行一个周期所用的时间为5ms左右,舵机作出响应需要十多毫秒的时间,提高系统反应速度唯一的时间瓶颈是舵机的响应时间。因此,不断优化舵机控制策略是令智能车平稳高速行驶的有效方法。在模型车制做过程中,赛车的转向是通过舵机带动左右横拉杆来实现的。转向舵机的转动速度和功率是一定,要想加快转向机构响应的速度,唯一的办法就是优化舵机的安装位置和其力矩延长杆的长度。由于功率是速度与力矩乘积的函数,过分追求速度,必然要损失力矩,力矩太小也会造成转向迟钝,因此设计时就要综合考虑转向机构响应速度与舵机力矩之间的关系,通过优化得到一个最佳的转向效果。经过最后的实际的参数设计计算,最后得出一套可以稳定、高效工作的参数及机构。
为了达到较远前瞻,必须把电感架到较远的位置,会引起车重心特别靠前,后轮正压力不足导致甩尾。为了使重心后移,可以通过调整传感器支架的搭建方式,使得保证结构稳定的前提下尽量减轻重量。同时,可以把舵机和电池均往后移,以达到预期的效果。
在实际调试过程中还可以对车轮进行粘胎处理,以图有效地防止由于轮胎与轮辋错位而引起的驱动力损失的情况。二.智能车传感器模块设计
电感应选用10mH电感。只有在10mH电感中,得到感应电动势曲线是较为规整的正弦波,频率和赛道电源频率一致,为20kHz,幅值较其他型号的大,且随导线距离变化,规律为近大远小。其他电感得到信号不好。
应用电动势的大小和通过线圈回路的磁通量的变化率成正比。由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该是不同。据此,则可以确定电感的大致位置。
利用电感传感器识别路径一般有两种不同的方法:(1)数字型寻线算法。利用多个水平放置的电感传感器,将整个赛道分为多个区域,感应电动势最大的电感是最靠近导线的电感,来判断电磁线的位置。这种查询方式的优势在于算法简单,易于实现。但是这种方法采集到的信息是离散的点,不利于精细控制;且要用到多个电感,会加重车头重量,增大小车的转动惯量,造成小车在高速行驶时发生甩尾;且多个电感“一”字排布,不得不考虑离得太近时相邻电感的互感作用。
(2)模拟型寻线算法。使用少数传感器,直接使用感应电动势的模拟量精确值来进行赛道的精确定位。该方式可以达到赛道精确定位的目的,同时可以利用归一化的方法来解决每个电感线圈不完全相同的问题。这种方法的特点是用了较少个数的传感器进行道路识别,而且充分利用MCU里的ADC功能。
利用模拟型寻线算法可用三个水平电感和两个八字的电感用于计算小车偏离中线的位置。八字电感对出入处磁场比较敏感,可以提前检测出入弯道,改善小车出入弯姿态,且顺利通过直角弯道。三.弯道策略分析
当赛车进弯的的时候,需要对两个参数进行设定:进弯的角度,进弯的速度。这两个参数决定着赛车在弯道里面的路径。
对于大弯来说,切弯的角度最好是切外弯,这样赛车在以高速的情况下有时间进行调整速度和变换姿态。对于小弯来说,最好是切内弯,因为小弯不需要太多时间进行调整姿态和速度,只要直接冲过去就可以了。
入弯时急减速,以得到足够的调整时间,获得正确的转向角度;在弯道内适当提速,并保持角度不变,为出弯时的加速节约时间;出弯时,先准确判断标志,然后加速,虽然会耗费一些时间,但是面对连续变向弯道可以减少判断出错的概率,保证行驶状态的稳定性,而且弯道内的有限加速对后面的提速也有很大的帮助。综合考虑用可以接收的额外时间换回行驶稳定性还是值得的。四.PID控制算法
1.方向控制采用位置式PID控制。
将积分项系数Ki设为0,发现车能在直线高速行驶时仍能保持车身非常稳定,没有震荡,所以没有必要使用Ki 参数。该控制方案调整为PD控制。2.速度控制算法的参数整定
速度控制采用增量式PID控制,由于工程整定方法,主要依赖工程经验,直接在控制系统的试验中进行,且方法简单,可以采用这种方法,多次实验得出Kp,Ki,Kd的值。
光电平衡组
单片机采用32位K60单片机作为核心控制单元用于智能汽车系统的控制。线性CCD采集赛道明暗信息,返回到单片机作为转向控制的依据。加速度计返回的模拟信号作为车身当前角度的信号,陀螺仪采集车身转动的角速度。主控输出PWM波控制电机的转速以保持车身的平衡和锁定赛道。同四轮车不同,平衡组需要使用左右轮的差速来转弯。为了控制的准确性和快速性,我们使用编码器作为速度传感器。编码器返回的信号可以形成闭环,使用PID控制电机的转速。平衡组强烈的加减速会导致车身的倾角剧烈变化,这并不利于车身保持平衡。因此整个调试过程就是要保证车身稳定的前提下不断提高车模前进的平均速度。一.系统总体方案设计。
两轮自平衡车模在运行时主要受三种方式对车模进行控制,分别是平衡控制、速度控制和方向控制,其中平行控制系统是一个倒立摆系统,简单来说就是车模往一方向倾斜则需要往同方向加速运动使得车模倾角回归重心。而车模的速度控制则是在获取实际速度的基础上,与车模给定速度进行对比,速度不足,则车模前倾(这又通过平衡控制实现倾角的变化)使车模加速到指定速度,车模的速度控制是在实际速度的反馈基础上,通过平衡控制(角度环控制)去实现车模的加减速。车模方向的控制则是在获取方向偏移之后在,在原先平衡控制和速度控制的基础上,对车模的左右轮胎进行一定量的差速控制,实现车模速度的变化。
车转弯的原则是:小车处于直道,则两个车轮等速。小车处于弯道的曲率越大,则两轮的差速越大。二.机械结构设计与优化 齿轮传动机构调整的原则是:两传动齿轮轴保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,浪费动力;传动部分要轻松、顺畅,不能有迟滞或周期性振动的现象。
线性CCD的安装位置要适当。光电车要检测的赛道环境是由通过线性CCD采集赛道的图像信息完成的。关于CCD的安装位置,不宜过高,也不宜过低,具体而言可以采取折中的做法,将CCD用碳素杆支撑在智能车的顶端,贴上海绵作为摄像头的防撞保护,智能车的稳定性明显提高,视野也可以满足目前的要求。车模直立控制程序就是利用经典的反馈控制思路,马达作为驱动机构,车模是一个倒立摆,在程序的控制下通过给定不同的占空比,可以实现马达的正转与反转,于是我们需要的就是车模姿态的反馈信息,即车模倾角与车模摆动方向的角速度。由于陀螺仪有严重的温度漂移,对陀螺仪的积分并不能得到当前车身的准确角度,也就无法控制车身的平衡,因此为了得到当前的车身角度,必须使用加速度计。加速度计是一种测量加速度的传感器,可以将加速度计当成测量重力加速度的传感器,通过重力加速度的分量来检测,检测车体的倾斜角度,陀螺仪测量小车的角速度,采用加速度计和陀螺仪的融合数据结合小车的姿态可以保证结果的正确性。采用陀螺仪和加速度计两个传感器,利用二者信息的融合计算滤波,则可以达到很好的效果,基本上在一定的扰动下可以很好的反映车体实时的角度和角速度信息。
三.硬件电路的设计
硬件电路是模型汽车系统的必备部分。只有稳定的硬件电路才能保证程序的正确控制,硬件电路的设计思想是在保证正确检测信号的前提下,尽可能精简电路,减小电路板体积,优化结构。
光电平衡组需要驱动2 个电机,驱动的设计尤为重要。常用的电机驱动有两种方式:
一、采用集成电机驱动芯片;
二、采用N 沟道MOSFET和专用栅极驱动芯片设计。
使用集成芯片的电路设计简单,可靠性高,但是性能受限。由于比赛电机内阻仅为几毫欧,而集成芯片内部的每个MOSFET 导通电阻在120 毫欧以上,大大增加了电枢回路总电阻,此时直流电动机转速降落较大,驱动电路效率较低,电机性能不能充分发挥。
由于分立的N 沟道MOSFET 具有极低的导通电阻,大大减小了电枢回路总电阻。另外,专门设计的栅极驱动电路可以提高MOSFET 的开关速度,使PWM 控制方式的调制频率可以得到提高,从而减少电枢电流脉动。并且专用栅极驱动芯片通常具有防同臂导通、硬件死区、欠电压保护等功能,可以提高电路工作的可靠性。
四.软件程序的设计
1.线性CCD中线提取的设计 对于线性CCD信息的处理,主要是对于当前帧获取到的信息进行处理,并未将之前的信息存储记忆(这对于后期提速略有限制)。在一帧图像的基础上,我们提取图像值的上升沿作为跑道的右边界,提取图像的下降沿作为跑道的左边界,然后两个边界值取平均作为识别到的跑道中线值,而这只是理想情况。很多情况下,跑道的信息十分复杂,往往存在多个上升沿和多个下降沿。因此,在处理跑道信息的过程中,需要对不同个数的上升沿和下降沿进行分类,对于上升沿和下降沿的位置分布情况进行辨识,然后将识别到的中线值反馈给方向控制函数进行方向控制。
我们的小车仅采用一路CCD对赛道信息进行识别,一个CCD包含128个 像素点,但这128个点并不是所有的点都能够被准确获取灰度值,我们选择采用左右各48个像素点来对赛道信息进行采集。在直道时,两侧都会检测到赛道边沿,且大体处于中间位置,左右较对称;在小弯道时,两侧都会检测到赛道边沿,但会有小幅地左右摆动;在其它弯道时,会出现左右侧跳变沿出赛道的状况,这时主要依靠一侧CCD进行巡线;在十字的时候,回旋全白的时候,在传感器稳定的前提下,能出现全白的也只会在十字的时候出现,当然小S 虚线位置也不排除会有全白的情况发生,虽说黑白线时左右对称的,但是黑白条的长度固定十公分,内侧长度远不及外侧长度,无可避免的会多次出现单侧全白的情况;终点 线依靠CCD 返回值具有驼峰形状的赛道信息返回值来测得。2.线性CCD 传感器路径识别算法
路径识别算法是我们使用的是由CCD 中心向两侧搜索提取跳变沿的算法,通过提取到的两侧跳变沿相加除二来得到小车转向需要的转向值。当CCD检测到连续4 场全黑的情况下,我们便默认为小车前方出现了路障,并对速控以及转向进行处理,进而达到平稳过路障得效果。
摄像头组
系统概述:以系统控制处理器为核心,采用基于模拟摄像头的图像采集模块获取赛道图像信息,对图像进行硬件二值化,提取黑色引导线,算出赛道中心线,计算出小车与赛道中心线的位置偏差;通过编码器来检测车速,并采用编码器的输入捕捉功能进行脉冲计算获得速度;转向舵机采用PD控制;驱动电机采用 PID控制,通过PWM控制驱动电路调整电机的功率;而车速的目标值由默认值、运行安全方案和基于图像处理的优化策略进行综合控制。一.智能车机械结构调整与优化 1.摄像头的选择
因为COMS摄像头具有体积小、质量轻、功耗低,图像动态特性好等优点,因为小车队图像的清晰度,分辨率要求并不高,所以选用COMS。2.摄像头的安装
摄像头支架的选取,支架与车模的固定,摄像头与支架的固定等,都会对小车的性能造成很大的影响。因此可以选取轻质碳杆作为摄像头的支架,并购买合适的器件将支架和车模牢牢的固定在一起,防止小车在运行过程中大幅抖动。二.智能车硬件系统设计与实现 1.电机驱动模块
电机驱动电路对于智能车的速度控制有着至关重要的作用,较好的制动能力和加速对于提高小车的速度有着很大的帮助。电机的速度与施加在电机上的电压成正比,输出转矩与电机的电流成正比。因为在智能车行驶过程中要改变直流电机的转速,采用一个PWM(脉宽调制)方波,施加在直流电机上的PWM波的占空比对应着智能车所需的速度,电机起到一个低通滤波器的作用,将PWM信号转换为有效的直流电平。PWM信号可以由K60单片机产生,用精准的脉冲宽度可以调节直流电机的转 速,并且要优化PWM信号的频率,以防止电机抖动。更换直流电机的电流方向,可以控制直流电机的转动方向。
通过光电编码器测量出智能车的车速,在软件中编写速度控制程序,通过改变PWM波的占空比来调节车速。2.视频分离模块
我们的智能模型车自动控制系统中可以使用黑白全电视信号格式CMOS摄像头采集赛道信息。摄像头视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等。因此,若要对视频信号进行采集,就必须通过视频同步分离电路准确地把握各种信号间的逻辑关系。使用LM1881芯片对黑白全电视信号进行视频同步分离,可以得到行同步、场同步信号。三.软件设计与优化 1.黑线提取
提取黑线是整个图像处理的关键部分,只有正确的把有效路径提取出来,排除不利干扰,才能正确的控制智能车,使小车稳定的运行。因为我们采集到的是二值化后的图像,所以我们所得到的图像信息是0 和1 的组合,白色底板在数值上体现为1,黑线在数值上的体现为0。2.智能车的转向控制算法
智能车的舵机采用位置式PD控制,因为舵机的控制精度高,不同的PWM占空比对应舵机的不同转角,所以采用开环控制。当小车位于直道时,将舵机摆正;当小车位于弯道时,弯道的曲率越大则舵机的转角摆角越大,利用图像的加权平均偏差与图像中心之差作为控制量。
以上便是我对竞速组技术报告中的一些关键技术做的汇总。在我读技术报告包括最后的汇总过程中,我也发现了电磁组、光电平衡组及摄像头组中有很大一部分相似的地方,但又各不相同。这个过程下来,我感觉首先对智能车的各个器件有了初步的了解,对器件的功能及作用有了最初的认识,对智能车系统有了整体的认知,这是我感觉自己读技术报告最大的收获。在我的汇总中,大部分都是我对自己可以理解的技术思想的总结,主要包括了机械部分结构设计与优化,这部分三个组有很多相通之处,但又各不相同。对硬件电路部分我感觉有些陌生,只是知道其构成,对于原理及电路图的设计当然需要更深层次的了解。软件设计根据组别的不同差别最大,在理解上给我的感觉最困难的是摄像头组的信息处理过程。调试模块则基本上没有涉及,我感觉这一部分更是需要靠实际操作来完成的。
读过了技术报告,我想这只是能告诉我智能车系统的一个整体流程,至于说到亲自动手做则需要自己去学习和尝试更多的知识与方法。
第二篇:飞思卡尔实习报告
中南大学
Central South University
飞思卡尔实验报告
学生姓名:应晓伟 指导老师:李志民 学院:信息科学与工程学院 专业班级:自动化1106班 完成日期:2013年9月12日
目录
一、实验目的………………………………………………………..2
二、实验内容………………………………………………………..2
三、实验电路图…………………………………………………….3
四、实验说明………………………………………………………..6
五、实验方法及步骤…………………………………………....7
六、实验总结……………………………………………………….10
一、实习目的
1、熟悉飞思卡尔试验箱的操作。
2、掌握codewarrierr软件的使用方法。
3、初步了解如何使用c语言编写飞思卡尔单片机程序。
二、实验内容
实验1.1
流水灯
利用PORTB 口的低4 位驱动4 位LED 灯,实现4 位LED 灯明灯流水操作。
实验1.2
拨码开关控LED 灯
读取PORTB 口高4 位连接的4 位拨码开关状态,将读取到的拨码开关状态用 PORTB 口低4 位连接的LED 灯显示。
实验1.3
动态数码管显示
系统上电后首先单8 左移显示,然后0-7 顺次左移显示,紧接着7-0 顺次 右移显示,再 0-7 全部闪烁显示,并重复以上动作。
实验1.4 矩阵键盘
编写键盘扫描程序,当矩阵键盘模块有按键按下时,读取键值,并利用数码 管显示键值。系统上电后8 位数码管以5-4-3-2-1 倒计数显示,待显示值为1 后,数码管清除显示,此时按下矩阵键盘按键,数码管显示对应键值。
实验1.5 LCD(0802)显示
利用LCD(0802)液晶显示器,显示两排数字。
实验1.6 LCD(12864)显示
使用OCM12864-2 液晶显示器,显示汉字。
实验1.7 蜂鸣器驱动
利用GPIO 端口中的某一位驱动蜂鸣器。
实验1.8 继电器驱动
利用GPIO 端口中的某一位驱动继电器。
三、实验电路图
实验1.1 流水灯
实验1.2 拨码开关控LED 灯
实验1.3 动态数码管显示
实验1.4 矩阵键盘
实验1.5 LCD(0802)显示
实验1.6 LCD(12864)显示
实验1.7 蜂鸣器驱动
实验1.8 继电器驱动
四、实验说明
实验1.1 流水灯
1、PORTB 口寄存器初始化。
2、送数据给PORTB 口显示,并延时一定时间。
3、改变数据,重复2。
实验1.2 拨码开关控LED 灯
1、PORTB 口寄存器初始化;
2、读取PORTB 数据,将数据右移4 位;送PORTB 口显示;
3、重复2。
实验1.3 动态数码管显示
1、GPIO 相关寄存器初始化;
2、选中数码管第一位,送段码显示第一个数据;
3、移动位码,送下个数据的段码,以此类推,实现移位显示与动态显示。
实验1.4 矩阵键盘
1、GPIO 相关寄存器的初始化。2、8 位数码管以5-4-3-2-1 倒计数显示。
3、扫描按键,键值送数码管显示。
4、重复操作3。
实验1.5 LCD(0802)显示
1、驱动LCD(0802)GPIO 口相关寄存器初始化;
2、LCD(0802)初始化;
3、在LCD 屏上分行显示“01234567”和“ABCDEFGH”。
实验1.6 LCD(12864)显示
1、驱动LCD(12864)的GPIO 相关寄存器初始化;
2、LCD(12864)控制器的初始化,延时及清屏;
3、在LCD 屏上显示“欢迎使用”。
实验1.7 蜂鸣器驱动
1、相应端口寄存器初始化;
2、送数据到相应I/O 口,间断驱动蜂鸣器。
实验1.8 继电器驱动
1、相应端口寄存器初始化;
2、送数据到相应I/O 口,驱动继电器间歇动作。
五、实验步骤与方法
实验1.1 流水灯
1、接线说明:
本实验无需外部接线,只需要使用跳线帽短接核心板上JP_1 处标号为PB0~ PB3 的跳线即可。
2、运行程序,观察LED 灯亮灭情况。
实验1.2 拨码开关控LED 灯
1、接线说明:
本实验无需外部接线,只需要使用跳线帽短接核心板上JP_1 处标号为PB0~ PB7 的跳线即可。
2、运行程序,改变拨码开关的状态,观察LED 灯的显示变化。
实验1.3 动态数码管显示
实验系统底板的8 位8 段数码管模块的段码接线说明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)* 注1:J_SEG-1 表示插座的标识名称,后面括号中的A 表示该引脚的作用,后文均使用该方法描述,就不再重复说明了。
*注2:IO065 后括号中的PA0 表示当HF-ExBoard 实验系统使用 HF-MC9S12XS128EVB-A 核心板时,实验系统底板 的IO065 接口对应 MC9S12XS128EVB 的PA0,后文均使用该方法描述,就不再重复说明了。8 位8 段数码管模块的位码接线说明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)*注3:IO051(PH7)对应的COM0 为8 位数码管中最左边第一位。
2、运行程序,观察数码管的显示。
实验1.4 矩阵键盘
实验系统底板的4x4 矩阵键盘接线说明: J_Key-1(R0)-----IO092(PS0)J_Key-2(R1)-----IO091(PS1)J_Key-3(R2)-----IO094(PS2)J_Key-4(R3)-----IO093(PS3)J_Key-5(C0)-----IO096(PS4)J_Key-6(C1)-----IO095(PS5)J_Key-7(C2)-----IO098(PS6)J_Key-8(C3)-----IO097(PS7)实验系统底板的8 位8 段数码管模块的段码接线说明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段数码管模块的位码接线说明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
2、运行程序,观察数码管显示变化。按下按键,观察数码管显示变化。
实验1.5 LCD(0802)显示
实验系统底板0802 液晶模块的LCD 数据口信号接线说明: J_0802B_1-5(DB0)----IO065(PA0)J_0802B_1-6(DB1)----IO066(PA1)J_0802B_1-7(DB2)----IO067(PA2)J_0802B_1-8(DB3)----IO068(PA3)J_0802B_1-9(DB4)----IO069(PA4)J_0802B_1-10(DB5)----IO070(PA5)J_0802B_1-11(DB6)----IO071(PA6)J_0802B_1-12(DB7)----IO072(PA7)实验系统底板0802 液晶模块的LCD 控制口信号接线说明: J_0802B_1-1(RS)-----IO013(PK5)J_0802B_1-2(R/W)----IO014(PK4)J_0802B_1-3(EN)-----IO015(PK3)
2、运行程序,观察实验现象。
实验1.6 LCD(12864)显示 实验系统底板128x64 液晶模块的液晶数据口信号接线说明: J_12864-4(DB0)-----IO065(PA0)J_12864-5(DB1)-----IO066(PA1)J_12864-6(DB2)-----IO067(PA2)J_12864-7(DB3)-----IO068(PA3)J_12864-8(DB4)-----IO069(PA4)J_12864-9(DB5)----IO070(PA5)J_12864-10(DB6)---IO071(PA6)J_12864-11(DB7)---IO072(PA7)实验系统底板128x64 液晶模块的液晶控制口信号接线说明: J_12864-1(D/I)-----IO011(PK6)J_12864-2(R/W)-----IO013(PK5)J_12864-3(E)-------IO014(PK4)J_12864-12(CS1)----IO015(PK3)J_12864-13(CS2)----IO016(PK2)注:实验指导书提供的接线说明根据金鹏OCM12864-2 型液晶编写,如果 使用其它型号的12864 液晶模块,可能液晶模块的引脚定义有差异,只需要依据
具体使用的液晶引脚修改接线即可完成该实验。
2、运行程序,观察实验现象。
实验1.7 蜂鸣器驱动
实验系统底板的蜂鸣器控制模块区域的蜂鸣器控制端接线说明: J_ Beep(Beep)----IO061(PE3)
2、运行程序,观察现象。
实验1.8 继电器驱动
实验系统底板的继电器控制模块的继电器控制端接线说明: J_Relay(Relay)----IO061(PE3)使用跳线帽短接实验系统底板继电器控制模块JP_LED 处的跳线。使用跳线帽短接实验系统底板继电器控制模块JP_Power 处的跳线。
2、运行程序,观察现象。
六、实验总结
通过这几天的上机实验,让我学会了很多新的知识。基本掌握了codewarrierr的使用方法,能够利用该软件熟练地编译下载程序。通过这几天的学习,让我对飞思卡尔试验箱也有了一定的了解,而且这八个实验做下来也感觉很有意思,每次对代码进行一些小的改动出来效果以后,都感觉挺有趣的。不过在这几天的学习,我也发现了一些问题,那就是才编程方面的缺陷,有些以前的知识都已经忘了,有些程序都看不太懂了,我觉得以后我应该好好复习一下,把以前学的知识都拿回来。
第三篇:飞思卡尔实验报告
中南大学
Central South University
飞思卡尔实验报告
学生姓名:叶吉东
指导老师:王击
学院:信息科学与工程学院
专业班级:自动化1204班
完成日期:2014年09月21日
目录
实验1.1 流水灯………………………………..………………………………...3 实验1.2 拨码开关控LED 灯…………………....…………………………........4 实验1.3 动态数码管显示…………………………….………………………....5 实验1.4 矩阵键盘……………………………………………………………....6 实验1.5 LCD(0802)显示………………………………………………………..8 实验1.6 LCD(12864)显示…………………………………….………………..10 实验1.7 蜂鸣器驱动………………………………………………………..….11 实验1.8 继电器驱动…………………………………..……………………….12
实验1.1 流水灯
一、实验目的:
1、掌握GPIO 口基本寄存器的使用,掌握如何将GPIO 作为输出口。
2、初步了解如何使用C 语言编写飞思卡尔单片机程序。
二、实验内容
利用PORTB 口的低4 位驱动4 位LED 灯,实现4 位LED 灯明灯流水操作。
三、实验电路图
四、实验说明
1、PORTB 口寄存器初始化。
2、送数据给PORTB 口显示,并延时一定时间。
3、改变数据,重复2。
五、实验方法及步骤
1、接线说明:
本实验无需外部接线,只需要使用跳线帽短接核心板上JP_1 处标号为PB0~ PB3 的跳线即可。
2、运行程序,观察LED 灯亮灭情况。
六、心得体会
这是我利用单片机进行的第一次实验,之前也没有接触过单片机,通过这次实验我大概了解了单片机的编程方法。它跟我们上个学期学过的微机原理很像,编程方法非常类似,这使得我也很容易看懂这个程序。最后我还做了课后思考题,发现只要延时时间缩短就可以达到闪烁的效果了。通过这一次实验让我对单片机有了初步的了解。为接下来的实验打下了基础。实验1.2 拨码开关控LED 灯
一、实验目的:
1、掌握GPIO 口的读写操作。
2、进一步了解C 语言在飞思卡尔单片机中的编程规范及技巧。
二、实验内容:
读取PORTB 口高4 位连接的4 位拨码开关状态,将读取到的拨码开关状态用 PORTB 口低4 位连接的LED 灯显示。
三、实验电路图:
四、实验说明:
1、PORTB 口寄存器初始化;
2、读取PORTB 数据,将数据右移4 位;送PORTB 口显示;
3、重复2。
五、实验方法及步骤:
1、接线说明:
本实验无需外部接线,只需要使用跳线帽短接核心板上JP_1 处标号为PB0~ PB7 的跳线即可。
2、运行程序,改变拨码开关的状态,观察LED 灯的显示变化。
六、心得体会
这一次的实验跟第一次的实验基本类似,知识这次所需要连的线要多一些而已。通过这一次的实验,进一步了解GPIO 口的读写操作。进一步了解C 语言在飞思卡尔单片机中的编程规范及技巧。
实验1.3 动态数码管显示
一、实验目的:
1、了解数码管动态显示的方法。
2、掌握2803 的驱动原理。
二、实验内容:
系统上电后首先单8 左移显示,然后0-7 顺次左移显示,紧接着7-0 顺次 右移显示,再 0-7 全部闪烁显示,并重复以上动作。
三、实验电路图:
四、实验说明:
1、GPIO 相关寄存器初始化;
2、选中数码管第一位,送段码显示第一个数据;
3、移动位码,送下个数据的段码,以此类推,实现移位显示与动态显示。
五、实验方法及步骤:
1、接线说明: 实验系统底板的8 位8 段数码管模块的段码接线说明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段数码管模块的位码接线说明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
六、心得体会:
这次的实验连线比较复杂,这使得我第一次的连线并没有连正确,演示的时候出来的是乱码。然后我就慢慢检查,终于发现了错误所在,是我并没有看清实验指导书连线而是凭着自己的感觉经验然后连线的,结果就出错了,所以我们做实验额时候一定得细心,要不然就会容易出错。看着实验箱上的实验结果,就联想到了我们日常生活中到处可见的LED灯。这让我越来越觉得单片机实现的功能在生活中到处可见。
实验1.4 矩阵键盘
一、实验目的:
1、了解矩阵键盘扫描原理。
2、掌握矩阵键盘编程方法。
二、实验内容:
编写键盘扫描程序,当矩阵键盘模块有按键按下时,读取键值,并利用数码 管显示键值。系统上电后8 位数码管以5-4-3-2-1 倒计数显示,待显示值为1 后,数码管清除显示,此时按下矩阵键盘按键,数码管显示对应键值。
三、实验电路图:
四、实验说明:
1、GPIO 相关寄存器的初始化。2、8 位数码管以5-4-3-2-1 倒计数显示。
3、扫描按键,键值送数码管显示。
4、重复操作3。
五、实验方法及步骤:
1、接线说明:
实验系统底板的4x4 矩阵键盘接线说明: J_Key-1(R0)-----IO092(PS0)J_Key-2(R1)-----IO091(PS1)J_Key-3(R2)-----IO094(PS2)J_Key-4(R3)-----IO093(PS3)J_Key-5(C0)-----IO096(PS4)J_Key-6(C1)-----IO095(PS5)J_Key-7(C2)-----IO098(PS6)J_Key-8(C3)-----IO097(PS7)实验系统底板的8 位8 段数码管模块的段码接线说明: J_SEG-1(A)----IO065(PA0)J_SEG-2(B)----IO066(PA1)J_SEG-3(C)----IO067(PA2)J_SEG-4(D)----IO068(PA3)J_SEG-5(E)----IO069(PA4)J_SEG-6(F)----IO070(PA5)J_SEG-7(G)----IO071(PA6)J_SEG-8(DP)----IO072(PA7)8 位8 段数码管模块的位码接线说明: J_DIG-1(COM0)----IO046(PH7)J_DIG-2(COM1)----IO045(PH6)J_DIG-3(COM2)----IO048(PH5)J_DIG-4(COM3)----IO047(PH4)J_DIG-5(COM4)----IO050(PH3)J_DIG-6(COM5)----IO049(PH2)J_DIG-7(COM6)----IO052(PH1)J_DIG-8(COM7)----IO051(PH0)
2、运行程序,观察数码管显示变化。按下按键,观察数码管显示变化。
六、心得体会:
这次做的是矩阵键盘的实验,通过前几次实验,对单片机实验有了一定的了解,所以我这次并没有一开始就连线,我先打开程序然后花了好长一段时间了解矩阵键盘扫描原理,发现程序是通过不断循环扫描的方法来检测按键是否按下。通过这次试验我基本了解矩阵键盘的编程方法。
实验1.5 LCD(0802)显示
一、实验目的:
1、掌握GPIO 口控制外设的方法。
2、熟悉LCD(0802)的指令系统。
二、实验内容: 利用LCD(0802)液晶显示器,显示两排数字。
三、实验电路图:
四、实验说明:
1、驱动LCD(0802)GPIO 口相关寄存器初始化;
2、LCD(0802)初始化;
3、在LCD 屏上分行显示“01234567”和“ABCDEFGH”。
五、实验方法及步骤:
1、接线说明:
实验系统底板0802 液晶模块的LCD 数据口信号接线说明: J_0802B_1-5(DB0)----IO065(PA0)J_0802B_1-6(DB1)----IO066(PA1)J_0802B_1-7(DB2)----IO067(PA2)J_0802B_1-8(DB3)----IO068(PA3)J_0802B_1-9(DB4)----IO069(PA4)J_0802B_1-10(DB5)----IO070(PA5)J_0802B_1-11(DB6)----IO071(PA6)J_0802B_1-12(DB7)----IO072(PA7)
实验系统底板0802 液晶模块的LCD 控制口信号接线说明: J_0802B_1-1(RS)-----IO013(PK5)J_0802B_1-2(R/W)----IO014(PK4)J_0802B_1-3(EN)-----IO015(PK3)
2、运行程序,观察实验现象。
六、心得体会:
这次实验我还是像上次一样,先把实验内容看一下,然后就直接看程序。刚开始的程序是LCD(0802)GPIO 口相关寄存器初始化和LCD(0802)初始化,看了半个多小时也是似懂非懂,接下来看的是LCD显示“01234567”和“ABCDEFGH”的程序,这些程序应该都是应该查表得出来的,我也没有必要看懂,所以我就连线进行实验了,通过这次试验我还是能够初步掌握GPIO 口控制外设的方法和熟悉LCD(0802)的指令系统。
实验1.6 LCD(12864)显示
一、实验目的:
1、掌握GPIO 口控制外设的方法。
2、熟悉LCD(12864)的指令系统。
二、实验内容:
使用OCM12864-2 液晶显示器,显示汉字。
三、实验电路图:
四、实验说明:
1、驱动LCD(12864)的GPIO 相关寄存器初始化;
2、LCD(12864)控制器的初始化,延时及清屏;
3、在LCD 屏上显示“欢迎使用”。
五、实验方法及步骤:
1、接线:
实验系统底板128x64 液晶模块的液晶数据口信号接线说明: J_12864-4(DB0)-----IO065(PA0)J_12864-5(DB1)-----IO066(PA1)J_12864-6(DB2)-----IO067(PA2)J_12864-7(DB3)-----IO068(PA3)J_12864-8(DB4)-----IO069(PA4)J_12864-9(DB5)----IO070(PA5)J_12864-10(DB6)---IO071(PA6)J_12864-11(DB7)---IO072(PA7)实验系统底板128x64 液晶模块的液晶控制口信号接线说明: J_12864-1(D/I)-----IO011(PK6)J_12864-2(R/W)-----IO013(PK5)J_12864-3(E)-------IO014(PK4)J_12864-12(CS1)----IO015(PK3)J_12864-13(CS2)----IO016(PK2)实验1.7 蜂鸣器驱动
一、实验目的:
了解蜂鸣器的使用和驱动方法。
二、实验内容:
利用GPIO 端口中的某一位驱动蜂鸣器。
三、实验电路图:
四、实验说明:
1、相应端口寄存器初始化;
2、送数据到相应I/O 口,间断驱动蜂鸣器。
五、实验方法及步骤:
1、接线说明:
实验系统底板的蜂鸣器控制模块区域的蜂鸣器控制端接线说明: J_ Beep(Beep)----IO061(PE3)
2、运行程序,观察现象。
六、心得体会:
通过本次实验,熟悉了实验板中蜂鸣器工作原理,掌握编程控制蜂鸣器播 放音乐。掌握单片机编程控制蜂鸣器发出不同频率声音的方法;虽然在本次试验中遇到了的问题,都在同学和老师的帮助下解决了,同时还进一步了解了单片机方面的有关知识。
实验1.8 继电器驱动
一、实验目的:
了解继电器的使用和驱动方法。
二、实验内容:
利用GPIO 端口中的某一位驱动蜂鸣器。
三、实验电路图:
四、实验说明:
1、相应端口寄存器初始化;
2、送数据到相应I/O 口,驱动继电器间歇动作。
五、实验方法及步骤:
1、接线说明:
实验系统底板的继电器控制模块的继电器控制端接线说明: J_Relay(Relay)----IO061(PE3)使用跳线帽短接实验系统底板继电器控制模块JP_LED 处的跳线。使用跳线帽短接实验系统底板继电器控制模块JP_Power 处的跳线。
2、运行程序,观察现象。
六、心得体会:
通过这八天的实验和八次实验,让我学会了很多新的知识。能够利用该软件熟练地编译下载程序。通过这几天的学习,让我对飞思卡尔试验箱也有了一定的了解,而且这八个实验做下来也感觉很有意思,每次对代码进行一些小的改动出来效果以后,都感觉挺有趣的。不过在这几天的学习,我也发现了一些问题,那就是才编程方面的缺陷,有些以前的知识都已经忘了,有些程序都看不太懂了,我觉得以后我应该好好复习一下,把以前学的知识都拿回来。
第四篇:单片机(飞思卡尔)课程设计报告
2011年 6 月
1设计要求:
LCD的第一行显示运算式,第二行显示运算结果。比如要计算机12+34,在键盘上按下相应键后,LCD的第一行显示“12+34”,按下“=”号后,LCD的第二行显示“=46”。其他功能参考普通计算器。
扩展功能:负数、小数运算、复合运算。连续运算、2进制、8进制运算。
亦可直接在LCD上显示一个计算器,用触摸屏操作。
2设计思路
在LCD上显示一个与键盘功能相同的计算器,可实现用键盘、触摸屏混合操作。
1、在LCD显示屏上按下某一个符号或者在键盘上某一个按键符号时,将相应字符存入数组中
并显示在LCD上。
2按下“=”就运算处理并在第二行显示计算结果。
3、按下“C”就进行退格操作。
4、按下“=”后显示结果,并且能连续运算,其中,将操作数和操作码全部显示在第一行,第二行显示当前计算结果。
5、当出现连续按两个操作符、按等号前一个字符为操作符、最开始按下的不是操作数等非法输
入时,自动在LCD屏幕上报错并实现清屏重启计算器。
3设计步骤
1、添加基本计算器的+、-、*、/ 四则运算和退格功能;
2、在1的基础上实现复合运算和连续操作;
3、在LCD上通过调用函数在下方画出计算器的按键图画并实现与键盘同等的功能;
4、综合调试并进行优化。
4程序流程(含流程图及详细步骤解释)
详细步骤解释
程序运行时即进行初始化,在LCD显示屏上显示计算器界面。接着判断是否有键盘按键按下或者有触屏,没有就继续扫描判断,有则将按下的键所对应的字符存入数组savedata。在此之中,也在判断键入的字符是否是退格键,如果是则将上一个字符清除掉。当检测到字符“=”时,将savedata数组中所存储的字符分离,其中,数值存在操作数数组op1中,操作符存在操作符数组op2中,然后进行运算。运算开始时,先扫描op2数组,当检测到操作符则将op1数组中对应操作符前后的两个操作数进行运算(先乘除后加减),结果放在两个操作数的前一个的位置,将op1和op2数组向前移动一个位置以覆盖已经运算过的操作数和操作符。当继续进行连续运算时,将字符继续存到savedata数组后面,否则清除op1的值,将字符存到savedata数组第一个开始的位置。
程序中考虑了各种非法输入的情况:当连续输入两个操作符时、当按“=”时检测到前一个字符是操作符时、当程序第一个字符不是操作数时,都报错,自动清屏并重启计算器。
按照实际中计算器的原则,当按下“=”后,退格键不能清除,比如1+2=3;不能将“2”、“+”、“1”退格。如果是连续运算,继续按下“-3+8/2”时,退格键有效,能清“-3+8/2”中的字符。清除后继续连续运算。
5操作步骤及方法
下载完程序后:
1、普通计算:例如计算123+456,直接在显示屏上连续触发“123+456”,然后触“=” 就可以在第二行显示=579;
2、连续运算。例如先计算123+456,结果为579,此时再按下“+” “1” 先在第一行显示123+456+1,在第二行就会显示=580,再按下“-” “9”,第一行显示123+456+1-9,在第二行就会显示=571,依次类推。
3、当输入的字符是非法输入时,在LCD第三行显示 illeagle enter!然后自动清屏重启计算器。
6设计过程遇到的问题、原因及解决方法
第五篇:飞思卡尔智能车比赛个人经验总结
先静下心来看几篇技术报告,可以是几个人一起看,边看边讨论,大致了解智能车制作的过程及所要完成的任务。
看完报告之后,对智能车也有了大概的了解,其实总结起来,要完成的任务也很简单,即输入模块——控制——输出。
(1)输入模块:各种传感器(光电,电磁,摄像头),原理不同,但功能都一样,都是用来采集赛道的信息。这里面就包含各种传感器的原理,选用,传感器电路的连接,还有传感器的安装、传感器的抗干扰等等需要大家去解决的问题。
(2)控制模块:传感器得到了我们想要的信息,进行相应的AD转换后,就把它输入到单片机中,单片机负责对信息的处理,如除噪,筛选合适的点等等,然后对不同的赛道信息做出相应的控制,这也是智能车制作过程中最为艰难的过程,要想出一个可行而又高效的算法,确实不是一件容易的事。这里面就涉及到单片机的知识、C语言知识和一定的控制算法,有时为了更直观地动态控制,还得加入串口发送和接收程序等等。
(3)输出模块:好的算法,只有通过实验证明才能算是真正的好算法。经过分析控制,单片机做出了相应的判断,就得把控制信号输出给电机(控制速度)和舵机(控制方向),所以就得对电机和舵机模块进行学习和掌握,还有实现精确有效地控制,又得加入闭环控制,PID算法。
明确了任务后,也有了较为清晰的控制思路,接下来就着手弄懂每一个模块。虽然看似简单,但实现起来非常得不容易,这里面要求掌握电路的知识,基本的机械硬件结构知识和单片机、编程等计算机知识。最最困难的是,在做的过程中会遇到很多想得到以及想不到的事情发生,一定得细心地发现问题,并想办法解决这些问题。
兴趣是首要的,除此之外,一定要花充足的时间和精力在上面,毕竟,有付出就会有收获,最后要明确分工和规划好进度。