微机原理课程设计报告.docx

上传人:b****6 文档编号:7423513 上传时间:2023-05-11 格式:DOCX 页数:27 大小:393.41KB
下载 相关 举报
微机原理课程设计报告.docx_第1页
第1页 / 共27页
微机原理课程设计报告.docx_第2页
第2页 / 共27页
微机原理课程设计报告.docx_第3页
第3页 / 共27页
微机原理课程设计报告.docx_第4页
第4页 / 共27页
微机原理课程设计报告.docx_第5页
第5页 / 共27页
微机原理课程设计报告.docx_第6页
第6页 / 共27页
微机原理课程设计报告.docx_第7页
第7页 / 共27页
微机原理课程设计报告.docx_第8页
第8页 / 共27页
微机原理课程设计报告.docx_第9页
第9页 / 共27页
微机原理课程设计报告.docx_第10页
第10页 / 共27页
微机原理课程设计报告.docx_第11页
第11页 / 共27页
微机原理课程设计报告.docx_第12页
第12页 / 共27页
微机原理课程设计报告.docx_第13页
第13页 / 共27页
微机原理课程设计报告.docx_第14页
第14页 / 共27页
微机原理课程设计报告.docx_第15页
第15页 / 共27页
微机原理课程设计报告.docx_第16页
第16页 / 共27页
微机原理课程设计报告.docx_第17页
第17页 / 共27页
微机原理课程设计报告.docx_第18页
第18页 / 共27页
微机原理课程设计报告.docx_第19页
第19页 / 共27页
微机原理课程设计报告.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理课程设计报告.docx

《微机原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告.docx(27页珍藏版)》请在冰点文库上搜索。

微机原理课程设计报告.docx

微机原理课程设计报告

大连海事大学

课程设计报告

 

课程名称:

微机原理课程设计

成员:

学号

姓名

成绩

 

设计时间:

20年月日至月日

 

目录

设计任务与要求-2-

设计题目-2-

设计目的-2-

要求-2-

组织与实施-3-

设计方案-4-

总体设计-4-

设计原理-4-

采用的新技术-5-

硬件硬件系统框图与说明-6-

详细设计-7-

程序模块流程图-7-

下位机-7-

上位机-8-

PC机-9-

成员分工及工作情况-10-

工作总结-11-

附录-12-

附录1:

系统板结构-12-

硬件资源-12-

附录2:

电路原理图-13-

开关和74LS244-13-

8250接口电路-14-

8255并行接口电路-15-

D/A电路-16-

附录3:

源程序及程序注释-17-

下位机程序:

-17-

上位机程序-22-

远程PC-26-

附录4:

远程PC机显示-27-

参考文献28

设计任务与要求

设计题目

双机数据采集系统设计

设计目的

《微机原理与汇编语言》是一门实践性和实用性都很强的课程,微型计算机的应用已经深入到许多领域,对于计算机及相关专业的学生和从事计算机应用开发的技术人员来说,微机原理、汇编语言和接口技术则是必须掌握的内容。

本次课程设计是在课程学习结束后,为进一步巩固并充分理解灵活运用所学知识,加强综合能力,通过实验设计,加强理解,提高系统设计水平,启发创新思想。

要求

设计一套结构如下图所示的双机数据采集系统。

图中上位机负责向下位机下达命令,并对下位机采集的数据进行处理;下位机则根据上位机的命令对工作现场的各种开关量和模拟量数据进行采集,以某种通信方式传递给上位机,接收上位机根据处理结果下达的命令对现场各种设备实施控制。

扩展和发挥功能中还要用到远程PC机实现远程监控功能。

 

系统实现按从易到难有如下三种要求:

(1)基本功能:

实现数据采集,双机通信和基本形式的数据显示,其中下位机用数码管显示,上位机用数码管或液晶屏显示。

