




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘要1英文摘要11 引言21.1 智能抢答器的发展意义21.1.1 普通抢答器的特点21.1.2 智能抢答器的基本功能及特点22 智能抢答器的相关技术介绍和分析42.1 中文Visual Basic简介42.1.1 Visual Basic的发展过程42.1.2 Visual Basic的概念简述42.1.3 Visual Basic的开发程序步骤52.2 有关MSComm控件的简介62.2.1 MSComm的引用步骤62.2.2 MSComm的工作方式62.2.3 MSComm的属性说明72.2.4 MSComm的通信步骤82.3 RS-232的简介83 智能抢答器的硬件设计93.1 晶振的选择93.2 智能抢答器方案设计103.2.1 硬件电路总框图103.2.2 主要模块设计方案 单片机的选择 准备抢答电路的设计 单片机与PC机通讯的实现134 智能抢答器的软件设计144.1 单片机软件设计144.1.1 串行通信初始设置154.1.2 串行中断154.2 VB软件设计164.2.1 初始设置程序174.2.2 串行通信程序185 系统调试及结果分析195.1 软件仿真195.2 调试步骤195.3 功能测试205.3.1 距离测试205.4 总结206 结束语20参考文献21附录22基于串行通信的智能抢答器基于串行通信的智能抢答器职业技术教育学院 应用电子技术教育专业 王丹萍(07440114)指导老师:杨金华(讲师)摘要:本文主要介绍应用单片机技术和VB语言实现智能抢答系统的设计, 以及实现智能抢答系统的方案。系统分为两大部分,即单片机部分和PC机两大部分。PC机主要完成图形用户界面,并利用Visual basic语言本身具有的通信控件MSComm与单片机进行通讯。图形界面友好美观,操作简单。单片机部分采用的是功能强大,集成度极高的STC89C52单片机。设计完成后,电路总体调试,实现了智能抢答的功能。关键词: STC89C52;Visual Basic;MSComm控件;实时通讯Intelligence contest device based on serial communicationStudent: WANG Dan-ping Director: YANG Jin-hua (Application of electronic technology education professionals,Zhejiang Normal University No:07440114)Abstract: This text is main introduced the technology of the Microcontroller and utilize VB language to realize the intelligence vies for answering system, and the scheme to realize the intelligence vies for answering system. The system divide into two major parts, namely Microcontroller part and PC part. The PC finishes the figure users interface mainly, and utilize the Visual basic language own communication controlling part MSComm communicate with Microcontroller. The interface is friendly and beautiful, it is simple to operate. the Microcontroller part is adopted the STC89C52 which is powerful and extremely high in integrated degree. After finish design, the circuit is debugged completely and realized the function of intelligence vies for answering system. Key Word: STC89C52; Language of Visual Basic; controlling part MSComm; Real-time communication1 引言 1.1 智能抢答器的发展意义随着我国经济、文化事业和电子技术的迅速发展,在很多的竞争场合要求有快速公正的竞争裁决,例如证券、股票交易及各种智力竞赛等1。于是抢答器应运而生,并且其设计方案越来越多样化,功能越来越智能化,而且外观也越来越人性化。1.1.1 普通抢答器的特点抢答器是竞赛问答中一种常用的必备装置,随着场合的不同,电路难易程度也有所不同,实现的功能也有所不同。一般的抢答器是由许多的门电路组成的。从原理上讲,它就是一种典型的数字电路,分为主体电路与扩展电路两部分。利用优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出,组成主体电路。通过定时电路实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器系统成形。在抢答电路中利用一个优先编码器译出最先抢到答题权的选手的编号并经LED显示器显示出来,同时还要封锁电路以防其他选手再抢答。当选手问答完成后,主持人将系统恢复至零。这样的抢答器制作简单,抢答的功能也能基本实现,基本上能完成小型抢答的场合。不过说到实用性,却有很多的不足之处:(1)由很多门电路组成,线路复杂,而且显示方式简单,性价比差,特别是抢答路数增多时,电路变得很复杂,实现起来更加困难。(2)因为必须使用较多的分立元件,从而造成电路的成本偏高。(3)显示系统和主机之间用多股线连接,结构复杂、安装麻烦。(4)远距离实现困难,一般只能1.52米的距离。1.1.2 智能抢答器的基本功能及特点何谓“智能”,就是利用微处理器能够高速而精确地进行各种数据的计算处理,几乎能模仿人脑部分的功能。而说本次设计的抢答器是智能的,是因为它是和PC机进行了通信,并且PC机发送给选手的数据都是由一块单片机进行存储,计算处理的,并能把相应的数据返回到PC机。那什么是单片机呢?它是一块芯片上集成了一台微型计算机所需的中央处理器(CPU)、存储器(RAM、ROM)、定时器/计数器、中断系统和各种输入/输出(I/O)接口等。单片机其实就是一台计算机。单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。本次设计使用了STC89C52单片机及外围接口电路来实现抢答系统,具有很强的实用性。本设计功能齐全,可通过四位一体LED数码管显示出各组选手的得分情况,通过绿色的发光二极管判别是否准备抢答;还利用了单片机的串行通信技术进行接收传送数据,能将各组选手每题抢答而得的分数动态地接收并显示,也能将每题的违例抢答或者正常抢答的组号发送到PC机进行显示,使主持人、选手们、观众们能对各组选手的得分情况一目了然。每路抢答选手设有一个抢答按键和一个得分显示器,方便选手们进行抢答,了解自己的得分;而在主持人PC机界面上,设有默认,重抢,下题,串口设置,题目设置,准备键,开始键,确定键,加分键,减分键和还有一个选手积分卡,方便主持人在整个抢答过程中进行控制,使整个抢答过程在公正、公平的环境下进行。本设计还将每题的抢答情况送PC机显示以体现公正,同时也让选手们知道竞争对手的得分情况。本次设计的抢答器实现了单片机和PC机的实时通信,由于PC机上本身配置的RS-232,使得单片机和电脑的距离可以拉长15m。这个抢答系统模块体积比较小,携带比较方便,而且当今社会,PC机的拥有率越来越高,使得这个抢答系统使用起来更为方便。图1-1所示的是PC机上用VB编写的一个界面,比数码管、液晶显示的更为美观、人性化。图1-1 PC机上界面显示图2 智能抢答器的相关技术介绍和分析2.1 中文Visual Basic简介2Visual Basic6.0是Microsoft公司推出的基于Windows环境的计算机程序设计语言,它继承了Basic语言简单易学的优点,同时增加了许多新的功能。由于Visual Basic采用面向对象的程序设计技术,摆脱了面向过程语言的许多细节,而将主要精力集中在解决实际问题和设计友好界面上,使开发Windows应用程序更迅速、简捷。什么是Visual Basic?“Visual”指的是开发图形用户界面(GUI)的方法。在图形用户界面下,不需要编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象加到屏幕上的适当位置,再进行简单的设置即可。“Basic”指的是BASIC(Beginners AllPurpose Symbol Instruction Code,初学者通用的符号指令代码)语言,是一种应用十分广泛的计算机语言。Visual Basic在原有BASIC语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和Windows GUI有直接关系。专业人员可以用Visual Basic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立简单的应用程序。2.1.1 Visual Basic的发展过程Basic是专门为初学者设计的计算机语言,它诞生于1964年,最初问世时只有几十条语句,而且简单易学,很受用户的欢迎。随着计算机技术的飞速发展,Visual Basic(简称VB)就由此而生,它是Microsoft公司为开发Windows应用程序而提供的强有力的开发环境和工具,具有很好的图形用户界面的程序设计语言。VB应用程序的开发以对象为基础,并运用事件驱动机制实现对Windows操作系统的事件响应。VB提供了大量控件,可用语设计界面和实现各种功能,用户可以通过拖放操作完成界面设计,不仅大大减轻了工作量、简化了界面设计过程,而且有效地提高了应用程序的运放效率与可靠性。1991年,Microsoft公司推出Visual Basic1.0版,它虽然存在一些缺陷,但仍受到了广大程序员的青睐。随后,Microsoft公司又分别在1992年、1993年、1995年和1997年相继推出了2.0、3.0、4.0、5.0等多个版本。目前常用的版本Visual Basic6.0是1998年下半年推出的。Visual Basic6.0版较以前版本,其功能和性能都大大增强了,它还提供了新的、灵巧的数据库和Web开发工具。 2.1.2 Visual Basic的概念简述自从Windows操作系统兴起后,计算机的使用就大为改观了,一切操作都是在可视的操作系统中进行。窗口环境与以前的DOS环境有很大差异,在概念上也大相径庭。在使用Visual Basic设计窗口程序中,其设计的方向大约分为两部分,即窗体设计和程序编写。VB采用面向对象、事件驱动的编程机制。用户只需编写响应用户动作的程序,如移动鼠标、单击鼠标等,而不必考虑每个步骤执行的精确次序,编写代码相对较少。在VB环境中,用户不仅可以利用控件来创建对象,而且还可以建立自己的控件,这是Windows环境下变成的新概念。VB的接口成员有:属性、事件、方法。VB的开发环境有:菜单栏、工具栏、工具箱、工程资源管理窗口、属性窗口、窗体设计窗口、代码设计窗口。VB的环境模式分为三种,即设计模式、运行模式、中断模式。VB的控件很多,这次在界面设计中使用了其中的常用控件,比如组合框、文本框、标签框,图形、定时器等控件,还用到菜单编辑器。2.1.3 Visual Basic的开发程序步骤Visual Basic看似复杂的环境,其实是很容易上手的,Visual Basic的开发环境分成两个部分:一个是设计模式,一个是运行模式。程序在设计模式下被开发至一定程度后,就可在运行模式下观看程序运行的结果,以此作为改正程序的参考。面对新建的工程,脑中想着对象、属性、时间、方法四个步骤,开发程序的步骤如下:(1)拖动窗体到适当的大小。需要的外观控件可从工具箱中取出,当在工具箱中找到所需要的控件时,首先单击该控件,接着在窗体上以拖拉的方式产生出所需的外观。(2)当对象放到窗体上,确定其大小后,接着按下F4键弹出属性窗口以改变其重要属性。如:Name属性、Color属性、Caption属性等。属性数量众多,通常一个控件只需要改变部分属性即可,很多属性都只要保持其默认值就行了。 (3)按照步骤(2)的方法将所需要的控件以拖拉的方式放到窗体上,考虑窗体上各个控件之间的排列关系,排出理想的样子。(4)打开程序代码编辑窗口,方法有很多,可以点击某一控件就可以进入程序代码编辑窗口;或者右击窗体,选择“查看代码”;或者选择“试图”菜单中的“代码窗口”选项;或者是使用“工程资源管理器窗口”中的“查看代码”按钮。把操作写入程序代码编辑窗口中。在程序代码的编写过程中,均以对象和外界的交互为第一个考虑的重点,再以此开发下去。(5)工程完成后,可按下F5键或选择运行菜单下的命令以执行工程,然后就可以看到工程执行后的结果,试着操作各控件并观察它对事件的反应,可以看出设计的事件是否适当。(6)在修改与测试的过程中,中断是经常使用到的功能。将光标停留在需要中断的某一行,按下F9键即可设置断点,一旦程序运行至此,即会产生中断而停止运行,这时可在实时运算窗口中进行各项参数的测试,也可以按下F8键使程序单步运行下去,或者直接按下F5键立刻让程序运行下去。(7)需要修改程序时,可从运行模式回到设计模式,待修改完毕后,再按下F5键进入运行模式,不断修改,直到满意位置。(8)完成工程的设计工作后,再利用VB提供的“打包和展开向导”制作工程的安装程序。这样,一个VB工程的开发步骤就完成了。2.2 有关MSComm控件的简介VB不但容易学习,而且可设计的系统内置及外挂控件更是众多。随着现在串行通信的使用越来越普遍,Microsoft公司便在VB中设计了一个MSComm通信控件,以便我们完成串行通信的设计3。MSComm控件包含在Visual Basic专业版及企业版中,结合RS-232串行通信,就可以轻易地完成很多系统控制的通信。 2.2.1 MSComm的引用步骤 由于VB的串行通信控件不会主动出现在工具箱中,当我们需要MSComm控件时,让它出现在工具箱中的操作步骤如下:(1)单击工程菜单。(2)在工程菜单中选择部件命令。(3)打开部件对话框,选中Microsoft Comm Control 6.0 复选框。(4)单击应用或者确定按牛,就可在工具箱中看到“电话盒(MSComm控件)”的图标。我们就可以将MSComm控件加载,进行串行通信。2.2.2 MSComm的工作方式使用MSComm控件的目的是为了让用户设计一个系统,此系统可以和串行断口进行通信及发送数据,因此信息会在其硬件线路上流动,此控件提供了以下两种方式来处理信息的流动。(1)事件驱动(Event-driven)是处理连接端口通信的一种有效方法。例如有个字符到达或者发生一个变化时,程序都可以利用MSComm控件来检测并处理。(2)程序通过检查CommEvent属性的值来轮询事件和错误。 以上两种方式都可以达到数据接收发送的目的,具体使用哪种方法好都是根据实际的系统环境而定,有时会同时使用这两种方法。如果应用程序不大,那可能是第二种方法比较好。2.2.3 MSComm的属性说明使用MSCOMM控件主要是通过事件来处理串行口的交互,即当数据到达时,控件的OnComm的事件就会来捕获或处理这些通信事件。而OnComm事件也可以用来捕获和处理通信错误。在实际应用中,一个MSComm控件就对应一个串行口,所以如果要处理多个串行口的话,必须有相应数量的控件与之对应。下面介绍一下此控件的主要属性4:CommPort:设置串口号,类型short:1-com1 2-com2,其实VB的MSComm控件有16个串行端口,若使用的通信端口号码超过16时,此控件会有错误信息。Setting设置串口通信参数,类型Cstring:B波特率,P奇偶性(N默认值,E偶校验,O奇校验),D 字节有效位数,数据数可以有4位,5位,6位,7位,8位,S停止位,停止位可以有1位,1.5位,2位。默认的Settings=“9600,n,8,1”表示波特率为9600bps,无奇偶校验,8个数据位,1个停止位。PortOpen: 设置或返回串口状态,类型BOOL:TRUE打开,FALSE关闭。InputMode:设置从接收缓冲区读取数据的格式,默认值为0,表示以文本格式读取数据。类型long:0-Text ,1-Bin。Input:从接收缓冲区读取数据,类型VARIANT。InBufferCount:接收缓冲区中的字节数,类型:short。InBufferSize:接收缓冲区的大小,类型:short。Output:向发送缓冲区写入数据,类型:short。OutBufferCount:发送缓冲区中的字节数,类型: short。OutBufferSize:发送缓冲区的大小,类型:short。InputLen:设置或返回Input读出的字节数,类型; short。CommEvent:串口事件,类型:short。RThreshold:设置或返回引发接收事件的字节数,即最小接收字符数。若设置其属性为0时,则数据传输事件不会生成OnComm事件中的接收事件。类型: short。Sthreshold:设置或返回引发发送事件的字节数。若其属性为0(默认值),则数据传输事件不会生成OnComm事件中的发送事件。类型:short。HandShaking:指定通信双方的握手协议。其设置有这样四种:0:(默认值)没有握手协议;1:(XON/XOFF)握手协议;2:RTS/CTS握手协议;3:RTS和XON/XOFF握手协议。另外对于OnComm事件来说,每当CommEvent的数值发生改变时就会产生这种事件,这表明要么就是一个通信事件的产生,要么是一个通信错误产生。2.2.4 MSComm的通信步骤通常我们都是以下面的步骤来使用VB的MSComm控件进行通信控制的:(1)加入通信控件。也就是MSComm控件。(2)设置通信端口号码。即CommPort属性。(3)设置通信协议。即HandShaking属性。(4)设置传输速度等参数。即Settings属性。(5)设置其他参数。如引发接收或发送的字节数(6)打开通信端口。即PortOpen属性设成True。(7)送出字符串或读入字符串。使用Input及Output属性。(8)使用完MSComm通信控件后,将通信端口关闭。2.3 RS-232的简介5现在,串行通信端口(RS-232)是计算机上的标准配置,通常有COM1和COM2两个端口。一般计算机将COM1端口以9针的接头引出,而以25针的接头将COM2端口接出。新一代的计算机均以9针接头接出RS-232通信端口。各串行端口脚位定义如表2-1所示。表2-1 RS-232串行端口脚位定义表管脚方向说明CD(Carrier Detect)计算机外设外设通知计算机有载波被检测到RXD(Receive)计算机外设传送信息DTRData(Terminal Ready)计算机外设计算机告诉外设:可以进行传输GND(Ground)计算机=外设地线DSR(Data Set Ready)计算机外设计算机要求外设将信息送出CTS(Clear To Send)计算机外设外设通知计算机有信息传送RS-232的每支脚都有它的作用,也有它信号流动的方向。不过串口传输数据只要有接收数据针脚和发送针脚就能实现,比如同一个串口的接收脚和发送脚直接用线相连,或者两个串口相连或一个串口和多个串口相连。本设计只用到发送线RXD、接收线TXD、接地GND三根线。这是串行通信中最简单的三线接法6。RXD此脚负责将传送过来的远程信息进行接收。在接收的过程中,信息是以数字形式传送的。TXD此脚负责将计算机的信息传送出去。在传送的过程中,信息是以数据形式传送的。GND此脚为地线,作为计算机与外设之间的准位参考。两端设备地线准位必须一样,否则会产生地回路,使得信号产生偏移,也会导致结果错误。值得注意的是:通信距离较近时(12m),是可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。3 智能抢答器的硬件设计3.1 晶振的选择在串行通信中,当规定了传输速率以后,波特率的设置与系统使用的晶振频率有着很密切的关系,它可直接影响通信的成败。这次设计使用到的晶振是11.0592MHZ的,即系统频率为fosc=11.0592MHZ,串行方式为方式一,且规定串行通信双方的波特率要求为9600bps,SMOD选为1,TH1,TL1的初值计算如下:波特率=211.0592106/(3212(256-X)=9600解上式可得出X=250=0FAH将此值置入TH1和TL1时,波特率发生器产生的实际传输率为:波特率=211.0592106/(3212(256-250)=9600波特率误差=(9600-9600)/9600=0.0000%通过推算,得到如此精确的波特率,所以绝对能保证PC机与单片机进行正常的接收与发送。按以上条件若系统采用12MHZ系统时钟,照上面公式计算可得出X=250或249(FAH或F9H),此时在TH1和TL1中置入FAH或F9H时,实际的传输速率为10416.67bps或8928.57bps,其误差分别为-8.5%或7%。实践表明,PC机与单片机在这种条件下不能实现正常的接收与发送。上例中,当双机约定了传输速率9600bps时,若晶振频率为12MHZ或6MHZ,PC机的波特率为9600bps,而单片机实际的波特率大于(或小于)9600bps,波特率误差为8.5%。也就是说,如果PC机以每位104.17s的时间发送一为数据,单片机则以96s的时间接收一位数据。在接收一帧数据的过程中,由于误差的积累,便产生了错码。当波特率相对误差小于4.5%时,这种偏移将不会影响正常的数据接收,但为了保证传输的可靠性,通常波特率误差不大于2.5%,而尽量选择最小的传输误差率。值得注意的一个问题:就是SMOD位的选择也影响着波特率的准确度。试看下例:设波特率选为2400bps,fosc=6MHZ时,SMOD可以任选为0或1,但是由于对SMOD不同的选择,产生了不同的波特率误差:2400=2SMOD6106/(3212(256-X)当SMOD=0时,X249=F9H;当SMOD=1时,X=243=F3H。实际的波特率及误差如下:SMOD=0时为2232.14bps及7%;SMOD=1时为2403.85bps及20.16%.上面的分析说明了SMOD值虽然可以任意选择,但在某些情况下它直接影响着波特率误差范围,因而在波特率设置时,对SMOD的选择也需要做适当的考虑。那么对于11.0592MHZ的晶振,SMOD的选择对它的波特率是否也有影响呢?我们可以用公式来推算一下:假定波特率仍旧为9600bps,串行方式为一。SMOD可以任选为0或1,看看SMOD不同的选择,是否产生了不同的波特率误差:9600=2SMOD11.0592106/(3212(256-X)当SMOD=0时,X=253=0FDH;当SMOD=1时,X=250=0FAH。实际的波特率及误差如下:SMOD=0时为9600bps及0.000%;SMOD=1时为9600bps及0.000%。若设置波特率为2400bps,晶振仍旧选择11.0592MHZ,只改变SMOD,分析下是否产生不同的波特率误差:2400=2SMOD11.0592106/(3212(256-X)当SMOD=0时,X=244=0F4H;当SMOD=1时,X=232=0E8H。实际的波特率及误差如下:SMOD=0时为2400bps及0.000%;SMOD=1时为2400bps及0.000%经过多次的运算证明,当振荡器频率选用11.0592MHZ时,对于常用的标准波特率,都能正确地计算出T1的计数初值,所以这个晶振是最常用的,特别适用在串行电路中,精度非常高。3.2 智能抢答器方案设计3.2.1 硬件电路总框图如图3-1所示,这次设计采用STC89C52实现。将PC机作为上位机,STC89C52作为下位机,下位机主要完成对按键的扫描、对上位机进行数据接收和发送以及分数的显示功能。这个方案电路简单,功能较多,并能足够地拉长选手之间的距离,且充分利用STC89C52的资源。 图3-1 硬件电路总框图因为它具有灵活性和可行性,即使增加抢答路数时,只要增加分机的个数即可且电路也比较简单。3.2.2 主要模块设计方案 单片机的选择本电路的核心部件就是主控芯片单片机,因此对单片机的选择非常关键。在我国,用得最多的单片机系列当首推MCS-51单片机系列,STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。STC89C52具体介绍如下:(1)主电源引脚(2根)VCC(Pin40):电源输入,接5V电源。GND(Pin20):接地线。(2)外接晶振引脚(2根)XTAL1(Pin18):片内振荡电路的输入端。XTAL2(Pin19):片内振荡电路的输出端。(3)控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号。PSEN(Pin29):外部存储器读选通信号。EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。(4)可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7。P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7。P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7。P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7。STC89C52共有40根引脚。在设计中,P0口作为LED的段控脚。P3.0和P3.1分别为串行通讯的接收端和发送端,作为STC89C52和RS-232通信的接口。P3.2和P3.3为两个外部中断输入口,P3.4、P3.5为两个定时器输入口。在引脚分配时,P2.4、P2.5、P2.6、P2.7分别作四个数码管的位控脚,而P3.2和P3.3作为外部中断输入口直接各接一个按键后接地,这两个按键就是选手的抢答键。另外,还需要连接11.0592MHZ的振荡电路和复位电路。STC89C52的管脚配置如图3-2所示。图3-2 STC89C52管脚分配图 准备抢答电路的设计准备抢答电路说明可以准备开始抢答,所以采用绿色发光二极管串上限流电阻来实现。当主持人按下上位机VB界面中的准备按键,该绿色发光二极管就会点亮,告诉选手可以准备开始抢答了。此电路简单,容易实现,又能满足我们所需的要求。其设计如图3-3所示。图3-3 准备抢答图 单片机与PC机通讯的实现7众所周知,计算机无法分辨所谓的数字和文字,在其内部的记录中所有的数据都是0和1。所有电子仪器的基础均来自“开”、“关”两个状态的改变,我们可以将它们表示0与1或者是“高电位”、“低电位”。而任何电子零件或芯片的高低电位都有一定的规定,RS-232也有相关电气标准电位定义。在RS-232的标准中,电压在+3V+15V称为逻辑0,电压在-3V-15V称为逻辑18。而单片机标准中,电压在1.4V以下称为逻辑0,在1.4V以上称为逻辑1。电位定义不一样,是不能通信的,所以需要电平转换。这次设计使用到的是MAX232电平转换芯片9。 MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供TIA-232-F电平。每个接收器将TIA-232-F电平输入转换为5VTTL/CMOS电平。这些接收器具有1.3V的典型门限值及0.5V的典型迟滞,而且可以接收30V的输入。每个驱动器将TTL/CMOS输入电平转换为TIA-232-F电平。这次设计使用的是MAX232CAP,其工作温度范围为-40至80。此外在设计中,MAX232需要外接四个0.1F的电容。图3-4所示的就是MAX232构成的TTLRS232电平转换电路。图3-4 TTLRS232电平转换电路图4 智能抢答器的软件设计该抢答器的程序分为单片机和VB两部分。以下分别就两部分的核心程序及其功能进行阐述。4.1 单片机软件设计10单片机部分程序主要完成分值显示以及接收PC机发送过来的数据,并对这些数据进行相应的计算处理。其工作流程图如图4-1所示。图4-1 单片机工作流程图4.1.1 串行通信初始设置初始设置主要是设置定时器方式、赋其初值以及设置串行方式和外部中断触发方式,以下是单片机的初始程序。void UART_Init(void)SCON = 0x50;TMOD = 0x20;TH1 = 0xFD;TL1 = 0xFD;TR1 = 1;ES = 1;EA = 1;4.1.2 串行中断通过单片机STC89C52的P3.0和P3.1口进行通讯,如果PC机向单片机发送数据,其串行中断标志RI在接收到停止位的中间便由硬件自动置位,但如果要撤消中断,进行下一次的接收时,必须由软件将RI复位。单片机接收到数据后,进行响应的计算和处理比较。但是有一个问题必须要说明:传送速度很快,接收中断后必须马上返回再次等待中断。其中断程序如下:void UART(void) interrupt 4if(RI)RI = 0;if(Rec_flag = 0)if(SBUF = S)key_flag = 0;if(SBUF = W)Rec_flag = 1;else tally+;Loot_Tabtally-1 = SBUF;if(tally = 2)tally = 0;Rec_flag = 0;switch(Loot_flag)case 1: Varone = (Loot_Tab0 -0) + (Loot_Tab1 -0); break;case 2: Vartwo = (Loot_Tab0 -0) + (Loot_Tab1 -0); break;default : break; 串行中断返回后,单片机一边等待再次中断,一边对接收到的数据进行处理,如果发现接收到的是自己的本机号码,就进行通讯状态,如果不是,则等待PC机的下一次发送。4.2 VB软件设计VB部分主要完成对抢答初始状态的以及抢答时间、分值等的设置。以及在抢答过程中及时接收并显示由单片机发送来的信息。VB设计窗口如图4-2所示。图4-2 VB设计界面4.2.1 初始设置程序在VB代码的初始程序中,最重要的是将串行控件MSComm的端口COM1口打开,然后对其他所用到的一些控件进行程序初始化。其MSComm控件初始程序如下。Private Sub Form1_Load() COM_COM = COM1 COM_Baud = 9600 MSComm1.InBufferSize = 1 MSComm1.OutBufferSize = 3 MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 MSComm1.InputLen = 0 MSComm1.InputMode = MSCommLib.InputModeCInputModeText MSComm1.InBufferCount = 0 MSComm1.OutBufferCount = 0End Sub串行通讯端口各项功能都是在PortOpen的True与False之间完成的,尚若没有打开这个通讯端口就进行数据传输,系统将显示错误信息。对于MSComm的初始化程序中,另外的属性在第2章中均有表述。4.2.2 串行通信程序在设置完成后,裁判不用再去对计算机进行操作,由VB程序自动对串行口接收到的各信息作出相应的动作。其核心程序是MSComm控件的Oncomm事件。其部分程序如下所示。Private Sub MSComm1_OnComm()Select Case MSComm1.CommEvent Case MSCommLib.OnCommCEvReceive COM_Rec = MSComm1.Input If COM_Rec = 1 Then If Start_flag = True Then TextBox_display.Text = 一组抢答成功! LED1.BackColor = Color.Lime LED2.BackColor = Color.Red Timer1.Enabled = False Else LED1.BackColor = Color.Black LED2.BackColor = Color.Red Timer1.Enabled = False TextBox_display.Text = 一组抢答违规! End If ElseIf COM_Rec = 2 Then If Start_flag = True Then TextBox_display.Text = 二组抢答成功! LED1.BackColor = Color.Red LED2.BackColor = Color.Lime Timer1.Enabled = False Else LED1.BackColor = Color.Red LED2.BackColor = Color.Black Timer1.Enabled = False TextBox_display.Text = 二组抢答违规! End If End If End SelectEnd Sub在编辑程序代码中,发现在完成传输工作后没有关闭通讯端口COM1,其实在应用程序结束时,VB会自动关闭其通信端口的。5 系统调试及结果分析 5.1 软件仿真 软件仿真我用的是Protues7.6版本来进行电路仿真。软件仿真步骤:1.建立仿真文件;2.点击左侧P按钮选取本系统所需的元器件;3.连接电路图,检查无误后,向单片机导入.HEX文件;4.打开VB调试窗体,进行调试,检验结果是否符合设计的要求。调试结果如图5-1所示。图5-1 仿真图5.2 调试步骤 用连接线将电路与电脑的串口连上,并将电路接上电源,数码管的显示都为零。首先,打开VB界面,选择“设置题目”菜单栏,本设计可以设置三个题目,如果没有选择“设置题目”而去按其它按键,则会弹出“请设置题目”的窗口。然后选择“设置串口”菜单栏,可以对端口、波特率、计时时间、每次加的分数和每次减的分数进行设置。接着,按下“准备”按键,电路中的绿色发光二极管就会点亮,表示准备抢答,当按下“开始”按键,选手就可以开始抢答了。如果超过抢答时间还没有选手抢答,VB界面会显示“两组都放弃抢答!”。如果在抢答时间内有人抢答,VB界面会显示出哪一组抢答成功,且VB界面上与该组对应的红色灯变成绿色,主持人根据选手回答的是否正确来给选手加分或者减分,最后按“确定”按键,电路中与该组所对应的数码管就会显示出该组选手的得分。若没有按“开始”选手就抢答,VB界面就会显示有人违规了,并且会显示是哪一组违规抢答了。VB界面的菜单栏还设有“重抢”和“下题”,主持人根据需要进行选择。5.3 功能测试5.3.1 距离测试本设计实现了单片机和PC机的实时通信,由于PC机上本身配置的RS-232,使得单片机与电脑的距离可以拉长15m,但通过实际测试,可以实现距离拉长10m。5.4 总结通过查阅资料,得出通信距离较近时(12m),是可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。6 结束语经过一个多月的调试,基于串行通信的智能抢答器已经完成了,虽然算不上完美,但也算是成功的,因此不管制作过程中有过多少的挫折,也会觉得只是一次锻炼。选这个设计题目的时候,杨老师就劝告过我,这个题目涉及到VB,得做一定的考虑。但是我作为一个学生,错过一次选择的机会,那可能会失去更多选择,再说难点对自己也算是一个考验,大学四年,如果连一个抢答器都做不出来,那这些学习的时间不都算白白浪费了。当时心里就是这样想的,也就这样下定决心选择了这个设计题目。因为是一开始就听得这个题目有点复杂,而且又得涉及到VB的一些知识。所以我就特别地用上了心。这个设计是要用到单片机与PC机通讯,PC机上的界面是用VB实现,以前大二的时候学过VB,基础的知识还是有点记得,但是关于通讯方面的知识,我脑子里一点都没有。于是就特别紧张,在开题报告还没开始写的时候,我就去图书馆借了许多书,但是这些书讲的都是单片机之前的通讯。幸运的是我打听到有同学曾经做过一个把PC机作为上位机的温度控制系统,于是向他请教了许多,还好他也很耐心。这次毕业设计,我调试的时间已经算很长了,看着别人一一做好了,心里会很着急,但是光着急是没用的,最后还得有耐心去调试。能完成毕业设计,当然是件高兴的事,而且通过了设计,我也学到了很多知识,就像老师所说的一句话:“学一门,精一门。”但是只是一门罢了,看着有些做模拟电子设计的同学,他们的电路不算复杂,但是很难调试,有时我自己的做累了,会去看看他们的进展,但是却帮不了什么忙
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金融反欺诈技术升级与大数据应用趋势分析报告
- 艺术品数字化交易平台市场竞争力分析报告2025
- 2025年事业单位工勤技能-江西-江西药剂员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西计算机信息处理员三级高级历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西图书资料员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东放射技术员四级(中级工)历年参考题库含答案解析
- 2020-2025年房地产估价师之开发经营与管理高分通关题型题库附解析答案
- 2025年事业单位工勤技能-北京-北京信号工-机车信号设备维修五级(初级工)历年参考题库典型考点含答案解析
- 2025年银行金融类-金融考试-银行业专业人员中级(法规+公司信贷)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-劳动关系协调员-劳动关系协调员技师(二级)历年参考题库含答案解析(5套)
- 2025晋中祁县司法协理员招聘笔试备考试题及答案解析
- 农村自建房租房合同范本
- 虚拟化平台日常运维指南与规范
- 2024年梅州市公务员考试行测真题附答案详解(典型题)
- 2025家电购销合同范本
- (2025)纪检监察应知应会试题库与参考答案
- 非煤矿职工职业卫生培训
- 社区居民高血压防治健康讲座
- 2025年湖北省中考化学试题深度解读及答案详解
- 2025年内蒙古中考语文试卷真题及答案详解(精校打印)
- Unit 3 Same or DifferentSection A Grammar Focus (3a-3c) 课件-2025-2026学年人教版八年级英语上册
评论
0/150
提交评论