一、 课程性质与课程目标

1.1 课程性质

本课程设计是《计算机原理与接口技术》课程的具体应用和实践,其重点在于将理论知识应用于具体的功能实现中。学生通过课程设计,应初步学会利用微机和接口芯片设计应用系统的基本方法;初步掌握微机应用系统中硬件电路的设计方法;掌握利用汇编语言设计和编写应用程序的设计方法;提高调试综合应用程序的能力。通过理论设计和实践操作巩固和加深对理论知识的理解,增强设计微机应用系统和调试应用软件的能力,提高学生的工程素质。

1.2 课程目标

通过本课程的教学,学生应初步具备以下能力:
(1)掌握微机系统的基本原理和相关硬件知识,能够设计满足实际需求的微机系统硬件电路,会搭建硬件电路;
(2)熟练掌握汇编语言的基本知识和技能,并运用于实际微机系统的软件设计中,验证设计的正确性;
(3)能够在设计出满足实际需求的微机系统的基础上,考虑系统在功能上的扩展或性能上的提升,体现创新意识。

二、 设计任务及设计要求

2.1 设计任务

题目 水库水位监视系统
请为某水库设计水位监视系统,系统要求始终持续监视水位的高低变化,当水位超过一定阈值时开始报警,使用扬声器播放报警音并点亮报警灯,当水位恢复正常后,系统将不再报警。

2.2 设计要求

(1) 水位超过最高点90%(E6)时开始报警。可使用滑动变阻器模拟水位信号,使用ADC0809的IN0端监测水位高低。可采用查询法,持续读取水位值,并判断是否超过阈值。
(2) 报警时扬声器发出0.5s 500Hz和0.5s 1kHz交替持续变化的声音,并点亮报警灯;当水位降低而低于阈值时报警声停止并警灯熄灭。利用可编程定时器8253产生音频报警信号,地址范围为8004H-8007H。可分别产生500Hz和1kHz频率的信号,并使用0.5s时长信号去选通并控制持续时间。
(3) 利用8255控制ADC0809的A/D转换和报警控制。地址范围为8000H-8003H
(4) 设计图中应该包含CPU8086、存储器自选、地址译码器74LS138 、ADC0809,8253,8255等完整的连接线路图,图要清晰。

三、 系统总体解决方案

3.1 系统框图

3.2 系统总体解决方案描述

本系统主要包含四个部分,分别是CPU8086最小系统、水位模拟、水位数据采集、报警装置。其中,CPU8086采用74HC373作为地址锁存;使用滑动变阻器模拟水位信号;水位数据采集使用ADC0808采样(因ADC0809在Proteus中无法仿真,原理上ADC0809和ADC0808是一样的。),并将数据送到CPU中进行处理;报警装置包括了扬声器和报警灯,通过8255控制报警灯的亮/灭,通过8255控制8253产生方波信号进而驱动扬声器。各模块经74HC138地址译码,并行I/O接口8255控制,可编程计数器8253产生方波,CPU处理数据及控制外设,从而实现了一个实时水库水位监视系统。

四、 系统硬件设计方案

4.1 系统总原理图

此系统总原理图分成了八个很小的子模块,但其实主要模块是CPU8086最小系统、地址译码、水位模拟、水位数据采集、报警装置,其他模块支持将各个主模块联系到一起。

4.2 各模块原理图

4.2.1 8086最小系统
本模块实现了8086的一个最小系统,使用了74HC373作为地址锁存器。


4.2.2 地址译码
本模块使用74HC138作为地址译码器,八个输出端口的地址范围分别是:
Y0:8000H、8002H、8004H、8006H
Y1:8001H、8003H、8005H、8007H
Y2:8008H、800AH、800CH、800EH
Y3:8009H、800BH、800DH、800FH
Y4:8010H、8012H、8014H、8016H
Y5:8011H、8013H、8015H、8017H
Y6:8018H、801AH、801CH、801EH
Y7:8019H、801BH、801DH、801FH

4.2.3 并行I/O接口
并行I/O接口采用8255A芯片,其地址范围为8000H、8002H、8004H、8006H;8000H选择A端口,8002H选择B端口,8004H选择C端口,8006H选择控制字寄存器,用于设置端口A、B、C的工作方式。本系统将A口设置为方式0输出模式,B口设置为方式0输入模式,PC74作为输出,PC03作为输入。

4.2.4 报警灯
报警灯连接到8255的PC5口,该口在8255中设置为了输出模式,当需要点亮报警灯时,设置PC5口为1即可点亮。加三极管的原因是8255芯片本身输出的电流比较小,如果直接接上发光二极管可能导致发光二极管比较暗,效果不明显,此处加上三极管起到增大电流的作用。

