智能仪器大作业标准答案王扬.docx

上传人:b****3 文档编号:5420603 上传时间:2022-12-16 格式:DOCX 页数:20 大小:959.98KB
下载 相关 举报
智能仪器大作业标准答案王扬.docx_第1页
第1页 / 共20页
智能仪器大作业标准答案王扬.docx_第2页
第2页 / 共20页
智能仪器大作业标准答案王扬.docx_第3页
第3页 / 共20页
智能仪器大作业标准答案王扬.docx_第4页
第4页 / 共20页
智能仪器大作业标准答案王扬.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

智能仪器大作业标准答案王扬.docx

《智能仪器大作业标准答案王扬.docx》由会员分享,可在线阅读,更多相关《智能仪器大作业标准答案王扬.docx(20页珍藏版)》请在冰豆网上搜索。

智能仪器大作业标准答案王扬.docx

智能仪器大作业标准答案王扬

 

课程名称:

数据采集与智能仪器

*****

学号:

*************

班级:

电信1006

 

《数据采集与智能仪器》课程考核(大作业)

武汉理工大学信息学院

参考书赵茂泰《智能仪器原理及应用》(第三版)电子工业出版社

程德福《智能仪器》(第二版)机械工业出版社

第1章概述

本章要求掌握的内容:

智能仪器分类、基本结构及特点、智能仪器设计的要点

考试题(10分)

1智能仪器设计时采用CPLD/FPGA有哪些优点?

第2章数据采集技术

本章要求掌握的内容:

数据采集系统的组成结构、模拟信号调理、A/D转换技术、高速数据采集与传输、D/A转换技术、数据采集系统设计

考试题(30分)

1设计一个MCS-51单片机控制的程控增益放大器的接口电路。

已知输入信号小于10mv,要求当输入信号小于1mv时,增益为1000,而输入信号每增加1mv时,其增益自动减少一倍,直到100mv为止。

(15分)

评分标准:

正确设计硬件电路图(5分);正确编写控制程序(5分);完成仿真调试,实现基本功能(5分);

2运用双口RAM或FIFO存储器对教材中图2-22所示的高速数据采集系统进行改造,画出采集系统电路原理图,简述其工作过程。

(15分)

评分标准:

正确设计硬件电路图(10分);正确描述工作过程(5分);

第3章人机接口

本章要求掌握的内容:

键盘;LED、LCD、触摸屏

考试题(30分)

1设计8031单片机与液晶显示模块LCM-512-01A的接口电路,画出接口电路图并编写上下滚动显示XXGCXY(6个大写英文字母)的控制程序(包含程序流程图)。

评分标准:

正确设计硬件电路图(10分);正确画出程序流程图(5分);正确编写控制程序(5分);完成仿真调试(10分)

第4章数据通信

本章要求掌握的内容:

RS232C、RS485串行总线,USB通用串行总线,PTR2000无线数据传输

考试题(30分)

1设计PC机与MCS-51单片机的RS232C数据通信接口电路(单片机端含8位LED显示),编写从PC机键盘输入数字,在单片机的6位LED上左右滚动显示的通信与显示程序。

评分标准:

正确设计硬件电路图(5分);正确画出程序流程图(5分);正确编写单片机通信程序(5分);在开发系统上运行,实现基本功能(10分);制作实物,实现基本功能,效果良好(5分)。

第1章概述

考试题(10分)

1智能仪器设计时采用CPLD/FPGA有哪些优点?

FPGA/CPLD芯片都是特殊的ASIC芯片,他们除了ASIC的特点之外,还有以下优点:

(1)随着VLSI工艺的不断提高,FPGA/CPLD的规模也越来越大,所能实现的功能越来越强可以实现系统集成;

(2)FPGA/CPLD的资金投入小,研制开发费用低;(3)FPGA/CPLD可反复的编程、擦除、使用或者在外围电路不动的情况下用不同的EPROM就可实现不同的功能;(4)FPGA/CPLD芯片电路的实际周期短;(5)FPGA/CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计。

FPGA/CPLD适合于正向设计,对知识产权保护有利。

第2章数据采集技术

考试题(30分)

1设计一个MCS-51单片机控制的程控增益放大器的接口电路。

已知输入信号小于10mv,要求当输入信号小于1mv时,增益为1000,而输入信号每增加1mv时,其增益自动减少一倍,直到100mv为止。

(15分)

评分标准:

正确设计硬件电路图(5分);正确编写控制程序(5分);完成仿真调试,实现基本功能(5分);

1硬件电路图

2程序框图

3程序

数组合并测试程序

#include

usingnamespacestd;

intmain()

{

inti,j;

floatk;

floatC[72];

floatA[8]={1,1.5,2,2.7,3.3,5.1,6.8,10};

floatB[8]={1,1.5,2,2.7,3.3,5.1,6.8,10};

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

{

C[i*8+j+1]=A[i]*B[j]/(A[i]+B[j]);

}

}

cout<

for(i=0;i<8;i++)

{C[i+65]=A[i];}

cout<

for(i=0;i<72;i++)