要求实现上位机发送一个启动命令(命令的格式和内容自己定义)给下位机;下位机接收到启动命令后开始采集模拟量数据(用电位器模拟实现1路模拟量),下位机将采集到的模拟量转换成数字量在数码管上实时显示并同时发送给上位机;上位机接收到后在数码管或液晶屏上显示,如果上位机收到的数据大于某个阈值(该值自己设定),则点亮某个LED灯以示警。

(2)扩展功能:

在实现基本功能的基础上,下位机扩展为2路模拟量输入,上位机增加开关量信号输入。

上位机通过开关量信号来选择把收到的其中一路模拟量实时回送给下位机,下位机把收到的回送来的数据进行数模转换后用示波器显示。

进一步要求:

上位机将采集到的数据发送给远程PC机,能在远程PC上显示。

(3)发挥功能:

在实现扩展功能的基础上,在远程PC上以图形化的方式(含动态曲线)显示两路模拟信号、回送的那一路模拟信号和对应的开关量信号。

可自己灵活添加的功能:

上位机通过开关量信号来决定下位机将采集哪一路模拟量(可选择其中任一路,也可选择两路同时采集);双机通信中的数据校验(如采用奇偶校验);其他自己想发挥的功能等。

组织与实施

1)每组3人,合理分工下位机、上位机、远程PC机和撰写设计报告等这几部分的工作。

2)制定适当的通信协议:

包括命令编码,数据编码格式,通信速率、采样周期、校验方式等;

3)模拟信号输入:

可用实验箱上的电位器模拟。

4)每路模拟信号的采样时间为5ms,每秒采样200次。

5)通信接口:

自选(可以是串行接口,也可以为并行接口……)

6)编程语言:

自选(可以是汇编语言,C语言……)

7)撰写设计报告,每组一份,注明每人所书写的部分和所承担的设计任务和工作,提供软件源代码和必要的结果截图。

 

设计方案

总体设计

根据课程要求,总体上上位机与下位机的通信采用了并行的数据传送,因此使用8255并行接口,实现前端与后端的数据传送。

首先上位机给下位机一个脉冲指令,启动下位机,并通过上位机的选择开关控制下位机采集第一使下位机开始模拟信号,下位机通过A/D转换器对采集来的信号进行转换显示在下位机LED显示屏上,同时通过8255进行数据传送至上位机,在上位机LED显示屏上显示,并且上位机通过开关量控制哪一路进行回送。

,而对于回送给下位机的数据,通过D/A转换为模拟量连接示波器显示波形。

对于远程PC机上的波形显示,则通过读取串口数据,然后在屏幕上画出数据的变化波形。

设计原理

上位机与下位机通过8255A并行接口连接,进行数据传送。

通过设置方式2,双机可以用PA0-PA7端口双向传送与接收数据。

另外,PC端口作为控制端口,在读取与发送数据时可以通过查询其相应状态来进行操作。

上位机与下位机中8255连线:

上位机下位机

A口<------------------->A口

C口<------------------->C口

下位机的8253计数器,选择计数器0,方式2,计数间隔为5ms。

其out0端口接在74L244的一个口上,用来查询时间间隔。

下位机的AD转换器ADC0809,其接受两路模拟型号分别在IN0、IN1,转换结束型号EOC连在74L244的一个口,用来查询是否转换结束。

下位机的DA转换器DAC0832接受回传数据,进行DA转换。

上位机与pc机程序中的8250:

应用RS-232C串口实现近距离的串行通信。

数据传送波特率为9600bps,数据格式为8位/每字符,1位停止位,无奇校验。

上位机+P口接在8259A的IR0口,进行中断产生启动信号。

另外还有一个开关控制下位机的数据采集为第几路。

上位机中有一个LED灯,当下位机传来的数据超过给定的阈值,上位机就将该LED灯点亮,以此提示数据超过了阈值。

上位机每次接受到下位机传来的数据后,将其进行显示,然后回传,以及通过串口COM1传送到远程pc。

 

采用的新技术

