基于虚拟仪器数据采集系统的设计 - 图文

更新时间:2023-11-10 19:41:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京工业大学毕业设计(论文)

摘 要

数据采集显示控制器是为了满足压力控制系统的需要而设计的,是为了适应电子工程设计课程发展而设计的教学设备。它主要用于对电子工程设计训练的第二、三阶段进行改进和扩充,使学生在进行电子工程设计时能有更多的选择。

本文主要论述了数据采集显示控制器的设计过程,设计方法,以及在设计中所遇到的各种问题以及解决方法。

数据采集显示控制器主要由三个部分组成:显示部分,键盘控制部分,串行通信部分。其中每一部分又包括硬件设计部分和软件设计部分。本文会对每一部分的设计进行比较详细的论述,包括设计依据和相关数据。对于设计过程中所用到的设计软件和硬件设备也会做比较细致的介绍,帮助读者更容易的了解数据采集显示控制器的设计过程。在该系统的设计过程中,笔者遇到了一些的问题和困难,这些问题和困难的解决方法在本文中会有比较详细的介绍,希望能给读者在进行类似系统设计时提供一定的参考。

本文所论述的系统在设计时参考了很多相关文献,是切实可行的设计方案。

关键词:

数据显示 键盘控制 串行通信

1

北京工业大学毕业设计(论文)

Abstract

The “Data collection and display controller” is designed for content require of “Stress control system”, and is experimental equipment which designed for the development of Electronic engineering design training education. It is mainly used for the expansion and improve of Electronic engineering design training education phase I-2,I-3,make students have more choice in Electronic engineering design training.

In this paper, I will mainly focus on the design method and design process of “Data collection and display controller”, also, the problem in design course and the resolvent of those problem.

The “Data collection and display controller” is mainly consist of three part: display part, keyboard control part, serial communication part. Every part of them is consist of software part and hardware part. The detail of design, include design data and design gist, of every part will show in this paper. The design software and equipment used in design process will be particular introduce in this paper so that reader can more easy to know the design process of “Data collection and display controller”. In the design process, I have lots of problem. The resolvent of those problem will show in this paper. I hope it can help reader and make it more easy when them do same similitude design.

The design process in this paper show have consult a lot of correlate literature, so it not only can carry out on paper.

Keyword:

Date display

Keyboard control Serial communication

2 北京工业大学毕业设计(论文)

目录

1.绪论··································································· 4 1.1课题背景···························································· 4 1.2课题说明及需求分析·················································· 5 2.开发工具与开发环境····················································· 6 2.1 Protel 99SE介绍······················································ 6 2.2硬件调试台简介······················································ 8 2.2.1 上盖板概述······················································ 8 2.2.2 下盖板概述······················································ 9 2.3 Medwin集成开发环境简介·············································10

2.3.1Medwin软件介绍··················································10 2.3.2Medwin配套仿真头介绍············································11 3.系统总体设计···························································12 4.系统硬件电路设计及调试·················································13 4.1系统控制电路设计及调试··············································13 4.1.1系统控制电路设计 ················································13 4.1.2系统控制电路调试 ················································18 4.2数据显示电路设计及调试···············································19 4.2.1数据显示电路设计·················································19 4.2.2数据显示电路调试·················································23 4.3键盘电路设计及调试···················································25

4.3.1键盘电路设计 ·····················································25 4.3.2键盘电路调试·····················································28 4.4串行数据通信电路设计·················································30 5.系统软件程序设计及调试··················································32 5.1数据显示程序设计及调试···············································32 5.2键盘显示程序设计及调试···············································35 5.3串行通信程序设计及调试···············································41 5.4系统整体程序设计及调试···············································44 设计总结···································································50 致谢·······································································51 参考文献···································································52

3 北京工业大学毕业设计(论文)

1.绪论

1.1课题背景

我的毕设题目是我校的电子工程设计课程的扩展延伸项目。作为课题背景,我在这里

简单介绍电子工程设计课程。

电子工程设计训练的目的是在学生通过前修课程已有的知识、技能的基础上,进一步提高实践能力,为学生更好的投入毕业设计打下坚实的实践基础,也为学生毕业后走上工作岗位缩短适应期创造有利条件。

电子工程设计训练着眼于基本的设计、实现方法的学习,通过融合学生在不同的课程、不同阶段积累的知识与技能,培养初步的综合系统的设计能力。通过一个具体、真实的系统设计,掌握一般的设计方法、了解完整的工作过程。在此过程中,提高信息、资料的获取能力,学会与人交往、善于合作,锻炼用语言文字表达自己的思想,在解决实际工程问题中强化工程意识、积累实际工作经验。

电子工程设计I-1为电子工程设计训练整体过程中完成基本电路设计训练的阶段。主要任务是提高学生的电路焊装工艺水平,提高电路实现过程中故障的排查能力,掌握一个综合电路系统中各个单元分别实现、单独调试的方法。

电子工程设计I-2是电子工程设计训练整体过程中完整系统设计的训练阶段,主要目的是在微机原理与接口技术、单片机应用技术等前修课程的学习及电子工程设计I-1的工作基础上,设计、实现一个小型的综合电路系统。使学生了解电路系统设计的基本过程,掌握电路系统设计的一般方法。在系统的设计、实现过程中,掌握软、硬件混合环境下的电路、程序的联合调试方法,提高系统实现中借助软件的电路故障排查能力,积累系统设计的实际经验。

