基于FPGA的红外循迹小车及计算器

基于FPGA的红外循迹小车及计算器
基于FPGA的红外循迹小车及计算器

FPGA实验报告

第一部分:红外循迹小车

一、实验要求:

要求设计设计一辆智能小车的传感器信号处理模块、电机驱动模块和控制模块等,与车上的传感系统以及电机驱动电路相配合,实现小车自主运动的功能,其中各个系统模块均用VHDL或Verilog语言描述并在FPGA芯片中实现,小车传感器安装位置如图(1)。

图(1)

小车启动后应循黑色轨迹运动,可直行、转弯,并能在较复杂路况下完成判断与通过。

二、方案设计

1、模块设计

小车的顶层文件主要由三大模块构成:产生时钟信号的时钟模块、对输入做出反应的控制模块、从控制模块接收信号并驱动电机的驱动模块。模块的联结方式如图(2)。

图(2)

时钟模块就是用计数器的方式对原始时钟信号分频得到想要的频率的时钟。下面主要详细描述驱动模块与控制模块。

2、驱动模块

驱动模块通过改变电机两个输入端的高低电平调节电机转动方向,通过改变pwm信号频率改变电机转动速度。在模块中通过计数器计数的方式产生占空比不是50%的较高频的PWM信号。

例如实验中用占空比为30%的PWM信号,并将其取反以得到占空比70%的PWM信号。若以in1、in2、pwm1为左轮的输入以及PWM信号;in3、in4、pwm2为右轮的输入以及PWM信号则让小车左转的Verilog语言描述为: in1=1;

in2=0;

pwm1=~F3_7;

in3=1;

in4=0;

pwm2=F3_7;

利用左右两轮的转速差实现转弯。

模块中设计了小车的4种运动方式:前进、左转、右转、后退,通过模块接收到的控制信号给出相应的输出。其封装图如图(3)。

图(3)驱动模块封装图

3、控制模块

(1)、循迹策略的选择:

本实验中小车的循迹策略主要有中间循迹与两侧循迹,其各自优缺点如下:中间循迹:

优点:小车一直在轨道上,转弯时不会发生冲出跑到的情况,轨道对小车的控制力较强;

缺点:小车传感器在轨道上的部分较多(一般情况下有4个接收管在轨道上方),对小车侧面的路况探测不够,导致一些较复杂的弯道,如井字弯不能很流畅地通过。

两侧循迹:

优点:小车对轨道某一侧的探测面很广,对同侧的井字弯可一次性通过; 缺点:由于小车对轨道另一侧没有探测,所以有可能冲出跑道。 综合考虑后决定使用中间循迹。

(2)、控制策略描述:

本段描述时以0、1、x 表示传感器的状态,0表示传感器下方为白,1表示传感器下方为黑,x 表示不关心这一位传感器的状态。

由于传感器较多,所以控制策略中很大程度用模糊控制,即不对输入的8位每一位都有要求,只要特定的几位达到了预定的状态即可触发电机状态的变化。几种一般的路况如图(4)所示。

图(4)

在一般路况中只要有中间黑(00x11x00)、两边黑(1xxxxxx1,用以通过井字弯)、全黑(11111111,用以通过十字弯)的情况即前进;

小车左偏(0x0xxx11)即右转; 小车右偏(11xxx0x0)即左转;

有了以上几种状况的判断后小车已经可以通过一般的直线、弯角、目标方向是正前方的十字弯以及靠得比较进的井字弯。

但若有较复杂的路况,如:十字弯的目标方向不是正前方而是左或是右;井字弯的两条线离得较远,直行过去靠边的传感器不能接触到。(见图(5)情况)

图(

5)

这两种情况都相当于对于十字弯的处理方法不是仅仅当全黑就向前,而是确保十字弯的3个方向都可以被探测一遍。具体策略是:小车前进,遇到全黑后仍向前,向前若遇到全白则后退,表示遇到了十字弯;后退到全黑时就向右转,即探测右边的分叉,有路则继续,没有路(即有探测到全白情况)则后退;退到全黑再向左,此时又回到第一次探测的正前方的路,也是没有路,遇到全白再后退;再退到全黑就向左,则可以探测左边的分叉。以上简单得说就是确定出口不在前方后就采取前进探路,遇白后退,遇全黑(回到十字路口)即向左。当然实际情况下可以将全黑适当放宽,如传感器有6到7个为0即可,以增加程序的鲁棒性。

自启动问题:Quartus中状态机有一启动的默认状态,一般为状态编号最小的那一个状态,可将此作为启动时的状态,此状态一直保持前进,直到遇到有传感器变为0则开始正常的循迹逻辑。

孤岛问题:若启动时在一孤岛上,则小车会先前进,遇到全白又后退,后方遇到全白又前进,如此往复。可对其中某个状态计数,达到一定次数后就不再试探,而是直接前进寻找其他路线。

(3)控制策略的实现

控制策略依靠状态机来实现。为了编写方便,每一种状态作为次态时只对应一种输出。编写程序时采用有3个always块的三段式写法,即第一个always块将次态赋给现态,第二个always块描述状态如何根据输入以及现态实现状态跳转,第三个always块描述每个状态作为次态时的输出。

若只有简单逻辑,即没有考虑较复杂路况时的状态机图为:

若考虑复杂路况,则状态机为:

三、实验结果与实验现象分析

使用的是15号小车。上车实验时若只用考虑简单情况的程序则已经可以通过“二校门”路线图。用考虑了复杂情况的程序也可通过特殊的弯道,但是小车整体的稳定性会变差,主要体现在走正常路线时有时会误判为进入了特殊路线,从而做出错误的动作。这主要是由于走直线时如果姿态不好就会走成S形路线,有可能会有传感器全为0的情况,从而引起误判。对于这个问题我主要有两点改进的想法,一是要保持小车稳定的姿态,即走直线不能总两边“碰壁”,走成“S”形路线,具体到程序上就是可以增加转弯的种类,让小车在前进状态转弯时左右轮均向前,利用差速转小弯,使其转弯的弧度变大;二是要增强对干扰状况的甄别,如在全黑状况中增加计数器,全黑达到一定时间才认为是有效的。