在远程pc上采用Qt+C++编写串口读写程序,能够方便控制对上位机传送来的数据进行读写。

对接受到的数据能够非常方便的处理,可以按照自己的想法对其进行图形化显示。

用Qt编写的软件可移植性很好,能够适应于不同的平台。

 

硬件硬件系统框图与说明

详细设计

程序模块流程图

下位机

 

下位机在将8259,8255,8253初始化后,就一直等待上位机传来的启动信号。

当有启动信号时,下位机就开始读取开关变量,然后进行AD转换。

接着根据开关变量的值来确定对哪一路数据进行传送,并且在LED管上进行显示。

传送数据后等待接受上位机的回传数据,接受回传数据后,将它进行DA转换。

然后循环上述过程。

上位机

上位机初始化后,立即发送开关变量给下位机,接下来,等待下位机发送数据过来。

接受下位机发过来的数据后,通过8250进行串行数据传送给远程PC。

然后将数据回传给下位机,接着在LED管显示数据。

最后判断阈值与实际数据的大小,进行相应的操作。

 

PC机

 

远程PC机就是不断的检测是否有数据送过来,然后读取COM1串口的数据,进行相应处理,绘制出对应的波形图。

 

成员分工及工作情况

组长

组员

 

工作总结

通过两周的课程设计,组员们都学到了很多知识,最重要的是锻炼了动手能力。

但是也发现了一些不足之处。

首先是对各个知识的综合应用掌握的不扎实,不能将以前的知识完美的结合起来。

比如对8259的中断请求的不太理解,导致出现各种意料之外的错误。

以及在传送两路数据的情况下数据不同步,造成对资源的浪费,等等。

另外,学会了一个项目的设计的大致过程。

了解到了,在设计方案没有明确前,不要着急进行实际的操作。

应该把所有的可能都考虑到,然后折中选择一个最好的方案,然后进行实际操作。

 

附录

附录1:

系统板结构

 

附图1-1系统板结构简图

硬件资源

微处理器模块:

8086CPU及其相关电路。

存储器:

随机存储器RAM40K字节,EPROM40K字节。

CPLD译码电路:

包括系统译码CPLD和用户CPLD两部分,采用ALTERA公司速度最快的高集成度可编程逻辑器件EPM7064SLC44-10。

  可编程并行接口:

采用8255A芯片。

  串行接口:

采用8250芯片,用作与主机通讯或供用户编程实验。

  8279键盘、显示控制器:

六位LED数码显示,LED和键盘可扩展。

  A/D转换电路:

采用ADC0809,8位8通道逐次比较AD转换器,典型转换时间100us。

  D/A转换电路:

采用DAC0832,8位微处理器兼容D/A。

  8253可编程定时/计数器

  8259可编程中断控制器

  8237DMA控制电路

  脉冲产生电路:

采用74LS161计数器,输出5路时钟信号。

  简单I/O口扩展电路:

缓冲驱动器74LS244和输出锁存器74LS273。

  开关量输入输出电路:

8位逻辑电平输入开关,8位LED显示电路。

  一路可调模拟量(电位器)(0…5V)

  单脉冲发生器电路:

可产生正、负脉冲。

  独立开关电源:

~220V供电,+5V,±12V输出。

  独立的LED数码显示、LCD显示电路。

  独立的4X6键盘电路。

附录2:

电路原理图

开关和74LS244

开关量输入电路由8只开关组成,每只开关有两个位置H和L,一个位置代表高电平,一个位置代表低电平。

对应的插孔是:

K1~K8。

开关量输出电路由8只LED组成,对应的插孔分别为LED1~LED8,当对应的插孔接低电平时LED点亮。

附图2-1开关电路原理图

输入缓冲电路由74LS244组成,输出锁存电路由上升沿锁存器74LS273组成。

74LS244是一个扩展输入口,74LS273是一个扩展输出口,同时它们都是一个单向驱动器,以减轻总线的负担。