4.2.5 水位模拟
水位模拟使用了一个滑动变阻器,可以调控滑动变阻器的接入值模拟水位的变化。

4.2.6 水位数据采集
水位数据采集使用了ADC0808,为什么没有使用ADC0809的原因是Proteus里面无法实现ADC0809的仿真,原则上两者的工作方式是一致的。将水位模拟器的VIN端接入到ADC0808的IN0,时钟信号接入的是600KHz。软件编程时,先发出启动ADC0808的启动信号(此处对应引脚PA7置1),再撤销启动信号(PA7置0),形成一个启动脉冲,从而达到启动开始转换的目的;然后一直读取EOC引脚(此处对应PC0)观察转换是否完成,如果EOC输出为1,则转换完成,进入下一步,否则,持续读取EOC引脚的值;转换完成后就可以使能OE(输出允许即PC7),进而将转换的数据送到数据总线上以备CPU获取。

4.2.7 方波产生(8253)
使用8253产生方波输出到扬声器,从而发出警报声。8253的地址范围是8008H、800AH、800CH、800EH。8008H是计数器0地址,800AH是计数器1地址,800CH是计数器2地址,800EH是选择控制字寄存器。时钟接入的是50KHz。本系统在程序开头就将三个计数器设置为方式3,计数初值设置为计数器0:C350H、计数器1:0032H、计数器2:0064H,分别产生1Hz、1KHz、500Hz的方波。为实现8255控制的目的,将三个GATE位接到PC4,当PC4输出为1时,启动计数,产生方波;否则,停止计数,不产生方波。

4.2.8 扬声器
将8253产生的方波信号接入到扬声器模块。为了扬声器发出0.5s 500Hz和0.5s 1kHz交替持续变化的声音,接入了一个2输入选通芯片74HC257;计数器0产生的1Hz的方波作为选通信号,计数器1和计数器2产生的1KHz方波和500Hz方波作为输入信号;在1Hz方波为高电平时,接通500Hz信号,在1Hz方波为低电平时,接通1KHz信号;将输出信号经过一个非门后接到三极管,根据三极管的导通与关断使得扬声器工作。
在输入到三极管时接了一个非门的原因是,如不接入,在三个计数器未工作时默认输出为高电平,高电平将会导致图中的OUT接口持续为高电平,那么三极管就会导通,扬声器就会工作,虽然鸣叫声与报警声不同但会影响工作人员的判断;所以接入一个非门,在计数器未工作时,将OUT端口强制置为0,保证扬声器在水位未溢出时不工作。
接入三极管的原因是,扬声器是一个大功率电器,如果直接接入芯片两端,芯片的输出端的电平会被拉低,导致系统无法正常工作,此处加上三极管起到驱动扬声器的作用。

五、 系统软件实现

5.1 程序框图

5.2 源代码

见资源:https://download.csdn.net/download/weixin_44410704/19825829

六、 系统的实现

6.1 原理图编辑

首先一步一步编辑Proteus原理图,比如先实现8086最小系统与可编程I/O口8255的功能,编辑简单程序加载到CPU里面看程序能否正常运行,调试原理图及程序至满足要求;再一步一步添加其他比如8053,蜂鸣器,报警灯等外设;各模块都要调试至满足题目要求才可,每一步都不能出差错;最后实现整个系统的电路原理图。

6.2 程序编写

在上一步编辑原理图调试简单程序的基础上,将那些简单程序综合到一起,根据程序框图形成完整的代码。

6.3 编译调试

在DOS下编译编写好的程序,获得.exe文件,将该文件加载到Proteus的8086CPU里面。运行仿真,观察各模块是否正常工作;如果存在未正常工作的模块,一定要重新调试该模块直到其正常工作为止;如果不存在未正常工作的模块,则观察系统的功能是否已经实现,效果如何,一直调试至系统功能实现且效果满足要求即可。