四、实验中出现的一些问题与解决方法及改进想法

1、前进走“S”形路线

主要是以改变转弯程度的方法解决,即让车前进时遇到转弯就左右轮都先前,增加转弯的弧度,从而既能微调,又能保持车头方向变化不大。

2、有时到直角弯虽然有转弯动作但仍会冲出

主要从两方面解决,一是增加控制模块的时钟频率,从50Hz提高到了100Hz,让小车判断更灵敏;二是转弯时让内侧轮反转,减小转弯半径。

3、小车不同转弯方式的转换问题

虽然实验中最终采用的是内侧轮不转的折中方式转弯,虽然这减少了状态数,增加了小车的稳定性,但在不同的情况下用不同的转弯方式仍是提高小车性能的好想法。若是想要通过传感器的输入来判断处在那种弯道不免有些困难而且及其容易误判,所以我设想的方法是每种转弯的方式作为一个状态(这是由于每

种状态做次态时只对应一种输出),并在状态中加入计数器,要转弯时先进行内侧轮正转的弧度最大的转弯方式,在这种状态一定次数(时间)后就转到内侧轮不转的转弯方式,若在这种状态又达到了一定次数就再转到内侧轮反转的转弯弧度最小的转弯方式。

这种方法的难点主要在于每种状态停留次数的设定以及何时将计数器清零。对于停留次数的确定主要只有通过实验来改进。计数器清零应该是在走到直线后进行,也就是当小车在前进状态一定时间后,于是前进状态也要有一计数器,用以判断进入了前进状态并将转弯状态计数器清零。前进状态中计数器清零应发生在进入任一转弯状态中。

五、体会与建议

1、Verilog语言作为硬件描述语言与C、C++等单纯编程的不同。主要是在其并行运行以及语言需要能够用电路真正的实现方面。

2、EDA软件使用的一些小细节、小技巧,如更改涉及状态机的.v文件后需要将由它生成的图形文件重新update一下。

3、由于小车和芯片数量的原因,导致有时会拿不到芯片,建议老师可以分配一组几个同学用一套或几套设备。

4、由于有很多不同的路线,很多同学一开始就开始考虑最复杂的情况,建议可以引导大家先从简单的图走起,一步一步增加功能。

5、开始时大家看到赛道没有感觉,认为走下来就行,对一些规则认识不清。如二校门图中有一排4个连着的井字弯,一些同学就认为从中间冲过去是“捷径”,但实际要求是必须能够一个一个通过4个弯。又如我在仿真检查时就将井字弯简单的当成了两个十字弯来处理,而没有强调一次性通过。建议老师开始时就集中讲清过各个弯的要求。

第二部分:数字计算器

一、实验要求

基于FPGA 实验板设计一个计算器,从键盘输入算术式,由FPGA 完成相应运算,并将运算结果显示在数码管上。该计算器可实现加、减、与、或、比较等运算。

二、方案设计

1、总体模块设计

计算器主要由输入模块、计算模块(alu)、输出显示模块组成。由于计算较为简单,并且为了减少输入输出接口的数量,将输入模块与计算模块合在一起。

主要思路是:设置以reg型变量s0,每输入一个数若是第一个就将s0清零并将输入赋予s0,若不是第一个数就s0=s0*10+input,输入操作符后,就将s0赋给alu的一个操作数num_a,操作符赋予alu的操作符op,再输入第二个数再像前面一样赋给s0,等输入“=”后将s0赋予另一个操作数num_b,并将运算的结果再赋给s0。整个过程中s0总是通过显示输出模块显示在数码关上的。这样就可以实现对显示的要求并能实现单个输入即时输出。

此外一次计算后还可以根据后面的输入决定是将s0的值赋给num_a再计算还是清零进行新的计算,从而实现连续输入连续计算的功能。

2、输入模块&计算模块

计算器的输入通过4*4键盘按键实现键盘原理图如图(6)。

图(6)

对按键的识别通过扫描实现,对{v1,v2,v3,v4}不断循环加入{0,0,0,1}、{0,0,1,0}、{0,1,0,0}、{1,0,0,0}四种扫描信号以扫描,若没有按键按下则{H1,H2,H3,H4}应该是{0,0,0,0},若有按键按下,由于扫描频率很快,所以一定可以在按键按下期间扫描到按键所在的一列,这样H1~H4中属于按键所在行的就会呈高电平,根据此时{V1,V2,V3,V4}和{H1,H2,H3,H4}的值就可以确定按键的位置。

扫描是通过4进制计数器给出扫描信号,通过状态机,若是在某一列扫描到按键则给出按键信息,若没扫到则开始扫描下一列,如此循环。

但需要考虑的问题是按键的抖动问题,由于是机械按键,在按下的时候不可避免的会有按键抖动而造成多次接触从而读入多个数的情况,所有要有按键防抖的机制。

防抖机制是通过每次操作后都转入到wait状态等待一定时间(大约0.2秒)不再接收输入。这样不仅可以有效的防抖,而且可以实现如同现实键盘的一项功能,就是单按是一次输入,若长按超过一定时间就当成连续输入。

计算模块就是根据输入的数与输入的运算符得出结果。本次实验是将计算模块作为一个task供输入模块调用。

3、显示输出模块

显示模块仍是通过扫描利用人眼的视觉暂留来显示。选通信号依次是{1,0,0,0}、{0,1,0,0}、{0,0,1,0}、{0,0,0,1},来使4个数码管依次点亮。通过对需要显示的数的整除、取模来获得它个位、十位、百位、千位的数值。每个数码管点亮时就显示相应位的数。需要注意的是数码管是共阴极,即需要发光的位置应为低电平。

4、其他一些附加功能的实现思路

(1)、16进制与10进制的切换