电子工程设计I-3是电子工程设计训练整体过程中有专业针对性的电路、系统设计训练的过程,其具体任务是在电子工程设计I-1、I-2的基础上进行功能扩展设计,进一步提高学生利用专业知识解决具体的工程问题的能力。

目前该阶段具备三个选题:

1.为电子工程设计I-1、I-2完成的电路系统设计红外遥控通道,实现在一定距离内以无线的方式对系统进行管理的功能。

2.为电子工程设计I-1、I-2完成的电路系统设计时钟及打印机控制模块,实现精确的定时控温及参数打印功能。

3.在电子工程设计I-1、I-2完成的电路系统设计基础上设计由PC机与单片机构成的上下位机控制系统,实现由单片机完成测控执行动作,由PC机进行数据处理的测控系统。

本文的毕设选题是在电子工程设计的基础上设置的,是电子工程课程的扩展部分。

4 北京工业大学毕业设计(论文)

1.2课题说明及需求分析 本课题的内容与电子工程设计I-2、I-3有很大的关联。主要完成多位压力数据的实时显示,并对该过程进行控制,最后将所得到的压力数据传送给PC机。从这里可以看出本课题实际上是一个完整的压力数据采集及控制系统的一部分,另外的部分作为其他同学的毕业设计课题。

本课题大致可分为三个相对独立的部分:显示部分,键盘控制部分,串行通信部分。具体设计将在后文中详细介绍。

本课题的设置是为了给进行电子工程设计训练的同学更多的练习,进行不同系统的设计,对提高电子工程设计训练的质量具有实际的意义。

5

北京工业大学毕业设计(论文)

2.开发工具与开发环境

本章将介绍在这次设计中所用到的开发工具和开发环境。以帮助读者了解整个设计过程。

2.1Protel 99SE介绍

在这次的设计中,我选用的电路设计软件是Protel 99SE。它是Protel公司近几年来致力于Windows平台开发的拳头产品。它能实现从电学概念设计到输出物理生产数据,以及这之间的所有分析、验证和设计数据管理。今天的Protel 99SE软件已不是单纯的PCB(印制电路板)设计工具,而是一个系统工具。它覆盖了以PCB为核心的全部设计。 新版本的Protel软件可以毫无障碍的打开Orcad、Pads、Accel(PCAL)、等知名EDA格式的设计文件,以便用户顺利过渡到新的EDA平台。

Protel 99SE的功能共分为4个模块,即原理图设计模块、PCB设计模块(包含信号完整性分析)、电路仿真模块和PLD逻辑设计模块。 在这次的设计中我只用到了Protel 99SE的原理图设计功能,以下对这个功能作简单介绍。图2.1所示为电路原理图的编辑界面。电路图中常见的符号都可以从PLACE(放置)菜单中找到,而各种通用的元件符号,如电阻、电容、标准的物理接口和晶体管等,则可以从原理图库文件中找到。除此之外,用户还可以自己建立电路原理图库文件创建或者编辑库中没有的元件符号。

图2.1 Protel 99SE电路原理图的编辑界面

Protel 99SE中内嵌的原理图设计模块具有以下几个特点:

(1)支持层次设计。有一些设计项目非常庞大,电路图极为复杂。在这种情况下,

6 北京工业大学毕业设计(论文)

可以采取化整为零的方法,将原设计方案分割成各个子模块。用户既可以先设计出各个子模块,再将它们最终组合成总体方案,也可以先用一些模块来表示总体方案,再将各个子模块具体化。也就是说无论是自上而下,还是自下而上,都可用Protel 99SE轻松实现。这对团队协同工作而言是不可缺少的功能。

(2)丰富而又灵活的编辑功能。这其中包括:

? 自动连接功能。在设计原理图时,会用一些专门的自动化特性来加速电气件的连

接。电气栅格特性实现了所有电气件(包括接口、原理图、总线、总线端、网络标号、连线和元器件等)的真正自动连接。

? 对PCB(印制电路板)的即时更新功能。设计工作往往不是一帆风顺的,在设计

PCB板的时候,很可能会发现还需要对电路原理图进行修改,这时候,可以先修

改电路原理图,然后直接利用这一功能实现对PCB板的更新,该操作不会影响已完成的PCB板的编辑工作。

? 交互式全局编辑。在原理图设计系统内,只要在某一固定对象(如元器件、连线、

图形符号和字符等)上双击鼠标左键,就可打开该对象对应的属性对话框。用户可以在该对话框内立即修改对象属性,并可将这一修改扩展到同一类型的所有其他对象,即进行全局修改。

? 便捷的选择功能。设计者可以选择全体,也可以选择某个单项或者一个区域。在

选项中可以取消某项,或者增加选项。对于已选中的对象,不仅可以执行移动和旋转操作,还可以使用标准的Windows命令,如Cut(剪切)、Copy(复制)、Paste(粘贴)和Clear(清除)等。 (3)强大的系统自动化辅助功能。这其中包括: ? 设计检验ERC(电气法则检查)。它提供了ERC(Electrical Rules Check,电气规

则校检)功能,使用户能够检查所设计的原理图存在的问题。

? 数据库连接。用户可以输入和输出原理图中任何对象的任意属性值,可以选择某