{

for(j=0;j<72-i;j++)

{

if(C[j]>C[j+1])

{

k=C[j];

C[j]=C[j+1];

C[j+1]=k;}

}

}

for(i=1;i<=72;i++)

{

cout<

}

system("pause");

}

数组排序测试源程序

#include

usingnamespacestd;

inti,b,c,d,e;

floata;

intgeti(floatc[36],floata)

{

if(a<=c[35])

{

for(i=0;c[i]

{}

returni-1;

}

elsereturn35;

}

intgetjk(intc[36],intb)

{

returnc[b];

}

intmain()

{

floatB[36]={0.5,0.6,0.6667,0.7297,0.75,0.7674,0.8361,0.8571,0.8718,0.9091,0.9643,1,1.0313,

1.1489,1.1591,1.2289,1.2453,1.3044,1.35,1.4366,1.485,1.5455,1.65,1.6667,1.7654,1.9326,2.0036,

2.126,2.2218,2.4812,2.55,2.9143,3.3775,3.4,4.0476,5};

intC[36]={77,76,75,74,66,73,72,65,71,70,64,55,63,54,62,61,53,60,

44,52,43,51,33,50,42,41,32,40,31,30,22,21,20,11,10,0};

cin>>a;

b=geti(B,a);

c=getjk(C,b);

d=c/10;

e=c%10;

cout<

system("pause");

}

实验主程序

#include"SMC162.h"

#include"TLC549.h"

sbitP1_5=P1^5;

unsignedchari,beishu,cod,p1,p2;

unsignedcharvolmax=0;

floatAp,f;

chardisplay[3],screen[3];

voiddelay(unsignedchardly)

{

unsignedcharj;

for(j=dly;j>0;j--);

}

chargeti(floatc[36],floata)

{

if(a<=c[35])

{

for(i=0;c[i]

{}

returni-1;

}

elsereturn35;

}

voidvppfun(unsignedcharvol)

{

if(vol>volmax)

volmax=vol;

}

FloatcodeAmp[36]={0.5,0.6,0.6667,0.7297,0.75,0.7674,0.8361,0.8571,0.8718,0.9091,0.9643,1,1.0313,1.1489,1.1591,1.2289,1.2453,1.3044,1.35,1.4366,1.485,1.5455,1.65,1.6667,1.7654,1.9326,2.0036,2.126,2.2218,2.4812,2.55,2.9143,3.3775,3.4,4.0476,5};

UnsignedcharCD[36]={77,76,75,74,66,73,72,65,71,70,64,55,63,54,62,61,53,60,44,52,43,51,33,50,42,41,32,40,31,30,22,21,20,11,10,0};

intmain()

{

unsignedcharvolget;

intvoltcal;

chardisplay[4],screen[4];

LcdInit();

display[1]=-2;

PutStr(0,0,"Pleasewait!

");

while

(1)

{

volget=TLC549_GetAD();//AD数据获取

vppfun(volget);//峰值获取

if(P1_5==0)

{

delay(30);

Ap=127.0/(volmax-128);//放大倍数获取

beishu=geti(Amp,Ap);//通过如已知倍数比较获取合适倍数

cod=CD[beishu];//将倍数与引脚关系相对应

f=Amp[beishu];

p1=cod/10;//获取P1引脚数值,CD4051选通

p2=cod%10;//获取P2引脚数值,CD4051选通

P1=p1;

P2=p2;

voltcal=f*100;

display[0]=voltcal/100;

display[2]=(voltcal%100)/10;

display[3]=voltcal%10;

for(i=0;i<4;i++)

{

screen[i]=display[i]+48;

PutStr(0,0,"TheAmpiis:

");

PutChar(i+6,1,screen[i]);

}

}

}

}

4仿真结果

图1波形显示情况

图2最小放大倍数检测

图3最大放大倍数检测

2运用双口RAM或FIFO存储器对教材中图2-22所示的高速数据采集系统进行改造,画出采集系统电路原理图,简述其工作过程。

(15分)

评分标准:

正确设计硬件电路图(10分);正确描述工作过程(5分)

1硬件电路图

2工作过程

IDT7206是IDT公司容量为16K×9的且引脚功能完全兼容的串行FIFO双端口RAM单向的FIFO双端口存储器。

因为是一个FIFO(先入先出)存储器,所以没有绝对地址的概念,只有读指针和写指针的相对位置。

当相对位置为0时,表明存储器空;为所用的存储器的容量时,表明存储器已满。

AD7677为ADI公司研制的16位、1MSPS的高速A/D转换器。

采集系统的原理图如上图所示。

用一片AD7677和两片IDT7206构成了一个16位的、最高采样频率可达1MHz、每组最大采样点数为16K的数据采集系统。

若要增加采集样本长度,只需要换IDT7206即可,其硬件的连接方式基本不变。

在此系统中单片机的作用只是控制何时采样,以及采样完成后对采样数据的处理,在采样过程中,单片机无须任何干预。

至于一次采集多少次,可以由硬件决定,也可以有软件控制。

在中断中,单片机首先关闭采样脉冲信号(使P1.1输出为0),然后把每一点数据分两次分别从

IDT7206(存低位)和IDT7206(存高位)读出,进行处理。

每组数据的数量应该由程序计数判断,当然也可以利用IDT7206的EF标志进行查询判断。

在进行第二组数据的采集前,最好将IDT7206先复位,通过在IDT7206的RS引脚输入一个低脉冲,即在8031的P1.0引脚输出一个低脉冲。

这样可以更充分地保证FIFORAM的读、写指针的稳定。

第3章人机接口

考试题(30分)

1设计8031单片机与液晶显示模块LCM-512-01A的接口电路,画出接口电路图并编写上下滚动显示XXGCXY(6个大写英文字母)的控制程序(包含程序流程图)。

评分标准:

正确设计硬件电路图(10分);正确画出程序流程图(5分);正确编写控制程序(5分);完成仿真调试(10分)

1.接口电路图

2.程序流程图

3.程序

#include

typedefunsignedcharuint8;

typedefunsignedintuint16;

sbitRS=P2^0;

sbitRW=P2^1;

sbitEN=P2^5;

sbitBUSY=P0^7;

unsignedcharcodeword1[]={"XXGCXY"};

unsignedcharcodeword2[]={"XXGCXY"};

voiddelay()

{uint16i,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++);

}

voidwait()

{

P0=0xff;

do

{

RS=0;

RW=1;

EN=0;

EN=1;

}

while(BUSY==1);

EN=0;

}

voidw_dat(uint8dat)

{

wait();

EN=0;

P0=dat;

RS=1;

RW=0;

EN=1;

EN=0;

}

voidw_cmd(uint8cmd)

{

wait();

EN=0;

P0=cmd;

RS=0;

RW=0;

EN=1;

EN=0;

}

voidInit_LCD1602()

{

w_cmd(0x38);

w_cmd(0x0f);

w_cmd(0x06);

w_cmd(0x01);

}

voidw_string(uint8addr_start,uint8*p)

{

w_cmd(addr_start);

while(*p!

='\0')

{

w_dat(*p++);

}

p="WHLGDX";

delay();

}

main()

{

Init_LCD1602();

while

(1)

{

w_string(0x80,word1);

w_cmd(0x01);

w_string(0xc0,word2);

w_cmd(0x01);

}

}

4.结果

第4章数据通信

考试题(30分)

1设计PC机与MCS-51单片机的RS232C数据通信接口电路(单片机端含8位LED显示),编写从PC机键盘输入数字,在单片机的6位LED上左右滚动显示的通信与显示程序。

评分标准:

正确设计硬件电路图(5分);正确画出程序流程图(5分);正确编写单片机通信程序(5分);在开发系统上运行,实现基本功能(10分);制作实物,实现基本功能,效果良好(5分)。

1.通信接口电路

 

2.上位机

3.流程图

4.程序

(1)下位机51单片机程序

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetab[]={0xc0,0xcf,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x990,

0x88,0x83,0xc6,0xa1,0x06,

0x8e,0xff};

uchari,aa;

uintflag;

sbitP3_6=P3^6;

voiddelay(uintn)

{

uinti,j;

for(i=0;i

for(j=0;j<110;j++);

}

voiddisplay(ucharn)

{

P2=_crol_(P2,1);

P0=tab[n];

delay(100);

}

voidmain()

{aa=0;

P2=0xfe;

TMOD=0X20;

SM0=0;

SM1=1;

REN=1;

TR1=1;

EA=1;

ES=1;

TH1=0XFd;

TL1=0XFd;

P3_6=1;

while

(1)

{

if(flag==1)

{

if(flag==1)

{

//发送接受到的数据

ES=0;//关闭串口中断

flag=0;

SBUF='a';

while(!

TI);

TI=0;

ES=1;

}

display(aa);

}

}

voidser()interrupt4

{

RI=0;

a=SBUF;

b=a;

flag=1;}

(2)上位机C#实现程序

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

namespaceWindowsFormsApplication1

{

publicpartialclassForm1:

Form

{

publicForm1()

{

InitializeComponent();

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

try

{

serialPort1.PortName=comboBox1.Text;

serialPort1.Open();

serialPort1.Write("q");

System.Threading.Thread.Sleep(200);//1秒

if(serialPort1.ReadExisting()=="a")

{

pictureBox1.Image=global:

:

WindowsFormsApplication1.Properties.Resources.Connect_Y;

button1.Enabled=false;

button2.Enabled=true;

button3.Enabled=true;

}

}

catch

{

MessageBox.Show("连接错误");

}

}

privatevoidbutton2_Click(objectsender,EventArgse)

{

pictureBox1.Image=global:

:

WindowsFormsApplication1.Properties.Resources.Connect_N;

button1.Enabled=true;

button2.Enabled=false;

button3.Enabled=false;

serialPort1.Close();

}

privatevoidbutton3_Click(objectsender,EventArgse)

{

if(serialPort1.IsOpen==true)

{

stringx=textBox1.Text;

serialPort1.Write(x);

}

else

{

MessageBox.Show("请先进行连接",MessageBoxButtons.OK,MessageBoxIcon.Warning);

}

}

}

}

5结果

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1