微型接口技术课程设计2.docx
《微型接口技术课程设计2.docx》由会员分享,可在线阅读,更多相关《微型接口技术课程设计2.docx(16页珍藏版)》请在冰豆网上搜索。
![微型接口技术课程设计2.docx](https://file1.bdocx.com/fileroot1/2022-12/11/f32ad0da-8dda-485a-b309-352a792177fe/f32ad0da-8dda-485a-b309-352a792177fe1.gif)
微型接口技术课程设计2
目录
1需求分析1
1.1引言1
1.2课程实际目的1
1.3课程设计要求和任务1
1.4软硬件运行环境及开发工具1
2概要设计2
2.1实验原理2
2.2硬件模块2
2.3软件模块:
流程图2
3详细设计3
3.1硬件详细说明3
3.1.18255A3
3.1.2ADC08095
3.2原理图5
3.3PCB图7
3.4程序(C++)8
4调试和操作说明9
4.1实验综合调试的最优化步骤9
4.1.1检测实验平台以及配套设备是否完好9
4.1.2调试自己设计的软件控制程序是否符合要求9
4.1.3调试自己设计的硬件控制电路是否达到要求9
4.1.4将设计的硬件控制电路和软件控制程序进行联调10
4.2数据采集实验综合测试10
5课程设计总结与体会10
6致谢11
7参考文献11
1需求分析
1.1引言
数据采集系统在多个领域有着广泛的应用。
数据采集是工、农业控制系统中至关重要的一环,医药、化工、食品、等领域的生产过程中,往往需要随时检测各生产环节的温度、湿度、流量及压力等参数。
同时,还要对某一检测点任意参数能够进行随机查寻,将其在某一时间段内检测得到的数据经过转换提取出来,以便进行比较,做出决策,调整控制方案,提高产品的合格率,产生良好的经济效益。
随着工农业的发展,多路数据采集势必将得到越来越多的应用,为适应这一趋势,作这方面的研究就显得十分重要。
在本毕业设计中对多路数据采集系统作初步和基本的研究。
本系统主要解决的是怎样进行数据采集以及怎样进行多路的数据采集。
1.2课程实际目的
随着计算机技术的发展与普及数字设备越来越多的代替模拟设备外部世界的大部分是以连续变化的物理量的形式出现的,这样就需将连续变化的物理量转化为数字量.本实验的目的就是通过数据采集与远距离传送系统设计与制作,深入了解和掌握利用RS-232或RS-485串行通信标准进行远距离传送的原理与方法.实现数据采集的功能.
1.3课程设计要求和任务
要求:
1)单通道数据采集并显示
2)多通道数据采集并显示
任务:
1)进行微机数据采集系统电路硬件设计,画出电路原理图,PCB图或元器件布线图;
2)安装或焊接元器件;
3)进行数据远距离传送控制程序设计(采用ASM或CPP语言);
4)系统联调,提交一个符合上述1种要求的数据远距离传送的通信控制系统设计。
1.4软硬件运行环境及开发工具
1)PC兼容机
2)Windows 2000
3)MFID多功能微机实验平台(含PCI总线驱动板)
4)MF2KI集成开发环境
5)面包板或外设功能模块板
6)安装或焊接工具
2概要设计
2.1实验原理
数据采集是将被测对象(外部现象,现场)的各种参量(可以是物理量,也可以是化学量,生物量等)通过各种传感元件做适当转换后,再经过信号调整,采样,量化,编码,传输等步骤,最后送到控制器进行数据处理或数据记录的过程,控制器一般有计算机承担,即计算机是数据采集的核心,对采集的数据进行加工处理。
2.2硬件模块
ADC0809以及8255A是接口电路,电位器为外设。
从电位器所选择通道把外界的模拟信号传送给ADC0809,再由ADC0809把模拟信号转换成数字信号,实现数模转换;而8255A就是可编程并行接口,作为CPU和ADC0809之间的通信设备,进行数据的传送。
电位器改变电阻,使电压跟着改变。
2.3软件模块:
流程图
开始
提示出错信息
提示输入通道
Y
通道号有错?
N
提示完毕
保存通道号
通道号送A
地址锁存
在屏幕上显示
N
发启动信号
结束
采集完毕?
Y
图2.1程序流程图
3详细设计
3.1硬件详细说明
3.1.18255A
A.基本特征
a)8255A是一个单+5伏电源供电,有40个引脚双列直插式组件。
b)8255A是一个具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口的接口芯片,它为CPU与AD转换器之间提供TTL电平兼容的接口,PC口还有按位置位/复位的功能。
c)8255A的A口在这里既做输出有做输入来用。
d)电路8255A能适应CPU与I/O接口间的多种数据传送方式的要求,本实验中我们采用的是0方式。
B.引脚说明
a)向数据总线的有:
D0﹏D7:
双向数据线,用于CPU向8255A发送命令、数据和8255A向CPU回送状态、数据.
b)面向地址总线的有:
CS:
片选信号,低电平有效,由系统的高位地址线经I/O端口地址译码器电路产生.CS为低电平时,才能对8255A进行读写操作.当CS高电平时切断CPU与芯片的联系.
A1,A0:
芯片内部端口地址信号,与系统地址总线低位相连,用来寻址8255A内部寄存器.两位地址,可以形成片内4个端口地址.
c)面向控制总线的有:
RD:
读信号,低电平有效.CPU通过执行IN指令使RD有效,即发读信号将数据或状态信号从8255A读至CPU.
WR:
写信号,低电平有效.CPU通过执行OUT指令使WR有效,即发写信号,将命令代码或数据写入8255A.
ERSET:
复位信号,高电平有效.它清除控制寄存器并将8255A的A、B、C三个端口均为输出方式;输出寄存器和状态寄存器被复位,并且屏蔽中断请求;24条面向外设的信号线呈现高阻悬浮状态,一直维持到用方式命令才能改变,使其进入用户所需的工作方式.
d)PA0~PA7:
端口A的输入/输出线;PB0~PB7:
端口B的输入/输出线PC0~PC7端口C的输入/输出线;PA对应的端口地址为300H,PB对应的端口地址为301H,PC对应的端口地址为302H,控制口对应的端口地址为303H。
C.方式命令字书写规定
1
D6
D5
D4
D3
D2
D1
D0
特征位
A组方式
PA
PC4-PC7
B组方式
PB
PC0-PC3
00=0方式
0=输出
0=输出
0=0方式
0=0方式
0=输出
01=1方式
1=输入
1=输入
1=1方式
1=1方式
1=输入
10=2方式
11=3方式
特征位
D.按位置位/复位命令
作用:
指定PC口的某一位(某一个引脚)输出高电平或低电平。
0
D6
D5
D4
D3
D2
D1
D0
特征位
不用(写0)
位选择
1=置位
000=C口0位……111=C口7位
(高电平)
0=复位
(低电平)
3.1.2ADC0809
A.引脚说明
a)有8个模拟量输入端(IN0——IN7),相应设置3跟模拟量通道地址先(ADDA——ADDC),用以编码来选择8个模拟量输入通道。
b)ALE地址锁存允许信号,高电平有效。
当ALE变高,锁存由ADDA——ADDC编码所选中的通道号,将该通道的模拟量接入A/D转换器。
c)D0——D7是8跟数字量输入线,分辨率为8位,带有三态输出锁存器。
d)OE为输出允许信号,高电平有效,读数据时,要使OE置高位,打开三态输出锁存器,把转换的数量送到数据线上。
e)转换启动信号START,高电平有效。
f)转换信号EOC,转换过程中为低电平,转换完毕变成高电平,可利用EOC的上升沿申请中断,或作查询之用。
g)ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
h)0809引脚说明图
图3.10809引脚图
3.2原理图
图3.2硬件电路原理图
3.3PCB图
图3.3电路的PCB图
3.4程序(C++)
//*-------------------------------------------------------*/
//*AskAD.cpp(查询方式A/D采集实验)*/
//*查询方式A/D采集SourceFile*/
//*-------------------------------------------------------*/
#include
#include
#include
intchoose_channel();/*选择通道函数*/
intchoose_channel()
{
intc;
do
{
c=getchar();/*输入通道号*/
c=c-48;/*将读入的ASCII码转换成对应的数字*/
if(c<0||c>7)
printf("\nThechannelNOiswrong!
\nBesureitisbetween0and7!
\nPleaseinputtheNOagain!
:
");
/*通道号有误时,显示出错信息,并要求再次输入正确的通道号*/
else
break;/*通道号正确时,跳出循环*/
}
while
(1);
return(c);/*返回正确的通道号*/
}
voidmain(void)
{
intch,i,eoc;
printf("PleaseinputtheADchannelNo:
");
ch=choose_channel();
printf("Duringtheprocess,pressanykeytoexit!
\n");
do
{
outportb(0x303,0x88);/*初始化8255状态字,A口输出*/
outportb(0x300,ch);/*送通道号至A口*/
outportb(0x303,0x01);/*使PC0置高发启动信号*/
outportb(0x303,0x03);/*pc1置1进行地址锁存*/
delay(50);
outportb(0x303,0x98);/*重写8255方式字,A口输入,C口低四位输出,C口高四位输入*/
do
{
eoc=inportb(0x302)&0x10;
}
while(eoc==0);/*查询PC4的状态,直至为高电位,即,转换完成*/
outportb(0x303,0x05);/*pc2=1,允许读转换结果*/
i=inportb(0x300);/*读转换结果*/
printf("%d\n",i);/*显示转换结果*/
delay(50);
}while(!
kbhit());/*有任意键按下即退出转换*/
}
4调试和操作说明
4.1实验综合调试的最优化步骤
4.1.1检测实验平台以及配套设备是否完好
在关机状态下将PCI总线驱动板插入电脑主板上PCI总线插槽中,并用50芯扁平电缆线将总线信息接入到MFID多功能微机实验平台的50芯扩展总线插座J1。
然后开机,进入MF多功能微机实验集成开发环境,利用平台板上的资源,运行演示程序,检测平台的硬件资源是否正常。
如果正常,则继续下一步的操作;如果不正常,则开启MF中的故障检测软件,对实验平台上的芯片进行针对性检测,直到平台的硬件系统正常为止。
4.1.2调试自己设计的软件控制程序是否符合要求
实验平台硬件完好的情况下,利用平台板上的硬件资源来调试根据实验要求自己编写的程序。
其调试方法是:
采用MF集成开发环境提供的软件工具,点击编译菜单项,对自编的程序进行编译、连接和运行,观察控制程序运行结果是否达到设计要求。
如果达到要求,则继续下一步的操作,否则,对自编的程序进行调试,直至运行结果符合要求为止。
4.1.3调试自己设计的硬件控制电路是否达到要求
将实验平台板上的部分电路换成自己搭建的模块电路,然后运行MF集成开发环境提供的实验演示程序,观察是否能满足硬件电路设计的要求。
如果能满足要求,则进行下一步的操作,否则,进行电路调试,直至满足要求为止。
调试所用到的工具是万用表和示波器。
4.1.4将设计的硬件控制电路和软件控制程序进行联调
将自制的模块电路(在面包板上或PCB电路板上)连接到实验平台相应接口插座处,构成一个包括CPU、接口和被控对象完整的微机控制系统,同时将自己设计的控制程序调入内存,然后点击MF集成开发环境软件中的编译菜单项,进行编译、连接和运行该程序,观察结果是否正确。
如果前面几步是严格按照顺序走下来的,这时应该得到正确的结果,于是一个实验就成功了。
由于本次实验开发所使用的是MFID多功能实验平台提供的硬件平台和集成开发环境软件工具,整个调试过程比较顺利。
因此,建议那些对MFID多功能实验平台不太熟悉的开发人员,多花点时间去了解和熟悉这个实验平台的使用。
4.2数据采集实验综合测试
数据采集实验的调试,按照前面4.1节中四个步骤的顺序进行。
本次数据采集实验调试中的主要问题出在硬件连接部分。
当我用MF集成开发环境提供的演示程序检测自己搭建的数据采集实验电路模块板时,发现一点动静都没有,于是便拆下该电路模块板进行单独检测。
总体的检测思想就是检测自己搭建的实际电路的走线是否与所设计的电路图纸的线路相一致。
用到的工具主要是万用表,用万用表打通断的功能来检测。
结果发现实际电路板中很多地方的走线与电路设计图中不符,几次通断检测之后,终于发现是我把ADC0809和面包板的结构弄错了,重新调整以后,功能模块板的运行结果就正确了。
在检测自编的控制程序时,发现总是出现编译之后不能继续后面的连接工作的情况,仔细观察发现原来在MF集成开发环境中编译、连接和运行某个程序之前都必须首先对该程序窗口进行选定。
解决了这个问题之后,程序便顺利运行并进行数据采集了,但是采集到的数据的最小值总是达不到0,我就用万用表测了一下可变电阻器的阻值,原来是可变电阻器的原因,最后换了一个可变电阻器,所采集到的数据终于可以达到最小值0了.。
5课程设计总结与体会
这次的实验中,我在我们组担任了组长的,这是一次从未有过的经历,我必须安排我们组每天所需要完成的任务,同时自己也要负责我要处理的那部分工作,这对我来说是一次挑战,我安排的工作是刘洪峰用POTEL画图,并且转换成PCB图,罗海玲连接电路,我和廖林锋负责软件方面的工作。
其中搭接电路很容易就完成了,主要就是在接地的地方出了一些问题,我们都不知道怎样才算是接地,经过我们的讨论,弄清楚了这个问题,主要的问题出现在软件方面,先看调试用到的程序,端口地址是首先要搞清楚的,而且首先要把方式命令字写入控制口,在上课的时候老师总是强调的,那时候总是记得,可是当用于实际中的时候,会发现最容易忽略的也是这个,最先的程序没有先把方式命令字写如控制口,结果程序是错误的,可是把它加如到程序里面时,程序就可以运行了,所以我觉得这个非常重要,但是又是我们最容易忽略的地方。
接下来的就是时序图,它是我们整个程序的主导,我的的程序都是根据它来编写的,只有弄清楚了时序图,才弄知道接下来该芯片要如何工作,把时序图研究清楚了,数据采集的工作原理,工作情况也都大体清楚了。
我的感觉最深的是在我学习8255A的时候,我始终都没有搞明白究竟怎么判断8255A的编程命令的工作方式命令字和对PC口的按位操作命令字,而且到底是望哪里送,虽然知道8255A识别是哪个命令,是采用在命令代码中设置特征位的方法,可是总是不理解,经过这次的课程设计,为了要完成程序的设计,我终于找到了我以前问题的答案,我想要是没有这次的课程设计,也许我永远都不知道到底是怎么回事,总是个糊的。
在编程中,我们是用C++来编写的程序,思想其实跟汇编语言编写的是一样的,可是在编写中才知道,真正动手写,与单单的只是理解是完全不一样的,就算理解了再去写程序也会有错误,要一一的排除,才可以得到解决,就算编译通过了,还要与硬件一起测试,我们的程序在没有错误的时候与硬件一起测试,先读的总是一个数据,怎么都不发生变化,后来才发现是我们的循环的位置出了问题,改过来后就好了。
6致谢
感谢我们组的全体同学和所有指导我们的老师和帮助过我们的同学.在全组同学的共同努力和配合下,在老师的指导和和同学的帮助下,我们应用已有的知识,圆满的完成了这次课程设计的任务。
7参考文献
做本实验主要参考的文献:
《微型计算机接口技术及应用》主编:
刘乐善,
《32位微机实验指导书》,
《IBM-PC宏汇编语言程序设计》主编:
王元珍,韩宗芬,
中国科学院希望电脑技术公司《计算机通讯与联网技术》。
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.2
2、课程设计质量与答辩
0.5
3、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学院(系)审核意见:
主任签字:
年月日