将10进制计算中*10、/10、%10改为*16、/16、%16即可实现16进制的计算,在显示模块需要增加A~F的编码。同时设置一转换的变量,低电平时使用10进制部分,高电平时使用16进制部分。使用时用拨码开关实现切换。

(2)、负号的输入、显示以及负数运算

负号的显示是利用闲置的第四个数码管来实现,结果为负时就显示负号。同时仍可用以拨码开关控制输入负数,开关为低电平时输入为正数,高电平时输入为负,再通过计算模块的判断来得出正确的结果。

三、实验结果与实验现象分析

程序下载到板上后可以完全实现上述功能。

四、实验中出现的一些问题与解决方法及改进想法

1、开始时我的输入模块与alu模块是分开的,但遇到的问题就是两者的接口key_value的值在变化后就一直维持不变直到下次变化,相当于人为的造成了连续读入,若要在此基础上改进我当时的思路是增加接口,以表示何时为有效值,何时无效,但这样就比较复杂,最终我的解决方法就是将输入模块与alu模块合在一起,每次都在有输入后才有操作,从而避免了多次读入。

2、一些改进想法

优先级计算的一些想法:一是可以将所有输入的数与操作符都存起来,计算时先按优先级重新排序,然后就执行顺序计算,这种方法的有点是实现比较简单,但缺点是有最大计算个数的限制。二是对输入的数即时运算,由于有5个优先级,最多输入6个数后就可以进行优先级判断并运算,这种方法就可以不限制操作数的个数。

五、体会与建议

1、实验中对器件工作原理的理解

由于实验中所用的输入输出方式都是第一次遇到,所以自己借阅了一些书籍并在网上查找了一些资料才加深了理解并有了一些思路。而且关于键盘输入的防抖的概念也是在资料的查找中才知道。

2、实验中计算器的功能添加

功能添加可由简到繁,在基本功能的基础上边增加功能边给模块增加接口。

3、一些建议

实验中感觉小车部分相对计算器部分比较紧,建议适当延长小车部分的时间,如将第一周周五的时间给小车。

基于FPGA的计数器的程序的设计方案

基于FPGA的计数器的程序设计方案 1.1 FPGA简介 FPGA(Field-Progrmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了 原有可编程器件门电路数有限的缺点。 自1985 年Xilinx 公司推出第一片中大规模现场可编程逻辑器件(FP2GA) 至 今,FPGA 已经历了十几年的历。在这十几年的过程中,可编程器件有了惊人的发展: 从最初的1200 个可利用门,到今天的25 万可利用门,规模增大了200 多倍; FPGA 供应商也从Xilinx 的一枝独秀,到今天近20 个厂商的分庭抗争;FPGA 从单一的基于SRAM结构到今天各种结构类型的出现,都充分体现了可编程器件这一巨大市场的吸引力。FPGA 不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开 发周期短、开发软件投入少、芯片价格 不断降低。由于目前电子产品生命周期相对缩短,相近功能产品的派生设计增多 等特点,促使FPGA 越来越多地取代了ASIC 的市场,特别是对国内众多的科研单位来说,小批量、多品种的产品需求,使得FPGA 成为首选。 1.2 硬件描述语言VHDL特点 功能强大、设计灵活。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持广泛、易于修改。由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。强大的系统硬件描述能力。VHDL具有多层次的设计描述功能,既可以描

基于STC89C52单片机-红外智能循迹小车 (1)

基于STC89C52单片机红外智能循迹小车 实验报告册 学院:电气工程学院 协会:电子科技协会 班级:电气1206 班 姓名:蔡申申 学号:201223910625 联系方式:151 **** ****

摘要 本报告论述了自己参加第八届河南工业大学科技创新大赛——基于STC89C52RC单片机红外智能循迹小车的方案论证、制作过程、调试过程。设计采用STC89C52RC单片机为核心控制器件,采用TCRT5000红外反射式开关传感器作为小车的循迹模块来识别白色路面中央的黑色引导线,采集信号并将信号转换为能被单片机识别的数字信号,单片机获取路面信息后,进行分析、处理,最后控制减速电机转动实现转向。实验表明:该系统抗干扰能力强、电路结构简单、制作成本低,运行平稳、可靠性好。 关键词:STC89C52单片机、反射式光电对管、PWM调速 减速电机

目录 摘要 (2) 1 绪论 (4) 1.1 智能循迹小车概述 (4) 1.1.1 循迹小车的发展历程回顾 (4) 1.1.2 智能循迹分类 (4) 1.1.3 智能循迹小车的应用 (5) 2 智能循迹小车总体设计方案 (5) 2.1 整体设计方案 (5) 2.1.1 系统设计步骤 (5) 2.1.2 系统基本组成 (5) 2.2 整体控制方案确定 (6) 3 系统的硬件设计 (6) 3.1 单片机电路的设计 (6) 3.1.1 单片机的功能特性描述 (6) 3.1.2 晶振电路 (7) 3.1.3 复位电路 (7) 3.2 光电传感器模块 (8) 3.2.1 传感器分布 (8) 3.3 电机驱动电路 (9) 3.3.1 L298N引脚结构 (9) 3.3.2 电机驱动原理 (9) 4 系统的软件设计 (10) 4.1 软件设计的流程 (10) 4.2 本系统的编译器 (10) 5 系统的总体调试 (11) 5.1 硬件的测试 (11) 5.2 系统的软件调试 (11) 结论 (11) 致谢 (11) 参考文献 (12) 附录A 原理图与模块电路图 (12) 附录B 程序代码 (13) 附录C 硬件实物图 (15)

51红外循迹小车报告(舵机版)最终版

简易教程

前言 往届全国大学生电子设计竞赛曾多次出现了集光、机、电于一体的简易智能小车题目,此次,笔者在通过多次论证、比较与实验之后,制作出了简易小车的寻迹电路系统。 整个系统基于普通玩具小车的机械结构,利用小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。系统分为检测、控制、驱动三个模块。首先利用光电对接收管和路面信号进行检测,然后经过比较器处理,对软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。 智能小车能在画有黑线的白纸“路面”上行驶,这是由于黑线和白纸对光线的反射系数不同,小车可根据接收到的反射光的强弱来判断“道路”---黑线,最终实现简单的循迹运动。 个人水平有限,有错误不足之处,还望各位前辈同学多多包含,指出修正,完善。谢谢! 李学云王维 2016年7月27号

目录 前言 (1) 第一部分硬件设计 (1) 1.1 车模选择 (1) 1.2传感器选择 (1) 1.3 控制模块选择 (2) 第二部分软件设计及调试 (3) 2.1 开发环境 (3) 2.2总体框架 (3) 2.3 舵机程序设计与调试 (3) 2.3.1 程序设计 (3) 2.3.2 调试 (3) 2.3.3 程序代码 (4) 2.4 传感器调试 (5) 2.4.1 传感器好坏的检测 (5) 2.4.2 单片机能否识别信号并输出信号 (5) 2.5 综合调试 (7) 附录1 (9) 第一篇舵机(舵机及转向控制原理) (9) 1.1概述 (9) 1.2舵机的组成 (10) 1.3舵机工作原理 (11) 1.4舵机使用中应注意的事项 (12) 1.5如何利用程序实现转向 (12) 1.6舵机测试程序 (13) 附录2 (14) 第二篇光电红外传感器 (14) 2.1传感器的原理 (14) 2.2红外光电传感器ST188 结构图 (15) 2.3传感器的选择 (15) 2.4传感器的安装 (16) 2.5使用方法 (16) 2.7红外传感器输入输出调试程序 (17)

基于51单片机智能小车循迹程序

#include #define uchar unsigned char #define uint unsigned int ////电机驱动模块位定义//// sbit M11=P0^0; //左轮 sbit M12=P0^1; sbit M23=P0^2; //右轮 sbit M24=P0^3; sbit ENA=P0^4; //左轮使能PWM输入改变dj1数值控制转速sbit ENB=P0^5; //右轮使能PWM输入改变dj2数值控制转速////占空比变量定义//// unsigned char dj1=0; unsigned char dj2=0; uchar t=0; ////红外对管位定义//// sbit HW1=P1^0; //左前方 sbit HW2=P1^1; //右前方 sbit HW3=P1^2; //左后方 sbit HW4=P1^3; //右后方 ////小车前进//// void qianjin() { M11=1; //左轮 M12=0; // M23=1; //右轮 M24=0; // dj1=50; dj2=50; } ////向左微调//// void turnleft2() { M11=1; M12=0; M23=1; M24=0; dj1=7; //左轮 dj2=50; //右轮 } ////向右微调//// void turnright2() { M11=1; M12=0;

M23=1; M24=0; dj1=50; dj2=7; } ////向左大调//// void left() { M11=0; M12=1; M23=1; M24=0; dj1=7; dj2=80; } ////向右大调//// void right() { M11=1; M12=0; M23=0; M24=1; dj1=80; dj2=7; } ////循迹动作子函数//// void xj() { if(HW1==0&&HW2==0&&HW3==0&&HW4==0) //前进逻辑 { qianjin(); } if(HW1==1&&HW2==0&&HW3==0&&HW4==0) //左右微调 { turnleft2(); } if(HW1==0&&HW2==1&&HW3==0&&HW4==0) { turnright2(); } if(HW1==1&&HW2==0&&HW3==1&&HW4==0) //左右大调 { left(); }