些属性(两个属性或全部属性)进行传送,也可以指定输入和输出的范围。一旦所选择的属性值被输出到数据库,就会由数据库管理系统来处理支持的数据库。 ? 自动标注。在设计过程中的任何时候都可以使用自动标注功能(一般是在设计完

成的时候使用),以保证无标号跳过后重复。 (4)元件库的合理管理。这其中包括:

? 访问元件库更方便。在实际使用的过程中,用户不仅可以打开任意数目的库,而且不需要离开原来的编辑环境就可以访问元器件库。

? 修改元器件更容易。在Protel 99中,不仅可以在线浏览元器件,还可以直接从库

编辑器中把元器件放置到设计图纸上。同时,元件库和电路图纸中的元器件可以保持高度的同步。

? 为原理图提供丰富的元器件库。

7 北京工业大学毕业设计(论文)

2.2硬件调试台简介 这次毕设的硬件调试需要用到实验室的实验台。该实验台主要是针对电子工程设计中的温度控制系统设计的,但是对我设计的压力数据采集显示控制系统同样适用。这里对这种调试台作简单介绍。

图2.2硬件调试台上盖板外观

2.2.1上盖板概述

硬件调试台上盖板外观如图2.2所示

1 —— 显示屏:左侧两位显示“温度测控系统”温度控制电压的“模/数转换”数值,右

侧数字显示“温度测控辅助装置仿真电路”恒流输出对应的温度。

2 —— 制冷指示灯 3 —— 制热指示灯 4 —— 手动控温指示灯 5 —— 自动控温指示灯

6 —— 按键0:手动/自动控温切换

8 北京工业大学毕业设计(论文)

7 —— 按键2:手动控温十位增温按键 8 —— 按键1:手动控温个位增温按键 9 —— +5V直流工作电源指示灯 10 —— +12V直流工作电源指示灯 11 —— -12V直流工作电源指示灯 12 —— “温度测控系统”控制键盘 13 —— 电源开关

14 —— 直流供电接线端子:自上至下依次为:+5V直流电源输出、地线、+12V直流电

源输出、地线、-12V直流电源输出

15 —— “数/模转换器”安装接口 16 —— “电源模块”安装接口

17 —— “显示/键盘控制模块”安装接口 18 —— “数据处理模块”安装接口

19 —— “时钟打印扩展模块”安装接口 20 —— “模/数转换器”安装接口 21 —— “通用扩展模块”安装接口 22 —— “变送器”安装接口 23 —— “遥控模块”安装接口

图2.3硬件调试台下概板外观

2.2.2 下盖板概述

硬件调试台下概板外观如图2.3所示 24 —— 电源线接口和保险管 25 —— 串行接口

26 —— CAN总线接口

27 —— 并行接口(打印机接口)

9 北京工业大学毕业设计(论文)

2.3Medwin集成开发环境简介 本次设计中的程序设计和调试都是在Medwin集成开发环境下进行的,这里对该环境作简单介绍

2.3.1Medwin软件介绍

Medwin是万利电子有限公司Insight系列方针开发系统的高性能集成开发环境。集编程、编译/汇编、在线机及模拟调试为一体,VC风格的用户界面,完全支持Franklin/KeilC扩展OMF格式文件,支持所有变量类型及表达式,配合Insight系列仿真器,是开发80C51系列单片机的理想开发工具。Medwin的程序设计及调试环境界面如图2.4

使用Medwin集成开发环境进行软件设计调试的过程简介如下。 第一步,新建文件。使用Medwin的“文件”菜单中单击“新建:选项,新建一个文件。

第二步,编写程序。在新建的文件中编写程序。

第三步,编译/汇编。使用“项目管理”菜单中的“编译/汇编”命令对已经编写好的程序进行汇编。编译/汇编产生的结果出现在Medwin集成开发环境的消息窗口。如果程序存在错误,集成开发环境将自动关联到源程序的错误处,并转到第二步;如果正确,则可进行下一步操作。

第四步,装入代码到仿真器。使用“项目管理”菜单中的“产生代码并装入”命令,将产生的代码装入仿真器此时Medwin集成开发环境进入到调试状态。Medwin集成开发环境的文件窗口左侧出现一列小圆点,表示程序有效运行,既此行存在相应的代码,并且在所运行的代码行的左侧出现黄的的小箭头,表示当前的程序计数器PC。

第五步,输出代码文件。使用Medwin集成开发环境对程序调试无误后,选择“项目管理”菜单中的“输出Intel HEX文件”或“输出Binary文件”选项,产生输出Intel HEX格式文件或输出Binary格式文件,用于对芯片的编程。

图2.4Medwin的程序设计及调试环境界面

10

北京工业大学毕业设计(论文)

2.3.2Medwin配套仿真头介绍

用Medwin集成开发环境进行程序设计时需要用到仿真头,用它代替单片机与电路相连,这里对这种仿真头进行简单介绍。仿针头的示意图如图2.5

设计中所用到的仿真头是TB-40DP1。它是配合Insight系列仿真器用于对80C51系列单片机仿真的仿真连接组件。TB-40DP仿真头组件包含仿真头和振荡器组件两部分。

TB-40DP1仿真头组件与旧版TP-40DP相比,作了简化了跳线设置,振荡频率范围更宽等改进。使用时应该注意以下事项:

? 仿真头组件上的振荡器电源,固定由仿真器提供,不支持由目标系统提供的选择 ? 仿真头组件简化了原来的跳线设置,只设有一组跳线器:

a.短路X1,振荡器时钟输出到目标系统的X1 b.短路X2,振荡器时钟输出到目标系统的X2

? 随同仿真头组件提供的振荡器组件可以与石英晶体构成1-33MHz的振荡器,用户

也可以使用有源晶振作为时钟源。

? 必须在仿真头组件上配接石英晶体作为振荡器,不支持用户目标系统上的石英晶

体作为振荡器。

图2.5方针头示意图

11 北京工业大学毕业设计(论文)

3.系统总体设计

这次设计的数据采集显示系统主要完成以下的功能:对系统采集到的数据进行正确地显示,利用小键盘对数据显示过程进行控制,将采集到的的数据通过串行接口准确的传送给PC机。因此该系统应该被分为以下几个相对独立的部分:系统控制部分(包括硬件电路),数据显示部分(包括硬件电路和相关软件),键盘部分(包括硬件电路和相关软件),串行通信(包括少量硬件电路和软件部分)。各个部分分别完成不同的工作,这样无论是

在设计过程还是在调试过成中,都能保证系统层次清晰,便于排查设计上的错误和缺陷。 各个部分的相互关系如图3.1所示:

数据显

示部分

(压力)数据 系统控 制部分

键 盘

部 分

电平转换 PC机 图3.1系统总体关系图

由图可知,整个系统的中心是“系统控制部分”,其他各部分都要与该部分相连,并且其他各部分的程序全都存储在“系统控制部分”中。数据显示部分和键盘部分都是通过并行方式与系统控制部分相连,PC机与系统控制部分的通信为串行方式。

以下各章将详细介绍各部分的设计过程。

12 北京工业大学毕业设计(论文)

4.系统硬件电路设计及调试

本章将对系统各个部分的硬件电路设计方案以及调试方法进行系统详细的介绍。

4.1系统控制电路设计及调试

4.1.1系统控制电路设计

整个系统控制电路的中心是一块89C51单片机。它是MAC-51系列单片机的全兼容机型。MAC-51系列单片机是功能极强的8位高档单片微机,它既可以用于简单的测控系统,又适用于复杂的测控系统,特别适用逻辑控制。由于它的性价比高,组成应用系统灵活,方便,所以是当前国内普遍选用的机种。89c51的管脚图如图4.1所示:

图4.1单片机管脚图

各管脚功能如下: 1.主电源引脚 VSS——(20脚):电路地电平。 VCC——(40脚):正常运行和编程校检时为+5V电源。

13 北京工业大学毕业设计(论文)

2.外接晶振或外部振荡器引脚 XTAL1——(19脚):接外部晶振的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,此引脚应接地。

XTAL2——(18脚):接外部晶振的另一个引脚。在片内接至振荡器的反相放大器的输出和内部时钟的输入端。当采用外部振荡器时,则此引脚接外部振荡信号的输入。

3.控制、选通或电源复用引脚 RST/VPD ——(9脚):RST即Reset(复位)信号输入端。振荡器工作时,由该引脚输入脉宽2个以上机器周期的高电平时复位单片机。当外部在RST与VCC之间接一个电容(约10?F)和在RST与VSS之间接一个电阻(8.2k?)时,就可实现加电复位功能。VPD为备用电源输入端,即当VCC掉电时,由此引脚提供备用电源,以保持内部RAM信息。 ALE/PROG——(30脚):ALE,允许地址锁存信号输出。当访问外部存储器时,ALE信号的负跳变将P0口上的低8位地址送入锁存器。在非访问外部存储器期间,ALE仍以1/6振荡频率固定不变的速率输出,因而它能作外部时钟或定时信号用。当访问外部数据存储器时,将以1/12振荡频率输出。PROG为编程脉冲输入端,即当选用8751单片机时,对片内程序存储器进行编程时,由此引脚输入编程脉冲。

:访问外部程序存储器选通信号,的电平有效。在访问外部程序PROG——(29脚)

存储器读取指令码时,每个机器周期产生2次PROG信号。在执行片内程序存储器指令时,不产生PROG信号;在访问外部数据存储器时,亦不产生PROG信号。

VPP/EA——(31脚):EA为访问内部或外部程序存储器选择信号。当EA保持高电平时,为访问内部程序存储器;当程序指针PC值超过片内存储器地址(如8051的PC超过0FFFH)时,将自动转向外部程序存储器继续运行;当EA保持低电平时,则只能访问外部程序存储器。VPP为片内EPROM编程电压输入端。在片内EPROM编程时,由此引脚提供编程高电压。

4.多功能I/O口引脚 P0口——(32~39脚):8位漏极开路双向并行I/O端口,当访问外部存储器时,它是地址总线(低8位)和数据总线复用;外部不扩展而单片应用时,则用作双向I/O口用;在进行片内程序校检期间,作指令代码输出用。可带8个LSTTL负载。

P1口——(1~8脚):8位准双向并行I/O端口。在片内编程和程序校检期间,作低8位地址总线用。它可带4个LSTTL负载。

P2口——(21~28脚):8位准双向并行I/O端口。当访问外部存储器时作高8位地址总线用;不作外部功能扩展(单片应用)时,则作准双向I/O口用;在片内程序校检时作高8位地址线用。它可带4个LSTTL负载。

P3口——(10~17脚):具有内部上拉电路的8位准双向并行I/O端口。它还提供特殊的第二功能。它的每一位均可独立定义为第一个功能的I/O口或第二特殊功能。第二特殊功能具体含义为:

P3.0——(10脚)RXD:串行数据接收端。 P3.1——(11脚)TXD:串行数据发送端。

P3.2——(12脚)INT0:外部中断0请求端,低电平有效。

14 北京工业大学毕业设计(论文)

P3.3——(13脚)INT1:外部中断1请求端,的电平有效。 P3.4——(14脚)T0:定时器/计数器0外部事件计数输入端。 P3.5——(15脚)T1:定时器/计数器1外部事件计数输入端。 P3.6——(16脚)WR:外部数据存储器写选通,低电平有效。 P3.7——(17脚)RD:外部数据存储器读选通,低电平有效。

系统控制电路原理图如图4.2:

图4.2系统控制电路原理图

网板插座定义如图4.3:

图4.3网板插座定义

15

北京工业大学毕业设计(论文)

(1)晶振和复位电路

图中的两个22P电容和11M晶振组成单片机外部时钟振荡电路。10?F电容和8.2k电阻组成单片机的复位电路。这两部分电路的功能是使单片机正常工作,是所有单片机系统必须的电路部分。

(2)总线驱动电路

74LS245是三态八进制的总线驱动器,它的管脚图如图4.4所示:

图4.4 74LS245管脚图

图4.5 74LS245芯片的输入输出关系

在使能端E(19脚)为低的情况下,当DIR(1脚)为高电平输入时,数据的传送方向是从A端到B端,当DIR为低电平输入时,数据的传送方向是从B端到A端(如图4.5所示)。在我设计的系统控制电路中,用单片机的写信号(16脚)通过一个非门(74LS04)后输入74LS245的DIR脚,以此控制数据传送方向,当单片机产生写信号时,245将A端数据传送到B端,其余时间将B端的数据送到A端。

因为89C51单片机的P0口是数据与地址复用的I/O端口,所以,为了避免输出错误,在理论上应该另外设计一个数据与地址信号分离的电路。但是在这次设计的中没有用到低8位的地址,所有的寻址均由输出不同的高8为地址信号完成,因此没有另外设计地址/数据分离电路。这一方面是为了降低系统成本,另一方面也使调试工作变得更容易。在这里对数据/地址分离电路做简单介绍。

数据/地址分离电路原理图如图4.6所示:

16 北京工业大学毕业设计(论文)

图4.6数据/地址分离电路原理图

数据与地址信号的分离是通过74LS373芯片实现的。它的当单片机访问外存储器时,ALE/PROG(30脚)产生下降沿,此时P0口输出地址信号。而74LS373在使能端(1脚)为低电平的情况下,LE(11脚)在收到下降沿时,将D0~D7口输入的数据锁存并输送到Q0~Q7口,这样就将地址信号分离了出来。

(3)片选信号产生电路

74LS138是3-8线译码器,它的管脚图如图4.7,输入输出关系如图4.8所示:

图4.7 74LS138管脚图

17 北京工业大学毕业设计(论文)

图4.8 74LS138输入输出关系

在这次的设计中我使用该芯片输出不同的片选信号,以此选通不同的电路完成相应的工作。具体过程是:由单片机P2.5~P2.7(26~28脚)产生不同的地址信号,通过138译码后将不同的端口置低,以此达到选通不同电路的目的。

以上为整个系统控制电路的设计方案。另外需要说明的是,系统串行通信部分的硬件电路部分虽然也在系统控制电路的电路板上,但这部分电路比较小,而且功能相对独立,因此有关这部分的电路介绍放到后文介绍。

4.1.2系统控制电路调试

系统控制电路的调试是在Medwin集成开发环境下进行的。通过编写并运行简单的送数程序观察74LS245的输出是否正确,测量是否有片选信号输出,测量是否有读写信号,判断这部分电路设计是否合理,电路焊接是否正确。

这部分的调试程序如下:

org 0000h DATA equ 6400h

MAIN: MOV A,#0C0H ;寄存器A中存入c0h

MOV DPTR,#DATA ;将地址6400h存入基址寄存器 MOVX @DPTR,A ;将c0h送到地址为6400h的单元中 JMP MAIN ;跳回MAIN

END ;结束

将系统控制电路插到调试台上,通过仿真器运行以上程序。通过示波器观察74LS245的数据输出端11~18脚,测得的结果是从11~18分别为11000000,结果与预期符合,这说明总线驱动电路工作正常,同时也证明了复位和晶振电路连接正确,单片机工作正常,读写信号输出正常。再用示波器察看74LS138的12脚,结果为低,片选信号输出正常。这

18 北京工业大学毕业设计(论文)

样,系统控制电路的调试工作就顺利完成了。

4.2数据显示电路设计及调试

数据显示与键盘电路是放置在同一块电路板上的,总体电路图如图4.9:

图4.9 显示键盘电路原理图

这两部分电路在功能上是相互独立的,所以在这篇论文中,我会对他们进行分别介绍。

4.2.1数据显示电路设计

在这次设计中,我选用了四个共阳数码管完成数据显示功能。其实要完成数据显示功能还有许多种方式,比如选用液晶显示器等,但是考虑到整个系统的设计成本和调试设计难度的原因,我最终选定了使用数码管,示意图如图4.10:

19 北京工业大学毕业设计(论文)

图4.10数码管管脚示意图

整个显示电路的原理图如图4.11所示:

图4.11数据显示电路原理图

图中的74LS273是数据锁存器,将传送给数码管的数据所存后再传给数码管。这样所要显示的数据就能够持续显示再数码管上,而不需要不停的将数据传给数据管了。74LS273的管脚图如图4.12所示,输入输出关系如图4.13所示:

20

北京工业大学毕业设计(论文)

MOV A,B ;行扫值计数器值给A寄存器 MOVC A,@A+DPTR ;取行扫值

MOV DPTR,#ADDR_KEY_WR ;置行扫电路地址 MOVX @DPTR,A ;送行扫值使第一行为0其它行为1

MOV DPTR,#ADDR_KEY_RD ;置列扫电路地址 MOVX A,@DPTR ;读列线状态

ANL A,#1FH ;屏蔽掉无用位 CJNE A,#1FH,QD ;判断是否有列线为0,有为0列线转到QD INC B ;无为0列线,行扫值计数器值B+1 MOV A,B ;行扫值计数器值给A寄存器

CJNE A,#04H,KEY10 ;判断是否已经送完4行行扫值,没送完转KEY10 SJMP KEY ;送完转KEY1,重新执行以上过程。

KEY11:

JB ACC.0,KEY12 MOV DPTR,#LIE1 SJMP KEYQ KEY12:

JB ACC.1,KEY13 MOV DPTR,#LIE2 SJMP KEYQ KEY13:

JB ACC.2,KEY14 MOV DPTR,#LIE3 SJMP KEYQ KEY14:

JB ACC.3,KEY15 MOV DPTR,#LIE4 SJMP KEYQ KEY15:

MOV DPTR,#LIE5 SJMP KEYQ

KEYQ:

MOV A,B

;判断列线1是否为0,不为0转判下列 ;置第1列键值表首址 ;退出

;行扫值计数器值给A寄存器

46 北京工业大学毕业设计(论文)

MOVC A,@A+DPTR ;取出相应键值 MOV KEYRAM,A ;键值送入键值缓存 RET ;退出

LIE1: DB 01H,02H,03H,04H ;第1列键值 LIE2: DB 05H,06H,07H,08H ;第2列键值 LIE3: DB 09H,10H,11H,12H ;第3列键值 LIE4: DB 13H,14H,15H,16H ;第4列键值 LIE5: DB 17H,18H,19H,00H ;第5列键值

DEL0: MOV R7,#02H DEL01: MOV R6,#0H DJNZ R6,$

DJNZ R7,DEL01 RET

DISLED: MOV R1,#35H ;将要数据存储地址给R1

MOV R0,#30H ;将显存地址给R0

MOV DIS1,@R1 ;分别将要显示的数据加载到缓存中

INC R1 MOV DIS2,@R1 INC R1 MOV DIS3,@R1 INC R1 MOV DIS4,@R1

MOV A,@R0 MOV DPTR,#TAB_LED MOVC A,@A+DPTR MOV DPTR,#ADDR_273_1 MOVX @DPTR,A

INC R0 MOV A,@R0 MOV DPTR,#TAB_LED MOVC A,@A+DPTR

47 ;R0(30H)间址内容放入A寄存器

;置显示编码表首址

;取(30H)内容所对应的显示码 ;置显示块1地址

;将显示码送给显示块1

;显示缓存间址+1(31H)

;R0(31H)间址内容放入A寄存器 ;置显示编码表首址

;取(31H)内容所对应的显示码

北京工业大学毕业设计(论文)

MOV DPTR,#ADDR_273_2 MOVX @DPTR,A

INC R0 MOV A,@R0

MOV DPTR,#TAB_LED MOVC A,@A+DPTR

MOV DPTR,#ADDR_273_3 MOVX @DPTR,A

INC R0 MOV A,@R0

MOV DPTR,#TAB_LED MOVC A,@A+DPTR

MOV DPTR,#ADDR_273_4 MOVX @DPTR,A

RET

TAB_LED:

DB 0c0H,0f9H,0a4H,0b0H,099H,092H,082H,0f8H,080H,090H,0FFH;显示编码

COM: MOV SCON,#50H ;设置为串行方式1

MOV TMOD,#20H ;设置定时器/计时器1定时、工作方式2 MOV TH1,#0FDH ;波特率设置为9600 MOV TL1,#0FDH SETB TRL

MOV R7,#04H ;设定要传送的数据个数 MOV R6,#00H ;清空累加寄存器

AGIN: MOV A,#0FFH

LCALL OUT ;发送握手信号 LCALL IN ;接受答复信号 CJNE A,#00H,AGIN ;若收到00H则转到数据发送程序,若不是00H返回AGIN子程序

LCALL TX-DATA

48 ;置显示块2地址 ;将显示码送给显示块2

北京工业大学毕业设计(论文)

TX-DATA:MOV

LCALL MOV MOV SJMP INC CJNE 发送

LCALL

A,R7 OUT

R5,#30H A,@R5 OUT R5 R5,#34H, TX-DATA PD

;发送数据个数

;将要发送的数据的地址给R5 ;发送数据

;地址加1

;若数据传送完毕跳转校检子程序,否则继续

PD: MOV A,R6 ;发送累加校检数据 LCALL OUT

LCALL IN ;接收答复信号

CJNE A,#00H, TX-DATA ;若数据发送正确程序结束,不正确重新发送数据

LCALL END1

