微机数据采集系统设计(第四组)

  • 格式:doc
  • 大小:319.00 KB
  • 文档页数:18

湖南人文科技学院课程设计报告课程名称:微机接口技术与应用课程设计设计题目:微机数据采集系统设计系别:计算机科学技术系专业:计算机科学与技术专业组别: 09级计科二班第四组组员:刘振辉胡雨婷韩毅张鹏伍佳学号: 09408217、09408218、09408219、09408220、09408221起止日期:2012.6.10 -2012.6.24指导教师: 刘庆目录一、课程设计要求和任务.............. 错误!未定义书签。

二、课程设计题目................................ - 2 -三、课程设计平台环境............................ - 2 -四、任务分配.................................... - 2 -五、设计与实现.................................. - 2 -1. 设计思想 (2)2. 分析 (3)3. 设计 (3)4. 原理图、PCB图、流程图 (4)5. 软件设计程序 (7)6. 设计计算结果 (12)7. 调试与操作说明 (12)六、感想体会................................... - 13 -七、参考文献................................... - 13 -一、课程设计题目第4题:微机数据采集系统设计二、课程设计平台环境MF软件采用系统集成技术,把实验程序的开发工具,故障诊断程序和外设模块演示程序集成在一个环境中,构成一个用户程序集成开发环境IDE (Integrated Development Environment)。

用户程序的编辑、编译、连接、运行和修改的全过程都在一个集成的环境中完成,大大提高了编程的效率。

这个环境目前已有4个版本,每个版本提供了内容丰富的汇编语言和C/C++语言开发软件包,并以全屏幕窗口环境的形式供用户使用。

三、任务分配1.资料收集,文档整理(刘振辉,胡雨婷)2.原理图,PCB图,流程图(韩毅)3. 程序编写(张鹏,伍佳)四、设计与实现1.设计思想首先,根据实验要求,设计A/D数据采集电路,然后,按照电路原理,选用一些元器件,在面包板上分别搭建电路模块。

由于实验中要用到MFID多功能微机实验平台板上的8255A作接口控制信号,所以要用两头带插针的软导线,通过26芯电缆的插孔将8255A的输出信号接入面包板,这样整个的组成了A/D数据采集系统的硬件。

然后,编写A/D 数据采集系统的控制程序,并进行调试。

最后,加入软件控制程序,对接口进行驱动,组成了A/D 数据采集系统。

A/D 数据采集模块、平台板、微机组成的数据采集系统框图如图1所示。

2.分析电路结构形式。

ADC0809的外部特性:ADC 的外部引脚如图1,从图中可以看出 ,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 的上升沿申请中断,或作查询之用。

3. 设计12345678910111213142827262524232221201918171615IN 3IN 4IN 5IN 6IN 7D 3IN 2IN 1IN 0D 0D 1D 2D 4D 5D 6D 7V REF(+)V REF(-)VCCSTART EOCOECLOCK GNDADD A ADD B ADD C ALE ADC0809ADC0808图2 ADC0809引线图1.A/D数据采集模块电路本外设模块采用8855A作为接口电路,其中,PA0-PA7接数据线,其低三位与通道地址线ADDA-ADDC相连,即将通道号写入A口。

另外,转换后的数据从A口读入CPU。

PC0连接START和ALE信号,高电平有效,表示启动转换。

PC1连接输出允许信号OE。

当查询方式时,PC4连接EOC信号,转换过程中,PC4为0,当转换完毕时,PC4为1。

2.设计方法及其原理:通过ADC0809数模转换器将由电位器转动所产生的模拟信号转换为数字信号,然后通过8255A并行接口送入内存并显示在窗口中。