基于汇编语言及Proteus仿真的CPU8086水库水位监视系统相关推荐

  1. 软件工程:汇编语言和C语言在软件工程的应用,计算机学生必看!

    随着科学技术不断发展,软件工程在社会发展中取得了进一步发展,软件工程专业,也在各大学生根发芽,许多大学的专业教学上也取得了良好的进展.汇编语言与C语言作为两种计算机基础语言,在推动软件工程发展等方面具 ...

  2. linux服务器上装r,linux服务器安装R语言及Rstudio server

    在linux服务器上使用R语言及Rstudio server cat /etc/redhat-release: 查看服务器系统版本 1. R 程序包获取 查看最新版本的下载链接,使用wget获取 wg ...

  3. 逆谐波滤波matlab,基于MATLAB仿真的SPWM逆变电路谐波分析及滤波器设计

    第 7 卷第 3 期 2010 年 9 月 长 沙 理 工 大 学 学 报 ( 自 然 科 学 版 ) Journal of Changsha University of Science and Te ...

  4. pid控制器matlab仿真研究,基于MATLAB仿真的PID控制器设计毕业设计

    基于MATLAB仿真的PID控制器设计毕业设计 基于 MATLAB 仿真的 PID 控制器设计 摘 要 本论文以温度控制系统为研究对象设计一个 PID 控制器.PID 控制是迄今为止最通用的控制方法, ...

  5. python是什么语言汇编_编程语言及python介绍

    编程语言及python介绍 1.编程语言分类 机器语言 优点:执行效率高 缺点:开发效率极低,跨平台性差 汇编语言 优点:较机器语言执行效率稍低 缺点:较机器语言开发效率稍高,仍然很低,跨平台性差 高 ...

  6. 剖析Intel IA32架构下C语言及CPU浮点数机制

    (转载请注名原作者及出处) pdf格式下载:http://www.binghua.com/Soft/Class2/Class5/200409/63.html 剖析Intel IA32架构下C语言及CP ...

  7. R语言生成仿真的3D高斯簇数据集、使用scale函数进行数据缩放、并使用KMeans进行聚类分析、数据反向缩放并比较聚类生成的中心和实际数据的中心的差异、预测新的数据所属的聚类簇

    R语言生成仿真的3D高斯簇数据集.使用scale函数进行数据缩放.并使用KMeans进行聚类分析.数据反向缩放并比较聚类生成的中心和实际数据的中心的差异.预测新的数据所属的聚类簇 目录

  8. 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》

    媒体评论 "这是我读过的最好的一本编程书.我从头到尾逐字逐句地读完了它,可读性真强啊!试问,现在有几本技术书能达到这种程度?" --Amazon 读者评论 "这本书结构清 ...

  9. go二维map_mirrorlang——从0设计二维内存寻址语言及vm(五.内存管理的思考)

    目录 鹏鹏李李:mirrorlang--从0设计二维内存寻址语言及vm [目录]​zhuanlan.zhihu.com 由一段函数开始思考内存布局 func longestPalindrome(s s ...

最新文章

  1. Flash传值给asp页面
  2. 改变人生的32句励志名言
  3. 小学五年级计算机备考方案,小学五年级备考方案(2)
  4. 网易盖楼回复的简易实现
  5. python的web框架哪个最好学_2018年要学习的10大Python Web框架
  6. Android9获取权限闪退,Android 9.0 关于ACTION_CALL无权限导致闪退的问题
  7. Nginx配置中的log_format用法梳理(设置详细的日志格式)
  8. SAP WebIDE编辑器的主题设置
  9. 论文浅尝 | Improved Neural Relation Detection for KBQA
  10. Python正则表达式指南上半部
  11. 小数加分数怎样计算讲解_反渗透阻垢剂的加药量怎样计算?
  12. 搭建 Apache Jmeter 分布式压测与监控
  13. 如何用python创建文件_终于明了python如何创建文件
  14. 四叶草黑苹果启动器:Clover EFI bootloader for Mac
  15. 计量芯片HLW8032在充电桩设备中的典型应用
  16. 正则表达式 正则表达式语法
  17. 计算机电子表格操作步骤,Excel电子表格操作基本步骤.doc
  18. 编写js,使用对象字面量的形式创建一个名字为可可的狗的对象,具体信息如下:
  19. 谈一谈mmkv的使用
  20. 需求分析中适应性怎么写_需求文档,怎么写才不会被打?

热门文章

  1. 【转】C# HttpWebRequest提交数据方式
  2. 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程
  3. 常用linux terminal 命令
  4. EntLib 3.1学习笔记(2) : Data Access Application Block
  5. 拼多多算法笔试2020
  6. 我的世界基岩版json_Minecraft 基岩版 Ubuntu服务器搭建(三)
  7. CCF201609-1 最大波动
  8. 3位数反序数c语言,C语言求助!一个三位数的逆序数,总是编不对
  9. ORA-15096: lost disk write detected的解决与修复
  10. Oracle 21c 新特性:不可变表 Immutable tables 提高安全