西南交大电脑鼠课程设计报告
关于电脑鼠的论文(有框图)
电脑鼠学习心得和遇到的问题及解决方法彭旺 16012126学习心得:在大一的时候就经常看见学长们整天在宿舍弄一个小车,后来才知道那就是视觉知道机器人。
于是到了大二选择选修课的时候就果断选了这个课。
本来我选的是机器人那个,上了才知道又要做实验还要参加比赛还要交押金甚是麻烦,顿时欲哭无泪,硬着头皮去上,因为分组问题被弄到了电脑鼠这边来,觉得比机器人那边要好玩得多。
第一次去上课就要交押金,并且那个电脑鼠还好贵的,整整两千多啊。
那是最开始就给我们讲了电脑鼠处理器运行的相关函数,后面几节课分别讲了电脑鼠在迷宫中搜索以及最后冲刺的相关程序。
好吧,我承认当时确实有点无聊。
直到后来,老师终于给了我们完整的程序,于是兴奋的我们毫不犹豫的把程序“捎”了进去,然后把电脑鼠放到迷宫中,结果发现它除了撞墙就是转圈。
探索调试:我们小组分工合作,一起研发。
电脑鼠走迷宫可以采用全迷宫探索策略,即将迷宫的所有单元均搜索一次,从中找出最佳的行走路径。
或者可以采用部分迷宫探索策略,即在有限的时间或探测次数下,只探测迷宫的一部分,从中找出次最佳的路径。
我们的电脑鼠要实现的功能有如下几个方面:路口检测:由安装在前、右、左的三个红外线发射对管SIR563ST3F 和IRM8601S实现, 发射信号为38KHz, 实现远红外测距功能, 探测前、右、左有无障碍。
行走控制:由左、右两个红外线发射对管SIR563ST3F和IRM8601S为实现, 发射信号为30.5KHz, 实现近红外测距功能, 保持电脑鼠在中轴线上行走, 避免撞墙。
路程控制:安装在左右轮内侧的红外收发对管IR204和PD204一6B, 对黑白码盘计数, 按照迷宫单元的长度为单位进行路程计数, 以记录老鼠在迷宫中的位置同时还可以准确地实现转弯。
微控制器和其它子系统共同构成一个闭环的反馈控制系统, 通过对三种传感器信号的检测行走信号、路口信号和黑白码盘计数信号, 由微控制器进行运算, 运算结果交给电机执行, 由此实现电脑鼠的智能穿越迷宫。
打地鼠课程设计报告
嵌入式打地鼠课程设计一、系统方案设计本设计应用STM32开发板进行设计,即一个带触摸功能的液晶屏,主要负责显示打地鼠游戏运行界面及分数变化等,STM32主控版采用的型号为STM32F103,使用高性能的ARM Cortex-M3内核,工作频率为72MHz,内置高速存储器(高达128k字节的闪存和20k字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个USART接口、一个USB接口和一个CAN接口。
本次设计的显示界面用了一块串口液晶屏,这种串口屏具有界面设计简单,交互性好,使用方便的特点,且它使用USART进行与主控版进行通信,便于控制部分与显示部分独立进行调试,也便于通信协议的制定。
可实现如下功能:1.地鼠在规定的时间内随机地出现在不同的洞口。
2.当用户击中地鼠分数加一。
3.当用户未击中地鼠生命值减一。
4.触摸屏显示用户所得分数、关数、生命值数。
二、硬件设计①触摸屏模块1. 一般转换模式:单独的转换模式一般使用来作为通用的ADC转换使用,这种模式可以通过初始化设置寄存器ADCCON,并且读写寄存器ADCDA T0来实现。
2. 分别X/Y位置转换模式:触摸屏控制器可以通过X/Y两个转换模式中的一个来完成,X位置模式写X位置转换数据到寄存ADCDAT0,这时触摸屏接口产生中断源到中断控制器。
Y位置模式写Y位置转换数据到寄存器ADCDAT1,,这时触摸屏接口产生中断源到中断控制器。
3. 自动X/Y位置转换模式:自动X/Y位置转换模式的工作方式如下:当触摸屏有触点触发时,触摸屏控制器依次转换X位置和Y位置。
在触摸屏控制器写X位置测试数据到寄存器ADCDAT0和写Y位置测试数据到寄存器ADCDA T1后,触摸屏接口产生中断源到中断控制器。
4.等待中断模式:当有触摸笔按下的时候,触摸屏控制器会产生中断信号(INT_TC)。
计算机组成原理课程设计总结报告
计算机组成原理课程设计总结报告课设题目:鼠标的制作院系:计算机学院专业:计算机科学与技术班级:xxxx学号:xxxxx姓名:xxxx一.项目介绍与设计目的1.项目介绍运用基本的元器件完成鼠标的制作与调试并可以在计算机上使用。
2.实验目的本实验旨在通过自己做鼠标锻炼考察对计算机组成原理知识的运用与实践二.项目环境要求在整洁的桌面完成,避免零件混乱。
焊枪使用之前先做清洁处理,不用时放在烙铁架上三.电路图及原理分析电路图:原理分析:在光电鼠标内部有一个发光二极管,通过该发光二极管发出的光线,照亮光电鼠标底部表面(这就是为什么鼠标底部总会发光的原因)。
然后将光电鼠标底部表面反射回的一部分光线,经过一组光学透镜传输到一个光感应器件(微成像器)内成像现在,翻过一只发红光的光学鼠标,您都可以看到一个小凹坑,里面有一个小棱镜和一个透镜。
工作时,从棱镜中会发出一束很强的红色光线照射到桌面上,然后通过桌面不同颜色或凹凸点的运动和反射,来判断鼠标的运动当鼠标移动的时候,成像传感器录得连续的图案,然后通过“数字信号理器”(DSP)对每张图片的前后对比分析处理,以判断鼠标移动的方向以及位移,从而得出鼠标x, y方向的移动数值。
再通过SPI传给鼠标的微型控制单元。
鼠标的处理器对这些数值处理之后,传给电脑主机四.项目实现步骤及注意事项1项目实验步骤:首先先焊接电容主芯片、发光二极管、电阻、按钮的焊接数据线的焊接,按G-蓝、A-白、C-橙、D-绿,接法如下图各组件的安装及鼠标外壳的嵌套2.注意事项焊接电路时连续焊接时间不超过三秒清洁电烙铁焊头使用加水湿润,湿度如拧干的毛巾,不用时一定要放在烙铁架上电容具有正负极之分。
靠近白色横条纹的引脚为负极。
对应电路板上涂白色的区域。
电路版上用到的两个电容不是一样容量的,要注意区分,前面图片中用红色边框圈起来的电容是100uf的,另外一个是10uf。
发光二极管也有正负极之分。
接反了灯就不会亮。
西南交通大学C实验报告
计算机程序设计基础(C++)实验报告信息学院计算机教育中心二零一二年三月目录实验__1__实验报告 (3)实验__2__实验报告 (5)实验__3__实验报告 (6)实验__4__实验报告 (7)实验__5__实验报告 (11)实验__6__实验报告 (14)实验__7__实验报告 (17)实验__8__实验报告 (19)实验__9__实验报告 (20)实验__10__实验报告 (21)实验__11__实验报告 (22)实验__12__实验报告 (23)实验__13__实验报告 (24)实验__14__实验报告 (25)实验__15__实验报告 (26)实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.通过运行示例程序了解程序开发过程;二、实验任务1.新建源程序文件,编辑以下程序,编译,链接,得出运行结果,并保存程序:#include <iostream>using namespace std;void main( ){ cout<<'a'<<endl;cout<<'\141'<<endl;cout<<'\x61'<<endl;}2.新建源程序文件,编辑以下程序,编译,链接,运行,输入36和64,得出运行结果,并保存程序:#include <iostream>using namespace std;int main(){ float num1,num2,sum;cout << "Enter first number: ";cin >> num1;cout << "Enter second number: ";cin >> num2;sum=num1+num2;cout << "The sum is " << sum << endl;return 0;}三、实验结果教学班级:_______ 学生学号:__________ 学生姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.简单输入和输出语句的练习。
-综合课程设计
(2)74HC138译码器
如图3-2-2-2所示,是硬件电路部分3-8译码选择器电路。
采用74HC138译码器将单片机的三位二进制编码译码为8位控制线,使用其中的5位控制线分别控制5个传感器组的分时工作。
例如A0A1A2地址为000时,74HC138输出Y0有效,从而使第一组传感器工作,而其他组传感器处于没有工作的状态。这样就可以实现单片机的3个引脚控制5个或者更多的传感器组。
3、
在电脑鼠的寻路过程中有两个比较特殊的过程,就是在小车遇到了死胡同时,就是此时前进方向的数比自己还小,所以无路可走。应该让小车回到上一个岔路口,虽然可以利用堆栈的先入后出的特性来存储寻路过程中经过的岔路口坐标,但是具体地要怎么样使得小车从当前的位置移动到岔路口呢?换言之,我们需要实现将小车从当前的位置移动到一个指定的任意位置,而且还要使得移动过程经历的路径尽可能地短。在后期的最短路径的生成问题其实也是上面的问题的一个特例,只不过把当前的位置设置为了迷宫的起点,而要到达的位置设置成了迷宫的终点而已。下图2-3为普通等高表:
L9110的逻辑关系表如表3所示:
表3 L9110逻辑关系
IA
IB
OA
OB
H
L
H
L
正转
L
H
L
H
反转
L
L
L
L
停止
H
H
L
L
停止
3.3
如图3-3所示,是电脑鼠主程序流程图。遍历探索迷宫,记录信息数据,生成等高表,计算出最短路径,完成最短路径的来回,完成设计目的迷宫电脑鼠走迷宫。
3.3.1 电脑鼠搜索迷宫行走程序设计
左手法则
左上区域
右方1
迷宫电脑鼠的设计报告
2、管脚定义如下:
3、通过L9110驱动芯片IA、IB输入的逻辑值的组合,不同高低电平的输入输出,控制电机正转、反转、停转。L9110的逻辑关系表如下表所示:
L9110逻辑关系
IA
IB
OA
OB
H
L
H
L
正转
L
H
L
H
反转
L
L
L
L
停止
H
H
L
L
停止
3.3
3.3.1
电脑鼠正常行走包括直走、左转弯、右转弯和向后转弯四个功能函数。这四个功能函数中要用到T0、T1定时/计数器;所以函数中首先初始化T0、T1。T0初始化:打开总开关EA=1;开T0中断ET0=1;设定T0模式2,8位自动重装值定时计数器TMOD&=0xf6; TMOD|=0x06;设定T0计数初值,定义中断脉冲数TH0=256-ICP;TL0=256-ICP;//启动T0计数TR0=1;T1初始化也是一样的。
传感器组是由38KHz的红外一体化接收头和红外发射管构成的障碍感测器。为了能够让传感器组正常工作,红外发射管需要一个38KHz的方波来驱动,使红外发射管发射出调制频率与接收头接收频率匹配的红外光。如图所示,是产生38KHz方波的载波发生器电路。
(4)传感器的调试
(主要写每组传感器如何进行调试。)
1、左右两边的传感器检测是否有墙壁。
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;
//红外地址接口定义(74HC138译码器
西南交大大学计算机基础实验报告
大学计算机基础实验报告教学班级:_______ 学号:__________ 姓名:___________ 课程教师:______________ 实验辅导教师:_____________西南交通大学2011年9月实验一微机基本操作与上网冲浪教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握计算机系统的启动与关闭;2.掌握常用输入设备、输出设备、存储设备的用法。
3.掌握搜索引擎的使用;4.掌握下载与解压缩的方法;5.掌握软件安装的方法。
二、实验任务1.启动与关闭计算机。
2.利用“键盘盲打练习”软件进行键盘的指法练习。
3.硬盘信息查询。
4.利用搜索引擎搜索成都商报,阅读当日报纸新闻。
5.利用下载工具FlashGet在网上下载“NetAnts”软件压缩包,利用压缩工具winRar解压缩该包,并安装该软件。
三、实验检查内容[ ] 1.能否热启动计算机[ ] 2.能否下载打字软件(辅导老师可协助将软件下载到教师机上,学生通过网上邻居获取)[ ] 3.能否安装打字软件[ ] 4.打字速度/分钟[ ] 5.查看C区总容量[ ] 6.查看磁盘整理程序对C区的分析报告,看是否需要整理[ ] 7.写出当日成都商报的头版头条标题[ ] 8.是否将NetAnts软件安装在D区实验二文件资源的管理与操作教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握文件的复制、移动、删除;2.掌握文件的重命名、属性的设置;3.掌握文件的查找;4.掌握文件夹选项操作。
西南交大-计算机网络-课程设计报告组网技术
课程设计一:组网技术1.设计目的a)巩固计算机网络知识b)学会将理论知识运用与实际c)掌握局域网组建技术d)加深对网络概念的理解e)掌握网络的运行原理,结构组成2.设计要求a)给出组网技术的硬件方案i.常用的联网设备有哪些?各应用于什么场合?ii.典型的小、中、大型网络联网:联网方案、所需的设备、网络结构图b)给出组网技术的软件方案i.常用的服务器软件及其配置方法c)给出组网技术的网络接入方案i.了解常用的网络接入方案及接入设计ii.分别设计适合于家庭、网吧、单位的网络接入方案3.设计过程a.组网方案-硬件常用的联网设备:中继器、集线器(HUB)、网桥、交换机、路由器、网关中继器: 工作在物理层上的连接设备,主要功能是通过对数据信号的重新发送或者转发来扩大网络传输的距离。
适用于完全相同的两类网络的互联,用于局域网。
集线器(HUB): 工作在物理层上的连接设备。
主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
主要用于将服务器与工作站连接到网络上。
网桥:工作在数据链路层上的连接设备,网桥包含了中继器的功能和特性,不仅可以连接多种介质,还能连接不同的物理分支,如以太网和令牌网,能将数据包在更大围传送。
网桥的典型应用时将局域网分段成子网,从而降低数据传输的瓶颈,这样的网桥叫“本地”桥,用于广域网上的网桥叫做“远地”桥。
交换机:工作在数据链路层的连接设备。
能基于目标MAC地址转发信号,而不是以广播方式传输,在交换机中存储并且维护着一计算机网卡地址和交换机端口的对应表,它对接收到的所有帧进行检查,读取帧的源MAC地址字段后,根据所传递的数据包的目的地址,按照对应表中的容进行转发,每一个独立的数据包都可以从源端口送到目的端口,以避免和其他端口发生冲突,对应表中如果没有对应的目的地址,则转发给所有端口。
作为局域网的主要连接设备路由器:工作在网络层,是互联网络的枢纽,可以在多个网络上交换和路由数据包,路由器通过在相对独立的网络换具体协议的信息来实现这个目标。
信息技术三年级上西交大版第5课 鼠标游戏乐趣多教案
第5课:鼠标游戏乐趣多
教学目标:
学会鼠标的移动单击拖动双击和右击的操作。
教材内容:
1.鼠标的基本操作方法。
2.进入windows“纸牌”“扫雷”游戏。
教学重点:
1.鼠标的各种基本操作方法。
2.打开游戏的操作过程。
教学难点:
鼠标的双击和拖动操作。
教学方法:
谈话、演示
学习方法:
练习
教具准备:
VCD教学演示光盘。
教学过程:
一、组织教学
二、谈话导入新课
1.鼠标
鼠标是向电脑输入信息的一种常用部件,因它拖着一条长长的线与主
机相连,样子有些象老鼠,因此叫鼠标。
2.鼠标的基本操作
单击:就是用食指按一下鼠标的左键,然后松开。
移动:就是不按键,握住鼠标在桌面上滑动。
双击:就是用鼠标快速地连续单击鼠标的左键,然后松开。
拖动:就是用食指按住鼠标左键不放,进行移动操作,当鼠标在屏幕上的指针移到适当的位置时,再松开。
单击右键:就是用无名指(或中指)按一下鼠标右键,然后松开。
3.播放VCD教学光盘
4.教师演示进入windows游戏
纸牌游戏:
“开始”——“附件”——“游戏”——“纸牌”
扫雷游戏:
“开始”——“附件”——“游戏”——“扫雷游戏”
三、学生上机操作
1、进入游戏“纸牌”“扫雷”游戏,体会鼠标的各种基本操作的方法。
2、退出游戏。
思考练习:
1.鼠标几种基本操作的要领是什么?
2.鼠标有哪些种类?。
西南交大电脑鼠课程设计
电子技术课程设计报告学院:专业:年级:姓名:学号:指导老师:第一章课程设计任务和总体设计1.1课程设计任务该课程设计以两人组队的形式,制作寻线型电脑鼠。
要求能够在8×8的迷宫中搜索路径并计算出最短路径。
其中迷宫由25mm宽的黑线组成。
电脑鼠第一次进入迷宫和返回迷宫时,可以循着黑线走到终点并记录迷宫信息,第二次进入迷宫时,根据第一次所记录的迷宫信息选择最短路径冲刺到终点。
1.2总体设计思路和步骤寻线型电脑鼠不同于以前的走迷宫,是利用红外传感器进行路线探测并选择前进方向的小型智能机器人。
其设计步骤包括:系统设计、利用Altium Designer软件绘制原理图和PCB图,电脑鼠硬件焊接组装、软件代码书写调试和总体调试。
硬件部分主要由传感器,单片机,电机驱动组成。
传感器采用红外传感器,由发射管和接收管组成,可探测黑线迷宫。
单片机采用IAP15W413AS芯片,用于编写和实现程序。
电机驱动由单片机产生的PWM以及L9110芯片进行驱动。
软件部分主要由产生PWM函数,搜寻路径法则,记录信息,测速盘组成。
此课程设计中电脑鼠按照左手法则进行路线搜索,根据测速盘的计数得到迷宫坐标并储存。
第一次排除迷宫中的死路,第二次便可沿迷宫中最短路径走出迷宫。
第二章硬件设计2.1 硬件设计步骤硬件设计步骤如图1所示。
设计原理图、生成PCB板之后进行手动布线,再根据PCB板将原件、轮子、轴承、电机、齿轮等器件进行组装,调整传感器角度使之能够达到良好的接受效果。
最后进行电路测试,测试方式在软件设计部分说明。
2.2 主控模块(单片机)包括单片机(图2)和电脑下载部分(图3)。
单片机采用了STC15W4K32S4芯片,其原理图为:图2图1寻线型电脑鼠红外传感器电机驱动单片机PCB 板制作调试检测原理图绘制生成PCB 图并布线调整角度元器件焊接电机等组装管脚图:图3图42.3 传感器模块传感器模块运用了5对发光二极管(白)+红外光敏三极管(黑)的组合(如图7),成一条直线置于电脑鼠前端用于探测赛道。
西南交大c实验报告
西南交大c实验报告
《西南交大C实验报告》
在西南交通大学C实验室进行了一项关于C语言编程的实验,旨在帮助学生掌握C语言的基本语法和编程技巧,提高他们的编程能力。
实验内容包括基本的C语言程序设计、数据类型、运算符、控制结构、函数、数组、指针等内容。
在实验过程中,学生们通过实际操作,掌握了C语言的基本语法和编程技巧。
他们学会了如何编写简单的C语言程序,如何使用不同的数据类型和运算符进行计算,如何使用控制结构进行流程控制,如何定义和调用函数,如何使用数组和指针等。
通过实验,学生们不仅掌握了C语言的基本知识,还培养了他们的动手能力和解决问题的能力。
他们在实验中遇到了各种问题,通过自己的努力和老师的指导,逐渐解决了这些问题,取得了丰硕的成果。
通过这次实验,学生们对C语言有了更深入的了解,提高了他们的编程能力,为以后的学习和工作打下了坚实的基础。
同时,实验也让学生们感受到了编程的乐趣,激发了他们对计算机编程的兴趣,为他们的未来发展打开了一扇新的大门。
在未来的学习和工作中,学生们将继续努力,不断提高自己的编程能力,为科技创新和社会发展做出更大的贡献。
西南交通大学将继续为学生提供更多的实践机会和发展平台,帮助他们实现自己的梦想,成为优秀的计算机专业人才。
西南交通大学计算机上机实习报告
计算机实习报告一、实习目的计算机办公软件的使用是交通运输、交通工程等专业学生的基本功,本实习的目的是使学生能够通过短时间的集训式训练,熟练掌握办公软件的使用方法、CAD的基本使用方法以及SPSS的使用。
本实习是交通运输、交通工程等专业学生非常重要的一个学习环节。
本次实习的目的是:将在第一学年中课堂所学习到的计算机知识在实践中综合运用,以期能够熟练掌握办公室自动化软件、CAD、SPSS的使用方法,为以后的进一步学习和工作打下文档编辑和制作的基础。
二、实习内容1、办公室自动化1、能运用办公室自动化软件的文字编辑软件实现基本的图文编辑、制表、格式修饰以及排版打印操作。
2、利用电子表格软件实现工作表的建立、编辑与格式化,利用电子表格软件中的函数与公式对工作表的数据进行处理,实现数据管理和分析。
3、利用演示文稿软件制作演示文稿,掌握不同视图方式在演示文稿的制作和显示中的不同作用和优势,掌握演示文稿编排的基本操作、动画效果制作和母版的基本操作。
2、制图软件使用1、熟悉CAD的操作界面:标题栏、菜单栏与快捷菜单、工具栏、绘图窗口、命令行与文本窗口、状态行。
2、掌握CAD的基本功能:绘制与编辑图形、标注图形尺寸、输出与打印图形。
三、实习环境与方式1、实习环境(1)软件winXP操作系统环境,以及办公自动化软件。
(2)硬件能够安装需要的办公自动化软件的计算机。
2、实习方式由带队老师统一组织,在校内机房进行。
四、实习心得和体会在时间不长的几天实习中,确确实实感觉受益良多,这次实习的内容实际上趋于简单,而且我一开始认为这几个软件已经被用得熟透了,没有什么好学习的,因此一开始抱着很随便的态度,感觉随便糊弄一下就好了。
但一开始接触实习指导书上的内容,我就知道,井底之蛙四字何谓,看上去很简单的办公软件却还有许多我未曾掌握的功能和用途,word的使用还算顺利,因为大部分的功能和我经常使用的WPS基本相同,只是有些功能的位置不太一样,还有操作的界面也有不同,但上手还不算太难,我只是有些困惑,如果在学校里练习的是微软公司的办公软件,但是以后工作又经常用WPS系列软件岂不是会很难使用,因为位置不同,做一个操作都需要去找,很麻烦。
电脑鼠课程设计
微控课程设计题目:电脑鼠走迷宫的软硬件演示及步进电机变速实验的软件设计姓名:学号:学院:电子信息工程学院专业:自动化指导老师:秦刚一、项目背景电脑鼠可看作是一种具有人工智能的小型机器人,依照比赛规则,当电脑鼠放入“迷宫”起点,按下启动键之后,它就必须自行决定搜寻法则并且在迷宫中前进、转弯、记忆迷宫墙壁资料、计算最短路径、搜寻终点等功能。
电脑鼠更结合了机械、电机、电子、控制、光学、程序设计和人工智能等多方面的科技知识。
电脑鼠走迷宫竞赛具有一定难度,是一项富有挑战性和趣味性的比赛。
电脑鼠可看作是一个集多项工程学科知识于一体的小型系统,成功的设计者通常都是合作团体,他们必须考虑电子、电气、机械以及计算机各方面的问题,重量、速度、功耗、传感技术、重心以及程序各方面都是设计中需要决定和综合考虑的因素。
二、课程设计目的通过该研究性课程,完成电路板测试、算法研究、资料查询与检索、项目管理等学校课程外的知识与技术技能的学习、整合,培养科技创新意识和动手设计能力。
通过系统分析、硬件设计、软件设计、整合电路设计、汇编语言、C语言在单片机开发中的应用知识,培养运用专业知识解决问题的综合应用能力,激发我们对电脑鼠的研究兴趣。
三、(1)电脑鼠硬件组成电脑鼠的硬件大致分为以下几部分:传感器、执行部件、微处理器、机械结构。
如下图:1.传感器它是电脑鼠感知外界环境的窗口,是电脑鼠的双眼。
好的传感器是电脑鼠准确获取外部环境信息以做出正确判断的依据,是电脑鼠灵敏快捷的保证。
红外测距方式在电脑鼠上应用最广。
2.执行部件电机是电脑鼠的动力源,是电脑鼠的四肢。
只有具备健壮且灵活的四肢的电脑鼠才有可能在比赛中高效的解开迷宫。
电机不但要能输出足够的马力还要便于控制,在此基础上再配以合适的控制算法就能使电脑鼠快速而精确的行走。
电脑鼠中常用的是步进电机和直流电机,步进电机控制容易,但直流电机使电脑鼠控制更加灵敏。
3.微处理器微处理器是电脑鼠的核心部分,是电脑鼠的大脑。
课程设计报告--电脑鼠走迷宫
天津职业技术师范大学Tianjin University of Technology and Education课程设计专业班级:应电0814学生姓名:乔伟 09 李月 19 华焱建 43指导教师:刘新月系别:电子工程学院目录1 电脑鼠走迷宫 (1)1.1电脑鼠技术指标 (1)1.2电脑鼠方案论证及选择 (1)1.2.1核心控制器 (1)1.2.2传感器 (1)1.2.3电动机 (1)1.2.4电源 (1)1.3电脑鼠总体电路图 (2)1.4电脑鼠系统组成框图 (2)1.5电脑鼠单元电路设计 (2)1.5.1传感器单元 (2)1.5.2步进电机驱动单元 (3)1.5.3电源单元 (4)1.6运动算法设计 (5)1.7迷宫坐标信息采集算法 (5)1.8迷宫算法 (7)1.9测试结果分析及改进 (8)1.10总结 (8)2 智能电梯控制系统 (9)2.1主要技术指标 (9)2.2方案论证及选择 (9)2.3系统组成框图 (9)2.4单元电路设计 (10)2.4.1单片机最小系统模块 (10)2.4.2开关控制模块 (11)2.4.3电机驱动模块 (11)2.4.4液晶显示模块 (11)2.4.5报警模块 (12)2.4.6 电路总图 (13)2.5软件流程图以及任务描述 (13)2.6元件清单 (14)2.7 调试过程 (15)2.8总结 (15)参考文献 (16)附录1 电梯代码 (17)附录2 个人总结 (28)1电脑鼠走迷宫1.1电脑鼠技术指标依据IEEE标准迷宫构建相应数据结构,结合数据结构进行迷宫搜索算法的设计;分析电脑鼠硬件需求进行产品选型,构建硬件平台;实现电脑鼠自动搜索迷宫,从中选出最佳路径进行冲刺的功能。
1.2电脑鼠方案论证及选择1.2.1核心控制器基于所需完成任务要求我们知道,电脑鼠核心控制器需要有很快的信息处理速度。
那么,普通的8位单片机不能满足快速处理的条件,不能胜任任务。
为了实现高速信息处理,采用由Liminary公司生产的LM3S615控制器,该控制器是以ARM-Cortex-M3为内核的32位SOC系统,拥有50-MHz工作频率,可以胜任任务所要求的高速信息处理能力。
西南交通大学计算机组成原理课程设计报告材料
《计算机组成实验 C》课程设计适用专业:电子信息类专业专业:软件工程班级:软件一班学号:姓名:某某某指导教师:陈红梅实验学期:2014-2015 第 1 学期西南交通大学信息科学与技术学院目录简化计算机系统的设计 (2)一、实验目的 (2)二.、实验内容 (2)三.、预习要求 (2)四、实验报告 (2)1. BLOCK图 (3)2. 程序设计(纸质的版本我用手抄) (4)3. 仿真波形图 (11)4、仿真中遇到的问题: (14)五、实验感想 (15)简化计算机系统的设计一、实验目的通过学习简单的指令系统及其各指令的操作流程,用VHDL 语言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。
二.、实验内容1. 用VHDL语言实现简单的处理器模块。
2. 调用存储器模块设计64×8的存储器模块。
3. 将简单的处理器模块和存储器模块连接形成简单的计算机系统。
4. 将指令序列存入存储器,然后分析指令执行流程。
三.、预习要求1、学习简单指令集。
2、学习各指令的操作流程。
四、实验报告1. BLOCK图2. 程序设计(纸质的版本我用手抄)CPU的设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE mypack ISCONSTANT idle : std_logic_vector(3 DOWNTO 0) :="0000";CONSTANT load : std_logic_vector(3 DOWNTO 0) :="0001";CONSTANT move : std_logic_vector(3 DOWNTO 0) :="0010";CONSTANT addx : std_logic_vector(3 DOWNTO 0) :="0011";CONSTANT subp : std_logic_vector(3 DOWNTO 0) :="0100";CONSTANT andp : std_logic_vector(3 DOWNTO 0) :="0101";CONSTANT orp : std_logic_vector(3 DOWNTO 0) :="0110";CONSTANT xorp : std_logic_vector(3 DOWNTO 0) :="0111";CONSTANT shrp : std_logic_vector(3 DOWNTO 0) :="1000";CONSTANT shlp : std_logic_vector(3 DOWNTO 0) :="1001";CONSTANT swap : std_logic_vector(3 DOWNTO 0) :="1010";CONSTANT jmp : std_logic_vector(3 DOWNTO 0) :="1011";CONSTANT jz : std_logic_vector(3 DOWNTO 0) :="1100";CONSTANT read : std_logic_vector(3 DOWNTO 0) :="1101";CONSTANT write : std_logic_vector(3 DOWNTO 0) :="1110";CONSTANT stop : std_logic_vector(3 DOWNTO 0) :="1111";END mypack;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE WORK.mypack.ALL;------------------------cpu实体声明--------------------------------- ENTITY cpu ISPORT(reset : IN std_logic; --清零信号低有效clock : IN std_logic; --时钟信号Write_Read: OUT std_logic; --读写信号,'1'为写 M_address: OUT std_logic_vector(11 DOWNTO 0); --地址线M_data_in: IN std_logic_vector(7 DOWNTO 0); --数据输入线M_data_out: OUT std_logic_vector(7 DOWNTO 0); --数据输出线 overflow: OUT std_logic); --溢出标志END cpu;------------------------cpuRTL级行为描述-------------------------------- ARCHITECTURE RTL of cpu ISSIGNAL IR: std_logic_vector(15 DOWNTO 0); --指令寄存器 SIGNAL MDR: std_logic_vector(7 DOWNTO 0); --数据寄存器 SIGNAL MAR: std_logic_vector(11 DOWNTO 0); --地址寄存器 SIGNAL status: integer RANGE 0 TO 6; --状态寄存器BEGINstatus_change: PROCESS(reset, clock, status )BEGINIF reset = '0' THEN status <= 0 ;ELSIF clock'EVENT AND clock = '0' THENCASE status ISWHEN 0 =>status <= 1;WHEN 1 =>IF IR(15 DOWNTO 12) = Stop THENstatus <= 1;ELSEstatus <= 2;END IF;WHEN 2 =>CASE IR(15 DOWNTO 12) ISWHEN Read|Write|Jmp|Jz|Swap =>status <= 3;WHEN OTHERS =>status <= 0;END CASE;WHEN 3 =>IF IR(15 DOWNTO 12)= Swap THENstatus <= 0;ELSEstatus <= 4;END IF;WHEN 4 =>status <= 5;WHEN 5 =>CASE IR(15 DOWNTO 12) ISWHEN Read|Write =>status <= 6;WHEN OTHERS =>status <= 0;END CASE;WHEN OTHERS =>status <= 0;END CASE;ELSENULL;END IF;END PROCESS status_change;seq: PROCESS(reset,clock)VARIABLE PC:std_logic_vector(11 DOWNTO 0); --程序计数器 VARIABLE R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0); --通用寄存器VARIABLE A: std_logic_vector(7 DOWNTO 0); --临时寄存器VARIABLE temp: std_logic_vector(8 DOWNTO 0); --临时变量BEGINIF(reset='0') THEN -- 清零IR <= (OTHERS=>'0');PC := (OTHERS=>'0');R0 := (OTHERS=>'0');R1 := (OTHERS=>'0');R2 := (OTHERS=>'0');R3 := (OTHERS=>'0');A := (OTHERS=>'0');MAR <= (OTHERS=>'0');MDR <= (OTHERS=>'0');ELSIF(clock'event AND clock='1') THENoverflow <= '0';CASE status ISWHEN 0=> --状态0IR <= M_data_in & "00000000"; --取指令PC := PC+1; --程序计数器加1WHEN 1=> --状态1IF (IR(15 DOWNTO 12) /= stop) THENMAR <= PC;END IF;CASE IR(15 DOWNTO 12) ISWHEN load =>R0:= "0000" & IR(11 DOWNTO 8);WHEN shlp|shrp =>CASE IR(11 DOWNTO 10) IS -- Rx to AWHEN "00"=> A:= R0;WHEN "01"=> A:= R1;WHEN "10"=> A:= R2;WHEN OTHERS => A:= R3;END CASE;WHEN Move|addx|subp|andp|orp|xorp|Swap=> CASE IR(9 DOWNTO 8) IS -- Ry to AWHEN "00"=> A:=R0;WHEN "01"=> A:=R1;WHEN "10"=> A:=R2;WHEN OTHERS=> A:=R3;END CASE;WHEN OTHERS => NULL;END CASE;WHEN 2=> --状态2CASE IR(15 DOWNTO 12) ISWHEN addx => -- Rx:= Rx + A;CASE IR(11 DOWNTO 10) ISWHEN "00"=>temp := (R0(7) & R0(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R0:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "01"=>temp :=(R1(7) & R1(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R1:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "10"=>temp :=(R2(7) & R2(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R2:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN OTHERS=>temp :=(R3(7) & R3(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R3:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);END CASE;WHEN subp => -- Rx:= Rx - A;CASE IR(11 DOWNTO 10) ISWHEN "00"=>temp :=(R0(7) & R0(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R0:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "01"=>temp :=(R1(7) & R1(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R1:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "10"=>temp :=(R2(7) & R2(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R2:=temp(7 DOWNTO 0);overflow <= temp(8) xor temp(7);WHEN OTHERS=>temp :=(R3(7) & R3(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R3:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);END CASE;WHEN move =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= A;WHEN "01"=> R1:= A;WHEN "10"=> R2:= A;WHEN OTHERS=> R3:= A;END CASE;WHEN shrp =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= '0' & A( 7 DOWNTO 1 );WHEN "01"=> R1:= '0' & A( 7 DOWNTO 1 );WHEN "10"=> R2:= '0' & A( 7 DOWNTO 1 );WHEN OTHERS=> R3:= '0' & A( 7 DOWNTO 1 );END CASE;WHEN shlp =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= A( 6 DOWNTO 0 ) & '0';WHEN "01"=> R1:= A( 6 DOWNTO 0 ) & '0';WHEN "10"=> R2:= A( 6 DOWNTO 0 ) & '0';WHEN OTHERS=> R3:= A( 6 DOWNTO 0 ) & '0';END CASE;WHEN andp => --Rx:= Rx AND A; CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 AND A;WHEN "01"=> R1:=R1 AND A;WHEN "10"=> R2:=R2 AND A;WHEN OTHERS=> R3:=R3 AND A;END CASE;WHEN orp => --Rx:= Rx OR A;CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 OR A;WHEN "01"=> R1:=R1 OR A;WHEN "10"=> R2:=R2 OR A;WHEN OTHERS=> R3:=R3 OR A;END CASE;WHEN xorp => --Rx:= Rx XOR A; CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 XOR A;WHEN "01"=> R1:=R1 XOR A;WHEN "10"=> R2:=R2 XOR A;WHEN OTHERS=> R3:=R3 XOR A;END CASE;WHEN Swap => --Swap: Rx to Ry; CASE IR(11 DOWNTO 8) ISWHEN "0100"=> R0:=R1;WHEN "1000"=> R0:=R2;WHEN "1100"=> R0:=R3;WHEN "0001"=> R1:=R0;WHEN "1001"=> R1:=R2;WHEN "1101"=> R1:=R3;WHEN "0010"=> R2:=R0;WHEN "0110"=> R2:=R1;WHEN "1110"=> R2:=R3;WHEN "0111"=> R3:=R1;WHEN "1011"=> R3:=R2;WHEN "0011"=> R3:=R0;WHEN OTHERS=> NULL;END CASE;WHEN OTHERS => NULL;END CASE;WHEN 3=> --状态3CASE IR(15 DOWNTO 12) ISWHEN Swap=> -- Swap: A to RxCASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=A;WHEN "01"=> R1:=A;WHEN "10"=> R2:=A;WHEN OTHERS=> R3:=A;END CASE;WHEN jmp|Jz|Read|Write =>IR(7 DOWNTO 0)<= M_data_in; -- 取双字节指令的后半部分 PC := PC+1;WHEN OTHERS => NULL;END CASE;WHEN 4=> --状态4CASE IR(15 DOWNTO 12) ISWHEN jmp => -- 无条件转移指令PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);WHEN Jz => -- 条件转移指令IF(R0="00000000") thenPC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);elseMAR <= PC;END IF;WHEN Read =>MAR <= IR(11 DOWNTO 0);WHEN Write =>MAR <= IR(11 DOWNTO 0);MDR <= R0;WHEN OTHERS => NULL;END CASE;WHEN 5 => --状态5MAR <= PC;WHEN 6 => --状态6CASE IR(15 DOWNTO 12) ISWHEN Read => R0 := M_data_in;WHEN OTHERS=> NULL;END CASE;END CASE;END IF;END process seq;comb: PROCESS (reset, status)BEGINIF (reset = '1' AND status = 5 AND IR(15 DOWNTO 12)= Write ) THEN Write_Read <= '1';ELSEWrite_Read <= '0';END IF;END PROCESS comb;M_address <= MAR;M_data_out <= MDR;END RTL;3. 仿真波形图3.1总体的仿真波形图1、我们可以看到CPU有6种工作模式,并且在不同的工作模式下实现了不同的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南交大电脑鼠课程设计报告西南交通大学本科课程设计(论文)寻线电脑鼠课程设计年级: 2014 级学号:姓名:专业:指导教师:蒋朝根二零一六年六月目录第1章课程设计任务 (1)第2章总体设计 (1)第3章硬件详细设计 (2)3.1硬件设计步骤 (2)3.2 主控模块(单片机) (2)3.3 传感器模块 (4)3.4 电机驱动模块 (5)3.5 测速模块 (6)3.5 电压检测模块及按键指示模块 (7)第4章软件详细设计 (8)4.1 程序设计流程图 (8)4.2 C51单片机的初始化及底层驱动 (8)4.3 车体转弯控制(左手法则) (11)4.4 调整函数 (12)4.5 速度PWM设置 (14)第5章结论与心得体会 (17)第6章附录 (17)6.1 电路原理图 (17)6.2 电路PCB图 (19)西南交通大学本科课程设计(论文)第1章课程设计任务该设计是属于单片机原理与应用课程的课程设计。
设计以两人组队的形式,制作寻线型电脑鼠。
要求能够在8×8的迷宫中搜索路径并计算出最短路径,并能由起点到终点并返回。
其中迷宫由25mm宽的黑线组成。
电脑鼠第一次进入迷宫和返回迷宫时,可以循着黑线走到终点并记录迷宫信息,第二次进入迷宫时,根据第一次所记录的迷宫信息选择最短路径冲刺到终点。
第2章总体设计硬件部分主要由传感器,单片机,电机所组成。
传感器采用红外传感器,由发射管和接收管组成,可以探测迷宫中黑线。
单片机则采用STC15W413AS芯片,用于编写单片机程序。
电机则由单片机产生的PWM以及L9110芯片进行驱动。
软件部分主要由产生占空比函数,电脑鼠在迷宫中搜寻路径法则,记录迷宫信息,测速盘计数组成。
电脑鼠搜寻迷宫时按照左手法则进行搜寻,根据测速盘的计数得到迷宫坐标,用8×8的数组对迷宫信息进行储存。
第一次搜寻时,对死路和走得通的路进行标定,第二次走时,仍然按照左手法则进行,但不走第一次标定的死路。
由此达到在迷宫中走最短路径的目的。
第3章硬件详细设计3.1硬件设计步骤硬件的设计步骤主要如下:图1:电脑鼠硬件部分的设计流程图3.2 主控模块(单片机)包括STC15W413AS芯片以及连接电脑的下载部分。
单片机采用了STC15W4K32S4芯片,其原理图为:图2:电脑鼠硬件部分MCU电路图连接电脑的下载部分原理图为:图3:电脑鼠硬件部分下载电路图管脚图如下:图4:电脑鼠硬件部分MCU管脚图3.3 传感器模块本次传感器共有5组,分别按左,左前,中,右前,右的次序安装在车头,一个传感器组有两个灯,一个普通的LED灯,另外一个是光敏二极管。
此外,还有指示灯,方便调试电脑鼠的程序。
结合运放芯片LM339的运算放大器,将路况信息返回单片机,进行进一步处理。
光敏二极管也叫光电二极管。
光敏二极管与半导体二极管在结构上是类似的,其管芯是一个具有光敏特征的PN结,具有单向导电性,因此工作时需加上反向电压。
无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止。
当受到光照时,饱和反向漏电流大大增加,形成光电流,它随入射光强度的变化而变化。
当光线照射PN结时,可以使PN结中产生电子一空穴对,使少数载流子的密度增加。
这些载流子在反向电压下漂移,使反向电流增加。
因此可以利用光照强弱来改变电路中的电流。
常见的有2CU、2DU等系列。
因此,当检测到黑线时,二极管两端跳变为高电平,而检测到跑道旁边的白色区域,变为低电平。
图5:单个传感器电路图图6:发光二极管电路图3.4 电机驱动模块本次使用L9110电机驱动芯片。
因单片机上的PWM输出的电流不足以驱动电机,所以需要用电机驱动芯片对于PWM调速的电机驱动电路,主要有以下性能指标。
1)输出电流和电压范围,它决定着电路能驱动多大功率的电机。
2)效率,高的效率不仅意味着节省电源,也会减少驱动电路的发热。
要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥或推挽电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。
3)对控制输入端的影响。
功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。
4)对电源的影响。
共态导通可以引起电源电压的瞬间下降造成高频电源污染;大的电流可能导致地线电位浮动。
5)可靠性。
电机驱动电路应该尽可能做到,无论加上何种控制信号,何种无源负载,电路都是安全的。
图7:电机驱动模块电路图3.5 测速模块本次电脑鼠设计使用直流电机,一方面通过对电机的转速加以运算可获得电脑鼠所在方位,记忆当前迷宫情况;一方面在编程时,了解电机转速对电脑鼠行走速度可以进行更好地控制,使其能够在尽量短的时间内遍历迷宫且走到终点。
图8:测速模块电路图3.5 电压检测模块及按键指示模块二者起到一个设计辅助的作用,为功能的调试提供了便利。
图9:电压检测模块电路图图10:按键、指示检测模块电路图至此,电脑鼠的硬件设计基本完成,完整的原理图、PCB图见附录。
第4章软件详细设计4.1 程序设计流程图图11:软件设计流程图4.2 C51单片机的初始化及底层驱动/*--------------------------------------------------------------------------REG51.HHeader file for generic 80C51 and 80C31 microcontroller.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.--------------------------------------------------------------------------*/#ifndef __REG51_H__ #define __REG51_H__/* BYTE Register */ sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;/* BIT Register */ /* PSW */sbit CY = 0xD7;sbit AC = 0xD6;sbit F0 = 0xD5;sbit RS1 = 0xD4;sbit RS0 = 0xD3;sbit P = 0xD0;/* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88;/* IE */sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8;/* IP */sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8;/* P3 */sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3;sbit TXD = 0xB1;sbit RXD = 0xB0;/* SCON */sbit SM0 = 0x9F;sbit SM1 = 0x9E;sbit SM2 = 0x9D;sbit REN = 0x9C;sbit TB8 = 0x9B;sbit RB8 = 0x9A;sbit TI = 0x99;sbit RI = 0x98;#endif4.3 车体转弯控制(左手法则)/************************************************************************* ******function name :void leftMethod (void)*parament :none*return value :none*description :左手法则优先级为:右-> 前-> 左并且存储即将行走的下一个格子的坐标************************************************************************* *****/void LeftMethod4(){if(Left_Detector==0){TurnLeft();}else if(Front_Detector==0){Go();}else if(Right_Detector==1&&Left_Front_Detector==1){TurnRight();}else if(Left_Detector==1&&Front_Detector==1&&Right_Detector==0) {TurnBack();}}4.4 调整函数void adjust2(){ if(Front_Detector==0){if(Left_Front_Detector==0){speed(1,0,0,1);}else if(Right_Front_Detector==0){speed(0,1,1,0);}else{speed(0,1,0,1);}}else{if(Left_Front_Detector==0){speed(1,0,0,1);}else if(Right_Front_Detector==0){speed(0,1,1,0);}}}void Go(){speed(0,1,0,1);}//------------------小车右转函数-------------------// void TurnRight(){// u8 flg=1;speed2(0,1,1,0); //左轮前转,右轮后转// left_count=right_count=0;/* while(flg==1){if(left_count==12|right_count==12){speed(0,0,0,0); //两轮停转left_count=0;right_count=0;flg=0;}}for(flg=0;flg<100;flg++){Delay(6000);}*/}//------------------小车左转函数-------------------// void TurnLeft(){// u8 flg=1;speed2(1,0,0,1); //左轮后转,右轮前转// left_count=right_count=0;}//------------------小车后转函数-------------------//void TurnBack(){u8 flg=1;// left_count=right_count=0;while(Front_Detector==1){speed2(0,1,1,0);} //左轮前转,右轮后转}//------------------小车停止函数-------------------//void Stop(){// u8 flg=1;// left_count=right_count=0;speed(0,0,0,0); //左轮后转,右轮后转}4.5 速度PWM设置//------调整函数----f_pwm=PCA_clk/256-------//void speed(bit a,bit b,bit c,bit d){ I1=a;I2=b;I3=c;I4=d;PCA_PWM0 = 0X00;CCAP0H = CCAP0L =39; //修改此处数值[0~255]可以调节CCP2_0占空比CCAPM0 = 0x42;PCA_PWM1 = 0X00;CCAP1H = CCAP1L =40; //修改此处数值[0~255]可以调节CCP2_1占空比zuoCCAPM1 = 0x42;}void speed2(bit a,bit b,bit c,bit d){ I1=a;I2=b;I3=c;I4=d;PCA_PWM0 = 0X00;CCAP0H = CCAP0L =90; //修改此处数值[0~255]可以调节CCP2_0占空比CCAPM0 = 0x42;PCA_PWM1 = 0X00;CCAP1H = CCAP1L =90; //修改此处数值[0~255]可以调节CCP2_1占空比CCAPM1 = 0x42;}void speed3(bit a,bit b,bit c,bit d){ I1=a;I2=b;I3=c;I4=d;PCA_PWM0 = 0X00;CCAP0H = CCAP0L =255; //修改此处数值[0~255]可以调节CCP2_0占空比CCAPM0 = 0x42;PCA_PWM1 = 0X00;CCAP1H = CCAP1L =255; //修改此处数值[0~255]可以调节CCP2_1占空比CCAPM1 = 0x42;}//-------------------PWM模式使能函数----------------// void PWM_Cmd(bit cmd){if(cmd==ENABLE)CR=1;else if(cmd==DISABLE)CR=0;}至此,完成寻线型电脑鼠软件部分的设计第5章结论与心得体会本次对寻线型电脑鼠的设计,让我从开始的一无所知,到学会了使用AD绘制原理图和生成PCB图,完成了对电脑鼠的基本设计。