OUT: MOV SUBF,A ;发送子程序 OUT1:JBC T1,END1 SJMP OUT1

END1: RET

IN: JBC R1,END2

SJMP IN

END2:MOV A,SUBF RET

END

;接收子程序

运行以上程序,当按下小键盘的1键时,系统显示(压力)数据,当按下5键时,系统将这些数据传送给PC机。

至此,整个系统的设计完成。

49 北京工业大学毕业设计(论文)

设计总结

时至今日,将近四个月的毕业设计基本画上了句号。经过四个月的努力,我设计的“数据采集显示系统”基本完成,对最后的结果还是我还是比较满意的。尽管在细节上还有待进一步完善,但设计中的各部分硬件电路以及相关的软件程序基本能够满足设计的要求。在硬件的设计中,我尽量给出多种设计电路。在软件设计中,我给出了比较详细的注释,并且画出了每一个程序的流程图,希望读者能够更清楚的了解我的设计思路。在设计的过程中我也遇到了许多问题,有的还给我的设计工作造成了很大的麻烦,我在论文中给出了这些问题的解决方法,希望能给做类似设计的读者一定的帮助。

在这次的设计中,我学到很多知识。首先,对MCS-51系列单片机的了解进一步加深了,尤其是对51系列单片机汇编编程方法更加了解。另外,之前从没接触过利用单片机实现与PC机的串行通行,在这次的设计中,我对这一方面的知识已经基本掌握了。另外,做这次的设计之前,我总是将系统的硬件和软件分开来看,把他们看作独立的部分。经过这次设计,我领悟到,硬件与软件的关系很密切,并不能将它们孤立的看待,硬件电路的设计会在很大程度上决定软件设计的思路,反过来,软件设计合理也能够简化硬件设计,减轻硬件设计的压力。还有,在这次设计中我充分的意识到设计工具对设计的帮助作用是不能被替代的。如果没有那些设计及调试软件的帮助,我的这次设计根本不可能完成。

这次的设计并不能称得上是完美的。设计中还存在着很多的不足之处。比如软件算法还没有做到最优化,执行效率还不是很高。同时在硬件的设计中还没有能够考虑到抗干扰之类的问题,尤其是在串行通信这一块,当前的设计只能在较短(几米内)的通信距离内实现正确的通信,一旦加大通信距离就会出现错误,还远远达不到实用的要求。这在今后的工作中要尽量考虑到这样的问题。

这次的设计对我的意义是很大的,锻炼了我设计实际系统的能力,这对我今后的工作有很大的帮助。

最后,这次的设计的完成也为学校的“电子工程设计训练”提供了扩展的构想和可行的方案,具有实际意义。

50

北京工业大学毕业设计(论文)

图4.12 74LS273管脚示意图

图4.13 输入输出关系

从右侧的表中我们可以看出:再74LS273的MR(1脚)处于高电平输入的情况下,若CP(11脚)端收到一个上升沿,此时,74LS273将读取D0~D7(分别为3、4、7、8、13、14、17、18脚)端的数据,并把这些数据锁存在芯片中,同时再将同样的数据相应的由Q0~Q7(分别为2、5、6、9、12、15、16、19脚)端输出,直到CP端再次接收到一个上升沿。

图中数码管与+5V电源之间的300?电阻的作用时是为了防止电流过大,起到限流保护的作用。

图中的74LS32为74LS273的CP端提供上升沿,这个信号是由系统控制电路中的单片机发出的写信号WR和 系统控制电路中的74LS138芯片Y3(12脚,CS4信号)端的输出信号相或所产生的。因此该部分电路的地址为6000H。在最初的是设计中,我是直接由74LS138芯片Y3端的输出信号为CP端提供上升沿的,但是这样的设计不能成功的使74LS273锁存到正确地信号。原因是:系统控制电路中的74LS138芯片的Y3端低电平信号输出是由系统控制电路中单片机P2口发出的地址信号控制的,这也就决定了这个低电平信号的宽度是与单片机发出的地址信号的宽度是相同的。而在51系列单片机中地址信号的宽度要比数据信号的宽度要大,这就导致Y3端输出上升沿时,输入74LS273芯片的数据信号已经结束。为了能使74LS273锁存到正确的数据信号,我将Y3输出的信号与比单片机输出的数据信号宽度要小的写信号WR相或,相或后的信号宽度等于WR信号宽度而小于数据信号宽度,这样就能使74LS273锁存到正确的数据信号了。时序示意图如图4.14

21 北京工业大学毕业设计(论文)

所示:

图4.14 时序示意图

看到这里可能有读者会问:为什么不直接用写信号WR接到CP端呢?这样不是更简单,而且也能使74LS273锁存到数据信号。我这里要提醒读者的是,出现写信号WR时,单片机输出的数据信号不一定就是送给显示电路的显示信号,还有可能是送得其他扩展电路的信号,因此这里不能直接用WR接到CP端。

从显示电路的原理图上可以看出,我是将四个数码管及其相应的74LS273芯片串联了起来,四个部分共用相同的地址。在显示的过程是先输入最后一个(最右侧)数码管要显示的数据,其次输入倒数第二个(右二)数码管要显示的数据,依此类推,最后输入第一个(最左侧)数码管要显示的数据。每输入一个数据,后一个数码管都将显示上一次前一个数码管显示的数据,新输入的数据在第一个数码管上显示,直观上可以看到数据在不断的右移,直到四个数据都输入完毕。这样的显示设计方式可以大大简化显示程序,不用针对不同的显示块设置不同的地址,避免了一些软件错误的出现。同时也能够减少电路接线,防止因焊接出现的线路错误。