74LS244的输入信号由插孔IN0~IN7输入,插孔CS244是其选通信号,其它信号线已接好;74LS273的输出信号由插孔O0~O7输出,插孔CS273是其选通信号,其它信号线已接好。

其原理图如下:

附图2-274LS244电路原理图

附图2-374LS273电路原理图

 

8250接口电路

该电路由一片8250,一片MAX232组成,该电路所有信号线均已接好。

原理图如下:

附图2-48250电路原理图

 

8255并行接口电路

该电路由1片8255组成,8255的数据口,地址,读写线,复位控制线均已接好,片选输入端插孔为8255CS,A,B,C三端口的插孔分别为:

PA0~PA7,PB0~PB7,PC0~PC7.电路原理图如下:

附图2-58255电路原理图

 

D/A电路

八位双缓冲D/A实验电路由一片DAC0832。

一片74LS00,一片74LS04,一片LM324组成,该电路中除DAC0832的片选未接好外,其他信号均已接好,片选插孔标号CS0832。

输出插孔标号DAOUT。

该电路为非偏移二进制D/A转换电路,通过调节POT3,可调节D/A转换器的满偏值,调节POT2,可调节D/A转换器的零偏值。

8253定时器/计数器电路:

该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口,地址,读写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。

定时器输出,GATE控制孔对应如下:

OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。

原理图如下:

注:

GATE信号无输入时为高电平。

附图2-60832电路原理图

 

附录3:

源程序及程序注释

下位机程序:

con8259aequ04c0h

con8259bequ04c2h

con8255equ04a6h

data8255aequ04a0h

data8255bequ04a2h

data8255cequ04a4h

con8253equ04d6h

data8253equ04d0h

AD0equ04b0h

AD1equ04b2h

DA0equ04f0h

DA1equ04f2h

data244equ04e0h

con8279equ0492h

dat8279equ0490h

assumecs:

code

codesegmentpublic

org100h

start:

jmpstart1

isStartdb0

fgdb0

data1db0

data2db0

selectiondb0

backdatadb0

ADdw0

statedw0

tempdb0

segcoddb

3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h

5eh,79h,71h

start1:

callinit8259;初始化8259

callinit8255;初始化8255

callinit8253;初始化计数器

;jmploop1

start2:

;接受启动信号

movdx,data8255c

inal,dx

andal,04

cmpal,0

jzstart2

loop1:

zh:

movdx,data244;CS244

inal,dx;读out0,IN1

andal,02h

jnzzh;如果out0=0,zh...

movAD,AD0

calladint

moval,temp

movdata1,al

movAD,AD1

calladint

moval,temp

movdata2,al

movdx,data8255c

inal,dx

andal,01h

jzr0

jmpr1

r0:

moval,data1

jmpdis

r1:

moval,data2

dis:

movtemp,al

movbh,0

movbl,al

calldisp;显示数据

callsend;传送数据

callrevback;接受回送数据

calldaint;进行DA转换

jmploop1

init8259:

cli

movdx,con8259a

movax,13h

outdx,ax;ICW1,ICW4

NEEDED

movdx,con8259b

movax,80h

outdx,ax;ICW2中断类型80h

movax,01

outdx,ax;ICW4

movax,00h

outdx,ax;OCW1,开放所有中断

movax,0

movds,ax

movsi,200h;初始化中断向量表

movax,offsetdealdata;IR0接受数据

movds:

[si],ax

addsi,2

movds:

[si],100h

sti

ret

init8255:

movdx,con8255

moval,0c1h

outdx,al

ret

init8253:

movdx,con8253

moval,037h;计数器0,方式2

outdx,al

movdx,data8253

movax,30000

outdx,al

moval,ah

outdx,al

ret

 

adint:

movdx,AD

outdx,al;启动通道

wait1:

movdx,data244

inax,dx;读EOC

andax,1

cmpax,1

jnewait1;如果EOC=0,waiting....

