微机数据采集系统设计与制作课程设计.docx
《微机数据采集系统设计与制作课程设计.docx》由会员分享,可在线阅读,更多相关《微机数据采集系统设计与制作课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
微机数据采集系统设计与制作课程设计
湖北教育学院
课程设计报告
课程名称:
微机接口技术课程设计
设计题目:
微机数据采集系统设计与制作
系别:
计算机科学与工程系
专业:
计算机科学与技术
组别:
15
组长:
汪三明学号:
2003501079
起止日期:
06年9月5日~06年9月10日
指导教师:
张绪辉
教研室主任:
张绪辉
第一章需求分析
1.1本课程设计题目
微机数据采集系统设计与制作.
1.2本课程设计需求分析
1.2.1要求:
1单通道采集数据并显示;
2多通道循环采集数据并显示。
1.2.2任务:
1进行微机数据采集系统电路硬件设计,画出电路原理图,PCB图或元器件布线图;
2安装或焊接元器件;
3进行数据采集系统控制程序设计(采用ASM或CPP语言);
4.系统联调,提交一个满足上述二种要求之一的微机数据采集系统设计。
1.3课程设计思想
首先,根据实验要求,设计A/D数据采集电路,然后,按照电路原理,选用一些元器件,在面包板上分别搭建电路模块。
由于实验中要用到MFID多功能微机实验平台板上的8255A作接口控制信号,所以要用两头带插针的软导线,通过26芯电缆的插孔将8255A的输出信号接入面包板,这样,整个的组成了A/D数据采集系统的硬件。
其次,编写A/D数据采集系统的控制程序,并进行调试。
最后,加入软件控制程序,对接口进行驱动,组成了A/D数据采集系统。
A/D数据采集模块、平台板、微机组成的数据采集系统框图如图1.1。
图1.1A/D数据采集系统示图
1.4软硬件开发环境
MF2KI软件采用系统集成技术,把实验程序的开发工具,故障诊断程序和外设模块演示程序集成在一个环境中,构成一个用户程序集成开发环境IDE(IntegratedDevelopmentEnvironment)。
用户程序的编辑、编译、连接、运行和修改的全过程都在一个集成的环境中完成,大大提高了编程的效率。
这个环境目前已有4个版本,每个版本提供了内容丰富的汇编语言和C/C++语言开发软件包,并以全屏幕窗口环境的形式供用户使用。
1.5开发工具
实验程序的开发工具包括编辑器、编译系统、连接程序和调试程序。
1:
编辑器采用全屏幕多窗口编辑器,复制,粘贴,裁减十分方便。
:
2:
编译系统MF2KI软件包括了C/C++语言和汇编语言两个编译系统,用户可根据自己所熟悉的语言,任选一个来编写程序,并在集成环境中进行程序的编译(汇编)、连接、运行与调试。
3:
连接程序采用TLINK。
4:
调试程序采用TDEBUGGER全屏幕调试程序,直观全面,使用方便。
以上应用程序(实验程序)开发工具,集成在集成开发环境(IDE)中,用户只需在集成开发环境全屏幕窗口中,点击主菜单的相应菜单项,即可随时启用。
第二章概要设计
2.1实验平台并行接口插座及各功能模块
2.1.1实验平台并行接口插座
并行接口插座有26根信号线,其中24根信号线是开自8255的三个端口(A口、B口和C口),输出有锁存功能,输入有缓存功能。
可作三个独立的8位传送,也可作16位传送,为用户提供设计各种并行设备控制模块的并行接口电路。
J5还包括了+5V电源线和地线,其信号线分布如图2.1所示。
2.1.2可编程并行接口芯片8255A
2.1.2.18255A的基本特性
8255A是个具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口的接口芯片,它为Intel系列CPU与外部设备之间提供TTL电平兼容的接口,如打印机、A/D、D/A转换器、键盘、步进电机以及需要同时两位以上信息提供传送的一切形式的并行接口。
并且它的PC口还具有按位置位/复位功能,为按位控制提供了强有力的支持。
8255A能适应CPU与I/O接口之间的多种数据传送方式的要求。
8255A芯片内部主要由控制寄存器、状态寄存器和数据寄存器组成。
2.1.2.28255A的外部引线
8255A是一个单+5V电源引脚,40个引脚的双列直插式组件,其外部引线如图2.2所示:
它作为接口电路的8255A具有面向CPU和面向外设两个方向的连接能力。
因此,它的引脚分成两部分。
图2.126脚并行输入输出接口图
图2.28225A外部引脚图
系统总线的连接信号
①面向数据总线的有:
D0-D7:
双向数据线,用于CPU向8255A发送命令、数据和8255A向CPU回送状态、数据。
②面向地址总线的有:
CS:
选片信号,低电平有效,由系统的高位地址线经I/O端口地址译码电路产生。
CS为低电平时,才能对8255A进行读写操作。
当CS为高电平时,切断CPU与芯片的联系。
A1,A0:
芯片内部端口地址信号,与系统地址总线低位相连用来寻址8255A内部寄存器。
两位地址,可形成片内4个端口地址。
③面向控制总线的有:
RD:
读信号,低电平有效。
CPU通过执行IN命令使RD有效,即发读信号将数据或状态信号从8255A读至CPU。
WR:
写信号,低电平有效。
CPU通过执行OUT命令使WR有效,即发写信号,将命令代码或数据写入8255A。
RESET:
复位信号。
它清除控制寄存器并将8255A的A、B、C三个端口均置为输入方式;输出寄存器和状态寄存器被复位,并且屏蔽中断请求;24条面向外设的信号线呈现高阻悬浮状态。
这种势态一直持续到用方式命令才能改变,使其进入用户所需的工作方式。
外部设备的连接信号
PA0-PA7:
端口A的输入/输出线。
PB0-PB7:
端口B的输入/输出线。
PC0-PC7:
端口C的输入/输出线。
这24根信号线均可用来连接I/O设备和传送信息。
其中,A口和B口只作为输入/输出的数据口用,尽管有时也利用它们从I/O设备读取一些状态信息,如打印机的“忙(Busy)”状态信号、A/D转换器的“结束信号(EOC)”状态信号,但对于A口和B口来说,都是作8255A的数据口读入,而不是作8255A的状态口读入的。
A口和B口作数据输入/输出时,是8位一起行动的,即使是只用到其中的某一位,也要同时输入输入/输出8位。
C口除了作数据口以外,还可以作状态口、作专用(固定)联络(握手)信号线和作按位控制用。
这些作用与8255A的工作方式有关。
C口作数据口时,它是把8位分成高4位和低4位两部分,高4位PC4-PC7与A口一起组成A组,低4位PC0-PC3与B口一起组成B组。
因此,C口作数据口输入输出时,是4位一起行动,即使只用到其中的某1位,也要4位一起输入或输出。
2.1.2.38255A的编程命令
8255A的编程命令包括工作方式和对PC口的按位操作命令。
由于这两个命令都是送到8255A的同一个命令端口,故为了让8255A能识别是哪个命令,采用在命令代码中设置特征位的方法。
若写入的命令字的最高位D7=1,则是工作方式命令;若写入的命令字D7=0,则是PC口的按位置位/复位命令。
这两个命令字的作用及格式为:
1.方式命令
作用:
指定8255A的工作方式及其方式下3个并行端口(PA、PB、PC)的功能,是作输入还是作输出。
格式:
8位,其中最高位是特征位,一定要写1,其余各位的定义如下,应用户的设计要求填写1或0。
从方式命令的格式可知,A组有3种方式(0方式、1方式、2方式),而B组只有2种工作方式(0方式、1方式)。
端口PC分成2部分,上半部属A组,下半部属B组。
所有3个并行端口,置1指定为输入,置0指定为输出。
利用工作方式命令的不同代码组合,可以分别选择A组和B组的工作方式和各端口是输入还是输出。
2.置位/复位命令
作用:
指定PC口的某一位(某一个引脚)输出高电平或低电平。
格式:
8位,其中最高位是特征位,一定要写0,其余各位的定义如下,应根据用户的设计要求填写1或0。
利用按位置位/复位命令可以使PC口的8根线中的任意1根置成高电平输出或低电平输出。
2.2A/D数据采集模块设计
2.2.1要求
以PC机为控制器,采用查询方式进行8通道数据采集,采集的数据在屏幕上显示。
为此,采用ADC0809作A/D转换器.
2.2.2分析
要实现上述设计要求,至少需要考虑:
被控对象ADC0809的特性、接口电路结构形式。
ADC0809的外部特性:
ADC的外部引脚如图2.3,从图中可以看出,
图2.3ADC0809外部引脚图
ADC0809有八个模拟量输入端(IN0-IN7),相应设置3根模拟量通道地址线(ADDA-ADDC),用以编码来选择8个模拟量输入通道。
并且还设置1根地址锁存允许信号ALE,高电平有效。
当ALE变高,锁存由ADDA-ADDC编码所选中的通道号,将该通道的模拟量接入A/D转换器。
ADC0809的分辨率为8位,有8根数字量输出线(D0-D7),带有三态输出锁存器。
并设置了1根输出允许信号OE,高电平有效。
当读数据时,要使OE置高,打开三态输出锁存器,把转换的数字量送到数据线上。
ADC0809的转换启动信号是START,高电平有效。
转换结束信号EOC,转换过程中为低电平,转换完毕变为高电平,可利用EOC的上升沿申请中断,或作查询之用。
2.2.3设计
1.A/D数据采集模块电路
本外设模块采用8855A作为接口电路,其中,PA0-PA7接数据线,其低三位与通道地址线ADDA-ADDC相连,即将通道号写入A口。
另外,转换后的数据从A口读入CPU。
PC0,PC1分别连接START和ALE信号,高电平有效,表示启动转换。
PC2连接输出允许信号OE。
当查询方式时,PC4连接EOC信号,转换过程中,PC4为0,当转换完毕时,PC4为1。
2.3设计方法及其原理
通过ADC0809数模转换器将由电位器转动所产生的模拟信号转换为数字信号,然后通过
8255A并行接口送入内存并显示在窗口中.
第三章详细设计
3.1硬件设计
数据采集系统原理图如图示3.1
数据采集系统PCB图如图示3.2
我负责连接电路图是这样的:
首先根据ADC0809的图示说明,将8255A与ADC0809间的对应引脚连接好,然后将8255A和ADC0809的VCC 和GND分别接到+5V和接地上.接着把一根导线用于接+12V电压,从相同电压引脚连出一根导线到降压电阻上,从降压电阻分三根导线,分别与电容C4,三极管中央(字体面向自己从左数第二脚),ADC0809处REF+处,并将REF-接地.同时将三极管第三脚接地,第一脚接电容C3.最后从ADC0809CLK处连出一根导线准备接平台板上TP3处CLK.
3.2软件设计
软件设计流程图如图示3.3
我设计的程序思路是这样的:
根据ADC0809时序图,先启动地址锁存允许信号ALE为高电平(即PC1=1),锁存通道号,并将通道的模拟量接入A/D转换器。
然后启动转换启动信号START为高电平(即PC0=1).经过一段时间延时后,使ALE为低电平(即PC1=0)并置输出允许信号OE为低电平。
在转换结束信号EOC为低电平时,A/D转换器将模拟量转换为数据。
当EOC=1时,转换结束,此时使OE为高电平,打开三态输出锁存器,把转换的数字量送到数据线上,并从A口读入。
软件设计程序见文件Caex.cpp
Caex.cpp:
#include
#include
#include
intchoose_channel();
voidmain(void)
{
intch,pa,pc4;
clrscr();
//清屏函数;
printf("Pleaseinputthea/dchannelNO(0--7):
");
ch=choose_channel();//调用函数;
printf("Duringtheprocess,pressanykeytoexit!
\n");
do
{
outportb(0x303,0x88);//是向指定端口写一个字节;
outportb(0x300,0x0);//A口清零;
outportb(0x300,ch);//向A口送通道号;
outportb(0x303,0x01);//pc0=1;转换启动信号有效;
outportb(0x303,0x03);
//pc1=1;地址锁存信号有效;锁存通道号;
delay(100);
outportb(0x303,0x02);//pc1=0;地址锁存信号无效;
outportb(0x303,0x98);
//8255A再次初始化;C口高4位输入,低4位输出;
outportb(0x303,0x04);//pc2=0;输出允许信号无效;
do
{
pc4=inportb(0x302)&0x10;//从指定端口读一个字节;
}while(pc4==0);
outportb(0x303,0x05);//pc2=1;
pa=inportb(0x300);//A口读数据;
printf("0x%x",pa);
delay(100);
}while(!
kbhit());//函数名:
kbhit检查当前按下的键;
}
intchoose_channel()
{
intc;
do{
c=getchar();
c=c-48;
if(c<0||c>7)printf("\nTheadchannelNOiswrong!
\nBesureitisbetween0and7!
\nPleaseinputtheNOagain!
:
");
elsebreak;
}while
(1);
return(c);
}
设计计算结果:
预设通道号为3,计算结果为:
00—FF
图示3.1数据采集系统原理图
图示3.2数据采集系统PCB图
第四章调试与操作说明
4.1硬件连接
将面包板上的一根导线接在实验平台+12伏的电源上,然后将ADC0809转换器上CLK引脚的一根导线接在实验平台TP3上的CLK处。
最后用26脚的电缆连接平台板和面包板.
4.2软件调试
在MF2KI中打开程序Caex.cpp,进行编译及运行,在DOS窗口中显示调试结果。
通过输入预设通道号3显示采集的数据,然后转动电位器,在屏幕上显示采集到的数据在变化,当最大时结果为FF,最小时结果为00。
当与程序计算结果吻合时,调试成功。
第五章课程设计总结与体会
通过该课程设计,初步了解了做一个课程设计的一般过程.应该说,使我初步掌握了一种解决问题的方法.在设计开始,我很茫然,虽然有指导手册,但是却不敢去做.因为我对电路图看不懂,对面包板不知如何去接线,在我面前是完全陌生的.随后看到同学收集资料,我也跟着去做,事实上这些资料在以后当中根本就没有使用到.5号一天实际上没有做什么有效的事情.6号学习软件,在摸索中又度过了一天.在浪费2天后,我才逐渐把思路理清,将小组分好工,确定好设计思路.7号我才真正开始搞设计.随之而来的是对原理图的探索,对搭建电路的摸索.这个过程在设计中是最烦琐的,向同学请教面包板的问题,看书找原理.最终搭好硬件,在调试却出了问题.那时心情非常烦躁,仔细检查接线,重新了解元器件的功能,终于发现了是三极管接错了.当硬件连接成功后,那种成就感让我感到自豪.通过搭硬件,让我明白,做事前先要了解要干什么,这些器件的原理和功能要搞清楚,特别是做事要认真.随后的软件编写当中也遇到了不少问题,例如硬件可以在汇编程序当中通过,却无法在我编写的C语言程序中通过.虽然我是按照时序图编写的,在老师的帮忙检查中也没问题.但却忽略了汇编的执行过程比C语言快的多,从而在设置上出了问题.在老师的帮助下,进一步搞清楚了原理.在另一方面,做为一名组长,对于如何根据组员的不同情况分配任务和如何协调组员感触良深.组员的兴趣不同,各自的时间安排也不同,可以说,我尽可能帮他们安排好又不影响设计进程是相当辛苦的.总而言之,通过设计过程,加深了对汇编语言,C语言,接口等相关知识的理解和运用;对解决问题也有了一般的方法.可以说是获益良多.
第五章致谢!
完成该课程设计,少不了老师的指导和组员的配合.在此对他们表示感谢!
感谢张绪辉老师,孙延维老师对我的指导!
感谢不知名的师兄讲解Protel软件!
感谢维修实验室的平台板的维修员帮我指出程序中的错误!
感谢程佳,马红庭,李文惠,王磊的辛苦工作,使我们这一组能够完成设计!
第六章参考文献
1MFID微机实验平台32位微机实验指导书。
华中科技大学计算机学院,武汉市豪申光电新技术有限公司。
引用79——80页。
2编者刘乐善,欧阳星明,刘学清。
微型计算机接口技术及应用。
2005年8月第15次印刷。
华中科技大学出版社。
2000年4月第1版。
引用137——142页,279——280页。
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.2
2、课程设计质量与答辩
0.5
3、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学院(系)审核意见:
主任签字:
年月日