4.原理图、PCB图、流程图(1)原理图如下:(2)PCB图如下:(3)程序流程图5.软件设计程序C语言#include<dos.h>#include<stdio.h>#include<conio.h>int choose_channel(); /*选择通道函数*/void main(void){int ch,n,pa,i,pc4;clrscr();printf("Please input the a/d channel NO(0--7):");ch=choose_channel();printf("During the process, press any key to exit!\n");do{outportb(0x303,0x88); /*初始化8255状态字,A口输出*/outportb(0x300,ch); /*送通道号至A口*/outportb(0x303,0x01); /*使PC0置高发启动信号*/outportb(0x303,0x03); /*pc1置1进行地址锁存*/delay(100);outportb(0x303,0x02); /*pc1=0*/outportb(0x303,0x98); /*重写8255方式字,*//*A口输入,C口低四位输出,C口高四位输入*/outportb(0x303,0x04); /*pc2=0*/do{pc4=inportb(0x302)&0x10;}while(pc4==0); /*查询PC4的状态,直至为高电位,即,转换完成*/outportb(0x303,0x05); /*pc2=1,允许读转换结果*/pa=inportb(0x300)*(0x77)/(0xff); /*读转换结果*/printf("\nTempreture is %d degree \n",pa); /* 显示转换结果*/delay(100);}while(!kbhit()); /*有任意键按下即退出转换*/}int choose_channel(){int c;do{c=getchar(); /*输入通道号*/c=c-48; /*输入通道号*/if(c<0||c>7)printf("\nThe ad channel NO is wrong! \nBe sure it is between 0 and 7!\nPlease input the NO again!:");/*通道号有误时,显示出错信息,并要求再次输入正确的通道号*/else break; /*通道号正确时,跳出循环*/}while(1);return(c); /*返回正确的通道号*/}汇编语言:sseg segment para stack 'stack'dw 200 dup (?)sseg endsdseg segment para public 'data'message db 'If you want to quit A/D convert,please press ''ESC''' db 0dh,0ah,'$'input_message db 'input number of A/D channel'db 0dh,0ah,'$'error_message db 'input incorrect A/D channel!',0dh,0ah db 'please input number of A/D channel again:'db '$'temp db (?)dseg endscseg segment para public 'code'assume ss:sseg,cs:cseg,ds:dsega_dpo proc farstart: mov ax,ssegmov ss,axmov ax,dsegmov ds,axmov ah,9 ;显示提示信息mov dx,seg messagemov ds,dxmov dx,offset messageint 21hmov ah,9 ;提示输入通道号mov dx,seg input_messagemov ds,dxmov dx, offset input_messageinput: mov ah,8 ;检查输入通道号是否有错 int 21hcmp al,'0'jb errorcmp al,'7'ja errorsub al,30hmov temp,al ;若无错,则保存通道号 jmp beginerror: mov ah,9 ;显示出错信息 mov dx,seg error_messagemov ds,dxmov dx, offset error_messageint 21hjmp inputbegin: mov dx,303h ;初始化8255状态字,A口输出mov al,88hout dx,almov dx,300h ;送通道号至A口mov al,tempout dx,almov dx,303hmov al,3hout dx,al ;PC1置1进行地址锁存mov dx,303hmov al,98hout dx,al ;重写8255方式字,A口输入,C口低四位输出,C口高四位输入lop: mov dx,303h ;使PC0置高发启动信号out dx,almov cx,0f00h ;delaylop1: loop lop1mov dx,303hmov al,0hout dx,allopsub: mov dx,302in al,dxand al,10hjz lopsubmov dx,303hmov al,5hout dx,almov dx,300hin al,dxpush axshow: and al,0f0h ;显示高4位 shr al,4cmp al,9ja hexadd al,30hjmp nexthex: add al,37hnext: mov dl,almov ah,2int 21Hpop axand al,0fh ;显示低4位 cmp al,9ja hex1add al,30hjmp next1hex1: add al,37hmov ah,2int 21hmov dl,13 ;向屏幕送回车符mov ah,2int 21hmov dl,10 ;向屏幕送换行符mov ah,2int 21hmov ah,0bh ;检测是否有ESC键按下int 21hinc aljnz lop ;若无键按下,则继续采集quit: mov ax,4c00h ;程序退出int 21ha_dpo endpcseg endsend start6.设计计算结果预设通道号为3,计算结果为:0-1007.调试与操作说明硬件连接:将面包板上的一根导线接在实验平台+12伏的电源上,然后将ADC0809转换器上CLK引脚的一根导线接在实验平台TP3上的CLK处。