l298n 原理

l298n 原理智能小车实习报告[多篇]第一篇:智能小车实习报告智能循迹避障小车设计报告学院名称:机械工程学院专业班级:光信息1202学生姓名:石云杰、李志岗、李召旭 学生学号: 、54、46

智能小车实习报告[多篇]   第一篇:智能小车实习报告   智能循迹避障小车   设计报告   学院名称:   机械工程学院   专业班级:   光信息120   2学生姓名:石云杰、李志岗、李召旭 学生学号: 3120303055、54、46   摘要   根据小车各部分功能,模块化硬件电路,并调试电路。将调试成功的各个模块逐个地“融合”成整体,再进行软件编程调试,直到完成小车,使小车智能地循迹、避障。利用红外线传感器检测黑线与障碍物,当左边传感器检测到黑线时,小车往左边偏转,右边的传感器检测到黑线时,小车往右边偏转。当前边用于避障的传感器检测到障碍物时,小车往左偏转避开障碍物后,回到原轨道。以STC12C5A60S2单片机为控制芯片控制电动小车的速度及转向,从而实现自动循迹避障的功能。其中小车驱动由L298N驱动电路完成,速度由单片机控制。   关键词:AT89S52单片机;   ;红外对管;智能小车   L298N   一、背景   随着汽车工业的迅速发展,关于汽车的研究也就越来越受人。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。   自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。   随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实用有效的方法。   机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自动导引小车(AVG—auto-guide vehicle)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。   该智能小车可以作为机器人的典型代表。它可以分为三大组成部分:传感器检测部分、执行部分、CPU。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。单片机驱动直流电机一般有两种方案:第一,勿需占用单片机资源,直接选择有PWM功能的单片机,这样可以实现精确调速;第二,可以由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。考虑到实际情况,本文选择第二种方案。CPU使用STC12C5A60S2单片机,配合软件编程实现。   二、小车硬件模块   2.1 STC12C5A60S2单片机   STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。   STC12C5A60S2单片机的特点如下: 1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051; 2.工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机); 3.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节;   4.片上集成1280字节RAM; 5.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;   6.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;   2.2模拟舵机   按照舵机的转动角度分有180度舵机和360度舵机。   180度舵机只能在0度到180度之间运动,超过这个范围,舵机就会出现超量程的故障,轻则齿轮打坏,重则烧坏舵机电路或者舵机里面的电机。360度舵机转动的方式和普通的电机类似,可以连续的转动,不过我们可以控制它转动的方向和速度。   一般来说,我们用的舵机有以下几个部分组成:直流电动机、减速器(减速齿轮组)、位置反馈电位计、控制电路板(比较器)。舵机的输入线共有三根,红色在中间,为电源正极线,黑色线是电源负极(地线)线,黄色或者白色线为信号线。其中电源线为舵机提供6V到7V左右电压的电源。   在舵机上电后,舵机的控制电路会记录由位置反馈电位计反馈的当前位置,当信号线接收到PWM信号时会比较当前位置和此PWM信号控制所要转到得位置,如果相同舵机不转,如果不同,控制芯片会比较出两者的差值,这个差值决定转动的方向和角度。   2.3循迹模块   轮式智能小车采用3个红外线传感器   红外对管实物图   红外巡线模块   红外寻迹模块是利用红外线反射的原理,根据反射的强度来判定颜色。本寻迹模块是用来识别黑白线,黑线输出高电平,白线输出低电平。由于使用的是红外线,所以抗干扰能力很强。这样做更加确保了机器人的稳定性。   三、软件模块   3.1 软件调试平台   STC单片机是基于51控制核的高速单片机。对于程序的编译和链接,我们可以使用KEIL C 帮助完成。   在对芯片进行编程时,我们使用STC公司提供的烧录软件STC_ISP_V3.5 3.1.1 Keil C 我们使用的单片机是STC12C5A60S2,是51的内核。指令周期都优大幅度的缩减,运行速度自然提高。由于我们使用的是51内核,所以我们可以使用支持C51的开发软件帮助编辑程序和编译链接程序。KEIL C就是这样一款软件。   Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。   KEIL C的软件界面如下:   在项目中我们可以建立自己的工程,根据工程添加编辑程序文件。最终使用“完全编译”功能完成编译。在烧录单片机之前还应该生成对应的“.HEX”INTEL 二进制文件。有了这个文件,我们才能使用STC提供的软件进行烧写单片机的操作。   3.1.2 STC_ISP_V3.5 STC _ISP_V3.5是由STC开发的程序烧写测试综合软件。它可以通过普通的串口(COM)烧写单片机的程序。软件运行稳定。操作相对方便。软件的操作界面如下:   下面给出操作的具体步骤: 1.选择芯片类型;   2.选择要烧写的HEX文件;   3.设置串行端口和波特率,这里要注意端口号,波特率的选择比较任意一般为38400;   4.选择外部晶振;与下载无关;清FLASH区;   5.按钮后,打开单片机供电电源。在上电后单片机会自动进入编程状态。通过提示可以判断是否下载完成。   四、机械模块   智能小车可以分为三部分——传感器部分、控制器部分、执行器部分。控制器部分:接收传感器部分传递过来的信号,并根据事前写入的决策系统(软件程序),来决定机器人对外部信号的反应,将控制信号发给执行器部分。好比人的大脑。   执行器部分:驱动机器人做出各种行为,包括发出各种信号(点亮发光二极管、发出声音)的部分,并且可以根据控制器部分的信号调整自己的状态。对机器人小车来说,最基本的就是轮子。这部分就好比人的四肢一样。传感器部分:机器人用来读取各种外部信号的传感器,以及控制机器人行动的各种开关。好比人的眼睛、耳朵等感觉器官。   驱动部分:智能小车的直流电机功率较小,而小车上装有电池、电机、电子器件等,使得电机负担较重。为使小车能够顺利启动,且运动平稳,在直流电机和轮车轴之间加装了三级减速齿轮。   电池的安装:将电池盒尽量安置在车体的电机前或后位置,降低车体重心,提高稳定性,同时可增加驱动轮的抓地力,减小轮子空转所引起的误差。   五、小车特色   此智能小车是基本单片机为核心,设计小车的开发平台,作品的设计将前沿的电子器件、市场应用热点与基础理论有效地结合起来,既能检验理论学习效果、又能在动手实践中检验学生对件的利用程度,设计的创新性、技术复杂度及实用性,激发学生的创新灵感。基于此平台可以设计出各种各样的生活实用装置,如盲人导行车。   硬件方面:采用双步进控制电动车,利于车转向,利用光电传感器与单片机之间的信号传输与转换,实现电动车的智能化。   软件方面:传感器在检测到某物时,输出信号会发生变化,让单片机只对此规律的信号作出反应,减少了数据处理量,缩短了系统反应时间,并简化了程序,提高了系统的控制精度。整个运行过程中通过实时信息采集,利用端口查询,实现对信号的实时检测和处理。   小组成员感想   光信1202李召旭3120303046 经过两周的实际操作和实习,我们小组完成了光电智能小车的组装和程序调制,实现了光电智能小车的寻迹功能和避障功能,完成了光电智能小车沿给定的轨道行走的任务。   这次课程设计让我学习并巩固了光电传感器的知识,光电传感器主要利用光信号进行感应和进行信号处理。光电传感器具有反应灵敏、准确度高和精确度高的特点,光电传感器广泛应用于当今的科技领域,在探测、感应和信号处理方面的应用越来越多。   在光电智能小车的组装和程序调制过程中,我们虽然遇到了一些问题,但经过一次又一次的认真思考,一遍又一遍的修改尝试终于找出了原因,最终完成了光电智能小车的功能。   通过这次实习,我明白了实践的重要性。在实习过程中,必须将理论知识和实际情况结合起来。实践才能出真知,通过我们自己亲身实践亲自动手,我们应用掌握的光电传感器知识,使知识不再是空洞的。在课程设计过程中,我们不断的发现错误,不断改正,发现问题,不断探索,并不断领悟,在解决问题和克服错误的过程中最终完成了设计任务。不仅这次实习是这样,在今后的学习和实践过程中,我们也不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后 一一进行解决,只有这样,才能做成想要做的事情,才能成功。解决问题的方式是多种多样的,可以向有能力比自己精通的人请教,可以自己去查找资料,可以去网络上搜索,而解决问题的过程正是一个学习和提升的过程,所以我们应该不错过任何一个问题,也不应该惧怕问题,而应该迎难而上,尽力去解决问题,只有这样,我们才能够真的学习到知识并提升自身的各种能力。   课程设计是一门专业课,它不仅让我学习到了许多专业知识,也让我学到了许多书本外的知识。设计过程让我对抽象的理论有了具体 的认识。通过这次课程设计,我掌握了光电传感器的识别和功能;了 解了电路的连线方法;掌握了小车的控制方法和技术,通过查询资料,我也掌握了程序的编写和小车的调试。而调试及程序的修改过程是最艰难的,但是经过我们小组成员的合作和配合,最后终于使小车完成了任务。   在实习过程中,我们培养了自身的独 立思考、动手操作的能力,在各种其它能力 上也都有了提高。最重要的是我们还学习到了许多学习的方法,这些方法在我们以后的学习生活中是重要的。   在实习的两周时间里,虽说时间并不十分长,但是真的可以学到很多很多有用的东西,一方面我们巩固了以前所学过的知识,另一方面我们培养并提升了自己的合作和动手能力。通过这次课程设计使我懂得实验过程中团队合作的重要性,我们在合作起来更加默契,在程序编写和小车组装中,我们分工合作,互相帮助,使实习过程变得简单起来,在成功后一起体会喜悦的心情。这就是团结合作的力量,只 有互相之间默契融洽的配合才能换来最终的成功。   此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没 有弄不懂的知识,才能收获到成功的喜悦。   总之,通过这次课程设计,我收获了许多,这些收获对我以后的生活和学习都将产生十分重要作用。   光信息1202 石云杰 3120303054 机器人从诞生之初简单的机械运动,完成简单的人类动作,到如今机器人的智能化。现代的机器人不再是当初人类的工友了,而是渐渐成为人类的朋友与伙伴。人们培育机器人的目标是将机器人“修炼”为人。我不知道,机器人技术员这样做的目的是否有些滑稽。人类不够用吗?地球上60亿的人类还不够多吗?再造一批人类,这又是怎样的动机?   当然,技术员们虽然想将机器人尽早“修炼成人”,主要是指其中的智能化目标,拥有人类的大脑特性,这样能自己判断以实现帮助人类工作,但不需要人类的“费心”指导。人类希望有“人”帮助自己劳动,但却更希望这种帮助是免费的,而且是一切免费的。不仅不需要付工钱,连说话也没必要。对比来讲,奴隶时代虽然过去,但是人们仍然有天生的惰性,在这个奴隶早被废除的时代,人类再次在日益发展的机器人身上看到了希望。不少的报道称机器人是“人类保姆”,但是它既不拿工资,仅仅耗费些电力(但是我想这也会在某天被天才的人类解决),想想这比奴隶还奴隶!   日本的机器人产业是先进的,不仅有强大的技术基础,而且商业化的程度也很深。机器人已经分离出很多的种类。有针对工业劳动的,有针对家庭服务的,有支持广播电视播音主持的。最近炒得比较火的,日本甚至造出服务宅男的机器人!机器人分出很多的种类,奴隶也分各种档次。在大多数国家依法治国的年代,多数人还是不敢逾越法律的红线,于是人类对着一堆“破铁”动起脑筋。它就是一个机器而已,不属于人权范围!人类的奴隶时代早已经过去,机器人的奴隶时代正悄然来临!总有一些“智慧”的人类,千方百计地为自己本属可耻的行为找一个恰当而似乎正当的途径或借口!   我们是否该为机器人的发展制定一些底线与原则?我们不能让智能化的机器人的存在为触犯法律红线的行为出现与存在。法律的目的是遏制逾越道德与正义的行为,但这不仅仅是人与人之间,即使是在人与机器人之间,但它毕竟是发生了,但我们却没有对之同样的处理与遏制,这难道不是某种程度上对法律的无视吗?   假如若干年后的某天,家家户户、社会的任何角落都是机器人在忙碌,玩命的工作(24小时从不间断)。多数人可以享受没有假期的假日(假日中不插播工作),晒沙滩或享受旅行。按照如今的一些迹象,可以推算一下,未来应该是人手一位机器人,机器人女友与男友。到时的屌丝应该非常多(不管是难还是女),因为机器人的定制,容颜可以依照女神或男神的标准制造,而且可以永久不苍老,终身享用!再者,不光具有男神或女神的外貌气质,而且具有本属于机器人的无偿服务性,人们又有什么理由不接受呢?而且机器人如果加上商业利益化驱使,这样的现象总会在某一天出现。人人努力购买一位机器人,总有一天会像现今人人努力购房买房一样!但是一些现象仍会同时出现,机器人不工作,主人打几下就好了。一些遗弃的机器人沦落街头,总有一些闲散人员欺负。或是,别家的机器人与邻居家的主人形成矛盾,于是邻居家的主人叫来自家的机器人帮助吵架甚或动手。人类制造机器人的趋势本就是使之愈加人类化,能保证机器人不会在那一天对这些行为判断为“危险”动作?   弗兰克的机器人都学会了说谎,《云图》中的机器人某天都受到自我寻求解放的鼓励,机器人的奴隶时代,总有一天奴隶也会选择成为主人!   以上当然是某种假想,机器人的智能化是必定的趋势。但是,我们或许更应该清楚,我们使机器人智能化的目的在于使机器人帮助人类完成人类无法做到的事情与任务,而不是作为实现某些人内心可耻行为的途径!   光信息1202 李志岗 3120303055   附录:智能循迹小车程序   /* *   名称:小车实验 说明:   1、小车前后左右停止控制+循迹避障控制   2、请注意舵机接线与程序中的一致 注:此版本程序对应反向舵机   */ #include #include   #define uchar unsigned char /* 预定义*/ #define uint unsigned int #define l_stop 125 #define r_stop 125   uchar i;uchar l_speed;uchar r_speed;/*字符定义,uchar即   unsigned char,l_speed、r_speed左右电机速度*/ uint a,b;//a-left;b-right /*unit即 unsigned int*/   sbit LeftCon=P2^0;/*管脚定义,LeftCon左电机*/ sbit RightCon=P2^1;/*右电机*/ sbit L=P0^0;/*左传感器及信号*/ sbit R=P0^1;/*右传感器,对地面有反馈,而对地面的黑色没有反应,即不反馈。*/ sbit M=P0^2;/*前端传感器*/   void instate()//初始化 { i=0;a=1750;b=1750;TMOD=0x21;TH1=0xe6;//波特率1200 TL1=0xe6;//波特率1200 PCON=0x00;//SMOD=0 SCON=0x40;//串口工作方式1 REN=1;TH0=-((1500+l_stop*2)/256);TL0=-((1500+r_stop*2)%256);TR0=1;TR1=1;EA=1;ET0=1;ES=1;} void servo()interrupt 1 using 1 { switch(i){   case 0:   {   TH0=-(a/256);//a=l_stop*2+1500   TL0=-(a%256);   RightCon=1;   i++;   break;   }   case 1:   {   TH0=-((2500-a)/256);   TL0=-((2500-a)%256);   RightCon=0;   i++;   break;   }   case 2:   {   TH0=-(b/256);   TL0=-(b%256);   LeftCon=1;   i++;   break;   }   case 3:   {   TH0=-((17500-b)/256);   TL0=-((17500-b)%256);   LeftCon=0;   i=0;   break;   }   } } //_____________________________________________________________________________________________________________ //动作函数库   void action(uchar num){ switch(num){   case 242://stop   {   a=l_stop*2+1500;   b=r_stop*2+1500;   }   break;   case 243: //forward   {   a=(l_stop+50)*2+1500;   b=(r_stop-50)*2+1500;   }   break;   case 244: //backward   {   a=(l_stop-50)*2+1500;   b=(r_stop+50)*2+1500;   }   break;   case 245: //turn left   {   a=(l_stop+50)*2+1500;   b=(r_stop+50)*2+1500;   }   break;   case 246://turn right   {   a=(l_stop-50)*2+1500;   b=(r_stop-50)*2+1500;   }   break;   default://stop   a=l_stop*2+1500;   b=r_stop*2+1500;   break;} }   //循迹// void xunji(){ if(L==0&&R ==0){ action(243);DelayMs(5000);} /*0及没有障碍物反馈(在黑色带的上方),左右都没有障碍物时前进*/ else if(L==1&&R ==0){ action(246);DelayMs(5000);} /*右有障碍物,左没障碍,右转*/ else if(L==0&&R ==1)   { action(245);DelayMs(5000);} /*左有障碍物,右没障碍,左转*/ else action(243);   }   //* void main(void){   SP=0x70;//堆栈指针初始化(这里的做法和汇编是一样的)   //这里需要特别注意!在没有调用任何函数前,就必须初始化堆栈指针。   //如果调用函数后做初始化工作,就会发生指针指向出错的问题。instate();//初始化单片机(Initialization MCU)   while(1){   xunji();/*先循迹再避障*/   if(M==0)   action(243);   } }   第二篇:智能小车设计报告   机器人控制技术   实验设计报告书   题   目:基于STC89C52的智能小车的设计 姓   名:李如发 学   号:073321032 专   业:电气工程及其自动化 指导老师:李东京 设计时间:2010年 6 月   目   录   1.引 言……………………………………….1 1.1.设计意义………………………………..1 1.2.系统功能要求…………………………….1 1.3.本组成员所做的工作……………………….1 2.方案设计…………………………………….1 3.硬件设计…………………………………….2 4.软件设计…………………………………….7 5.系统调试…………………………………….7 6.设计总结…………………………………….8 7.附 录A;源程序……………………………….8 8.附 录B;作品实物图片………………………….10 9.参考文献……………………………………11   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   基于STC89C52的智能小车的设计   1.引 言   1.1.设计意义   本智能小车的设计,首先针对大学所有学习的知识是一个很好的回顾和总结。此智能小车是基于单片机所设计的,具有自动寻迹能力,在实际的很多方面有应用。当我们进一步的改进机器人系统时,可实现更重要的功能,如可设计出自动扑火机器人等。1.2.系统功能要求   此智能小车是基于STC89C52设计的具有自动寻迹能力的小车。系统可实现跟随黑色引导线行走的能力,在行驶过程中,并能用测速传感器和光电码盘对小车速度实现实时监测。小车在行驶过程中并能实现播放美妙的音乐。1.3.本组成员所做的工作   本组成员有李如发,汪航,黄建安,韩文龙,罗莹,明菲菲,邹珊,江锐,邵进。   李如发:驱动 073321032 汪航: 电源 073522036 黄建安:最小统 073521013 韩文龙:源程序 073522007 罗莹: 传感器 073522038 明飞菲:调试 073522012 邹芬 : 数码显示 073521025 邵琎 : 焊接 073522017 江锐 : 蜂鸣器 073522032   2.方案设计   智能小车主要分为传感器部分,最小系统部分,电机驱动部分,电源部分。根据功能要求,提出合理的设计方案,画出方案方框图,并对系统工作原理进行阐述。   原理,本系统的重要部分是传感器,它对整个小车的定位起到很重要的作用,由传感器检测黑线的位置,其中黑线对光能吸收,白线对光反射。利用此原   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   理将红外线传感器采集到的信号转换为数字信号并送入单片机,单片机根据收到的信号实时的控制小车的方向。控制小车的方向主要是运用pwm原理来控制电机的平均电压,从而来控制电机的转速,实现小车对黑线的实时跟踪。   3.硬件设计   硬件设计各模块电路图及原理描述 传感器模块   方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。   但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。   方案2:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。   方案3:用红外发射管和接收管自己制作光电对管寻迹传感器。红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。我们选择了此方案。   传感器是整个系统的眼睛,这部分主要运用红外线传感器采集信号送给单片机处理。由于黑色车道对红外线传感器发出的光有吸收能力,白色地方对发出的光反射,从而当传感器在不同的地方产生不同的信号,传送个单片机。单片机根据采集的信号做出实时的处理。   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   最小系统   最小系统是整个系统的心脏,我们采用的是AT89C52芯片。   80C52单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。   驱动模块   方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。   方案2:对于直流电机用分立件构成驱动电路。由分立件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。   因此我们选用了方案1。   由于最小系统和电机驱动部分的电压幅值不一样,而且电机是感性负载,在制动时可能反馈电流,因此要在最小系统和驱动模块之间采用光电隔离,所以用到了光电隔离芯片,TPL521-4   由于光耦芯片的引脚不够所以在之后采用了一片反相器74HCT14,反相器图如下   L298是双H桥高电压大电流功率集成电路,直接采用TTL逻辑电平控制,可用来驱动继电器、线圈、直流电动机、步进电动机等电感性负载。它的驱动电压可达46V,直流电流总和可达4A。其内部具有2个完全相同的PWM功率放大回路。由L298构成的PWM功率放大器的工作形式为单极可逆模式。12个H桥的下侧桥晶体管发射极连在一起,其输出脚(1和15)用来连接电流检测电阻。第9脚接逻辑控制部分的电源,常用+5V,第4脚为电机驱动电源,本系统中为40V,第5,7,10,12脚输入标准TTL逻辑电平,用来控制H桥的开和关,16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   第6,II脚则为使能控制端。当Vs=40V时,最高输出电压可达35V,连续电流可达2A。   L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动两台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。电动 机的转速由单片机调节PWM信号的占空比来实现。   L298驱动电路图   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   PWM调速器的硬件组成   在整个PWM调速器中,CPU既是运算处理中心,又是控制中心,是最关键的器件。本系统中选用与MCS-51系列完全兼容的AT89C52单片机,它是一种低功耗、高性能、CMOS八位微处理器。片内具有8K字节的在线可重复编程快擦快写程序存储器,128×8位内部RAM,AT89C52可构成真正的单片机最小应用系统,缩小系统体积,提高系统可靠性,降低系统成本。   电源模块   电源中我们采用LM7805稳压芯片将12v直流电源稳压成5v直流源。方案1: 采用10节1.5V干电池供电,电压达到15V,经7812稳压后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。但干电池电量有限,使用大量的干电池给系统调试带来很大的不便,因此,我们放弃了这种方案。   方案2:采用3节4.2V可充电式锂电池串联共12.6V给直流电机供电,经过7812的电压变换后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。锂电池的电量比较足,并且可以充电,重复利用,因此,这种方案比较可行。但锂电池的价格过于昂贵,使用锂电池会大大超出我们的预算,因此,我们放弃了这种方案。   方案3:采用12V蓄电池为直流电机供电,将12V电压降压、稳压后给单片机系统和其他芯片供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。因此我们选择了此方案。下:   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   4.软件设计   程序流程图   5.系统调试   本系统的设计是首先完成每一小部分的设计,因此我们在没完成一个模块时就回检测调试该模块。在初次调试时我们采用的电源是又单片机开发板所带的的电源来调试的。调试过程中我们就发现了很重要的问题,由于对本设计的很多模块的没有共同的接地使得很多模块无法工作,我们的解决办法是12v的直流源稳压来供给所以的模块,然后将所以的模块连接共同的地。在驱动模块的调试中发现当光耦芯片给定信号时对lm298的输出没有反应。我们在检验时发现是由于在光耦芯片后部焊接没有焊好,出现了虚焊。在重新焊接好后,芯片正常工作。分   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   块调试传感器时,我们将传感器导通,用黑色物体将传感器发射部分盖住检测输出,在将黑色物体移开,再检测输出。   6.设计总结   本文是关于基于单片机的智能小车的设计,在共同的努力下,各部分的设计均成功,在调试过程中都无误。本次设计最终实现了直流电机的动态调压,电源正常输出供电,数码管动态显示数据,蜂鸣器播放美妙的音乐,小车实现简单的转弯功能。由于本次设计中尚存在些缺陷和对寻迹程序编写困难,实现的功能不是很完美,但要求的所有功能基本实现。   本次设计中,从中的体会很多   1、本次的设计可以说设计到大学所学到的所有专业知识,是对大学所学知识的一个整体的回顾。   2、在设计中,不能一气呵成,因为所有的电路图都是自己设计的,图中尚存在不足,所以要反复的琢磨和修改。   3、设计中要注意对每焊完一部分,都要独立的进行检查调试,及时的发现错误,及时的修改   4、本次最重要的收获是从中我们看到了团队合作的重要性,任何事都不是一个人所能完成的,需要大家的共同努力才能获得最后的成功。   7.附 录A;源程序   源程序代码(主要语句要有注释)。循迹的程序 #include #define uint unsigned int void delay(uint);   sbit R=P2^0;//右边传感器 sbit L=P2^1;//左边传感器 sbit RM1=P1^1;sbit RM2=P1^2;//右边电机 sbit LM1=P1^3;sbit LM2=P1^4;//左边电机 void main(){   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   RM1=1;   RM2=0;   LM1=1;   LM2=0;   delay(5);   while(1)   {   if((L==1)&&(R==1))//小车前进 {   RM1=1;   RM2=0;   LM1=1;   LM2=0;   delay(5);   }   else if((L==1)&&(R==0))//小车右偏   {   RM1=1;   RM2=0;   LM1=0;   LM2=1;   //左边的电机停止转动,右边的电机转动,这样就实现了左转   delay(10);   }   else if((L==0)&&(R==1))//小车左偏   {   RM1=0;   RM2=1;   LM1=1;   LM2=0;   //右边的电机停止转动,左边的电机转动,这样就实现了右转   delay(10);}   else if((L==0)&&(R==0))//小车停车   {   RM1=0;   RM2=1;   LM1=0;   LM2=1;delay(5);   }   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   else   //左右两个电机同时启动,直线前进   {   RM1=1;   RM2=0;   LM1=1;   LM2=0;   }   }   delay(10);   }   void delay(uint z)   {   uint a,b;for(a=z;a>0;a–)for(b=120;b>0;b–);}   8.附 录B;作品实物图片   16×16点阵LED室内电子显示屏的设计   单片机原理及应用课程设计   9.参考文献   [1] Mark Nelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002.[2] 王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.[3] 张毅刚.单片机原理及应用.高等教育出版社,2009 [4] 康华光.电子技术基础(模拟部分).高等教育出版社.2006   第三篇:智能小车设计报告   智能小车设计报告   魏旭峰、孔凡明、陈梦洋   (河北科技大学 电气信息学院)摘要:   AT89S52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。该设计是结合科研项目而确定的设计类课题。本系统以设计题目的要求为目的,采用89S52单片机为控制核心,利用红外线传感器检测道路上的黑线,控制电动小汽车的自动寻路,快慢速行驶。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。   采用的技术主要有:   通过编程来控制小车的速度及方向; 传感器的有效应用; 1602液晶显示的应用;   关键词: 89S52单片机、光电检测器、PWM调速、电动小车   第一章 方案设计与论证   一 供电系统   二 光电检测系统   三 单片机最小应用系统设计   四 液晶显示1602的应用   五 电机驱动   第二章 软件设计   第二章 方案设计与论证   根据要求,小车应在规定的赛道上行驶,赛道中央黑线宽为25MM,确定如下方案: 在现有玩具电动车的基础上,加装光电检测器,实现对电动车的位置的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的转向和速度的智能控制.这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。   一 供电系统   本模块使用LM2940芯片输出+5V的电压,为89S52单片机光电检测电路供电,采用LM1117可控变压芯片输出+6V电压为舵机供电.而电机则由单片机来控制,当单片机输出的电压不同时,电机的转速不同,以此来达到控制小车速度的目的.电路如图:   二 光电检测系统   本模块采用七对红外线发射和接收对管,来检测小车前方黑线位置和模拟车站停车位置.发射管发射管出红外线,当对管正下方为白色跑道时,发射管发射出去的红外线会被反射回来, 接收因接收到红外线而导通,两端电压为零,当对管正下方为黑色线时,黑线将吸收红外线,接收管因接收不到红外线而无法导通,两端电压为+4V左右,将接收管端电压与一个给定电压经LM324比较后输出0和+5V两固定个值,当对管正下方为白色时输出+5V电压,当对管正下方为黑线时输出0V,输出的电压交给单片机,以此来确定黑线的位置.电路如图:   三 单片机最小应用系统设计   89S52单片机是本系统的核心所在,自动寻迹和调速都是它控制, 七对光电对管经比较器输出的电压输入单片机,单片机根据电压的高低来判断黑线位置,进而调整速度和方向,电路如下:   四 舵机的应用   舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。   其工作原理是:单片机放的控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。   舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。   五 电机驱动   电机驱动电路是根据单片机的控制型号来控制电机的转动的,电路如下:   第二章 软件设计 #include sbit moto=P2^0;//舵机位定义 sbit in1=P2^1;////电机位定义 sbit in2=P2^2;////电机位定义 sbit L1=P1^7;////光电管位定义 sbit L2=P1^1;sbit L3=P1^2;sbit L4=P1^3;sbit L5=P1^4;sbit L6=P1^5;sbit L7=P1^6;   #define uchar unsigned char//宏定义 uchar duoj,dianj,time0=0,time1=0,L=0,e=30;void timer0()interrupt 1 //定时器零 控制舵机 { time0++;   if(time0==duoj)moto=0;if(time0==80){ time0=0;   moto=1;} TH0=(65536-313)/256;TL0=(65536-313)%256;} void timer1()interrupt 3 ///定时器一 控制电机 { time1++;if(time1==dianj)in1=1;if(time1==80){   time1=0;   in1=0;} TH1=(65536-340)/256;TL1=(65536-340)%256;}   void main()/////主函数开始 { TMOD=0x11;TH0=(65536-313)/256;TL0=(65536-313)%256;TH1=(65536-340)/256;TL1=(65536-340)%256;EA=1;ET0=1;   ET1=1;in1=0;moto=1;TR0=1;TR1=1;while(1)//////检测黑线位置   {   while(1)   {   if(P1==0xff){duoj=8;dianj=55;break;} 全白时缓进   if(L1==0){duoj=10;dianj=37;L=1;break;} //L1   if(L7==0){duoj=6;dianj=37;L=7;break;} //L7   if(L2==0){duoj=10;dianj=22;L=2;break;} //L2   if(L6==0){duoj=6;dianj=22;L=6;break;} //L6   //   if(L3==0){duoj=9;dianj=27;L=3;break;} //L3   if(L5==0){duoj=7;dianj=27;L=5;break;}   //L5   if(L4==0){duoj=8;dianj=70;L=4;break;}   //l4   //else {duoj=8;dianj=17;break;}   }   while(P1==0xff)当检测不到信号时保持最后的状态   {   switch(L)   {   case 1:duoj=10;dianj=39;break;   case 2:duoj=10;dianj=22;break;   // case 3:duoj=9;dianj=25;break;   // case 4:duoj=8;dianj=70;break;   // case 5:duoj=7;dianj=25;break;   case 6:duoj=6;dianj=22;break;   case 7:duoj=6;dianj=39;break;   }   } } }////////主函数结束   第四篇:电磁智能小车设计报告   标题:电磁感应智能电动车   摘要:本系统以AVR单片机MEGAl6为核心器件,实现对驱动电路的控制,使电动小车自动行驶。利用电磁原理,在车模前上方水平方向固定两个相距为L的电感,通过比较两个电感中产生的感应电动势大小即可判断小车相对于导线的位置,进而做出调整,引导小车大致循线行驶。用PWM技术控制小车的直流电动机转动,完成小车位置、速度、时间等的控制。利用干簧管来检测跑道的起始和终点位置从而完成小车的起步及停车。   系统总体设计:   AVR单片机MEGAl6(该芯片能够不需要外围晶振和复位电路而独立工作,非常适合智能寻迹车模的要求。)为核心,由单片机模块、路径识别模块、直流电机驱动模块、舵机驱动模块等组成,如下图所示。基于电磁感应的智能寻迹车模系统以   直流电动机为车辆的驱动装置,转向电动机用于控制车辆行驶方向。智能寻迹车模利用电磁感应在跑道上自主寻迹前进,转向。   单片机模块(控制模块):   寻迹车模采用AVR内核的ATMEGAl6。该芯片能够不需要外围晶振和复位电路而独立工作,非常适合智能寻迹车模的要求。   路径识别模块:   本方案就是在车模前上方水平方向固定两个相距为L的电感。左边的线圈的坐标为(x,h,z),右边的线圈的位置(x-L,h,z)。由于磁场分布是以z轴为中心的同心圆,所以在计算磁场强度的时候我们仅仅考虑坐标(x,y)。由于线圈的轴线是水平的,所以感应电动势反映了磁场的水平分量。计算感应电动势:   图 1 线圈中感应电动势与它距导线水平位置x 的函数   如果只使用一个线圈,感应电动势E 是位置x 的偶函数,只能够反映到水平位置的绝对值x 的大小,无法分辨左右。为此,我们可以使用相距长度为L 的两个感应线圈,计算两个线圈感应电动势的差值:   对于直导线,当装有小车的中轴线对称的两个线圈的小车沿其直线行驶,即两个线圈的位置关于导线对称时,则两个线圈中感应出来的电动势大小应相同、且方向亦相同。若小车偏离直导线,即两个线圈关于导线不对称时,则通过两个线圈的磁通量是不一样的。这时,距离导线较近的线圈中感应出的电动势应大于距离导线较远的那个线圈中的。根据这两个不对称的信号的差值,即可调整小车的方向,引导其沿直线行驶。   对于弧形导线,即路径的转弯处,由于弧线两侧的磁力线密度不同,则当载有线圈的小车行驶至此处时,两边的线圈感应出的电动势是不同的。具体的就是,弧线内侧线圈的感应电动势大于弧线外侧线圈的,据此信号可以引导小车拐弯。   另外,当小车驶离导线偏远致使两个线圈处于导线的一侧时,两个线圈中感应电动势也是不平衡的。距离导线较近的线圈中感应出的电动势大于距离导线较远的线圈。由此,可以引导小车重新回到导线上。   由于磁感线的闭合性和方向性,通过两线圈的磁通量的变化方向具有一致性,即产生的感应电动势方向相同,所以由以上分析,比较两个线圈中产生的感应电动势大小即可判断小车相对于导线的位置,进而做出调整,引导小车大致循线行驶。   驱动模块:   简易智能小车有两个电动机。其中一个小电动机控制前轮转向,给电动机加正反向电压,实现前轮的左右转向;另一电动机控制后轮驱动力。控制转向电动机需要较小的驱动力,经过实验,选L293作为驱动芯片;由于后轮驱动功率较大,所以选用L298N,经过实验发现小车行使过程中负载较大,导致L298N发热较大,故给芯片添加散热片以保护芯片正常工作。为了优化控制性能,采用PWM脉宽调速,并利用数模转换芯片产生 模拟电压,控制555生成占空比可调的脉冲从而控制L293B与L298N进行脉宽调速。   具体设计方案:   本设计使用一普通玩具小车作为车模,采用P W M 信号驱动,当PWM信号脉宽处于(1ms,1.5ms)区间时舵机控制小车向左行驶,脉宽处于(1.5ms,2ms)时小车向右行驶,脉宽约为1.5ms时小车沿直线行驶。本方案使用两个10mH的电感置于车模头部作为确定小车位置的传感器。然后,设计了一个模拟电路,采集、调理、放大由电感得到的电动势信号。具体电路如图2所示。   该电路采用电压并联负反馈电路,电感信号从PL进入。考虑到单独电感感应出的电动势很小,本设计使用电感和电容谐振放大感应电动势。由于使用的是10mH的电感,导线中电流频率为20kHz,因此使用6.3nF的电容。这样在电容上得到的电压将会比较大,便于三极管进行放大。整个电路的具体放大倍数需要根据实际负载进行计算。本设计的小车控制电路如图3所示。   首先,把由两个电感得到的感应电动势经调理、放大后得到的电压输出u1和u2送入由运放组成的减法器中进行减法运算,然后再经由运放组成的电压跟随器送给下一级电路。经过分析,这一级电路的输出大致可由下式进行计算:   后一级电路由两个555定时器组成,其中下方的555构成一个占空比非常接近于1的脉冲发生器,作为上方555的触发脉冲。因为此触发脉冲的低电平信号非常窄,所以能很好的保证上方555构成的单稳态电路正常运行。该脉冲信号频率为:   上方的555定时器构成一个单稳型压控振荡器,它的脉宽受输入V1的控制,输出即PWM信号。当V1较大时,即两个电感线圈中的感应电动势相差较大时,亦即小车偏离导线向左行驶时,则脉宽较大,舵机将控制小车向右行驶;当V1适中时,接近,即小车沿导线行驶时,则脉宽接近1.5ms,小车按直线行驶;当V1较小时,即小车偏离导线向右行驶时,则脉宽较小,舵机将控制小车向左行驶。从而,控制小车大致循着导线行驶。另外,改变构成减法器的电阻的值,可以调整小车反应的灵敏度,进而防止出现小车以导线为中轴线左右摇摆的现象。   补充说明:跑道上的起始位置及终点位置用干簧管来检测。   程序设计流程图:   第五篇:智能小车单片机课程设计报告   单片机课程设计   题 目: 专 业: 班 级: 组长 成员 成员 成员 成员   智能小车设计 计算机科学与技术   14级2班   姓名 学号   年 12 月 23 日   2016   打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录   ctr+shift+n:默认的路径为上一次终端所处在的路径.linux@ubuntu:~$ linux:当前登录用户名.ubuntu:主机名   :和$之间:当前用户所处在的工作路径.windows下的工作路径如C:IntelLogs linux下的工作路径是:/.https://www.xiexiebang.com/a1/..https://www.xiexiebang.com/a1/ ~:代表的是/home/linux这个路径.(家目录).ls(list):列出当前路径下的文件名和目录名.ls-a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件..:当前路径..:上一级路径   ls-l:以横排的方式列出文件的详细信息   total 269464(当前这个路径总计所占空间的大小,单位是K)drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop   chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名(3).cd /home/linux 进入到1目录里并创建一个2普通文件,再退回上一级,并且删除1目录 6.拷贝文件.cp(copy)路径1/源文件 路径2:把路径1下的文件拷贝到路径2下   cp 路径1/源文件 路径2/目标文件:把路径1下的文件拷贝到路径2下并且重命名位目标文件.cp(copy)-r 路径1/目录名 路径2:把路径1下的目录拷贝到路径2下 7.剪切文件   mv(move)路径1/源文件 路径2:把路径1下的文件剪切到路径2下   mv 路径1/源文件 路径2/目标文件:把路径1下的文件剪切到路径2下并且重命名位目标文件   mv 源文件 目标文件:重命名文件   mv 路径1/目录名 路径2:把路径1下的目录剪切到路径2下 8.clear:清屏 9.exit 退出终端 vi编辑器.vi 文件名:如果文件不存在则创建并打开 如果文件已存在,则直接打开   VI编辑器的三种模式   1.命令行模式:刚进入编辑器的时候,默认处在这种模式下   2.编辑模式(插入模式):输入a/i/o即可进入,按下esc键退回命令行模式,再输入冒号 ,即可进入底行模式.3.底行模式下:w(保存),q(退出),wq(保存并退出),q!(强制退出不保存)按下退格键,删除冒号,即可进入命令行模式.终极保存法;w!sudo tee %d回车再回车即可   命令行模式下的快捷操作: 1.整行复制:光标移动想要复制的那一行,输入yy即可,再把光标移动到你想要粘贴位置的上一行,输入p即可   2.多行复制:光标移动想要复制的那几行的 6.多行剪切:光标移动想要剪切的那几行的 再编译一个c应用程序,在程序中来调用库里实现的函数   gcc 应用程序名-l库名(注意是去掉lib和.so的库名)   文件IO linux系统下一切设备皆文件   操作文件: open():打开一个文件   read()://从文件里边读出数据 write()//向文件里写入数据 close()//关闭文件   man手册: man 2 函数名   open: 头文件   #include #include #include   1.int open(const char *pathname, int flags);//仅限于打开一个已存在文件   参数1:文件的路径 参数2:打开方式的标志   O_RDONLY,//只读方式打开   O_WRONLY,//只写方式打开   O_RDWRhttps://www.xiexiebang.com/a1/2019051212//可读可写方式打开 返回值: 打开成功:返回一个正数(文件描述符)打开失败:-1   2.int open(const char *pathname, int flags, mode_t mode);//可以打开一个不存在的文件 参数1:文件的路径 参数2:打开方式的标志   O_RDONLY,//只读方式打开   O_WRONLY,//只写方式打开   O_RDWRhttps://www.xiexiebang.com/a1/2019051212//可读可写方式打开   如果文件不存在必须|O_CRAET,创建该文件 参数3:权限 数 比如:0666   返回值: 打开成功:返回一个正数(文件描述符)打开失败:-1   write: 头文件: #include   typedef int ssize_t   ssize_t write(int fd, const void *buf, size_t count);参数1:就是open函数的返回值,文件描述符 参数2:你想要写入的数据   参数3:你想要写入的数据的字节大小   返回值: 写入成功:返回的是写入的字节大小 写入失败:-1   strlen:实际长度 sizeof:数组的大小   arduino viod setup(){ 端口的配置;}   void loop(){ 任务的执行;   }   arduino之呼吸灯实验: int led=13;void setup(){ pinMode(led,OUTPUT);} void loop(){ digitalWrite(led,HIGH);delay(1000);digitalWrite(led,LOW);delay(1000);} 渐变灯: 暗->亮->暗   PWM波:可调脉冲宽度波.3,5,6,9,10,11这几个端口可以输出pwm波 analogWrite(pin, value)//输出pwm波 pin:管脚号:3,5,6,9,10,11中的任意一个 value:0~255中的任何一个数: 0:占空比为0% 255:占空比位100%   远程视频监控步骤: 1.将jpegsrc.v8b.tar.gz(图片库)和mjpg-streamer-code-182.tar.gz(视频查看软件)拷贝到ubuntu的家目录   2.解压缩   tar xvf jpegsrc.v8b.tar.gz 3.cd jpeg-8b 4https://www.xiexiebang.com/a1/configure //创建Makefile文件 5.make 6.sudo make install //安装   程序运行时,默认寻找的头文件的路径在/usr/include,库文件的路径/lib   cd /usr/local/include sudo cp * /usr/include cd /usr/local/lib   sudo cp libjpeg* /lib   7.切换到家目录:cd 移植查看视频的软件:   tar xvf mjpg-streamer-code-182.tar.gz cd mjpg-streamer-code-182 cd mjpg-streamer make clean //清除已经编译过的程序   make   运行查看视频的软件:sudohttps://www.xiexiebang.com/a1/2019051212/start.sh 打开火狐浏览器   在地址栏输入127.0.0.1:8080 若发现视频绿屏   先强制结束程序运行:ctl+c.解决方法:   修改start.sh   将 要对uboot环境信息进行设置   首先把拨码开关拨到0000位置.选择uboot的启动方式.uboot从外存启动.1.找到自己的COM端口号;打开putty 2.选中Serial,把波特率改为115200,端口号改为自己的端口号,Flow contrlo选择none 3.开启电源,会出现一个倒计时,在倒计时完成之前,随便敲一个键盘.4.输入命令print可以显示uboot的打印信息   确保: ipaddr=192.168.1.100//代表开发板的ip地址 serverip=192.168.1.200//代表ubuntu的IP地址 bootargs=root=nfs nfsroot=192.168.1.200:/source/rootfs ip=192.168.1.100 init=/linuxrc console=ttySAC0,115200//   打开虚拟机: 1.进入到/tftpboot目录下.把zImage拖到虚拟机,前加cp ,后加https://www.xiexiebang.com/a1/2019051212/ 使用ls查看一下是否出现zImage 2.cd /source 把rootfs这个压缩包拖到虚拟机,前加cp ,后加https://www.xiexiebang.com/a1/2019051212/ 使用ls查看一下是否出现rootfs.tgz 3.解压命令: sudo tar-xvf rootfs.tgz 要让你输入密码;输入1回车即可,密码是不可见的.再用ls查看是否多了一个蓝色的文件rootfs.4.修改ubuntu的ip地址.找到wiffi图标,选中edit connection->IPV4 seting->manual->add ip netmask gateway 192.168.1.200 255.255.255.0 192.168.1.1 保存.关闭窗口.再打开图标选中wired connection1 再看ip是否改回来了.5.网线连接开发板和电脑   在putty界面输入:ping 192.168.1.200 如果host 192.168.1.200 is alive,这是挂载系统很好的征兆.not alive的话需要关闭电脑的无线网   输入boot或者重启开发板不要再按下任何键了,如果出现   #很快就要挂载成功了 如果出现TTTTTTTTTTTTTT 在ubuntu输入命令:sudo service tftpd-hpa restart 其中sudo的作用是暂时将用户的权限提升到超级用户(root)的权限.如果出现Please press Enter to activate this console.代表系统挂载成功.通过gcc编译生成的程序不能在开发板上运行.通过命令file a.out看到文件的格式为intel 30386,说明这是X86格式的程序,只能PC上运行   而不能在arm板上运行,解决措施,使用交叉编译器来编译.交叉编译器的配置: 将arm-cortex_a8-linux-gnueabi.tar.bz2拖到ubuntu的家目录   解压命令tar-xvf arm-cor+tab键自动补齐,用ls查看是否生成arm-cortex_a8个目录.配置交叉编译器: sudo vi /etc/bash.bashrc文件   在最后一行添加export PATH=$PATH:/home/linux/arm-cortex_a8/bin 保存并退出文件   保存完成后重启文件:source /etc/bash.bashrc   重启成功后输入arm-cor+tab键会自动补齐成arm-cortex_a8-linux-gnueabi-代表交叉编译器配置成功.利用交叉编译器编译程序: arm-cortex_a8-linux-gnueabi-gcc 文件名,并将生成的可执行程序拷贝到/source/rootfs下   然后再到putty上执行https://www.xiexiebang.com/a1/2019051212/a.out就可以在开发板上运行程序了.   相关代码   Che.c   #include “cgic.h” #include #include #include #include #include   void zigbee_serial_init(int fd){ struct termios options;   tcgetattr(fd, &options);options.c_cflag |=(CLOCAL | CREAD);options.c_cflag &= ~CSIZE;options.c_cflag &= ~CRTSCTS;options.c_cflag |= CS8;options.c_cflag &= ~CSTOPB;options.c_iflag |= IGNPAR;options.c_iflag &= ~(BRKINT | INPCK | ISTRIP | ICRNL | IXON);   //options.c_cc[VTIME] = 2;options.c_cc[VMIN] = 12;   options.c_oflag = 0;options.c_lflag = 0;   cfsetispeed(&options, B115200);cfsetospeed(&options, B115200);   tcsetattr(fd,TCSANOW,&options);   } int cgiMain(){ int fd;char a=’1′;cgiHeaderContentType(“text/htmlnn”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);   fprintf(cgiOut,“n”);fprintf(cgiOut,“SMART CARn”);fprintf(cgiOut,“n”);fprintf(cgiOut,“”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“   n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“   n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“    n”);fprintf(cgiOut,“”);fprintf(cgiOut,“    n”);fprintf(cgiOut,“   n”);fprintf(cgiOut,“n”);fprintf(cgiOut,“n”);   fd=open(“/dev/ttyUSB0”,O_RDWR);if(-1==fd)   fprintf(cgiOut,“open usart failedn”);   }   zigbee_serial_init(fd);if(cgiFormSuccess==cgiFormSubmitClicked(“up”)){ a=’2′;write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“down”)){ a=’1′;write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“right”)){ a=’4′;write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“left”)){ a=’3′;write(fd,&a,1);} if(cgiFormSuccess==cgiFormSubmitClicked(“stop”)){ a=’0′;write(fd,&a,1);} fprintf(cgiOut,”

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/81984.html

(0)
上一篇 2024年 7月 29日 上午8:39
下一篇 2024年 7月 29日 上午8:43

相关推荐

关注微信