智能仪器大作业标准答案(王扬)(DOC) - 图文

更新时间:2024-04-06 06:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程名称:数据采集与智能仪器姓 名:学 号:班 级: 王 扬 0121009310608 电信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 using namespace std; int main() {

int i,j; float k; float C[72];

float A[8]={1,1.5,2,2.7,3.3,5.1,6.8,10}; float B[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(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(\ }

数组排序测试源程序 #include using namespace std; int i,b,c,d,e; float a;

int geti(float c[36],float a) {

if(a<=c[35]) {

for(i=0;c[i]

return i-1; }

else return 35; }

int getjk(int c[36],int b) {

return c[b]; }

int main() {

float

B[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}; int

C[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;

cout<

实验主程序

#include\#include\sbit P1_5=P1^5;

unsigned char i,beishu,cod,p1,p2; unsigned char volmax=0; float Ap,f;

char display[3],screen[3]; void delay(unsigned char dly) {

unsigned char j; for(j=dly;j>0;j--); }

char geti(float c[36],float a) {

if(a<=c[35]) {

for(i=0;c[i]

return i-1; }

else return 35; }

void vppfun(unsigned char vol) {

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}; int main()

{

unsigned char volget; int voltcal;

char display[4],screen[4]; LcdInit();

display[1]=-2;

PutStr(0,0,\ 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; //获取P2引脚数值,CD4051选通 P1=p1; P2=p2;

voltcal=f*100;

display[0]= voltcal/100;

display[2]=( voltcal0)/10; display[3]= voltcal; for(i=0;i<4;i++) {

screen[i]=display[i]+48; PutStr(0,0,\ 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

typedef unsigned char uint8; typedef unsigned int uint16; sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^5; sbit BUSY=P0^7;

unsigned char code word1[]={%unsigned char code word2[]={\void delay() { uint16 i,j;

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

void wait() {

P0=0xff; do {

RS=0; RW=1; EN=0; EN=1; }

while(BUSY==1); EN=0; }

void w_dat(uint8 dat) {

wait(); EN=0; P0=dat; RS=1; RW=0; EN=1; EN=0; }

void w_cmd(uint8 cmd) {

wait(); EN=0; P0=cmd; RS=0; RW=0; EN=1;

EN=0; }

void Init_LCD1602() {

w_cmd(0x38); w_cmd(0x0f); w_cmd(0x06); w_cmd(0x01); }

void w_string(uint8 addr_start, uint8 *p) {

w_cmd(addr_start); while (*p != '\\0') { w_dat(*p++); }

p=\ 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.流程图

开始开始系统初始化Y打开串口了吗N得到应答了吗YN打开串口写入待发送数据读取数据发送数据循环显示数据下位机读取数据流程图结束上位机程序流程图

4.程序

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

#include #include

#define uint unsigned int #define uchar unsigned char

uchar code tab[]={0xc0 , 0xcf , 0xa4, 0xb0 , 0x99 ,

0x92 , 0x82 , 0xf8 , 0x80 , 0x990 , 0x88 ,0x83 , 0xc6 , 0xa1 , 0x06 , 0x8e , 0xff};

uchar i,aa; uint flag;

sbit P3_6=P3^6; void delay(uint n) { uint i,j; for(i=0;i

void display(uchar n) { P2=_crol_(P2,1); P0=tab[n]; delay(100); }

void main() { 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);

} }

void ser() interrupt 4 {

RI=0; a=SBUF; b=a; flag=1;}

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

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1 {

public partial class Form1 : Form {

public Form1() {

InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) {

try

{

serialPort1.PortName = comboBox1.Text; serialPort1.Open(); serialPort1.Write(\

System.Threading.Thread.Sleep(200); //1秒 if (serialPort1.ReadExisting() == \ {

pictureBox1.Image=global::WindowsFormsApplication1.Properties.Resources.Connect_Y;

button1.Enabled = false; button2.Enabled = true; button3.Enabled = true; } }

catch {

MessageBox.Show(\连接错误\ } }

private void button2_Click(object sender, EventArgs e) { pictureBox1.Image=global::WindowsFormsApplication1.Properties.Resources.Connect_N; button1.Enabled = true; button2.Enabled = false; button3.Enabled = false;

serialPort1.Close(); }

private void button3_Click(object sender, EventArgs e) {

if (serialPort1.IsOpen == true) {

string x = textBox1.Text; serialPort1.Write(x); } else {

MessageBox.Show(\请先进行连接\ MessageBoxIcon.Warning); } } } }

5结果

本文来源:https://www.bwwdw.com/article/vqwr.html

Top