推荐-基于FPGA的计数器的程序设设计 精品

郑州轻工业学院 电子技术课程设计 题目 _基于FPGA的计数器设计___ _________________________ 学生姓名 _ XXX_________________ 专业班级 _电子信息工程10-01班____ 学号 _5401001030XXX__________ 院(系)电气信息工程学院___ ____ 指导教师 _杜海明耿鑫____________ 完成时间20XX年06月22日_______

郑州轻工业学院 课程设计任务书 题目基于FPGA的计数器的程序设设计_______________ 专业、班级电子信息工程学号姓名 _____ 主要内容、基本要求、主要参考资料等: 主要内容: 要求学生使用硬件描述语言(Verilog 或者VHDL)设计基于FPGA的计数器的 源程序。实现如下功能:显示1个0-9999的四位计数器;四位七段数码管的译码与 显示。理解数码管的译码原理,同时需要做一个分频器,理解时钟分频的原理及意 义。 基本要求: 1、学会quartusII的使用,掌握FPGA 的程序设计方法。 2、掌握硬件描述语言语法。 3、程序设计完成后要求在quartusII中实现功能仿真。 主要参考资料: 1、. [M]..20XX,4 2、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版 社.20XX,1 完成期限:20XX.6.21—20XX.6.25 指导教师签名: ________________ 课程负责人签名: ___________________ 20XX年6月18日

目录

基于FPGA的计数器的程序设设计 摘要 本文介绍了一种基于FPGA的,由顶层到底层设计的数字频率计。本文主要包括该频率计的设计基础和实现方法以及译码与显示等内容,描述了它的设计平台、工作原理和软硬件实现。本设计主要有分频器、四位计数器、16位锁存器以及数码管显示电路。计数器设计采用VHDL硬件描述语言编程,极大地减少了硬件资源的占用,仿真与分析结果表明,该数字频率计性能优异,软件设计语言灵活,硬件简单,速度快。 关键词FPGA 计数器 VHDL

循迹小车程序(三路循迹)

#include "reg51.h" typedef unsigned int uint; typedef unsigned char uchar; sbit p2_0 = P2^0; //开关 sbit p2_1 = P2^1; //红外检测 sbit p2_2 = P2^2; sbit p2_3 = P2^3; sbit p1_0 = P1^0; //电机驱动 sbit p1_1 = P1^1; sbit p1_2 = P1^2; sbit p1_3 = P1^3; sbit pwm1 = P1^4; //pwm调速 sbit pwm2 = P1^5; unsigned char timer1; /******************************************************************** *********** * 函数名 : Time1Config * 函数功能 : 设置定时器 * 输入 : 无 * 输出 : 无 ********************************************************************* **********/ void Time1Config()

