西南交大电脑鼠课程设计
- 格式:docx
- 大小:1.16 MB
- 文档页数:19
西南交通大学C++实验报告计算机程序设计基础(C++)实验1一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握简单数据运算,以及输入与输出方法。
二、实验任务1.输入一摄氏温度,输出显示所转换的华氏温度。
(提示:摄氏温度=(华氏温度-32)×5/9)2.画出一头威武雄壮的雄狮。
,%%%%%%,%%/\%%%%/\%,%%%\c "" J/%%%%. %%%%/ o o \%%%`%%. %%%% _ |%%`%% `%%%%(__Y__)%// ;%%%%`\-/%%%'(( / `%%%%%%%'\\ .' |\\ / \ | |\\/ ) | |\ /_ | |__(___________)))))))三、实验结果(源程序+ 注释)1.源程序#include<iostream>using namespace std;void main(){double a,b;cout<<"请输入一摄氏温度:"<<endl;cin>>a;b=a*9/5+32;cout<<"转换的华氏温度为:"<<b<<endl;}2.源程序#include<iostream>using namespace std;void main(){cout<<" ,%%%%%% "<<endl;cout<<" ,%%/\%%%%/\% "<<endl;cout<<" ,%%%\c "" J/%%% "<<endl;cout<<"%. %%%%/ o o \%%% "<<endl;cout<<"`%%. %%%% _ |%% "<<endl;cout<<" `%% `%%%%(__Y__)% "<<endl;cout<<" // ;%%%%`\-/%%%' "<<endl;cout<<"(( / `%%%%%%%' "<<endl;cout<<" \\ .' | "<<endl;cout<<" \\ / \ | | "<<endl;cout<<" \\/ ) | | "<<endl;cout<<" \ /_ | |__ "<<endl;cout<<" (___________))))))) "<<endl;}实验2一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。
三年级信息技术上册教学计划教学目标1.情感态度目标:培养养学生具有正确的信息伦理道德修养,要让学生学会对媒体信息进行判断和选择,自觉地选择对学习、生活有用的内容,自觉抵制不健康的内容,不组织和参与非法活动,不利用计算机网络从事危害他人信息系统和网络安全、侵犯他人合法权益的活动。
2.知识技能目标:培养学生掌握基本的计算机操作能力,认识计算机设备,能使用正确的使用鼠标,掌握单击双击,并且能够利用正确打字姿势和指法进行打字,为以后的学习打好基础。
3.过程方法目标:根据儿童好奇的心理特点,在展示学生所不知道的新奇事物时,采用演示的方法,激发学生的学习兴趣,教学设计过程中可适当地采用一些游戏来激发学生的学习兴趣。
配合教材内容,依据儿童好玩的特点,教师可通过各种渠道找到一些既适合小学生又具有很强趣味性的游戏软件。
教学重点培养学生爱护计算机、科学合理使用计算机的意识,能够知道信息的概念是什么;认识了解计算机各个组合部分的名称,能够用正确的方法开关机,并学会换桌面背景;认识对话框,了解对话框的作用,通过鼠标游戏进行鼠标的练习;知道电脑怎样听口令,了解键盘的分区,掌握主键盘区字母键、数字键、符号键的名称和分布规律,使学生掌握如何正确地使用键盘;掌握给文件或文件夹改名的方法;知道几个常用的搜索器,并能使用搜索器进行相关内容的搜索。
教学难点:培养学生审美能力,激发学生学习计算机的兴趣,使学生知道电脑怎样工作;学习用windows里的“写字板”进行拼音文字的输入,能熟练的运用正确的指法;知道网络与生活密切相关,最大可能地了解网络上有什么。
总课时数:16课时课时安排第一单元教学计划单元反思:课堂常规训练教学内容:课堂常规训练、教学目标:1.培养学生上好计算机课的意识;培养学生爱护计算机的意识。
2.向学生提出计算机上课的常规要求。
教学重点:培养学生爱护计算机、科学合理使用计算机的意识。
教学难点:培养学生爱护计算机、科学合理使用计算机的意识。
三年级上信息技术说课稿鼠标游戏乐趣多_交大版一、教材分析:1.教材内容的地位和使用我说的是交大版信息技术三年级上册第一单元第6课:“鼠标游戏乐趣多”,在这节课之前,学生差不多把握了鼠标的握法,鼠标的移动、单击,对鼠标的操作有了一定的认识,从心理上差不多喜爱上了电脑。
本节课鼠标的拖拽也是鼠标的差不多操作,让学生进一步喜爱上电脑操作,同时培养学生观看及快速反应能力,为学生灵活使用电脑打下坚实的基础。
为以后的学习打下基础。
二、学情分析本课的学习者是刚刚升入三年级的学生,他们对电脑中的任何操作都专门喜爱,就连开关机也时不时地发出惊奇声,更不用说是精美的桌面、好看的图标了,但还有一些小孩可怕自己的误操作损害电脑,只想着看着别的小孩操作,不敢自己动手尝试。
因此,如何让小孩们从浓厚的爱好过渡到技能的熟练,从而达到操作上的良性循环,让小孩们不可怕电脑,从内心喜爱、操作电脑也是本课的情感教学目标。
我校三年级的学生初次接触电脑与网络,对运算机网络的相关知识比较生疏,但学生对网络学习都有着强烈的好奇心和爱好。
因此学生接触、同意新知识的速度较快,把握新技能的欲望也较高。
三、教学目标。
我本着以提高学生思维能力、学生的知识水平与能力水平为宗旨。
确定了以下教学目标:(一)知识与技能熟练把握鼠标的差不多操作,包括:单击.指向.双击.右击.拖动等以及其作用。
了解几个小游戏的游戏方法。
(二)过程与方法:让学生在完成任务的过程中学会自主学习、自主探究、交流合作,学会倾听、展现、评判。
通过合作交流、自主探究的方法巩固新知。
培养学生的自主意识,有利于促进学生的观看力和实践应用能力。
(三)情感态度价值观通过本节信息技术课的学习,让学生自我展现、自我鼓舞,自主探究,在不断尝试中激发求知欲,在不断探究中陶冶情操。
在自主解决问题中感受成功的欢乐,通过小组协作,培养学生的协作意识的研究探究精神。
感受电脑的无穷魅力,引导学生正确地看待电脑游戏,培养学生对电脑的爱好。
第四课神奇的“小老鼠”教学目标:1.认识鼠标,学会鼠标移动、指向、单击、双击、拖动的操作方法;2.知道单击鼠标左键和右键的不同作用,单击和双击的不同作用;3.通过自主使用鼠标,激发学生学习计算机的兴趣。
教学重难点:认识鼠标,知道鼠标的基本操作;学会正确使用鼠标。
教法:示范法、讲解法学法:讨论法、上机实践法教学用具:计算机多媒体教室、教学课件教学过程:一、导入:同学们,这节课我们认识一个新朋友,大家猜猜它是谁?(视频:神奇的小鼠标)摸摸你们电脑桌上的鼠标,试一试,你是如何使用鼠标的?二、新授:1.认识鼠标(1)课件演示:鼠标的由来鼠标之父:道格·英格伯特第一只鼠标的诞生:1964年早期鼠标的模样:木质的,方形的(2)课件展示:不同样式的鼠标师问:我们正在使用的鼠标是什么样子的呢?学生观察并交流,使学生在交流的过程中对充分认识鼠标。
学生描述:左键、右键、滚轴、连线(3)学生尝试使用鼠标,说一说,你是怎样使用鼠标的?播放微课:怎样正确使用鼠标学生示范使用鼠标的姿势(指名学生上台演示)同学们,一起拿起鼠标,让老师欣赏一下你们的姿势吧。
(师一边看,一边纠正姿势。
)2.鼠标的基本操作(1)尝试并观察:握住鼠标,在屏幕上来回移动,你看到了什么?把鼠标移到图标“我的电脑”上,不再移动,鼠标指针在哪里?在“我的电脑”图标上按一下鼠标左键,你又发现了什么变化?学生各抒己见,师总结:移动:不按下鼠标键,只移动鼠标,屏幕上的鼠标指针会跟着移动,叫做移动鼠标。
指向:把鼠标指针移动到某个选项上,叫做指向。
单击:指向某一图标,按一下鼠标左键,叫做单击。
想一想:指向某一图标和在图标上单击鼠标左键,会有什么区别?(2)尝试并观察:在图标上单击鼠标左键在图标上单击鼠标右键有什么区别?师讲解:单击鼠标左键,可以选中图标,单击鼠标右键,会弹出一个快捷菜单,我们可以快速的进行某项操作。
(3)试一试,将鼠标指针指向“我的电脑”图标,快速按两下鼠标左键,出现什么变化?双击:快速按两下鼠标左键叫做双击鼠标,双击鼠标标可以打开这个对象。
交通大学计算机控制课程设计报告交通大学计算机控制课程设计报告一、课程设计题目本次计算机控制课程设计题目为“小车避障控制系统的设计与实现”。
二、设计内容及分析本次课程设计的主要内容为设计和实现一个小车避障控制系统。
通过该系统,小车可以自动避开路上遇到的障碍物,并保持稳定的行进状态。
在这个避障控制系统中,会需要使用到多个传感器模块,如超声波传感器、红外线传感器等,以实现对周围环境的检测。
同时,还需要采用电机驱动模块来控制小车的行进方向和速度。
在本次课程设计中,我们可以利用现有的开源硬件平台,如Arduino、Raspberry Pi等,来实现整个系统的硬件搭建。
同时,还需要编写相应的控制程序,完成对小车的避障控制。
三、设计步骤本次课程设计的设计步骤如下:1. 硬件搭建:根据设计需求,按照一定的硬件连接方式,将各个传感器模块、电机驱动模块等连接到主控板上,并对各个模块进行初始化、编程设置等操作。
2. 传感器模块检测:通过代码编写和调试,对各个传感器模块进行检测和校准,以确保其能够准确地检测到周围环境。
3. 控制算法设计:根据传感器模块的检测信号,设计相应的控制算法,以完成小车的避障控制,并保持稳定的行进状态。
在该过程中,还需要考虑到小车突然停止或碰到障碍物等情况的处理方式。
4. 控制程序编写:根据控制算法的需求,编写相应的控制程序,并进行调试和测试。
完成后,将程序下载到主控板上,开始进行实验测试。
5. 实验测试:通过对小车的实验测试,验证控制程序的正确性,调整和优化相应的参数,以达到最好的避障控制效果。
四、设计成果通过本次课程设计,我们可以掌握以下技能:1. 熟练掌握硬件连接及初始化的操作方法。
2. 能够编写传感器模块的检测程序,并对其进行校准与调试。
3. 能够设计避障控制算法,并将其转化为相应的控制程序。
4. 能够使用开源硬件平台,如Arduino、Raspberry Pi等,来实现控制系统的硬件搭建和编程。
西安交大版小学信息技术鼠标游戏乐趣多优秀教案与教学反思教材分析1. 教学目标分析:初步熟悉“窗口”和“菜单”;初步掌握“纸牌”游戏的玩法;熟练掌握鼠标的五种大体操作;2. 本课的主要内容:纸牌游戏,鼠标的五种操作方式;3. 重点难点分析:教学重点:正确掌握鼠标的五种操作方式;教学难点:“双击”“单击”操作方式的不同(速度的掌握);“移动”“拖动”之间的区别。
学情分析1.学生本学期方才开始计算机的入门学习,学习的兴趣浓厚,可是基础差,大体以前很好见过计算机,学生家里有计算机的很少,只有在电视上,老师办公室见过。
2.本节课主要的就是教会学生正确的利用计算机中鼠标的学习应用。
3.只对游戏感兴趣,忽略了鼠标的拖动,移动,单双击的练习。
教学目标1. 让学生掌握玩纸牌游戏的方式,使学生从玩中学习计算机的知识。
2. 使学生熟练掌握鼠标器的操作方式。
3. 培育学生动手动脑的能力,增强学习计算机的兴趣。
教学重点和难点教学重点:1.掌握鼠标器的操作方式;2.掌握游戏的规则;教学难点:鼠标器的拖动教材分析1. 教学目标分析:初步熟悉“窗口”和“菜单”;初步掌握“纸牌”游戏的玩法;熟练掌握鼠标的五种大体操作;2. 本课的主要内容:纸牌游戏,鼠标的五种操作方式;3. 重点难点分析:教学重点:正确掌握鼠标的五种操作方式;教学难点:“双击”“单击”操作方式的不同(速度的掌握);“移动”“拖动”之间的区别。
学情分析1.学生本学期方才开始计算机的入门学习,学习的兴趣浓厚,可是基础差,大体以前很好见过计算机,学生家里有计算机的很少,只有在电视上,老师办公室见过。
2.本节课主要的就是教会学生正确的利用计算机中鼠标的学习应用。
3.只对游戏感兴趣,忽略了鼠标的拖动,移动,单双击的练习。
教学目标1. 让学生掌握玩纸牌游戏的方式,使学生从玩中学习计算机的知识。
2. 使学生熟练掌握鼠标器的操作方式。
3. 培育学生动手动脑的能力,增强学习计算机的兴趣。
目录摘要 (2)1、课程设计的目的及要求 (3)2、题目分析 (3)1.1 功能分析 (3)1.2 性能需求分析 (3)1.3 算法分析 (3)3、系统设计 (4)3.1系统整体设计 (4)3.2硬件设计 (5)3.2.1 硬件结构设计 (5)3.2.2 传感器组设计 (5)3.2.3 电机驱动电路设计 (6)3.3软件设计 (11)3.3.1 电脑鼠正常行走程序设计 (11)3.3.2 电脑鼠记路径程序设计 (12)3.3.3 电脑鼠找终点程序设计 (13)摘要“电脑鼠”是使用嵌入式或单片机微控制器、传感器和机电运动部件构成的一种微型机器人,可以在“迷宫”中自动记忆和选择路径,快速地达到所设定的目的地。
电脑鼠走迷宫竞赛是一项具有一定难度、富有挑战性和趣味性的比赛。
本研究性课程重点对电脑鼠硬件、迷宫算法进行分析研究。
本研究性课程通过对电脑鼠自动穿越迷宫过程的研究,综合嵌入式专业的电路设计、传感器控制、单片机程序开发和算法研究等多学科知识,熟悉掌握嵌入式应用开发的全过程。
关键词:嵌入式或单片机微控制器,电脑鼠,智能算法1、课程设计的目的及要求本项目要实现的是用电脑鼠找出迷宫中通往终点的最短路径并以最快速度到达迷宫的终点。
电脑鼠从迷宫起点位置前进,由程序判断通过前视距离探测器探测到的迷宫状况,控制驱动机构前进或转向并记录路径和距离(控制车轮编码器可完成),由于起点位置和终点位置是已知的,虽然不知道具体路径,但通过编写算法程序即可找到最短路径,在重新开始时便可以最快速度从最短路径到达终点。
设计的电脑鼠应该具有三种最基本的能力:•拥有稳定、准确、快速的行走能力•能争取判断环境的能力(如有墙、有路)•记忆路径的能力总之,电脑鼠的设计目标是:在最短的时间内找到一条通往总店的最短路径,并以最快速度从起点到达终点。
如何衡量:迷宫时间(搜索时间):电脑鼠激活到每次运行开始的时间;注:搜索结束,从终点返回到起点的时间不算在迷宫时间内;运行时间:电脑鼠从起点走到终点的时间;如果电脑鼠在比赛时需要手动辅助,这个动作就成为“碰触”。
课程设计一:组网技术1.设计目的a)巩固计算机网络知识b)学会将理论知识运用与实际c)掌握局域网组建技术d)加深对网络概念的理解e)掌握网络的运行原理,结构组成2.设计要求a)给出组网技术的硬件方案i.常用的联网设备有哪些?各应用于什么场合?ii.典型的小、中、大型网络联网:联网方案、所需的设备、网络结构图b)给出组网技术的软件方案i.常用的服务器软件及其配置方法c)给出组网技术的网络接入方案i.了解常用的网络接入方案及接入设计ii.分别设计适合于家庭、网吧、单位的网络接入方案3.设计过程a.组网方案-硬件常用的联网设备:中继器、集线器(HUB)、网桥、交换机、路由器、网关中继器: 工作在物理层上的连接设备,主要功能是通过对数据信号的重新发送或者转发来扩大网络传输的距离。
适用于完全相同的两类网络的互联,用于局域网。
集线器(HUB): 工作在物理层上的连接设备。
主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
主要用于将服务器与工作站连接到网络上。
网桥:工作在数据链路层上的连接设备,网桥包含了中继器的功能和特性,不仅可以连接多种介质,还能连接不同的物理分支,如以太网和令牌网,能将数据包在更大围传送。
网桥的典型应用时将局域网分段成子网,从而降低数据传输的瓶颈,这样的网桥叫“本地”桥,用于广域网上的网桥叫做“远地”桥。
交换机:工作在数据链路层的连接设备。
能基于目标MAC地址转发信号,而不是以广播方式传输,在交换机中存储并且维护着一计算机网卡地址和交换机端口的对应表,它对接收到的所有帧进行检查,读取帧的源MAC地址字段后,根据所传递的数据包的目的地址,按照对应表中的容进行转发,每一个独立的数据包都可以从源端口送到目的端口,以避免和其他端口发生冲突,对应表中如果没有对应的目的地址,则转发给所有端口。
作为局域网的主要连接设备路由器:工作在网络层,是互联网络的枢纽,可以在多个网络上交换和路由数据包,路由器通过在相对独立的网络换具体协议的信息来实现这个目标。
南京理工大学毕业设计说明书(论文)作者: 学号:学院(系):自动化学院专业: 电气工程及其自动化题目: 走迷宫电脑鼠软件设计目次1 引言 (1)1.1 电脑鼠的简介 (1)1.2论文主要完成的工作 (1)1.3 器件选择 (2)1.4 相关开发工具 (5)2 走迷宫挡板检测 (5)2.1 红外接收头的工作原理 (5)2.2 原理分析 (6)2.3 用红外进行挡板检测 (7)3 步进电机的驱动控制 (8)3.1步进电机的驱动 (11)3.2车速检测模块 (11)4 电脑鼠姿势修正 (12)4.1姿势修正 (12)4.2挡板检测 (14)4.3 电脑鼠转弯 (15)5 电脑鼠走迷宫的算法 (17)5.1电脑鼠软件主要模块 (17)5.2迷宫地图相对方向与绝对方向的建立 (17)5.3墙壁资料存储 (21)5.4电脑鼠搜索策略 (23)5.5 迷宫搜索程序 (26)结论 (31)致谢 (32)参考文献 (33)1 引言1.1 电脑鼠的简介人类在科技的发展上,一直在尝试着想要创造出一个具有肢体,感觉,脑力,综合一体的机械,而智能老鼠既是一个能够用来诠释肢体,感官及脑力综合工作的智能机械。
所谓的智能老鼠我们用电脑鼠(MicroMouse)来代替,它是使用微控器,光电传感器和机动运动部件构成一种智能行走装置的俗称,它可以在“迷宫”中自动记忆和选择路径,寻找出口,最终达到所设的目的地。
电脑鼠搜索路径应该是没有人工干预的情况下自主完成的,也就是说,需要运用搜索算法使电脑鼠自主行走。
搜索算法的主要目的是,根据电脑鼠当前的位置确定下一步,以迅速达到迷宫的中心并返回,同时利用搜索迷宫时得到的隔墙信息找出从起点到终点并返回的最优路径。
电脑鼠的制作技术的基本要求一定要稳定,在符合规则的不同迷宫中都能运行自如。
快速,高效的探索迷宫则一直是个重点更是个难点。
快速和高效两个要素又彼此联系,相互影响。
实现快速探索可以通过选用合适的电机解决,但是快速不一定实现高效。
第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),成一条直线置于电脑鼠前端用于探测赛道。
其中左前与右前的探测器用于纠正电脑鼠直线行走时由于 2 个电机转动不一致导致的轨道偏离。
左、前和右方的三个探测器用于探测距离电脑鼠特定距离内的左右和前方有无线路。
用于提供红外信号的30kHz 多的信号可以由STC15W4K32S4单片机的时钟输出口输出,占空比固定为 50%。
当发射的光线集中于白色地区时,光线会被反射,黑色的接收管就会将其吸收;反之,发射光线集中的地方是黑色的时候,光线会被吸收而没有反射。
单个的传感器模块如图5图5 发光二极管电路图如图6.图6 实物图见图7.图72.4 电机驱动模块电脑鼠的前进、拐弯和旋转等动作必须依靠两个电机的转动来控制。
具体为:直行:两个电机同方向转动;转弯:两个电机一个转一个不转或者一个正转一个反转。
要使电机转动,需要一定的电压,以电压控制电机的运转。
而为了获得一个较为合适的电压值,往往需要调节电阻。
通过不断重复地开、关操作,实现我们需要的“脉冲宽度调制”(简称pwm调制)。
当pwm信号与电机相连时,电机的旋转速度就可以根据我们的程序设定来工作。
电机正、反转以及刹车的控制是通过两个L9110芯片来控制的。
图8为L9110的应用电路图。
图8图9为其原理图。
图9除L9110之外,该模块还使用了74HC00芯片参与pwm控制。
原理图如图10图102.5 测速模块电脑鼠设计使用直流电机,一方面通过对电机的转速加以运算可获得电脑鼠所在方位,记忆当前迷宫情况;一方面在编程时,了解电机转速对电脑鼠行走速度可以进行更好地控制,使其能够在尽量短的时间内遍历迷宫且走到终点。
采用红外发射二极管和红外光敏三极管组成一对对射管实现对两个电机转速进行测量,需要分别在两个电机的一端添加码盘。
其实物图如图11.图112.6 电源电脑鼠的电源为5号铁锂电池和7号铁锂电池各一节,分别为单片机和电机供电,提供电压约为3.2V左右。
电源原理图如图12所示。
图12至此,电脑鼠的硬件设计基本完成,完整的原理图、PCB图见附录。
焊接PCB 板成品图如图13.图13第三章 软件设计3.1 程序流程图(图14)图14出发MCU 各状态字初始化检测到终点中断红外检测,读取传感器的值检测回到起点 路径优化,去除死路最短路径冲刺结束第四章最终结果课程设计结果:电脑鼠可完成寻线并到达终点,有时候也能顺利返回起点。
在焊接过程中,因为有光立方比赛的经验,焊接工作比较顺利,除了中途有一次不小心将一个芯片的两个引脚焊在了一起,然后我们及时的用仪器解决了这一问题。
而软件部分,虽然用的原代码是同学间分享流传的,但是也是通过自己的调试,修改才完成的。
另外,在学长的指导下,也对右手算法程序中左转优先级不高这一缺点进行了完善。
第五章总结及体会这次课程设计让我受益匪浅,无论从知识上还是其他的各个方面。
上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。
但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。
团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
单片机是很重要的一门课程,老师曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。
尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。
最后感谢老师、学长们对我们的精心指导和帮助,感谢同学们对我的帮助。
附录1:原理图附录2:PCB图附录3:程序代码#include"stdio.h"#include"action.h" //电机驱动头文件#include "bmp_pixel.h"#include "NOKIA_5110.h"#include"configuration.h"u16 gz1 = 0;void Stop_On_Going(){Wheel_Control(LEFT,1,255);//1表示正向转,data越大,转速越小Wheel_Control(RIGHT,1,255);}void Turn_Right() //右转的具体实现{do{Wheel_Control(LEFT,1,32);Wheel_Control(RIGHT,0,45);}while(P1&0xf8==0xd8||P1&0xf8==0x98 ||P1&0xf8==0xc8);}void Go_straight()//直走的具体实现{Wheel_Control(LEFT,1,42);Wheel_Control(RIGHT,1,55);}void Turn_Left(){do{Wheel_Control(LEFT,1,52);Wheel_Control(RIGHT,1,65);}while(Left_Detector==1);//在左转之前,先走一段距离,直到最左边的灯走出黑线(为实现直走>左转)if(Middle_Detector==0){Go_straight();}else{do{Wheel_Control(LEFT,0,32);//左齿轮反转,右齿轮正转Wheel_Control(RIGHT,1,45);}while(P1&0xf8==0xd8||P1&0xf8==0x98 ||P1&0xf8==0xc8);}}void Turn_back()//调头的具体实现xxx.{do{Wheel_Control(LEFT,0,42);Wheel_Control(RIGHT,1,55);}while(P1&0xf8 == 0xd8);}void Left_Adjust()//左偏->向右微调的具体实现{do{Wheel_Control(LEFT,0,72);//左轮子转速快一点就可以解决左偏问题Wheel_Control(RIGHT,1,55);}while(P1&0xf8==0xd8||P1&0xf8==0xc8 ||P1&0xf8==0xe8||P1&0xf8==0xf0);}void Right_Adjust()//右偏向->左微调的具体实现{ do{Wheel_Control(LEFT,1,62);Wheel_Control(RIGHT,0,75);}while(P1&0xf8==0xd8||P1&0xf8==0x98 ||P1&0xf8==0xb8||P1&0xf8==0x78);}void Find_gz();void main(){u16 mode = 0;u8 sensor = 0;//功能模块初始化//GPIO_config();//STC15W4K32S4 PWM复用口由高阻初始化为双向口EXTI_config();//外部中断测速Timer_config();//定时器PCA_config();//PWMUART_config();//串口ADC_config();//AD 电压检测//液晶屏初始化LCD_init();LCD_clear();LCD_draw_bmp_pixel(15,0,BMP,48,56);delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);LCD_clear();LCD_write_english_string(2,0," Welcome To ");LCD_write_english_string(2,1," S W J T U ");LCD_write_english_string(2,2," DNS VER 2.1 ");LCD_write_english_string(2,3,"Nokia511 0 LCD ");LCD_write_chinese_string(1,4,12,6,0,2);//wait for the start key down//while(Start_Key);// 延时启动(start按键按下,等待n 秒后启动)delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);//delay_ms(250);//delay_ms(250);//delay_ms(250);//delay_ms(250);//delay_ms(250);//delay_ms(250);//LCD_clear();//开总中断SET_EA();/* add your program here .....*/while(1){P1=0xff;sensor = P1&0xf8;if(gz1==0){switch(sensor){case 0x10 :///00010000case 0x08 :////00001000case 0x18 : mode = 1;break; ////00011000 左转//算法体现,先从左遍历图case 0xa0 ://10100000case 0xd0 ://11010000case 0x88 ://10001000case 0xd8 : mode = 2; break; ////11011000直走case 0x80 :///10000000case 0x00 :////00000000case 0xc0 : mode = 3; break; ////11000000右转case 0xf8 : mode = 4; break; ////11111000掉头case 0xe0 ://01001000case 0x78 ://01111000case 0x38 ://00111000case 0xb8 :///10111000case 0x98 : mode = 10; break; ////10011000 头右偏,后续调整case 0x90 :you zhuan yi chang chu licase 0xe8 :///11101000case 0xc8 ://11001000case 0xf0 : mode = 11; break; ////11110000 头偏左,后续调整default : mode = 5; break; ////其他情况,执行右转}switch(mode){case 1 : Turn_Left(); break;case 2 : Go_straight(); break;case 3 : Turn_Right(); break;case 4 : Turn_back(); break;case 5 : Find_gz();break;case 10 : Left_Adjust(); break;case 11 : Right_Adjust(); break;default : Go_straight(); break;}}}}void Find_gz(){gz1 = 1 ;do{if(Left_Detector & Left_middle_Detector ==0){Wheel_Control(LEFT,0,72);Wheel_Control(RIGHT,1,85);}else if(Right_middle_Detector & Right_Detector == 0){Wheel_Control(LEFT,1,62);Wheel_Control(RIGHT,0,75);}}while(P1&0xf8==0xd8);gz1 = 0 ;}/*************功能说明**************本文件为电机控制程序************************************* *****/#include "Action.h"/************************************ ************************************* ************************************function name :void Wheel_Control(bit side , u8 data_CCAPnH)*param :side = LEFT or RIGHT dir = WHEEL_FRONT or WHEEL_BACK data_CCAPnH 为输入CCAPnH的8bit数据*return value :none*description :control the left or right wheel's running************************************* ************************************* **********************************/ void Wheel_Control(bit side , bit dir , u8 data_CCAPnH){if(dir==WHEEL_FRONT) //选择的轮子前进{if(side==RIGHT){Motor_Right_Control = 1;PWMn_Update(PCA0,data_CCAPnH);}else if(side==LEFT){Motor_Left_Control = 1;PWMn_Update(PCA1,data_CCAPnH);}}else if(dir==WHEEL_BACK){if(side==RIGHT){Motor_Right_Control = 0;PWMn_Update(PCA0,data_CCAPnH);}else if(side==LEFT){Motor_Left_Control = 0;PWMn_Update(PCA1,data_CCAPnH);}}}/************************************ ************************************* *********************************** *function name :void TurnRight()*param :none*return value :none*description :控制电脑鼠向右转************************************* ************************************* **********************************/#if IN_PLACEvoid TurnRight(){u8 flg=1;TX1_write2buff(0xDD);left_count=right_count=0;Wheel_Control(LEFT,WHEEL_FRONT,SPEED_INIT_LEFT);Wheel_Control(RIGHT,WHEEL_FRONT,SPEED_I NIT_RIGHT);while(flg==1){if(right_count==60|left_count==60){Wheel_Control(LEFT,WHEEL_FRONT,SPEED_INIT_RIGHT);Wheel_Control(RIGHT,WHEEL_BACK, SPEED_INIT_LEFT);}if(left_count==125|right_count==125){Wheel_Control(LEFT,WHEEL_FRONT,0Xff);//左轮停止Wheel_Control(RIGHT,WHEEL_BACK,0Xff);left_count=0;right_count=0;flg=0;}}}#elsevoid TurnRight(){u8 flg=1;left_count=right_count=0;Wheel_Control(LEFT,WHEEL_FRONT,SPEED_IN IT_LEFT);Wheel_Control(RIGHT,WHEEL_FRONT,0XFF); while(flg==1){if(left_count==90|right_count==90){Wheel_Control(LEFT,WHEEL_FRONT,0Xff);//左轮停止left_count=0;right_count=0;flg=0;}}}#endif/************************************ ************************************* ************************************function name :void TurnRight()*param :none*return value :none*description :控制电脑鼠向左转************************************* ************************************* **********************************/#if IN_PLACEvoid TurnLeft(){u8 flg=1;TX1_write2buff(0xEE);left_count=right_count=0;Wheel_Control(RIGHT,WHEEL_FRONT,SPEED_I NIT_RIGHT);Wheel_Control(LEFT,WHEEL_FRONT,SPEED_IN IT_LEFT);while(flg==1){if(right_count==60|left_count==60){Wheel_Control(RIGHT,WHEEL_FRONT,SP EED_INIT_RIGHT);Wheel_Control(LEFT,WHEEL_BACK,SPEED_INI T_LEFT);}if(right_count==125|left_count==125){Wheel_Control(RIGHT,WHEEL_FRONT,0Xff);//右轮停止Wheel_Control(LEFT,WHEEL_BACK,0Xff);left_count=0;right_count=0;flg=0;}}}#elsevoid TurnLeft(){u8 flg=1;left_count=right_count=0;Wheel_Control(RIGHT,WHEEL_FRONT,SPEED_I NIT_RIGHT);Wheel_Control(LEFT,WHEEL_FRONT,0xff); while(flg==1){if(right_count==90|left_count==90){Wheel_Control(RIGHT,WHEEL_FRONT,0Xff);//右轮停止left_count=0;right_count=0;flg=0;}}}#endif/************************************ ************************************* ************************************function name :void TurnBack()*param :none*return value :none*description :控制电脑鼠向后转************************************* ************************************* **********************************/ void TurnBack(){u8 flg=1;TX1_write2buff(0xFF);left_count=right_count=0;Wheel_Control(RIGHT,WHEEL_BACK,SPEED_I NIT_RIGHT); //右轮后退Wheel_Control(LEFT,WHEEL_FRONT,SPEED_IN IT_LEFT); //左轮前进while(flg==1){if(left_count==115|left_count==115){Wheel_Control(RIGHT,WHEEL_BACK,0Xff); // 关闭右轮Wheel_Control(LEFT,WHEEL_FRONT,0Xff); //关闭左轮left_count=0;right_count=0;flg=0;}}}/************************************ ************************************* ************************************function name :void StopOngoing()*param :none*return value :none*description :控制电脑鼠停止前进************************************* ************************************* **********************************/ void StopOngoing(){u8 flg=1;right_count=left_count=0;Wheel_Control(RIGHT,WHEEL_BACK,SPEED_I NIT_RIGHT); //右轮后退Wheel_Control(LEFT,WHEEL_BACK,SPEED_INIT_LEFT); //左轮后退while(flg==1){if(right_count==2|left_count==2){Wheel_Control(RIGHT,WHEEL_BACK,0Xff);// 关闭右轮Wheel_Control(LEFT,WHEEL_BACK,0Xff); //关闭左轮left_count=0;right_count=0;flg=0;}}}/************************************ ************************************* ************************************function name :void GoGrid()*param :none*return value :none*description :前进一格后停止************************************* ************************************* **********************************//*void GoGrid()//前进一格后停止{u8 flg=1;left_count=right_count=0;Wheel_Control(RIGHT,WHEEL_FRONT,SPEED_I NIT); //右轮前进Wheel_Control(LEFT,WHEEL_FRONT,SPEED_IN IT); //左轮前进while(flg==1){if(right_count==35|left_count==35){Wheel_Control(RIGHT,WHEEL_BACK,0Xff);// 关闭右轮Wheel_Control(LEFT,WHEEL_BACK,0Xff); //关闭左轮left_count=0;right_count=0;flg=0;}}} */。