movdx,AD

inal,dx;读转换结果

movtemp,al

ret

disp:

movdi,offsetsegcod

movax,08h;工作方式,16位,左入

movdx,con8279

outdx,ax

movax,90h

movdx,con8279

outdx,ax;写显示RAM命令,地址自增

movdx,dat8279

pushbx

andbx,0f0h;取高4位

movcl,4

shrbx,cl

adddi,bx

moval,cs:

[di]

movah,0

outdx,ax;写RAM0

nop

nop

movdi,offsetsegcod

popbx

andbx,0fh;取低4位

adddi,bx

moval,cs:

[di]

movah,0

outdx,ax;写RAM1

ret

send:

movdx,data8255c

moval,0fh

outdx,al

movdx,data8255a

moval,temp

outdx,al

nop

ret

revback:

movdx,data8255a

inal,dx

movbackdata,al

movdx,con8255

moval,0ah

outdx,al

nop

nop

moval,0bh

outdx,al

ret

daint:

movdx,DA0

moval,backdata

outdx,al

movdx,DA1

outdx,al;启动

ret

delay:

movcx,0fffh

delay1:

nop

nop

loopdelay1

ret

codeends

endstart

 

上位机程序

con8259aequ04b0h

con8259bequ04b2h

con8255equ04a6h

data8255aequ04a0h

data8255bequ04a2h

data8255cequ04a4h

data244equ04c2h

con8279equ0492h

dat8279equ0490h

data273equ04d0h

VPTequ0afh;阈值

assumecs:

code

codesegmentpublic

org100h

start:

jmpstart1

datadb0;数据

tempdb0;临时量

segcoddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h

start1:

callinit8259;初始化8259

callinit8255;初始化8255

callinit8250;初始化8250

loop1:

 

callswit;发送开关变量

callrevdata;第一路数据

callsendpc;发送数据到远程pc

callbacksend

movbh,0

moval,data

movbl,al

calldisp;显示数据

calljudge;判断阈值

jmploop1

init8259:

cli

movdx,con8259a

movax,13h

outdx,ax;ICW1,ICW4NEEDED

movdx,con8259b

movax,80h

outdx,ax;ICW2中断类型80h

movax,01

outdx,ax;ICW4

movax,00h

outdx,ax;OCW1,开放所有中断

movax,0

movds,ax

movsi,200h;初始化中断向量表

movax,offsetstarting;IR0接受数据

movds:

[si],ax

addsi,2

movds:

[si],100h

sti

ret

init8255:

movdx,con8255

moval,0d0h

outdx,al

ret

init8250:

movbx,0480h

movdx,bx

adddx,6

movax,80h

outdx,ax

movdx,bx

movax,0ch;000ch---9600,clk=4.77MHZ/4;AL=4770000/16/9600/4=8

outdx,ax

adddx,2

movax,0h

outdx,ax

adddx,4

movax,07;nope,8bit,1stop

outdx,ax

movdx,bx

adddx,2;nointerupt

movax,0

outdx,ax

ret

sendpc:

movbx,0480h

movdx,bx

adddx,0ah

inax,dx

testax,20h

jnzs1

jmpsendpc

s1:

movdx,bx

moval,data

outdx,al

ret

;接受数据

revdata:

movdx,data8255a

inal,dx

movdata,al

movdx,con8255

moval,0ah

outdx,al

nop

nop

moval,0bh

outdx,al

ret

backsend:

movdx,con8255

moval,0fh

outdx,al

movdx,data8255a

moval,data

outdx,al

ret

disp:

movdi,offsetsegcod

movax,08h;工作方式,16位,左入

movdx,con8279

outdx,ax

movax,90h

movdx,con8279

outdx,ax;写显示RAM命令,地址自增

movdx,dat8279

pushbx

andbx,0f0h;取高4位

movcl,4

shrbx,cl

adddi,bx

moval,cs:

[di]

mo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2