绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇计算机硬件知识大全范文,希望它们能为您的写作提供参考和启发。
Linux作为开源的操作系统从一诞生起便吸引着全球数以万计爱好者的目光,其开放、安全、稳定的特性得到越来越多用户的认可,应用也日益广泛。越来越多的公司和企业都把linux作为服务器来使用。为了满足社会对linux网络操作系统的需求,各大高校在计算机相关专业开设《linux网络操作系统》课程。而linux 中apache服务器的搭建需要一定数量的计算机和相关的硬件设备,才能顺利开展实验。但是限于资金、场地和设备等原因,专用网络实验室往往无法建立。Oracle VM VirtualBox虚拟机软件的出现,使得利用现有的有限设备,可以使复杂的网络教学实验的顺利完成成为可能。本文利用VirtualBox虚拟机软件,在一台计算机上安装CentOS 5这个linux版本,并在此基础上搭建了apache服务器仿真实验平台,并进行了测试。
一、VirtualBox虚拟机介绍
VirtualBox是一款开源虚拟机软件。Vir-tualBox是由德国Innotek公司开发,由Sun Microsystems公司出品的软件,在Sun被Oracle 收购后正式更名成 Oracle VM VirtualBox。[1] VirtualBox是一款功能强大的虚拟机软件,它是通过软件模拟而获得具有完整硬件系统功能的、能运行在一个完全隔离环境中的完整计算机系统,这种在物理计算机上模拟出逻辑计算机的方法使得单一的计算机能同时运行多个操作系统,它能提高计算机硬件的利用率,在教育培训、软件开发测试及技术支持等领域都有广泛的应用。[2]
随着计算机技术的迅猛发展,计算机的性能越来越强大,为虚拟机的运行环境奠定了良好的基础,同时虚拟机技术越来越成熟,性能越来越优越,系统越来越稳定。基于Windows平台的虚拟机目前应用较多的是Vmware、Virtaul PC和VirtualBox,基中VirtualBox是一个开源的、跨平台的、免费的虚拟机软件,与Vmware、Virtual PC这些虚拟机软件相比,它的性能更为优异,受到越来越多用户的推崇。
二、在CentOS 5.5上搭建Apache服务器仿真实验平台
Linux作为免费、开源的服务器操作系统目前在市面上的发行版很多,Red Hat Enterprise Linux是目前最成功的商业Linux套件发行商。和大多数Linux发行版一样,红帽企业版是免费的,但是它的服务和支持是收费的。后来,有对其不满者,克隆了Red Hat Enterprise Linux,取名为CentOS,其服务和支持都是免费的。目前很多企业和公司都选择了CentOS作为服务器操作系统。本次仿真实验选取CentOS 5.5作为实验平台。[3]
Web服务现在已经成为Internet上最热门的服务之一,它能够实现信息、资料查询、数据处理等应用,以便于人们快速地完成各种信息交流。架设Web服务是Internet必不可少的一部分,Apache是CentOS操作系统集成的Web服务器,它是目前性能最优秀、最稳定的Web服务器之一。开放源代码的Apache(阿帕奇)服务器起初是由ILLinois大学Urbana-Champaign的国家高级计算程序中心开发,后来Apache被开放源代码团体的成员不断地发展和加强。Apache是世界使用排名第一的Web服务器,它可运行在UNIX、Linux和Windows等多种操作系统平台之上。[4]Apache借助开放源代码开发模式的优势,得到全世界许多程序员的支持,程序员们为Apache编写了能完成许多有用功能的模块,借助这些功能模块,Aapche具有无限扩展功能的优点。Apache的工作性能和稳定性也远远领先于其他同类产品,因此Apache服务器成为Internet上最流行的Web服务器。[5]
三、结束语
利用VirtualBox虚拟机搭建仿真实验平台,不仅解决了实验经费紧张和实验场地不足等问题,更重要的是营造了“自主学习”环境。利用此平台,学生可以运用所学的知识,进行各种虚拟体验,而且还可以开展创新性的实验。通过体验培养学生的学习兴趣,学生的兴趣一旦被激发出来,就会自主地学习,从而加速和巩固学习知识的过程。
参考文献
[1]仲劲.Linux服务器配置与管理[M].北京:北京理工大学出版社,2011.
[2]姚越.Linux网络管理与配置[M].北京:机械工业出版社,2012.
[3]杨明华.Linux系统与网络服务管理技术大全[M].北京:电子工业出版社,2008.
[4]梁如军,丛日权,周涛.CentOS5系统管理[M].北京:电子工业出版社,2008.
当今社会,在我们看到计算机行业的美好就业前景的同时,也看到了计算机专业教育的美好前景。同许多学科的教学过程一样,计算机专业教育也要重视专业基础课程的教学。目前,大多数高校将C语言作为计算机专业的编程基础课程,作者认为将C语言作为高校计算机专业的编程基础课程是必须而必要的,但是,在C语言的教学中,往往因为目的不够明确,理念不够准确,而使我们的C语言教学没有达到应有的效果。因此,在这里提出C语言教学的四个定位问题。
一、教学课程性质的定位
C语言课程性质的定位:C语言是一门计算机专业的编程基础课程。
20世纪70年代,在B语言的基础上设计出了C语言。其中,UNIX操作系统,以及运行这一系统中大部分程序都是用C语言写成的。而被我们广泛使用的微软Windows操作系统的核心代码也是用C语言来编写的。1983年形成了C语言的ANSI(American National Standards Institute)标准,1989年ANSI C被ISO(International Standards Organization,国际标准化组织)所接受,这就是常说的C89标准,C89标准成为C语言的国际标准。而标准化委员会又于1999年再次修订C89,成为了C99标准。从这些事情上,不难想到C语言的重要作用和历史地位。因此C语言的通用性和规范性要普遍强于同时代其它的任何一种编程语言。当今编程语言以C++,C#和JAVA为主流,而他们正是从C语言发展而来。因此,从编程技术的发展过程和编程技术的前后衔接性而言,C语言也是最恰当的。所以,将C语言定位于计算机专业的编程基础课程是最合适的选择。
二、教学目标的定位
C语言作为计算机专业的编程基础课程,在开展C语言教学时,必须对C语言课程的教学目标有明确的定位。
目前,社会IT行业中,C语言实际应用的程度和广度都在大大的缩减,C语言的开发应用能力被他的后继编程语言所取代。C语言的职业应用领域更多的是结合汇编语言在单片机开发中的应用,如AVR单片机C语言开发,这突现在C语言的低端开发能力上。计算机或者单片机低端的开发应用是建立在对硬件相当熟悉的基础之上的,在这种情况下,要求编程基础课程的C语言突出其职业能力培养是不现实的。
因此,C语言课程的教学目标应该定位在计算机编程技术应用理念、编程逻辑思维、实际问题在编程中数学模型抽象能力等方面,即思维方式和模式上的培养认知上。C语言教学的开展不是去追求其职业能力,而是锻造和培养学生的编程思维能力,为后继专业课程的学习打下良好的基础。因为,没有编程思维的理念认识,编程思维模式的转变,计算机专业课程的学习是事倍功半的。
三、教学内容的定位
C语言本身所涉及的开发应用能力是一个很庞大的系统,C语言本身也是一个中级编程语言。C语言在低级方面,它允许在算法逻辑中通过详细的定义,来达到最高的计算机效率;C语言在高级方面,它隐含了计算机的结构细节,提高编程的效率。因此,C语言是介于低级编程语言和高级编程语言之间的中级编程语言。C语言本身也有着丰富而复杂的函数库。所以,在C语言的教学中还应该注意教学内容的筛选。从国内绝大多数面向高校编写的C语言教材来看,C语言的教学主要是侧重在学生运用其高级能力方面,解决数理问题方向,这也充分说明我国计算机专业教育大环境对C语言课程的定位。
在C语言教学中,结合C语言常规教材的特点,对教学内容的定位应当做到既有全局的认识,又要有所侧重;既要注重学生在C语言应用方面能力的培养,更要注重学生通过C语言对编程理念的认知。因为,C语言的教学内容的取舍不再是单纯的为C语言本身而定,更多的是想达到抛砖引玉的效果。
C语言的教学可以分为四个部分:数据类型和运算、逻辑结构、模块化思想、输入输出。
(1)数据类型和运算应该包括:普通变量与类型、指针、数组、结构以及基本的运算,尽管指针、数组、结构是在后期的教学中才涉及,但是它们依然是属于数据类型的范畴,只能说它们是一种特殊的变量。
在普通变量与类型阶段,教学内容的重点应该放在对变量的存储机制和运算机理的认识和概念理解方面。而到了指针和数组方面,就要求学生能够灵活应用变量的存储机制和运算机理。而结构部分是早期编程语言对于实际问题抽象方面最好的数据模型,有助于进一步提高学生的数据抽象能力。
(2)逻辑结构的主要内容是三大结构:顺序,选择,循环。这是所有成熟编程语言的重要逻辑结构模式。在这个部分,侧重于引领学生如何将实际问题的解决思维方式转变为用三大结构来解决的逻辑思维方式。在教学中,单纯的就结构谈语法,会限制学生的眼光,相反,应该就语法谈结构,编程中的逻辑结构才是计算机所有编程语言的理念之一。
(3)模块化思想是指C语言中的函数部分:标准库函数,自定义函数。C语言的函数思想是编程模块化思想的前身。在C语言中,将指定问题的处理过程放到函数里解决,函数的相对独立能力,使函数能够多次或者多处被使用。避免代码重用,提高了执行效率。
函数的应用,模块化的思维模式在编程技术的应用中,为程序的分工协作,或者把一个大问题分成多个小问题来解决提供了最佳的途径。所以在教学中,应当使学生充分认识到编程的模块化思想应用的重要性和必要性。
(4)输入输出即I/O。这里的输入输出既包括控制台的输入和输出(scanf函数和printf函数),也包括文件的输入和输出(fscanf函数和fprintf函数)。在技术上,控制台I/O和文件I/O只有微小的差别,但在概念上,两者是截然不同的范畴。
输入输出的内容能够使学生明确,程序代码的编写过程和运行过程是完全不同的两个过程,编写过程是从程序开发者的立场出发,而运行过程就要从程序使用者的立场出发。输入输出部分的内容是一个强化,强化学生在编程理念上有程序员和用户的立场差别。
四、教学理念的定位
在C语言教学中,教学理念的定位将直接引领教学的开展过程,直接影响教学方法、手段的设计与使用。把握好教学理念,是教学成功开展的捷径。
(1)实例性教学,先应用再理解。
C语言课程同许多计算机专业课程一样,是一门应用型的工具学科,我们这里的应用不指行业应用或者职业需求应用,而是指建立在计算机硬件条件下的软件的运用过程,这些都有一定的标准,典型的说,比如C语言本身的C89,C99标准,对于这些标准的理解,对于计算机初学者而言是非常困难的。在教学中,学生常习惯去追求为什么要这样?这就涉及到C语言本身内在运作机制的理解,很容易造成知难而退。在教学中引入实例性教学模式,目的在于使学生在学习中首先关注的是怎么用,而不是为什么,然后再去关注程序的运行过程,最后理解程序的存储机制和运作原理。在IT行业中,许多程序员也可以证明这一点,对于他们而言,应用是第一位的, 理解是第二位。
所以,在C语言教学中以实例教学方法为主,把握先应用再理解的原则,从而使学生在应用的基础上,再加强对编程的理解。
C语言教学中,新语法新知识的学习过程,通过对同一问题的旧新知识解决过程的对比,突显新知识的优越性,突出新知识的必要性和重要性。我们称之为“实例对比法”。
在知识的展开、强化、复习过程中,通过多个实例的解题过程,关注学习内容的变化过程,在解题过程中,引导学生的思考过程,接受和形成自己的经验,我们称之为“实例经验法”。
经历了一个阶段的学习,在学习内容的总结中,让学生从事一个相对综合的实例的开发过程,在教学中,引导学生对这个综合实例进行功能拆分和模块分析,而这个实例的分析和开发过程,可以让学生独立完成,或者分小组完成。强化学生的综合知识能力,培养学生实际问题的分析解决能力。最后教学中,对综合实例进行分析,探讨,教学相长。我们称之为“综合实例法”。
(2)培养学生的逻辑思维为主,强化源代码为辅
C语言课程作为计算机专业编程的基础学科,教学中把如何引导学生用编程的思维模式去分析问题、解决问题能力的培养放到重中之重,而把学生是否能够写出正确的C语言源代码做客观的分析。如果学生的源代码符合编程逻辑思维模式的要求,解题的逻辑结构准确,仅在C语言语法上有错误,对于这种情况,教学中应当作出肯定。学生在学习中,重视对编程理念的认识,要远比他们重视源代码要重要的多,当然两者兼顾自然最好。同时也要说明,这种观念只适应在编程的基础教育中。
(3)打破常规思维模式习惯,打造良好的编程习惯
计算机专业的编程基础是培养学生的编程逻辑思维模式。对于这种思维模式有别于常规的思维模式。常规上,人们使用的一种思维模式是来自于一般数学的思维模式,而这种一般数学思维模式是“集中型”的,在多个已知条件下,结论是明确的或者是唯一的。而计算机专业的编程中要求的思维模式是“发散型”的,在编程理念中解决实际问题时,要求归纳的是解决问题的方法,处理在各种可能条件下得到结论的过程。简单一点说,使用编程的方法解决实际问题时,对于一个“点”上的问题,往往要在一个“面”上分析,归纳这个“面”上所有点的条件,在程序控制过程中,筛选所满足条件的“点”;在编程中,对这个面的每一点都要妥当的处理,这样写出的程序才不至于漏洞百出。
打造学生良好的编程习惯,比如说:变量名的命名规则,变量声明定义方法、源代码分层次分段书写;把大问题分解成若干个小问题使用函数来解决,即模块化思想。这些小的习惯的运用,对于程序而言,也许并不影响结果,而对于学生而言,也不存在困难的技术问题,但是这些小的习惯的形成,将会直接带来良好的程序风格和可读性,为以后写出高质量的程序代码打下基础。
综上所述,高校计算机专业C语言课程是专业编程的基础课程,教学中弱化其社会实际职业应用能力,强化编程思维理念的培养,明确教学的目的,定位准确的教学理念,使用强化训练的教学手段,为以后后继的专业知识学习构建良好的基础和框架。
参考文献:
《C++ 程序设计教程》 钱能 清华大学出版设
中图分类号:TP309.5 文献标识码:A 文章编号:1007-9599 (2012) 08-0000-02
一、计算机病毒的概念及其特性
计算机病毒是一种人为编制能够对计算机正常程序的执行或数据文件造成破坏,并且能够自我复制的一组指令程序代码。其特点是计算机病毒具有复制性、感染性、潜伏性、触发性和破坏性。这种借助计算机硬件和软件设计的缺陷,让被感染机从中发出程序代码或一组指令来影响或破坏计算机正常工作和数据的行为。也就是通用资料或常规科教类书籍对病毒的定义。
计算机病毒的表现方式:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”(引自——《中华人民共和国信息系统安全保护条例》),可以从中看到自我复制的特性,也就是所谓的传染性是计算机病毒的本质特性。
在本质特性之外,计算机病毒有如下的特征:1.非授权可执行性。计算机病毒是非法程序,它巧妙地隐藏在合法程序或数据的里面,当用户正常使用程序的时候,病毒可以隐瞒用户,强行调用病毒来执行,进行窃取控制权,抢先控制系统。2.隐蔽性。计算机病毒是具有很高编程技巧、短小精悍的程序。由于病毒的非法可存储性,它想方设法隐藏自身。3.传染性。计算机病毒最重要的特征是传染性。计算机病毒如果进入计算机系统就会快速感染磁介质或程序,并且进行大量自我复制然后传播。由于现在的计算机网络发展迅猛,计算机病毒通过网络可以在相当短的时间内传遍全球。4.潜伏性。计算机病毒使用其可以依附在其他媒体的寄生能力,即使是传染上合法的系统和程序后,也不及时发作,他可以悄悄慢慢隐蔽起来在用户不注意的时候开始传染。这种被寄生的媒体我们把它叫做计算机的宿主。病毒的潜伏性越好,它在系统中存在的时间也就越长,病毒传染的范围也越广,其危害性也越大。
除了以上四点外,计算机病毒还具有可触发性和不可预见性等特点。正因为如此,在计算机的维护上,对计算机病毒的检测、防治、病毒清理等工作带来了比较大的困难。
二、计算机病毒的产生
计算机病毒的概念其实很早就出现了。现有记载的最早涉及计算机病毒概念的是计算机之父冯诺伊曼。他在自己的论文中第一次给出了病毒程序的框架。他认为,病毒是一种能够实现自我复制的自动机。这一说法的提出令当时的许多计算机专家都感到惊讶。1987年10月第一例计算机病毒Brain诞生,此后计算机病毒的种类不断增加,并迅速蔓延到全世界,对计算机安全构成了巨大的威胁。计算机反病毒技术也就应运而生,并随着计算机病毒技术的发展而发展,时至今日,计算机发病毒已经变成了一个独立的产业。
三、计算机病毒的分类
广义来讲,计算机病毒分为是良性和恶性两种。良性病毒是指其不包含有立即对计算机系统产生直接破坏作用的代码。这类病毒为了表现其存在,只是不停地进行扩散,并不破坏计算机内的数据。整个计算机系统也由于多种病毒寄生于其中而无法正常工作。另一种是恶性计算机病毒。恶性病毒就是指在其代码中包含有损伤和破坏计算机系统的操作,在其传染或发作时会对系统产生直接的破坏作用。因此这类恶性病毒是很危险的,应当注意防范。常见的计算机病毒我们可以分为以下几种:
(一)系统病毒。如CIH病毒。这些病毒的通常是可以感染windows 操作系统的*.dll和*.exe文件,并通过这些文件进行传播。前缀为:Win32、PE、Win95、W32、W95等。
(二)黑客病毒(指狭义的黑客病毒)。黑客病毒经常同木马病毒成对成双出现,如Trojan.LMir.PSW.60是与网络游戏木马相结合的病毒。各种网络技术是黑客病毒经常利用的途径,而进入用户计算机,有一个可视的界面是其特点,能对用户的电脑进行远程控制。前缀名一般为 Hack。
(三)破坏性程序病毒。如:杀手命令(mand.Killer)、格式化 C 盘(Harm.formatC.f)等。这类病毒通常利用本身具有诱人的图标来引诱用户点击,当用户点击这类病毒时,病毒便会直接对用户计算机产生破坏。前缀是:Harm。
(四)病毒种植程序病毒。如:冰河播种者(Dropper.BingHe2.2C)等。这类病毒的都具有的是运行时会从体内释放出一个或许多新的病毒到系统目录下,由释放出来的新病毒产生破坏。
(五)后门病毒。如IRC后门病毒 Backdoor.IRCBot。该类病毒经常利用系统漏洞,进行网络传播。让系统打开后门给用户电脑带来安全隐患。它往往与其他方式相结合,会出现变种病毒。前缀是:Backdoor。
(六)脚本病毒。如著名的美丽莎病毒、欢乐时光(VBS.Happytime)等。它们共有的特点是使用脚本语言编写,通过网页传播的病毒,如红色代码(Script.Redlof)。脚本病毒还会有如下前缀:VBS、JS(表明是何种脚本编写的),脚本病毒里还有一种特殊病毒———宏病毒,它有相应的特殊性,往往与 Word、Excel 等办公软件相集合,第一前缀是:Macro,第二前缀往往是:Word、Word97、Excel、Excel97 其中之一。前缀是:Script。
(七)蠕虫病毒。如“熊猫烧香”,“尼姆亚”病毒,小邮差(发带毒邮件),冲击波(阻塞网络)等。这种病毒本身有一套程序,它能通过网络漏洞传播,自身有拷贝功能或自身的某些部分进入到计算机系统中。大多数的蠕虫病毒都有向外发送带毒邮件,阻塞网络的特性。前缀是:Worm。
(八)玩笑病毒。也称恶作剧病毒。如:女鬼(Joke.Girlghost)病毒。这类病毒的往往是本身具有好看的图标来诱惑用户点击,其实病毒并没有对用户的电脑进行任何破坏。前缀是:Joke。
(九)捆绑机病毒。如:捆绑QQ(Binder.QQPass.QQBin)等。这类病毒的经常利用特定的捆绑程序与一些应用程序如IE或 QQ相捆绑,貌似文件很正常,当用户使用这些应用程序,就会运行捆绑在一起的隐藏病毒,从而给用户造成危害。前缀是:Binder。
(十)木马病毒。如Trojan.QQ3344, QQ消息尾巴木马。它主要通过系统漏洞或者网络进入用户的系统并隐藏,形成以服务端和客户端相结合的方式,向外面传播用户的信息。木马病毒还可细分为类木马、下载类木马、网页点击类木马、即时通讯软件木马、网银木马、网络游戏木马等。前缀是:Trojan。
四、防治计算机病毒
计算机病毒传播一般的渠道通常有以下几种:1.通过网络方式。随着互联网的风靡,这种传染扩散能力极快,可在极短的时间内传遍网络上的计算机。是传播病毒的一种新途径。2.通过光盘方式。因为光盘容量比较大,存储了很多的可执行文件,大量的病毒就有可能藏身于可执行文件中。只读式光盘,因不能进行写操作,所以光盘上的病毒无法清除。3.通过硬盘的方式。硬盘传染病毒也是重要的渠道,由于带有病毒机器的硬盘移到其它计算机上维修或使用等,将干净的计算机传染并再扩散。4.通过软盘。通过使用外界被感染的软盘,软盘价格便宜数量巨大,方便交换,不经意感染病毒的软盘就成了泛滥蔓延的温床。
针对病毒的传播方式和传播途径可以有效的进行病毒的防治:1.在思想上重视。加强管理,止病毒的入侵。凡是从外来的软盘往机器中拷信息,都应该先对软盘进行查毒,若有病毒必须清除,这样可以保证计算机不被新的病毒传染。此外,由于病毒具有潜伏性,可能机器中还隐蔽着某些旧病毒,一旦时机成熟还将发作,所以,要经常对磁盘进行检查,若发现病毒就及时杀除。思想重视是基础,采取有效的查毒与消毒方法是技术保证。2.养成良好的操作习惯。计算机病毒无处不再,可能在我们不经意间就将病毒进行了传播,所以养成良好的计算机操作习惯很关键。如不要随意双击来历不明的文件,扩展名决定了文件的性质和应该用什么软件来打开它。计算机打开一个文件必须先启动某个软件,然后用一定步骤打开这个文件。如果“双击”的是可执行文件,则操作系统会直接启动该文件,用户的操作启动了病毒。也不要随意双击来历不明的U盘,如果双击的是U盘或者光盘,双击将执行该盘Autorun.inf文件制定的一个可执行文件。在默认情况下,当你插入U盘或光盘时,autorun.inf文件也被自动打开,并依次执行文件里规定的调用。简单地说:双击或插入一个U盘或光盘时,如果根目录下有autorun.inf文件,则将导致两个文件活动起来,一个可执行文件被启动和一个特定文件被打开。如果被双击的文件是病毒,则病毒将被激活。良好的操作习惯,将大大减少你计算机系统中毒的机会。另外,下载时千万要小心,下载文件最好去官网、安全性高或知名度大的网站下载。不要下载莫名其妙的文件或软件。因为这些是病毒最重要的藏身之地。浏览网页时,陌生的网站不要轻易点击,有可能不安全。潜入了恶意代码的这些网站,一旦用户点击或打开其页面时,即会被植入相应的病毒。如果有新的系统补丁,应该及时更新,使用正版的杀毒软件并经常杀毒,平时多阅读和接触一些病毒知识,预防与消除病毒是一项长期的工作任务,不是一劳永逸的,应坚持不懈。
参考文献:
[1]袁鲁豫.计算机病毒及防范[J].安徽纺织职业技术学院学报,2003
[2]楚淑敏.计算机病毒防治[J].电脑知识与技术,2006
[3]郭磊.网络时代计算机病毒的特点及其防范措施[J].电脑知识与技术(学术交流),2007
C/T=0时,选择定时功能。
T0、T1 的计数、定时功能是通过TMOD中的位来选择的。
3、 M1、M0——工作方式选择位。
由于有M1和M0两位,可以有四种工作方式,如下表所示。
定时器/计数器的工作方式
M1
M0
工作方式
计数器配置
方式0
13位计数器
1
方式1
16位计数器
1
方式2
自动重载的8位计数器
1
1
方式3
T0分为两个8位计数器,T1停止计数
3 串行数据通信程序设计
3.1 通信协议
本系统串行通信采用异步通信方式。协议如下:
1.一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成。
2.波特率设为9600bps。单片机串行口按方式1工作,波特率由定时器T1控制,PC机串口波特率通过VB通讯控件的Settings属性设置,为保证数据传送的准确性,两者的波特率必须一致。
本次通讯中,我们以一个测控系统的上位机和下位机之间的通信为背景,给出单片机部分和VB 环境下的通信程序实例,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用异步串行通信方式,通过RS232 的RTS 信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
3.2 下位机(单片机)串行通信及程序设计
平台介绍及编程方法
汇编语言
汇编语言是针对一类(甚至几类)计算机,抽象出来的一种符号语言并把这些符号加以统一规定,使得使用同类计算机的人都了解这些符号的意义,这样,使得用汇编语言编写的程序可以在这一类型的任何一台计算机上使用。这就有了极大的灵活性,当然不同类型的计算机的汇编语言也不同。它们都必须由生产厂家提供的汇编语言来编写。另外.汇编语言还增加了宏指令的功能。汇编语言是计算机卫程控制中最常用的语言。
汇编语言的主要优点就是可以直接控制计算机硬件,可以编写在时间和空间两方面更有效的程序。这些优点使得汇编语言在程序设计中占有重要的地位。是不可取代的。
但汇编语言的缺点也是明显的,它与处理器密切相关,要求程序员熟悉计算机硬件系统,考虑许多细节问题,所以程序繁琐,调试、维护、交流和移植困难。因此,有时可以采用高级语言和汇编语言混合编程的方怯,互相取长补短,更好地解决实际间题。
汇编语言生要应用场合有以下几种:
l)程序要具有较短的运行时问,或者只能占用较小的存储客量。例如操作系统的核心 程序段,实时控制系统的软件等。
2)程序与计算机硬件密切相关,程序要直接控制硬件。例如to接口电路的初始化程序段,外部设备的底层驱动程序等。
3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动态链接库等。
4)没有适合的高级语言的时候。例如开发最新的处理器程序时。
伟福软件介绍:
伟福系列仿真器伟福仿真品种多、功能强,特点如下:
1)主机+POD组合,通过更换POD,可以对各种CPU进行仿真。
2) 双平台:DOS版本,WINDOWS版本。其中WINDOWS版本功能强大。
3) 双工作模式:a.软件模拟仿真(不要仿真器也能模拟仿真)。 硬件仿真。
4) 双CPU结构,100% 不占用户资源。
5) 双集成环境:编辑、编译、下载、调试全部集中在一个环境下。多种仿真器,多类CPU仿真全部集成在一个环境下。可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。
6) 强大的逻辑分析仪综合调试功能:随着科学技术的发展,单片机通讯方面的运用越来越多。有了逻辑仪,用它可以分别或者同时对发送方、接收方的输入或者输出波形进行记录、存储、对比、测量等各种直观的分析,可以将实际输出通讯报文的波形与源程序相比较,可立即发现问题所在。从而极大地方便了调试。
7) 强大的追踪器功能:追踪功能以总线周期为单位,实时记录仿真过程中CPU发生的总线事件,其触发条件方式同逻辑分析仪。追踪窗口在仿真停止时可收集显示追踪的CPU指令记忆信息,可以以总线反汇编码模式、源程序模式对应显示追踪结果。屏幕窗口显示波形图最多追踪记忆指令32K并通过仿真器的断点、单步、全速运行或各种条件组合断点来完成追踪功能。总线跟踪可以跟踪程序的运行轨迹。可以统计软件运行时间。
编程方法
本系统中传输协议为9600,8,N,1,即波特率为9600b/s,传送8个数据位。没有校验位,一个停止位。在PC机中也设置为相同的协议。1)控制寄存器SCON的设置为:SM0、SM1为0、1,即为串行工作方式1,REN为1,即允许接收。这样SCON中的值是0X50H,(使用汇编语言是MOV SCON,#50H。)2)TMOD寄存器的设置为:使用定时器1。M0=0,M1=1,工作于方式2,自动重新载入计数值。TMOD=0X20H。(使用汇编语言是MOV TMOD,#20H)3) 波特率的设置:本系统上的工作时钟为11.0592MHz, 波特率为9600b/s,对TH1的重载入计数器值由下式计算可得:TH1=256-11059200/384*9600=253=FDH TH1=0XFDH(使用汇编语言是MOV TH1,#0FDH)。
流程图如右:
接收程序:
MAIN: MOV
TMOD,#20H ;
MOV
TH1,#0FDH;
MOV
TL1,#0FDH;
SETB TR1;
MOV
SCON,#50H;
LOOP: JBC
RI,DISP
SJMP
LOOP
DISP: MOV
A,SBUF
MOV
DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
SJMP LOOP
TAB: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
发送程序:
ORG 0000H
START: MOV
TMOD,#20H;
MOV
TL1,#0FDH
MOV
TH1,#0FDH;
SETB
TR1
MOV
SCON,#40H
MOV
R0,#20H
MOV
R7,#32
MOV
A,#40
LOOP1:
MOV
@R0,A
INC
A
INC
R0
DJNZ
R7,LOOP1
MOV
R0,#20H
MOV
R7,#32
LOOP:
MOV
A,@R0
ACALL YANSHI
ACALL SPOUT
INC
R0
DJNZ
R7,LOOP
SJMP
START
SPOUT:
MOV
SBUF,A
JNB
TI,$
CLR
TI
RET
YANSHI: MOV
R6,#250
D1:
MOV
R5,#250
DJNZ
R5,$
DJNZ
R6,D1
RET
END
3.3上位机(PC机)串行通信及程序设计
3.3.1 平台介绍及编程方法
VB语言简介
在本系统中PC机采用Visual Basic(简称VB)编程。VB已成为WINDOWS系统开发的主要语言,以其高效、简单易学及功能强大的特点越来越为广大程序设计人员及用户所青睐。VB支持面向对象的程序设计,具有结构化的事件驱动编程模式并可以使用无限扩增的控件,而且可以十分简便地作出良好的人机界面。
用VB6.0开发串行通信程序有两种法,一种是利用Windows的API函数;另一种是采用VB6.0的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的低层次通信程序。而VB6.0的MSComm通信控件提供了标准的事件处理函数、事件、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题。该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置。这是一个标准的十位串口通信,包括8位标准数据和数据的起始位和停止位。在发送或接收数据过程中触发OnComm事件,通过编程访问 CommEvent属性了解通信事件的类型,分别进行各自的处理。每个通信控件对应一个串口,可以设计多个通信控件来访问多个通信口。
转贴于 PC机程序设计流程图如下示
3.3.2 VB6.0的通信控件及通信方式
MSComm通讯控件简介
MSComm是VB6.0提供的ActiveX控件,使用前需将该控件添加到VB工具 栏。MSComm控件串口具有完善的串口数据的发送和接收功能。通过此控件,PC机可以利用串行口与其它设备实现轻松连接,简单高效地实现设备之间的通讯。此控件的事件响应有两种处理方式,事件驱动方式:由MSComm控件的OnComm事件捕获并处理通讯错误及事件;查询方式:通过检查CommEvent属性的值来判断事件和错误。
1)MSComm控件的主要属性和方法
a.
CommPort:设置或返回串行端口号,其取值范围为1—99,缺省为1
b.
Setting: 设置或返回串行端口的波特率、奇偶校验位、数据位数、停位。如:MSComm.Setting="9600, n, 8, 1”。
c.
PortOpen:打开或关闭串行端口。
d.
RThreshold:该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生MSComml--OnComm事件。
e.
Input:从接收缓冲区移走一串字符。
f.
Output:向发送缓冲区传送一字符串。
2)CommEvent属性 :
如果在通讯过程中发生错误或事件,就会引发OnComm事件并由CommEvent 属性代码反映错误类型,可根据该属性值来执行不同的程序操作或数据处理。以下是部分属性常数值及其含义:
a.
ComEvSend:其值为1,发送缓冲区的内容少于SThreshold指定的值。
b.
ComEvReceive:其值为2,接收缓冲区内字符数达到RThreshold值,该事件在缓冲区中数据被移走前将持续产生。
c.
ComEventRxParity:其值为1009,奇偶校验。
d.
ComEvEOF:其值为7,接收数据中出现文件结束字符。
本系统采用事件驱动方式进行串口通信设计,下图2为上位机通信界面,设计了2个命令按扭,分别为发送、清空数据;两个文本框,Text1用于输入需从下位机读取的数,Text2用于显示下位机发送来的数据;3个Frame控件,一个Label控件,当然还需要一个MSComm控件。
MSComm控件属性设置如图1示:
(图2)
下面是MSComm控件的初始化程序、部分数据发送和接受程序
4调试与结论
该系统目前已调试成功,完成了PC机与51单片机之间的串行通信。并且实现了下列功能:1)在VB界面上发送任一数字在51单片机的数码管上都能成功的接收 2)同样通过向51单片机内写入的程序,在VB界面上可以接收到相对应的内容且运行良好。
调试过程如下:
硬件方面:
该系统的硬件调试主要是排查单片机印刷电路板的问题和连接上的一些问题。在该系统中,首先通过了仔细地推敲系统原理,确认无误;其次对照设计图纸查印制电路板,看是否有粘接等工艺现象;最后,检查外围连接是否有误,通过这几个方面的反复调试,可确保电路板的无误性。
在本系统的硬件调试过程中,出现了下列两种情况
1)电压不稳定而导致程序无法写入的情况,使电压稳定的方法是改用新的电池,或者是再次设计电源方案,在这里是用电源接通教学实验板,然后再把教学实验板与本系统相
连接,这样,就可以得到稳定的电压了。
2)还出现的一个问题是数码管不显示,检查后是焊接上出现了一点的失误。
软件方面:
本系统在软件调试方面也没有规律可循,调试时更多的是凭经验。软件调试的主要任务是排查错误。通过在Wave E2000编译器下调试程序,有两种错误,一种逻辑错误,也就是语法错误,是很容易被发现的,另一种是功能错误,是指在没有语法错误的基础上,由于设计思想或算法的问题导致不能实现软件功能的一种错误。调试过程中出现的问题主要有以下四个方面:
1)用其它串口调试软件能够很好的实现两者之间的串行通信,成功的接收和发送数据,但使用我们的VB程序却不能实现,要么只能实现接收功能,要么只能实现发送功能。之后通过对VB程序做多次的改动与测试才达到理想的结果。
2)在VB界面上发送的数据与单片机的数码管上显示的数字不相符,这个问题是我们汇编程序的问题,由于汇编语言符号的繁多加上我们的粗心在输入代码的过程中难免出现一些看不见的问题,造成调试过程中出现意外。借此我想提醒大家的是搞设计搞研究必须做到细心,要有一颗敬业的心对待我们接受的任务,有耐心面临出现的困难。
3)由于要实现上下位机的串行通信,所以两者之间的波特率是否一致也是一个不容忽视的问题,在开始我并没有太注意这个方面的情况,到各方面的准备工作都做好要进行调试的时候,才发现有个二者波特率设置是否相同将影响到整个通信过程,我赶紧作了修改才免遭一次调试失败。
4)还有最后一点注意的地方是,利用MSComm控件比较方便地开发串行通信程序,实现串行通讯原理已经得到实验结果验证,考虑到将来对系统实时性的要求,采用了MSComm控件的查询处理机制,避免了中断处理机制的不稳定和不连续性,而且还可以很方便地控制多个串口,只需插入多个MSComm控件,并为每个MSComm控件编写OnComm()函数。但是我们也清楚的体会到MSComm控件在VB中的使用较为复杂。这一点是我们以后在运用中需要加强的地方。
伴随着单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。希望通过大家的共同努力能在PC机与单片机这方面取得新的成绩有突出的表现,能够很好的将学到知识运用到实际生活中,比如上面提到的利用单片机实现对温度的实时检测与控制已经得到广泛的应用。另外我们还可以在单片机的接口上再加接显示器,这样就更能方便的对系统进行操作与控制。
通过这次毕业设计,我深刻体会到专业知识、专业技能分析和解决问题的能力在实际生活中是多么的重要,在完成设计任务的同时我这些方面的能力有了一个全面的提高和锻炼。具体表现在对单片机与PC机的串行通信的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(汇编语言与VB)的掌握方面都向前迈了一大步,为日后使我能成为合格的应用型人才打下了良好的基础。
采用本系统实现PC机与单片机串行通信与一般其它系统的比较:一般的PC机与单片机之间的串行通信,需要单片机采集数据,然后用异步串行通讯方式传给PC机。相对而言通讯速率不是很理想,在一些要求通讯传输速率比较快的地方,普通的PC机与单片机之间的串行通信显然是不能满足其要求的。利用VB6.0 的事件驱动方式可以很方便地开发数据采集与监控系统,用单台PC 机可以测量和监控多路控制信号,整控制系统设计方便,对小型测控系统的设计具有很大的实用性。且传输数据的速率要比普通的串行通信要快些。
对于目前广泛应用的Windows环境下实现PC机与单片机之间的通信问题,希望大家能提出宝贵的意见。
参考文献
[1]蔡美琴等.MCS-51系列单片机系统及其应用(第二版).高等教育出版社,2004.
[2]杨毓,李明.Visual Basic6.0实用开发教程[M].成都:电子科技大学出版社,2001.
[3]刘新民,蔡琼等.VB6.0程序设计.北京:清华大学大学出版社,2004.
[4]李华.单片机通用接口技术[M].北京:北京航空航天大学出版社,1999
[5]魏庆福,姚亦鸣,等STD总线工业控制机的设计与应用[M].北京:科学出版社,1992
[6]何立民,单片机应用系统设计.北京:航空航天大学出版社,1992
[7]美Jan Axelson 著,串行端口大全,精英科技译,2001.5四
[8]刘瑞新等. Visual Basic程序设计教程,北京:机械工业出版社, 2002
一般的PC与单片机之间的串行通信,需要单片机采集数据,然后用异步串行通讯方式传给PC机。相对而言比较的烦琐,而本文着重用VB具有面向对象的设计方法,友好的用户来探讨在VB环境下来实现PC机与51单片机之间串行通讯的方法。实现起来要简捷方便。
随着计算机系统的应用和微机网络的发展,各种控制设备之间的通信功能越来越显得重要。尤其是伴随着单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。在本系统中,下位机采用一片AT89S51单片机,用于对发送的数据实施控制,为了实现对输入数据的接收,上位机采用便携式PC机,上、下位机之间通过MAX232芯片实现串行数据通信。PC 机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC 机的RS-232 串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。
本文将论述在VB 环境下PC 机与单片机之间实现串行通讯的软硬件方案。实现单片机与 PC 机的相互通信。单片机部分由汇编语言实现,PC 机的通讯程序使用Visual Basic 编写,VB 是Microsoft 公司推出的Windows 应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且Visual Basic 6.0 版本带有专门实现串行通讯的MSCOMM 控件。因此如何实现PC 机与单片机之间的通讯具有非常重要的现实意义。
利用VB6.0 的事件驱动方式可以很方便地开发数据采集与监控系统,用单台PC 机可以测量和监控多路控制信号,整控制系统设计方便,对小型测控系统的设计具有很大的实用性。
1.2 设计实现的功能
实现单片机与 PC 机的相互通信。具体要求有以下两点:
①单片机发固定编好的代码,在用 VB 编好的界面上接收;
②在 VB 编好的界面上发送数字,在单片机板上的数码管上显示出来。
2 硬件设计方案
为了实现PC机与单片机之间的串行通信,我们首先要清楚了解整个系统所采用的原理图。原理图就象一根红线贯穿于整个系统设计,通过此图我们就能很清楚的看到系统所涉及的内容,然后鉴于此,我们将在以后的章节中依次对所牵涉的内容作详细的论述。下面对原理图作一点说明:从MAX232芯片中的两路发送接收中任选一路作为接口,要注意其发送与接收引脚对应,否则可能对器件或计算机串口造成永久性损坏。如选他T1IN接单片机的发送端TXD,则PC机、的RS—232的接收端RD一定要对应接T1OUT引脚。同时,R1OUT接单片机的接受端RXD引脚,则PC机的RS—232的发送端TD一定要对应接R1IN引脚。
上图为采用MAX232芯片接口的PC机与51单片机串行通信接口原理图
2.1 AT89S51单片机
2.1.1 AT89S51单片机简介
AT89S51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器, 128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
2.1.2 AT89S51单片机的功能
AT89S51主要功能列举如下:
1)为一般控制应用的8位单芯片
2)晶片内部具有时钟振荡器
3)内部程式存储器(ROM)为 4KB 4)内部数据存储器(RAM)为 128B
5)外部程序存储器可扩充至 64KB
6)外部数据存储器可扩充至 64KB
7)32 条双向输入输出线,且每条均可以单独做 I/O 的控制
8)5个中断向量源
9)2组独立的 16 位定时器
10)1个全多工串行通信端口
11)8751 及 8752 单芯片具有数据保密的功能
12)单芯片提供位逻辑运算指令
2.1.3 AT89S51各引脚功能介绍:
VCC:AT89S51 电源正端输入,接+5V。
VSS:电源地端。
XTAL1:单芯片系统时钟的反相放大器输入端。
XTAL2:系统时钟的反相放大器输出端。
RESET:AT89S51的重置引脚,高电平动作。
EA/Vpp:存取外部程序代码,低电平动作。
ALE/PROG:地址锁存器启用信号。
PSEN:程序储存启用,通常这支脚是接到EPROM的OE脚。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当作I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当作一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当作I/O来使用了。
PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。
PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。
P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。
本系统所采用的AT89S51芯片如下图所示:
2.1.4 AT89S51 ISP
ISP为在线编程接口。ISP在线编程接口为89S51单片机提供了方便的在线编程方法,使用时将ISP下载线一端与PC并口相连接,一端与ISP接口相连,使用ISP下载软件即可实现MCU在线编程。
下载线插接说明:两排十针下载口,板图上都有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引角,这一点一定要切记,不然的话程序下载不进去。
本系统中所用AT89S51 ISP原理图如下示:
AT89S51 ISP
2.2串行通讯
2.2.1串行通讯的概念
串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。
串行通讯的特点是:数据位传送,传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。
分类:根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
2.2.2 RS-232C 串口通讯原理
RS-232C是目前最常用的串行接口标准,用来实现计算机与计算机之间,计算机与外设之间的数据通信。
RS-232C串行接口总线适用于设备之间的通信距离不大于15米,传输速率最高为19.2kb/s的场合。RS-232C标准规定的数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、和19200b/s。RS-232C属单端信号传送,存在共地噪声和不能抑制的共模干扰等问题,因此一般用于短距离通信。
1) RS-232C接口信号
一个完整的RS-232C接口有22根线,采用标准的25芯连接器。
2) RS-232C 典型应用
用RS-232C总线连接系统时,有近程通信方式和远程通信方式之分。近程通信是指传输距离小于15米的通信,这时可以用RS-232C电缆直接连接。15米以上的长距离通信,需要采用调制解调器。
下图a)是计算机与终端之间利用RS-232C直接通信的最常用的交叉连线图。图中“发送数据”与“接收数据”是交叉相连的,使得两台设备都能正确地发送和接收。“数据终端变绪”与“数据装置就绪”两根线也是交叉相连的,使得两设备都能检测出对方是否已经准备好。
在最简单的全双工系统中,公用发送数据、接收数据和信号地三根即可。对MCS-51单片机来说,利用RXD(串行数据接收端)线、TXD(串行数据发送端)线以及一根地线,就可以构成符合RS-232C接口标准的全双工串行通信口。(见图b)
(a)直接连接
(b)最简单的RS-232C数据通信连接
3) RS-232C接口电平转换
RS-232C是早期为促进公用电话网络进行数据通信而制定的标准,其逻辑电平对地是对称的,完全与TTL、CMOS逻辑电平不同。
RS-232C采用负逻辑,即:
逻辑1:-5V~-15V。 逻辑0:+5V~+15V。
由于MCS-51采用TTL电平,若用RS-232C标准接口通信必须进行电平转换。目前RS-232C与TTL电平转换最常用的集成电路芯片是传输线驱动器MC1488传输线接收器MC1489。其内部结构和引脚如下图(c)所示。
MC1488可完成TTL电平到RS-232C的电平转换,输入为TTL电平,输出为RS-232C电平。其内部有3个与非门和1个反相器。采用±12V或±15V电源供电。
MC1489可完成由RS-232C到TTL电平转换,输入为RS-232C电平,输出为TTL电平。其内部有4个反相器,采用+5V电源供电。MC1489中每个反相器都有一个控制端,高电平有效,可作为RS-232C操作的控制端。图(d)给出了RS-232C接口电路原理图。
(c)RS-232C电平转换芯片MC1488和MC1489
(d) RS-232C接口电路
MAX232芯片
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。它的内部结构基本可分三个部分;
第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分就是供电。15脚DNG、16脚VCC(+5v)。
2.2.3 串行接口
控制串行接口的寄存器有两个,即特殊功能寄存器PCON和SCON。
1)PCON中的波特率选择位
PCON是一个特殊功能寄存器(如下图所示),没有位寻址功能,字节地址为87H。其中D7位(SMOD)为波特率选择位。其他位均无意义。复位时的SMOD值为0。可用MOV PCON。#80H或MOV 87H,#80H指令使该位置1。当SMOD=1时,在串行接口方式1、2或3情况下,波特率提高一倍。
D7 D0
PCON
SMOD
波特率选择位 | 无定义位 |
2)串行接口控制寄存器 SCON
特殊功能寄存器SCON用于定义串行接口的操作方式和控制它的某些功能。其字节地址为98H。寄存器中各位内容如下:
SCON
位 D7 D6 D5 D4 D3 D2 D1 D0
位地址
9F
9E
9D
9C
9B
9A
99
98
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0,SM1 串行接口操作方式选择位。两个选择位对应于四种状态,所以串行接口能以四种方式工作。
SM2 允许方式2和3的多机通信使能位。
REN 允许串行接收位。由软件置位或清0,使允许接收或禁止接收。
TB8 是在方式2和3中要发送的第9位数据可按需要由软件置位或复位
RB8 是方式2和3中已接收到的第9位数据。
TI 发送中断标志。
RI 接收中断标志。
串行接口工作方式
串行接口的操作方式由SM0、SM1定义,编码和功能如下表所示
串行接口方式选择
SM0 SM0
方式
功能说明
波特率
0 0
移位寄存器方式
Fosc/12
0 1
1
8位UART
可变
1 0
2
9位UART
Fosc/64或fosc/32
1 1
3
9位UART
可变
2.2.4 TMOD介绍
定时器/计数器T0、T1 的方式寄存器TMOD
字节地址为89H。TMOD的格式如下:低4位用来定义T0,高4位用来定义T1D7
D7 D6 D5 D4 D3 D2 D1 D0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
| T1 | T0 |
各位的意义如下:
1、 GATE——门控位。
GATE=1时,由外部中断引脚、和TR0、TR1共同来启动定时器。当引脚为高电平时,TR0置位启动定时器T0;当引脚为高电平时,TR1置位,启动定时T1。
GATE=0时,仅由TR0和TR1置位来启动定时器T0和T1。
2、 C/T——功能选择位。
C/T=1时,选择计数功能;
C/T=0时,选择定时功能。
T0、T1 的计数、定时功能是通过TMOD中的位来选择的。
3、 M1、M0——工作方式选择位。
由于有M1和M0两位,可以有四种工作方式,如下表所示。
定时器/计数器的工作方式
M1 M0
工作方式
计数器配置
0 0
方式0
13位计数器
0 1
方式1
16位计数器
1 0
方式2
自动重载的8位计数器
1 1
方式3
T0分为两个8位计数器,T1停止计数
3 串行数据通信程序设计
3.1 通信协议
本系统串行通信采用异步通信方式。协议如下:
1.一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成。
2.波特率设为9600bps。单片机串行口按方式1工作,波特率由定时器T1控制,PC机串口波特率通过VB通讯控件的Settings属性设置,为保证数据传送的准确性,两者的波特率必须一致。
本次通讯中,我们以一个测控系统的上位机和下位机之间的通信为背景,给出单片机部分和VB 环境下的通信程序实例,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用异步串行通信方式,通过RS232 的RTS 信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
3.2 下位机(单片机)串行通信及程序设计
平台介绍及编程方法
汇编语言
汇编语言是针对一类(甚至几类)计算机,抽象出来的一种符号语言并把这些符号加以统一规定,使得使用同类计算机的人都了解这些符号的意义,这样,使得用汇编语言编写的程序可以在这一类型的任何一台计算机上使用。这就有了极大的灵活性,当然不同类型的计算机的汇编语言也不同。它们都必须由生产厂家提供的汇编语言来编写。另外.汇编语言还增加了宏指令的功能。汇编语言是计算机卫程控制中最常用的语言。
汇编语言的主要优点就是可以直接控制计算机硬件,可以编写在时间和空间两方面更有效的程序。这些优点使得汇编语言在程序设计中占有重要的地位。是不可取代的。
但汇编语言的缺点也是明显的,它与处理器密切相关,要求程序员熟悉计算机硬件系统,考虑许多细节问题,所以程序繁琐,调试、维护、交流和移植困难。因此,有时可以采用高级语言和汇编语言混合编程的方怯,互相取长补短,更好地解决实际间题。
汇编语言生要应用场合有以下几种:
l)程序要具有较短的运行时问,或者只能占用较小的存储客量。例如操作系统的核心 程序段,实时控制系统的软件等。
2)程序与计算机硬件密切相关,程序要直接控制硬件。例如to接口电路的初始化程序段,外部设备的底层驱动程序等。
3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动态链接库等。
4)没有适合的高级语言的时候。例如开发最新的处理器程序时。
伟福软件介绍:
伟福系列仿真器伟福仿真品种多、功能强,特点如下:
1)主机+POD组合,通过更换POD,可以对各种CPU进行仿真。
2) 双平台:DOS版本,WINDOWS版本。其中WINDOWS版本功能强大。
3) 双工作模式:a.软件模拟仿真(不要仿真器也能模拟仿真)。 硬件仿真。
4) 双CPU结构,100% 不占用户资源。
5) 双集成环境:编辑、编译、下载、调试全部集中在一个环境下。多种仿真器,多类CPU仿真全部集成在一个环境下。可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。
6) 强大的逻辑分析仪综合调试功能:随着科学技术的发展,单片机通讯方面的运用越来越多。有了逻辑仪,用它可以分别或者同时对发送方、接收方的输入或者输出波形进行记录、存储、对比、测量等各种直观的分析,可以将实际输出通讯报文的波形与源程序相比较,可立即发现问题所在。从而极大地方便了调试。
7) 强大的追踪器功能:追踪功能以总线周期为单位,实时记录仿真过程中CPU发生的总线事件,其触发条件方式同逻辑分析仪。追踪窗口在仿真停止时可收集显示追踪的CPU指令记忆信息,可以以总线反汇编码模式、源程序模式对应显示追踪结果。屏幕窗口显示波形图最多追踪记忆指令32K并通过仿真器的断点、单步、全速运行或各种条件组合断点来完成追踪功能。总线跟踪可以跟踪程序的运行轨迹。可以统计软件运行时间。
编程方法
本系统中传输协议为9600,8,N,1,即波特率为9600b/s,传送8个数据位。没有校验位,一个停止位。在PC机中也设置为相同的协议。1)控制寄存器SCON的设置为:SM0、SM1为0、1,即为串行工作方式1,REN为1,即允许接收。这样SCON中的值是0X50H,(使用汇编语言是MOV SCON,#50H。)2)TMOD寄存器的设置为:使用定时器1。M0=0,M1=1,工作于方式2,自动重新载入计数值。TMOD=0X20H。(使用汇编语言是MOV TMOD,#20H)3) 波特率的设置:本系统上的工作时钟为11.0592MHz, 波特率为9600b/s,对TH1的重载入计数器值由下式计算可得:TH1=256-11059200/384*9600=253=FDH TH1=0XFDH(使用汇编语言是MOV TH1,#0FDH)。
串口初始化
流程图如右:
根据以上设置汇编语言编写串行端口的初始化程序:
接收程序:
发送数据
MAIN: MOV TMOD,#20H ;
MOV TH1,#0FDH;
MOV TL1,#0FDH;
SETB TR1;
MOV SCON,#50H;
LOOP: JBC RI,DISP
SJMP LOOP
DISP: MOV A,SBUF
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
SJMP LOOP
TAB: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
发送程序:
ORG 0000H
START: MOV TMOD,#20H;
MOV TL1,#0FDH
MOV TH1,#0FDH;
SETB TR1
MOV SCON,#40H
MOV R0,#20H
MOV R7,#32
MOV A,#40
LOOP1:
MOV @R0,A
INC A
INC R0
DJNZ R7,LOOP1
MOV R0,#20H
MOV R7,#32
LOOP: MOV A,@R0
ACALL YANSHI
ACALL SPOUT
INC R0
DJNZ R7,LOOP
SJMP START
SPOUT:
MOV SBUF,A
JNB TI,$
CLR TI
RET
YANSHI: MOV R6,#250
D1: MOV R5,#250
DJNZ R5,$
DJNZ R6,D1
RET
END
3.3上位机(PC机)串行通信及程序设计
3.3.1 平台介绍及编程方法
VB语言简介
在本系统中PC机采用Visual Basic(简称VB)编程。VB已成为WINDOWS系统开发的主要语言,以其高效、简单易学及功能强大的特点越来越为广大程序设计人员及用户所青睐。VB支持面向对象的程序设计,具有结构化的事件驱动编程模式并可以使用无限扩增的控件,而且可以十分简便地作出良好的人机界面。
用VB6.0开发串行通信程序有两种法,一种是利用Windows的API函数;另一种是采用VB6.0的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的低层次通信程序。而VB6.0的MSComm通信控件提供了标准的事件处理函数、事件、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题。该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置。这是一个标准的十位串口通信,包括8位标准数据和数据的起始位和停止位。在发送或接收数据过程中触发OnComm事件,通过编程访问 CommEvent属性了解通信事件的类型,分别进行各自的处理。每个通信控件对应一个串口,可以设计多个通信控件来访问多个通信口。
PC机程序设计流程图如下示
数据正确
NO
YES
校验数据
校验正确
NO
清标志位
YES
置标志位
返回信息
3.3.2 VB6.0的通信控件及通信方式
MSComm通讯控件简介
MSComm是VB6.0提供的ActiveX控件,使用前需将该控件添加到VB工具 栏。MSComm控件串口具有完善的串口数据的发送和接收功能。通过此控件,PC机可以利用串行口与其它设备实现轻松连接,简单高效地实现设备之间的通讯。此控件的事件响应有两种处理方式,事件驱动方式:由MSComm控件的OnComm事件捕获并处理通讯错误及事件;查询方式:通过检查CommEvent属性的值来判断事件和错误。
1)MSComm控件的主要属性和方法
a. CommPort:设置或返回串行端口号,其取值范围为1—99,缺省为1
b. Setting: 设置或返回串行端口的波特率、奇偶校验位、数据位数、停位。如:MSComm.Setting="9600, n, 8, 1”。
c. PortOpen:打开或关闭串行端口。
d. RThreshold:该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生MSComml--OnComm事件。
e. Input:从接收缓冲区移走一串字符。
f. Output:向发送缓冲区传送一字符串。
2)CommEvent属性 :
如果在通讯过程中发生错误或事件,就会引发OnComm事件并由CommEvent 属性代码反映错误类型,可根据该属性值来执行不同的程序操作或数据处理。以下是部分属性常数值及其含义:
a. ComEvSend:其值为1,发送缓冲区的内容少于SThreshold指定的值。
b. ComEvReceive:其值为2,接收缓冲区内字符数达到RThreshold值,该事件在缓冲区中数据被移走前将持续产生。
c. ComEventRxParity:其值为1009,奇偶校验。
d. ComEvEOF:其值为7,接收数据中出现文件结束字符。
本系统采用事件驱动方式进行串口通信设计,下图2为上位机通信界面,设计了2个命令按扭,分别为发送、清空数据;两个文本框,Text1用于输入需从下位机读取的数,Text2用于显示下位机发送来的数据;3个Frame控件,一个Label控件,当然还需要一个MSComm控件。
MSComm控件属性设置如图1示:
(图2)
下面是MSComm控件的初始化程序、部分数据发送和接受程序
4调试与结论
该系统目前已调试成功,完成了PC机与51单片机之间的串行通信。并且实现了下列功能:1)在VB界面上发送任一数字在51单片机的数码管上都能成功的接收 2)同样通过向51单片机内写入的程序,在VB界面上可以接收到相对应的内容且运行良好。
调试过程如下:
硬件方面:
该系统的硬件调试主要是排查单片机印刷电路板的问题和连接上的一些问题。在该系统中,首先通过了仔细地推敲系统原理,确认无误;其次对照设计图纸查印制电路板,看是否有粘接等工艺现象;最后,检查连接是否有误,通过这几个方面的反复调试,可确保电路板的无误性。
在本系统的硬件调试过程中,出现了下列两种情况
1)电压不稳定而导致程序无法写入的情况,使电压稳定的方法是改用新的电池,或者是再次设计电源方案,在这里是用电源接通教学实验板,然后再把教学实验板与本系统相 连接,这样,就可以得到稳定的电压了。
2)还出现的一个问题是数码管不显示,检查后是焊接上出现了一点的失误。
软件方面:
本系统在软件调试方面也没有规律可循,调试时更多的是凭经验。软件调试的主要任务是排查错误。通过在Wave E2000编译器下调试程序,有两种错误,一种逻辑错误,也就是语法错误,是很容易被发现的,另一种是功能错误,是指在没有语法错误的基础上,由于设计思想或算法的问题导致不能实现软件功能的一种错误。调试过程中出现的问题主要有以下四个方面:
1)用其它串口调试软件能够很好的实现两者之间的串行通信,成功的接收和发送数据,但使用我们的VB程序却不能实现,要么只能实现接收功能,要么只能实现发送功能。之后通过对VB程序做多次的改动与测试才达到理想的结果。
2)在VB界面上发送的数据与单片机的数码管上显示的数字不相符,这个问题是我们汇编程序的问题,由于汇编语言符号的繁多加上我们的粗心在输入代码的过程中难免出现一些看不见的问题,造成调试过程中出现意外。借此我想提醒大家的是搞设计搞研究必须做到细心,要有一颗敬业的心对待我们接受的任务,有耐心面临出现的困难。
3)由于要实现上下位机的串行通信,所以两者之间的波特率是否一致也是一个不容忽视的问题,在开始我并没有太注意这个方面的情况,到各方面的准备工作都做好要进行调试的时候,才发现有个二者波特率设置是否相同将影响到整个通信过程,我赶紧作了修改才免遭一次调试失败。
4)还有最后一点注意的地方是,利用MSComm控件比较方便地开发串行通信程序,实现串行通讯原理已经得到实验结果验证,考虑到将来对系统实时性的要求,采用了MSComm控件的查询处理机制,避免了中断处理机制的不稳定和不连续性,而且还可以很方便地控制多个串口,只需插入多个MSComm控件,并为每个MSComm控件编写OnComm()函数。但是我们也清楚的体会到MSComm控件在VB中的使用较为复杂。这一点是我们以后在运用中需要加强的地方。
伴随着单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。希望通过大家的共同努力能在PC机与单片机这方面取得新的成绩有突出的表现,能够很好的将学到知识运用到实际生活中,比如上面提到的利用单片机实现对温度的实时检测与控制已经得到广泛的应用。另外我们还可以在单片机的接口上再加接显示器,这样就更能方便的对系统进行操作与控制。
通过这次毕业设计,我深刻体会到专业知识、专业技能分析和解决问题的能力在实际生活中是多么的重要,在完成设计任务的同时我这些方面的能力有了一个全面的提高和锻炼。具体表现在对单片机与PC机的串行通信的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(汇编语言与VB)的掌握方面都向前迈了一大步,为日后使我能成为合格的应用型人才打下了良好的基础。
采用本系统实现PC机与单片机串行通信与一般其它系统的比较:一般的PC机与单片机之间的串行通信,需要单片机采集数据,然后用异步串行通讯方式传给PC机。相对而言通讯速率不是很理想,在一些要求通讯传输速率比较快的地方,普通的PC机与单片机之间的串行通信显然是不能满足其要求的。利用VB6.0 的事件驱动方式可以很方便地开发数据采集与监控系统,用单台PC 机可以测量和监控多路控制信号,整控制系统设计方便,对小型测控系统的设计具有很大的实用性。且传输数据的速率要比普通的串行通信要快些。
对于目前广泛应用的Windows环境下实现PC机与单片机之间的通信问题,希望大家能提出宝贵的意见。
参考文献
[1]蔡美琴等.MCS-51系列单片机系统及其应用(第二版).高等教育出版社,2004.
[2]杨毓,李明.Visual Basic6.0实用开发教程[M].成都:电子科技大学出版社,2001.
[3]刘新民,蔡琼等.VB6.0程序设计.北京:清华大学大学出版社,2004.
[4]李华.单片机通用接口技术[M].北京:北京航空航天大学出版社,1999
[5]魏庆福,姚亦鸣,等STD总线工业控制机的设计与应用[M].北京:科学出版社,1992
[6]何立民,单片机应用系统设计.北京:航空航天大学出版社,1992
[7]美Jan Axelson 著,串行端口大全,精英科技译,2001.5四
[8]刘瑞新等. Visual Basic程序设计教程,北京:机械工业出版社, 2002
中图分类号:TR242 文献标识码:A 文章编号:1007-9416(2013)01-0154-02
1 系统设计要求及设计思路
寻迹机器人的具体功能要求为:按照一定的路线到达指定位置,完成一定的动作后再走到下一目标位置。在行进的过程中地板上有纵横交错的白线作引导,并通过白线来判断是否到达指定位。如图1所示,机器人从A点出发,到达B点和C点并将各点处的物品取走,并运送到D点。机器人运动的具体路径可以任意改变。
根据其功能要求可将其设计实现过程分为以下几部分:
1.1 运动阶段
机器人由一定的驱动电路驱动电机从出发区按照指定的路径走到指定的位置。在这段过程中,机器人在任意时刻都要知道自己处在什么位置并决定下一步该如何动作,即机器人必须对自身进行准确的定位。场地上纵横交错的白线就是用于辅助机器人定位的。机器人通过光电传感器检测地板上白线的位置,并通过单片机中一定的算法来实现定位和确定下一步的动作。
为了实现转向和直线行走,机器人由两轮驱动。机器人的行走过程要求尽量平稳,由于有两个主动轮,在走直线时就要求两个轮子能以同样的速度运行,所以对电机的调速必须十分精确。
在行进的过程中,如果机器人偏离了预定的路线,则无法到达指定位置。这就需要随时检测其是否走偏,并将信息反馈给单片机,由单片机发出指令来控制电机校正偏离误差,保证机器人按照预定方案准确地行走。
机器人要到达指定的位置,不可能一直走直线。在到达一定位置时,机器人需要转向一定角度后继续前进。如果检测到转向信号,单片机就向电机发出转向指令,并不断检测的否转到可以直线运动位置。
1.2 动作阶段
当机器人到达指定位置后,就要完成事先确定的动作,如拾取物品等。这就要根据机器人需要完成的具体任务,由单片机向具体的执行机构发出指令,使其合作完成预定运输作。
2 应用系统结构设计[1]
机器人的行走机构为车轮方式:左右轮为驱动轮,前后轮为支撑轮,由此构成四轮结构。左右轮除负责前进后退外,当两轮的转速不同时,还可以实现曲线行走和原地旋转。
机器人的系统结构如图2所示。由传感器阵列检测机器人的位置状态,通过CPU判断控制左右两台电机工作,使机器人按照预定方案沿着场地上的轨迹移动。
3 硬件设计
寻迹机器人的硬件电路主要分为四个部分:主机控制器电路、电源变化电路、光电检测电路和电机驱动电路。寻迹机器人的硬件电路设计如图3所示。
3.1 主机控制电路
寻迹机器人采用Atmel公司的AT90S8535单片机作为主机控制器。它负责对光电传感器电路检测到的信号进行处理,并通过一定的软件算法控制直流电机的运动方式,以实现对寻迹机器人的精确定位和动作控制。
主机控制电路主要提供AT90S8535单片机的复位处理及同其他电路的接口。AT90S8535单片机通过PB0、PC6和PA口来检测光电传感器的信号,并通过PB2、PB3、PD4和PD5来控制两个直流驱动电机的运动方式。
3.2 电源变换电路
寻迹机器人的供电系统分为两部分。单片机需要+5V的电源,而直流电机需要+12V的电压驱动。机器人系统采用+12V的锂电池组供电,通过7805稳压芯片来获得+5V电源。图中设置了一个发光二极管用于左电源状态指示。
3.3 光电检测电路
采用红外光电检测管为单光束反射取样式光电传感器ST188,它由红外发射器和感光器组成。ST188正常工作时,红外线发光二极管发出红外线。如果检测面表面光洁度平整,发出的红外线经检测面反射后在光敏三极管产生光电效应。产生的电流经过放大后输出信号。
比较器LM311的同相输入端在没有检测到反射信号(不在白线区)时固定为高电平,而反相输入端的电压由电阻分压提供(一般在1.5V左右,由可变电阻器改变电压值)。LM311比较同相端和反相端的输入电压。当在白线区时,反射的红外线导致光敏三极管导通,同相端输入低电平,比较的结果为输出端为低电平,发光二极管亮;当不在白线区时,光敏三极管截止,同相端输入高电平,比较的结果为输出端为高电平,发光二极管灭。
3.4 电机控制电路
寻迹机器人采用2轮驱动以实现直线和曲线运动,在机器人的运动过程中需要对2个主动轮的运动方式进行合理安排。选用了L298N来对2只驱动电机实现运动控制,L298N是一款能承受高压大电流的全桥直流/步进电压驱动器[2]。
4 软件设计
寻线机器人系统控制程序由主程序、寻线处理程序、电机PID控制程序等组成。
由于机器人要按照一定的路径到达指定的位置,可将其运动分为若干个步骤,将每个步骤对应于任务数据组中的数据,当要修改路径时只需改变数组的数据。将机器人的基本动作如直走、后退、转弯、加速、减速等做成函数,在行进中根据任务数据调用函数即可。
为了使用机器人能平稳、准确地到达指定位置,需进行电机调速以及寻线。在整个软件系统中,以执行任务数组为主程序,电机调速以及寻线以中断方式进行。每隔一定的采样时间对传感器进行采样处理。主程序如图4所示。
5 系统集成与测试
寻迹机器人系统测试包括主机系统测试、电机和驱动器测试及光电传感检测电路的测试等。
光电传感器的测试可以在桌面垫一张打印纸(打印纸表面光洁度高,利于红外线的反射)。调节可变电阻器的旋钮,使电压比较器的同相输入端的电压保持1V左右。为了保证红外线的发射功率,给红外管直接加+5V电压而不要串联电阻。将红外管与打印纸正对,调节红外管与纸面的距离,可以观测到电压比较器输出端的LED随着距离的调节亮和灭,在此过程中用万用表测量输出端的电压。输出端电压最低点即为光电检测的最佳工作点,此时监测器与纸面的距离一般在1cm~2cm之间。
寻迹机器人的状态是通过光电传感器阵列检测的。在测试好光电传感器之后,根据实际的白线分布排列光电传感器的位置。1~6号传感器必须严格按照实际的白线宽度排列,其它4个传感器可以通过机器人实际的运动情况进行调整。
机器人技术是一门综合了传感与检测、运动控制、图形图像处理等多技术的新型学科,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科知识,涉及到当今许多前沿领域的技术。随着电子技术的飞速发展,智能机器人在越来越多的领域发挥着人类无法代替的作用。