{ TMOD|= 0x10; //设置定时计数器工作方式1为定时器 //--定时器赋初始值,12MHZ下定时0.5ms--// TH1 = 0xFE; TL1 = 0x0C; ET1 = 1; //开启定时器1中断 EA = 1; TR1 = 1; //开启定时器 } /************************************************ 延时函数 总共延时 1ms 乘以 count ************************************************/ void DelayX1ms(uint count) { uint j; while(count--!=0) { for(j=0;j<72;j++); } }

循迹小车课程设计报告

智能循迹小车设计与制作 课程设计报告 系别: 专业: 班级: 成员: 指导老师: 时间:二〇一一年6月30日

一、设计目的: 1、学会智能电子产品的功能设计与任务分析,能进行小型电子产品方案设计; 2、掌握基于51单片机、FPGA模数混合硬件系统设计和程序设计; 3、熟悉电子信息类企业项目完整的运作过程及管理规范,培养团队协作能力、沟通能力、创新能力和组织能力。 二、智能循迹小车任务分析 这是一种基于STC89C51单片机的小车寻迹系统。该系统采用两组高灵敏度的光电对管,对路面黑色(白色)轨迹进行检测,并利用单片机产生PWM波,控制小车速度。测试结果表明,该系统能够平稳跟踪给定的路径。 整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行 三、智能循迹小车循迹原理 该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。利用了简单、应用比较普遍的检测方法—发光二极管+光敏电阻。 发光二极管+光敏电阻,即利用光线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射白光,当白光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。

四、智能循迹小车总体方案 整个电路系统分为检测、控制、显示、驱动四个模块。首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,然后显示小车的运行状态,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。系统方案方框图如图1所示。 图1 智能小车寻迹系统框图 五、智能循迹小车各模块方案 1、循迹模块设计 方案1: 用红外发射管:接收管自己制作光电对管循迹传感器。红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射出的光线则测出黑线继而输出高电平。这样自己制作组装的寻迹传感器基本能够满足要求,但是工作不够稳定,且容易受外界光线的影响,因此我们放弃了这个方案。 方案2: 发光二极管+光敏电阻组成光敏探测器,光敏电阻的阻值可以根跟随周围 环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射

基于fpga的计数器的程序设计

基于FPGA的计数器的程序设计 摘要 本文介绍了一种基于FPGA的,由顶层到底层设计的数字计数器。本文主要包括该计数器的设计基础和实现方法以及译码与显示等内容,描述了它的设计平台、工作原理和软硬件实现。本设计主要有分频器、四位计数器、16位锁存器以及数码管显示电路四个模块组成。计数器各模块设计采用VHDL硬件描述语言编程,极大地减少了硬件资源的占用,仿真与分析结果表明,该数字计数器性能优异,软件设计语言灵活,硬件简单,速度快。 关键词FPGA计数器VHDL分频器

目录 基于FPGA的计数器的程序设计 (1) 摘要 (1) 1 绪论 (3) 1.1 FPGA简介 (3) 1.2硬件描述语言VHDL简介 (3) 1.3开发工具Quartus II简介 (4) 2整体设计方案 (4) 3各功能模块设计及仿真 (5) 3.1分频器的设计 (5) 3.1.1分频器设计原理 (5) 3.1.2源程序及波形仿真 (6) 3.1.3分频器RTL 电路图 (7) 3.2计数器的设计 (7) 3.2.1分频器设计原理 (7) 3.2.2源程序及波形仿真 (8) 3.2.3 RTL 电路图 (11) 3.3锁存器的设计 (11) 3.3.1锁存器设计原理 (11) 3.3.2锁存器源程序及波形仿真 (12) 3.3.3锁存器RTL电路图 (13) 3.4显示部分的设计 (13) 3.4.1七段数码管显示原理 (13) 3.4.2七段数码管显示源程序及波形仿真 (15) 3.4.3七段数码管显示RTL 电路图 (16) 4系统顶层设计 (17) 4.1.1自顶向下的设计方法 (17) 4.1.2 顶层设计源程序及其仿真波形 (17) 4.1.3系统顶层RTL 电路图 (20) 5总结 (21) 参考文献 (22)

智能循迹小车C程序完美详尽

/*------------------------------------------------------ -----------------------小车运行主程序------------------- -------------------------------------------------------- 简介:@模块组成:红外对管检测模块----五组对管,五个信号采集端口 直流电机驱动模块----驱动两个直流电机,另一个轮子用万向轮 单片机最小系统------用于烧写程序,控制智能小车运动 @功能简介:在白色地面或皮质上用黑色胶带粘贴出路线路径宽度微大于相邻检测管间距。 这样小车便可在其上循迹运行。 @补充说明:该程序采取“右优先”的原则: 即右边有黑线向右转, 若无,前方有黑线,向前走, 若无,左边有黑线,向左转, 若全无,从右方向后转。 程序开头定义的变量的取值是根据我的小车所调试选择好的, 如果采用本程序,请自行调试适合自己小车的合适参数值。 编者:陈尧,黄永刚(江苏大学电气学院二年级,三年级) 1.假定:IN1=1,IN3=1时电机正向转动,必须保证本条件 2.假定:遇到白线输出0,遇到黑线输出1; 如果实际电路是:遇到白线输出1,遇到黑线输出0, 这种情况下只需要将第四,第五句改成: #define m0 1 #define m1 0 即可。 3.说明1:直行---------------速度full_speed_left,full_speed_right. 转弯,调头速度------correct_speed_left,correct_speed_right. 微小校正时---------高速轮full_speed_left,full_speed_right; 低速轮correct_speed. 可以通过调节第六,七,八,九,十条程序,改变各个状态 下的占空比(Duty cycle ),以求达到合适的转弯,直行速度 4.lenth----------length检测到黑线到启动转动的时间间隔 5.width----------mid3在黑线上到脱离黑线的时间差 6.mid3-----------作为判断中心位置是否进入黑线的标志,由于运行的粗糙性和惯性, 常取其他对管的输出信号作为判断条件 7.check_right----若先检测到左边黑线,并且左边已出黑线,判断右端是否压黑线时间拖延

基于FPGA的定时器计数器的设计与实现

基于FPGA的定时器/计数器的设计与实现 摘要 本课题旨在用EDA工具与硬件描述语言设计一个基于Altera公司的FPGA 16位计数器\定时器,可对连续和非连续脉冲进行计数,并且计数器在具有计数定时功能基础上,实现简单脉宽调制功能和捕获比较功能。本设计采用QuartusII编译开发工具使用VerilogHDL 设计语言进行设计,并采用了由上而下的设计方法对计数器进行设计,体现了VerilogHDL 在系统级设计上自上而下设计风格的优点。本设计中采用了三总线的设计方案,使设计更加简洁与规范。本设计所有模块与功能均在Quartus II 7.0_1.4G_Liwz版本下通过编译与仿真,实现了定时器/计数器的设计功能。 关键词:VerilogHDL硬件描述语言;QuartusII;FPGA;定时器/计数器

FPGA-based timer / counter design and implementation This topic aims to use EDA tools to design a 16 bit counter \ timer based on Altera's FPGA by hardware descripe language, which can count continuous and discontinuous pulset, and the counter with the function of capture and PWM. This design uses VerilogHDL language and top-down design method to design the counter on QuartusII compile tool, the design reflect the advantages of VerilogHDL top-down design in system-level design. The design uses a three-bus design, which make design much more specifications and concise. The design and function of all modules are compiled and simulationed on the Quartus II 7.0_1.4G_Liwz versions, and achieve the timer / counter’s features. Key words: VerilogHDL hardware description language; QuartusII; FPGA; timer / counter

红外自动循迹小车

目录 目录 0 摘要: (1) 1.任务及要求 (2) 1.1任务 (2) 2.系统设计方案 (2) 2.1小车循迹原理 (2) 2.2控制系统总体设计 (2) 3.系统方案 (3) 3.1 寻迹传感器模块 (3) 3.1.1红外传感器ST188简介 (4) 3.1.2比较器LM324简介 (4) 3.1.3具体电路 (4) 3.1.4传感器安装 (5) 3.2控制器模块 (6) 3.3电源模块 (7) 3.4电机及驱动模块 (7) 3.4.1电机 (7) 3.4.2驱动 (8) 3.5自动循迹小车总体设计 (9) 3.5.1总体电路图 (9) 3.5.2系统总体说明 (12) 4.软件设计 (12) 4.1 PWM控制 (12) 4.2 总体软件流程图 (13) 4.3小车循迹流程图 (14) 4.4中断程序流程图 (16) 4.5单片机测序 (18) 5.参考资料 (21)

自动循迹小车 摘要: 本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法。小车以AT89C51 为控制核心, 用单片机产生PWM波,控制小车速度。利用红外光电传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。 关键词:单片机AT89C51 光电传感器直流电机自动循迹小车 Abstract : This design is a Simple Design of a smart auto-tracking vehicle which based on MSC control.The construction of the car ,and methods of hardware and software design are included. The car use AT89C51 as heart of centrol in this system. Then using PWM waves Produced by MCU to control car speed. By using infraraed sensor to detect the information of black track. The smart vehicle acquires the information and sends t hem to the MSC.Then the MSC analyzes the signals and controls the movements of t he motors. Which make the smart vehicle move along the given black line antomaticly. Keywords :infrared sensor ;MSC ;auto-tracking

智能循迹小车 设计报告

智能循迹小车设计 专业:自动化 班级: 0804班 姓名: 指导老师: 2010年8月——2010年10月 摘要:

本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。 此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

循迹小车课程设计

H a r b i n I n s t i t u t e o f T e c h n o l o g y 课程设计说明书(论文) 课程名称:单片机课程设计 设计题目:智能循迹小车 院系:测控技术与仪器系 班级:1001104 设计者:陈哲 学号:1100100534 指导教师:周庆东 设计时间:2013/9/2—2013/9/13 哈尔滨工业大学

哈尔滨工业大学课程设计任务书

开题报告 (一)立项背景 本次的课程设计的主要任务是设计一个能够通过红外对管识别黑线、通过PWM电路模块进行调速跟踪黑色条纹带以及通过LCD液晶模块进行脉冲、速度、PWM的占空比三个参数的显示的智能小车。控制板的设计以16位的MC9S128单片机为控制核心,MC9S12XS128是一款功能强大的16位微控制器,具有非常丰富的片上资源,如:10位精度的ADC,节省了片外AD;强大的定时器,方便对电机进行控制,可以进行浮点型运算。另外还有精密的比较器,大容量的RAM和ROM,可存储大容量的程序。驱动板则以L289N 驱动芯片为核心,应用红外对管和LCD液晶模块,成功的实现小车的循迹、测速、调速和显示功能这四大功能。课题完成了红外对管、单片机、控制板、驱动板选择,采购接口电路的设计和连接以传感器和电路的安装位置和方式的安排,并完成了整个硬件的安装工作。除此之外,还对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成了软件和硬件的融合,基本实现了智能小车要求实现的预期的功能。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以选择“基于单片机的智能小车循迹设计”一题作为尝试。 本次设计主要解决问题是如何实现所要求的四大功能,最后完成硬件实物的组装,并编制相关程序,使其实现功能的融合,做出具有预先要求功能的实物。 (二)课题目的 在我们基本掌握了51单片机的基本使用方法的基础之上,本学期开学初,单片机课程设计给了我们更大的挑战,课题的目的有以下几点。 (1)进一步熟练其他更加高级的单片机的使用方法、提高程序的编写能力 (2)掌握单片机系统外扩器件的连接与使用 (3)学会选择合适的传感器来完成任务 (4)掌握软件和硬件调试的基本技巧与方法 (三)设计思路

智能寻迹小车以及程序

寻迹小车 在历届全国大学生电子设计竞赛中多次出现了集光、机、电于一体的简易智能小车题目。笔者通过论证、比较、实验之后,制作出了简易小车的寻迹电路系统。整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。 总体方案 整个电路系统分为检测、控制、驱动三个模块。首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。系统方案方框图如图1所示。 图1 智能小车寻迹系统框图 传感检测单元 小车循迹原理 该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。 红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。 传感器的选择 市场上用于红外探测法的器件较多,可以利用反射式传感器外接简单电路自制探头,也可以使用结构简单、工作性能可靠的集成式红外探头。ST系列集成红外探头价格便宜、体积小、使用方便、性能可靠、用途广泛,所以该系统中最终选择了ST168反射传感器作为红外光的发射和接收器件,其内部结构和外接电路均较为简单,如图2所示:

图2 ST168检测电路 ST168采用高发射功率红外光、电二极管和高灵敏光电晶体管组成,采用非接触式检测方式。ST168的检测距离很小,一般为8~15毫米,因为8毫米以下是它的检测盲区,而大于15毫米则很容易受干扰。笔者经过多次测试、比较,发现把传感器安装在距离检测物表面10毫米时,检测效果最好。 R1限制发射二极管的电流,发射管的电流和发射功率成正比,但受其极限输入正向电流50mA的影响,用R1=150的电阻作为限流电阻,Vcc=5V作为电源电压,测试发现发射功率完全能满足检测需要;可变电阻R2可限制接收电路的电流,一方面保护接收红外管;另一方面可调节检测电路的灵敏度。因为传感器输出端得到的是模拟电压信号,所以在输出端增加了比较器,先将ST168输出电压与2.5V进行比较,再送给单片机处理和控制。 传感器的安装 正确选择检测方法和传感器件是决定循迹效果的重要因素,而且正确的器件安装方法也是循迹电路好坏的一个重要因素。从简单、方便、可靠等角度出发,同时在底盘装设4个红外探测头,进行两级方向纠正控制,将大大提高其循迹的可靠性,具体位置分布如图3所示。

智能循迹小车设计

智能循迹/避障小车研究 工作报告 一、智能循迹小车程序结构框图 二、Proteus仿真图 三、软件程序设计

一、智能循迹小车程序结构框图 经过几天在网上的查找,对智能循迹/避障小车有了大致的了 解, 一般有三个模块: 1、最基本的小车驱动模块,使用两个二相四线步进电机对小车的两个后轮分别进行驱动,前轮最好用万向轮,能使小车更好地转弯; 2、小车循迹模块,在小车底部有三个并排安装的红外对管,对黑色与白色的反射信号不同,经单片机处理后对小车进行相应处理; 3、避障模块,我写的程序中对于避障模块是用中断来处理的(即安装在小车车头的红外对管检测到有障碍物后,就会向单片机的P3_2口输出一个高电平或是低电平,这时中断程序将对小车进行预先设定好的避障处理),但是在程序结构框图中,我不太会表示中断处理方式,所以就用查询的方式画了。

N Y N Y 二、Proteus 仿真图 我用Proteus 大概地仿真了小车的运行状态。图中的两个二相四线步进电机就代表小车的左右轮(假定步进电机顺时针转动方向为小车前进方向),网上有很多种驱动芯片,在仿真时我只使用L298N 芯

片来驱动步进电机。用三个单刀双制开关模拟用于小车循迹的三个红外对管的输出信号,经一个与门与三极管开关连接到P3_3口,中断程序对P1_0, P1_1, P1_2三个口进行检测,并做出相应处理。同时因为避障模块的优先级高于循迹模块,所以将外部中断0用于避障,外部中断1用于循迹。P1_3口则用于检测小车是否到达终点。 1、小车驱动模块: 使用一片298芯片驱动一个二相四线步进电机,电机的电压为12V。

基于FPGA十进制同步计数器

十进制同步计数器 一、实验目的 1.学习十进制同步计数器的Verilog硬件设计 2.学会并掌握Quartus II软件的使用 3.学会并掌握modelsim仿真软件的使用 二、实验原理 进制计数器具有电路结构简单、运算方便等特点,但是日常生活中我们所接触的大部分都是十进制数,特别是当二进制数的位数较多时,阅读非常困难,还有必要讨论十进制计数器。在十进制计数体制中,每位数都可能是0,1,2,…,9十个数码中的任意一个,且“逢十进一”。根据计数器的构成原理,必须由四个触发器的状态来表示一位十进制数的四位二进制编码。 第2个计数脉冲来到后,其状态为0010。以下类推,可以得到如表1所示的状态表。但需注意:在第9个脉冲来到后,亦即计数器处于1001态时,低电平封住了F2的置1端,Q1的高电平又使K4=1,故第十个计数脉冲来到后,F2、F3状态不变,F1、F4同时置0,计数器跳过多余的6个状态,完成一次十进制计数循环。 表1 同步十进制加法计数器状态表 为了满足十进制加法计数器的原理,本实验用Verilog程序在FPGA/CPLD 中来实现。首先设计一个程序,程序为脉冲输入,设输出的四位码为q[3:0],十进制计数值为count,脉冲上升沿时q值+1,直到q=9时count=1,q置零重新开始计数直至下一个q=9,count=2,依次循环。

三、实验任务 1.根据实验目的编写verilog程序 2.将设计好的Verilog译码器程序在Quartus II上进行编译 3.对程序进行适配、仿真,给出其所有信号的时序仿真波形图(注意仿真波形 输入激励信号的设置)。本实验要求自己设置clr值,理解清零的意义 四、实验步骤: 1.建立工作库文件和编辑设计文文件 任何一项设计都是一项Project(工程),而把一个工程下的所有文件放在一个文件夹内是一个非常好的习惯,以便于我们整理,利用和提取不同工程下的文件,而此文件夹将被EDA软件默认为Work Library(工作库),所以第一步先根据自己的习惯,建立个新的文件夹。 (1)新建文件夹:在E盘建立并保存工程,文件夹取名myproject,工程取名为cnt10_1 (2)输入源程序:打开Quartus II,选择菜单File-->New-->Design Files-->VerilogHDL File-->OK(如下图所示) 代码如下: module cnt10_1(clr, clk, q, cout); input clr, clk; output[3:0] q; output cout; reg[3:0] q; reg cout; always @(posedge clk) begin if (clr) q = 0; else begin if (q == 9) q = 0; else q = q + 1;

智能循迹小车总体设计方案

智能循迹小车总体设计方案 整体设计方案 本系统采用简单明了的设计方案。通过高发射功率红外光电二极管和高灵敏度光电晶体管组成的传感器循迹模块黑线路经,然后由AT89S52通过IO口控制L298N驱动模块改变两个直流电机的工作状态,最后实现小车循迹。 系统设计步骤 (1)根据设计要求,确定控制方案; (2)将各个模块进行组装并进行简单调试; (3)画出程序流程图,使用C语言进行编程; (4)将程序烧录到单片机内; (5)进行调试以实现控制功能。 系统基本组成 智能循迹小车主要由AT89S52单片机电路、循迹模块、L298N驱动模块、直流电机、小车底板、电源模块等组成。 (1)单片机电路:采用AT89S52芯片作为控制单元。AT89S52单片机具有低成本、高性能、抗干扰能力强、超低功耗、低电磁干扰,并且与传统的8051单片机程序兼容,无需改变硬件,支持在系统编程技术。使用ISP可不用编程器直接在PCB板上烧录程序,修改、调速都

方便。 (2)循迹模块:采用脉冲调制反射红外发射接收器作为循迹传感器,调制信号带有交流分量,可减少外界的大量干扰。信号采集部分就相当于智能循迹小车的眼睛,有它完成黑线识别并产生高、低平信号传送到控制单元,然后单片机生成指令来控制驱动模块来控制两个直流电机的工作状态,来完成自动循迹。 (3)L298N驱动模块:采用L298N作为点击驱动芯片。L298N具有高电压、大电流、响应频率高的全桥驱动芯片,一片L298N可以分别控制两个直流电机,并且带有控制使能端。该电机驱动芯片驱动能力强、操作方便、稳定性好,性能优良。L298N的使能端可以外接电平控制,也可以利用单片机进行软件控制,满足各种复杂电路的需要。另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够的问题。

小车循迹程序设计

武汉理工大学华夏学院课外自主实验分析报告 实验名称小车循迹控制程序设计 专业软件工程 班级 学号 姓名

第1章实验分析 (3) 1.1 实验设计题目 (3) 1.2 实验设计任务 (3) 1.2.1 总体任务 (3) 1.2.2 详细任务 (3) 1.2.3 设计要求 (3) 1.3软硬件运行环境及开发工具 (3) 第2章概要设计 (4) 2.1 小车软硬件设计原理 (4) 2.1.1 小车硬件设计原理 (4) 2.1.2小车软件设计原理 (4) 2.2 功能设计原理及实现方法 (4) 2.2.1小车前进功能实现 (4) 2.2.2 小车旋转功能实现 (4) 2.2.3 小车偏移修正功能设计 (4) 第3章详细设计 (9) 3.1 硬件设计与实现 (9) 3.2 系统主程序流程 (10) 3.3功能模块详细设计 (10) 3.3.1 起始点到中心点路线模块设计 (10) 3.3.2 中心点到D点路线模块设计 (10) 3.3.3 D点到黑色点路线模块设计 (11) 3.3.4 白色点到中心点模块设计 (12) 3.3.5 中心点到起始点路线模块设计 (13) 第4章系统调试与操作说明 (15) 4.1 系统调试 (15) 4.1.1 直线调试 (15) 4.1.2 达到黑色终点点调试 (15) 4.3 操作说明 (15) 第5章总结和体会 (16) 第6章参考文献 (16) 附录: (1)

课外实验设计计划 学生姓名:万志雄专业班级:软件1111 实验题目:小车循迹控制系统设计(路线3) 实验器材:1、硬件设备:MCS-51单片机最小系统板、四个QTI传感器、两个舵机、两个车轮、锂电池、ISP下载线、面包板; 2、软件环境:Keil C51、progisp下载器。 实验任务:(在规定的时间内完成下列任务) 1.完成硬件设计并连线,以MCS-51单片机为控制核心,根据4个QTI传感器采集到的数据控制舵机的运转,进而控制车轮的速度和方向,并画出硬件原理图和实验连线图;2.用C语言编程实现以下小车行驶线路(地图见下页): 起始点→中心点→D点,旋转360度→黑色点,旋转180度→原路返回。 时间安排:各时间段的任务可以交替进行 指导教师签名:2014 年 6 月30 日 教研室主任(或责任教师)签名:2014年 6 月30 日

基于FPGA的二十四进制计数器

实验名称:二十四进制计数器二十四进制计数器

实验步骤或程序: 十进制计数器程序: library ieee; use ieee.std_logic_1164.all; entity count10 is port(ep,et,clk,nld,nrd: in std_logic; d: in std_logic_vector(3 downto 0); q:buffer std_logic_vector(3 downto 0); c:buffer std_logic ); end count10; architecture rtl of count10 is begin process(ep,et,clk,nld,nrd,d) begin if ep='1' and et='1' then if nrd='0' then q<="0000"; c<='0'; else if clk'event and clk='1' then if nld='0' then q<=d;

else case q is when"0000"=>q<="0001";c<='0'; when"0001"=>q<="0010";c<='0'; when"0010"=>q<="0011";c<='0'; when"0011"=>q<="0100";c<='0'; when"0100"=>q<="0101";c<='0'; when"0101"=>q<="0110";c<='0'; when"0110"=>q<="0111";c<='0'; when"0111"=>q<="1000";c<='0'; when"1000"=>q<="1001";c<='1'; when others=>q<="0000"; c<='0'; end case; end if; else q<=q; c<=c; end if; end if; else q<=q; c<=c; end if; end process; end rtl; 管脚设置: 二十四进制计数器:

相关文档
最新文档