还有另一种显示方法,就是将四个显示部分并联在一起,四个部分分别拥有独立的地址。这样的显示方式虽然有一些缺点,比如接线和程序上稍显复杂,但是,它具有显示速度快,能对每一个显示部分进行独立操作等的优点,这虽然在这次设计中这类的小型显示系统上体现的不是很明显, 但是在较大型的显示系统中具有较明显的优势。在这里,我也对这样的显示电路设计方法作简单介绍。

电路原理图如图4.15所示:

22 北京工业大学毕业设计(论文)

图4.15显示电路并列接线方式电路原理图

从图中可以看出,这种显示方案需要增加一块74LS138芯片为不同的显示部分提供片选信号,同时还需要相应的增加三个或门,在接线上要比原来的方案复杂不少。整个系统的成本也将以此增加。

4.2.1数据显示电路调试

显示电路的调试方法是编写并运行调试程序,观察显示电路的显示情况,若显示数据正确则显示电路调试完成。这看上去简单的过程,在实际的调试过程中遇到了许多的问题,究其原因,是我在对电路进行焊接的时候粗心大意,焊接完成后的电路与原理图有一些出入。

下面介绍具体的调试过程。

最初编写的显示调试程序如下:

23 北京工业大学毕业设计(论文)

org 0000h

ad_address1 equ 6400h ;设置显示块地址 MAIN: MOV A,#0c0H ;设定显示数据

MOV DPTR,#dp_address1 ;将显示地址送给基址寄存器 MOVX @DPTR,A ;将要显示的数据给到外存储器

JMP MAIN ;返回MAIN

接好电路并运行程序后,显示数码管上显示的是乱码,并不是我预期的1111。用示波器测量数码管的数据输入端D0~D7,发现根本就没有数据信号输入。再测量系统控制电路中的74LS245芯片的输出端口B0~B7,同样没有数据信号输出。再测量74LS245芯片的输入端口A0~A7,这次测到了正确的信号。从这些现象中可以看出74LS245没有采集到正确的数据信号。分析电路后我认为74LS245芯片的DIR(1脚)端接线不合理。当时我的DIR是直接接在单片机的17脚——RD信号上的,如图4.16所示:

图4.16 最初的系统控制电路图(画出的部分不合理)

这样的接线方式导致当单片机不产生读信号时,无论单片机的P0口发出的是什么信号,74LS245均将这些信号传送给显示电路,导致显示不正确。于是我将电路改成了现在的样子。改线之后再次运行调试程序,显示正确。

下一步,我尝试让四个数码管显示不同的数据,于是编写了调试程序如下:

org 0000h

ad_address1 equ 6400h ;设置显示块地址

MAIN: MOV A,#0c0H ;设定第一个数码管显示的数据

24 北京工业大学毕业设计(论文)

MOV DPTR,#dp_address1 ;将显示地址送给基址寄存器 MOVX @DPTR,A ;将要显示的数据给到外存储器

MOV A,#0f9H ;设定第二个数码管显示的数据

MOV DPTR,#dp_address1 ;将显示地址送给基址寄存器 MOVX @DPTR,A ;将要显示的数据给到外存储器

MOV A,#0a4H ;设定第三个数码管显示的数据 MOV DPTR,#dp_address1 ;将显示地址送给基址寄存器 MOVX @DPTR,A ;将要显示的数据给到外存储器

MOV A,#0b0H ;设定第四个数码管显示的数据 MOV DPTR,#dp_address1 ;将显示地址送给基址寄存器 MOVX @DPTR,A ;将要显示的数据给到外存储器

SJMP $ ;程序结束

运行该程序应有的结果是在显示数码管上显示1234。运行该程序后,显示异常,数据显示不正确,显示部分的74LS273芯片仍然不能截取到正确的数据信号。再次运行循环送同一数据的调试程序,显示正确。我将上面的程序修改,四个数码管送同样的数据,只送一次。运行后结果不正确。这说明传入74LS273的数据是正确的,但是只有多次传送这些数据74LS273才能正确锁存到这些数据,所以我推断问题应该是出在了74LS273芯片的片选信号上,片选信号不正确导致74LS273不能锁存到正确的数据信号。74LS273芯片的片选信号是由74LS32芯片提供的,多以我用示波器测量了74LS32的各个管脚的状态,发现74LS32芯片的地线低电平测不到,检查硬件电路后发现地线虚焊。重焊之后,再次通过第二个调试程序调试电路,发现多次运行中并不是每一次都能正确的显示数据,但同时又能有少数几次显示正确。我又用示波器测量了输入74LS32芯片的WR信号,发现并没有WR信号输入。检查电路之后发现,系统控制电路中的WR和RD信号线漏接了。这是我在电路焊接时的疏忽。接好电线后,再次运行第二个调试程序,显示正常。至此显示电路调试完毕。

4.3键盘电路设计及调试

下面介绍键盘电路设计方案和调试情况。

4.3.1键盘电路设计

键盘电路主要由一块74LS273芯片和一块74LS244芯片组成。具体的电路原理图如图4.17所示:

25

本文来源:https://www.bwwdw.com/article/s10v.html

Top