#智能仪器原理应用实验指导书.docx

上传人:b****4 文档编号:6874990 上传时间:2023-05-10 格式:DOCX 页数:21 大小:132.87KB
下载 相关 举报
#智能仪器原理应用实验指导书.docx_第1页
第1页 / 共21页
#智能仪器原理应用实验指导书.docx_第2页
第2页 / 共21页
#智能仪器原理应用实验指导书.docx_第3页
第3页 / 共21页
#智能仪器原理应用实验指导书.docx_第4页
第4页 / 共21页
#智能仪器原理应用实验指导书.docx_第5页
第5页 / 共21页
#智能仪器原理应用实验指导书.docx_第6页
第6页 / 共21页
#智能仪器原理应用实验指导书.docx_第7页
第7页 / 共21页
#智能仪器原理应用实验指导书.docx_第8页
第8页 / 共21页
#智能仪器原理应用实验指导书.docx_第9页
第9页 / 共21页
#智能仪器原理应用实验指导书.docx_第10页
第10页 / 共21页
#智能仪器原理应用实验指导书.docx_第11页
第11页 / 共21页
#智能仪器原理应用实验指导书.docx_第12页
第12页 / 共21页
#智能仪器原理应用实验指导书.docx_第13页
第13页 / 共21页
#智能仪器原理应用实验指导书.docx_第14页
第14页 / 共21页
#智能仪器原理应用实验指导书.docx_第15页
第15页 / 共21页
#智能仪器原理应用实验指导书.docx_第16页
第16页 / 共21页
#智能仪器原理应用实验指导书.docx_第17页
第17页 / 共21页
#智能仪器原理应用实验指导书.docx_第18页
第18页 / 共21页
#智能仪器原理应用实验指导书.docx_第19页
第19页 / 共21页
#智能仪器原理应用实验指导书.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

#智能仪器原理应用实验指导书.docx

《#智能仪器原理应用实验指导书.docx》由会员分享,可在线阅读,更多相关《#智能仪器原理应用实验指导书.docx(21页珍藏版)》请在冰点文库上搜索。

#智能仪器原理应用实验指导书.docx

#智能仪器原理应用实验指导书

徐州项目学院

《智能仪器原理及应用》实验指导书

实验一A/D转换实验

一、实验目的:

掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法。

二、实验内容:

1、利用综合实验仪上的0809做A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。

2、编程实现将从0809采集到的数字量转换成实际的模拟电压值,并显示在LED上。

使用编写测程序和万用表同时在测量电压范围内采集不低于50个的电压值,用MATLAB作图对测量结果进行分析比较,分析误差产生的原因。

如何对程序修改能减小误差?

三、实验器材:

1、超想-3000TC综合实验仪1台

2、KEIL仿真器1台

3、连线若干根

4、计算机1台

四、实验原理:

A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。

本实验中采用的转换器为ADC0809,它是一个8位逐次逼近型A/D转换器,可以对8个模拟量进行转换,转换时间为100μS。

其工作过程如下:

首先由地址锁存信号ALE的上升沿将引脚ADDA、ADDB和ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D转换器开始工作;当转换结束时,AD0809使EOC引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。

CLOCK为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。

五、、实验步骤:

1、设定仿真模式为程序空间在仿真器上,数据空间在用户板上,即点击[设置]下的[仿真模式],在RAM区选中用户RAM,ROM区选中系统ROM<注:

本书中的实验除另行说明外,均与此相同)。

把AD0809的零通道09IN0孔用连线接至模拟信号发生器的VIN孔,AD0809的片选信号CS09孔接“译码器”YC2<0A000-0AFFFH)孔,“脉冲源”中的0.5MHZ孔连AD0809的CLOCK孔。

2、编写程序,并编译通过。

本程序使用查询的方式读取转换结果。

在读取转换结果的指令后设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与VIN相对应。

修改程序中错误,使显示值随VIN变化而变化。

六、接线图:

七、思考问题:

1、试编写循环采集8路模拟量输入A/D转换程序;2、以十进制方式显示。

八、实验程序:

程序框图:

OUTBITequ0e101h。

位控制口

CLK164equ0e102h。

段控制口(接164时钟位>

DAT164equ0e102h。

段控制口(接164数据位>

INequ0e103h。

键盘读入口

LEDBufequ40h。

显示缓冲

org0000h

movsp,#60h

movdptr,#0e100h。

8155初始化

mova,#03h

movx@dptr,a

mov40h,#00h。

显示缓冲器初始化

mov41h,#08h

mov42h,#00h

mov43h,#09h

mov44h,#00h

mov45h,#00h

LOOP1:

MOVR7,#40

VI:

lcallDISPLAY

DJNZR7,VI

mova,#00h

movdptr,#0a000h。

0809AD的通道开始转换吗?

movx@dptr,a

movr7,#0fh

loop2:

djnzr7,loop2

movxa,@dptr

movr0,#45h。

拆字

lcallptds

sjmploop1

ptds:

movr1,a

lcallptds1

mova,r1

swapa

ptds1:

anla,#0fh

mov@r0,a

decr0

ret

Delay:

movr7,#0。

延时子程序

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

DISPLAY:

setb0d3h

movr0,#LEDBuf

movr1,#6。

共6个八段管

movr2,#00100000b。

从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#00h

movx@dptr,a。

关所有八段管

mova,@r0

movdptr,#LEDmap

movca,@a+dptr

movB,#8。

送164

DLP:

rlca

movr3,a

movacc.0,c

anla,#0fdh

movdptr,#DAT164

movx@dptr,a

movdptr,#CLK164

orla,#02h

movx@dptr,a

anla,#0fDh

movx@dptr,a

mova,r3

djnzB,DLP

movdptr,#OUTBIT

mova,r2

movx@dptr,a。

显示一位八段管

movr6,#1

callDelay

mova,r2。

显示下一位

rra

movr2,a

incr0

djnzr1,Loop

movdptr,#OUTBIT

mova,#0

movx@dptr,a

clr0d3h。

关所有八段管

ret

LEDMAP:

八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

END

实验二智能仪器人机接口实验

一、实验目的:

1、掌握键盘和显示器的接口方法和编程方法。

2、掌握键盘扫描和LED八段数码管显示器的工作原理。

二、实验要求:

首先,在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。

然后,实现一个两位十进制整数的运算器,能实现输入两位十进制整数,并进行加减乘除运算,将运算结果在LED上显示。

实验程序可分成三个模块。

1、键输入模块:

扫描键盘、读取一次键盘并将键值存入键值缓冲单元。

2、显示模块:

将显示单元的内容在显示器上动态显示。

3、主程序:

调用键输入模块和显示模块。

三、实验器材:

1、超想-3000TC综合实验仪1台

2、KEIL仿真器1台

3、计算机1台

四、实验电路:

这里只是键盘草图,主要说明行、列扫描地址。

列码

(0e101H>

行码

(0e103H>

五、实验说明:

本实验仪提供了一个6×4的小键盘,向列扫描码地址(0e101H>逐列输出低电平,然后从行码地址(0e103H>读回,如果有键按下,则相应行的值应为低,如果无键按下,因为上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键。

在判断有键按下后,要有一定的延时,防止键盘抖动。

列扫描码还可以分时用作LED的位选通信号。

六、实验框图:

主程序框图

七、实验程序:

键盘扫描实验

OUTBITequ0e101h。

位控制口

CLK164equ0e102h。

段控制口(接164时钟位>

DAT164equ0e102h。

段控制口(接164数据位>

INequ0e103h。

键盘读入口

ORG0000H

LJMPSTAR

KEY1:

MOV13H,#06H

MOV12H,#20H

KEY2:

MOVA,12H

CPLA

MOVR7,A

MOVDPTR,#0E101H

MOVA,R7

MOVX@DPTR,A

MOVA,12H

CLRC

RRCA

MOV12H,A

MOVDPTR,#0E103H

MOVXA,@DPTR

MOVR7,A

MOVA,R7

CPLA

MOVR7,A

MOVA,R7

ANLA,#0FH

MOV14H,A

DEC13H

MOVR7,13H

MOVA,R7

JZKEYDIS

MOVA,14H

JZKEY2

KEYDIS:

MOVA,14H

JZTESTKEY5

MOVA,13H

ADDA,ACC

ADDA,ACC

MOV13H,A

MOVA,14H

JNBACC.1,TESTKEY

INC13H

SJMPTESTKEY2

键盘扫描

TESTKEY:

MOVA,14H

JNBACC.2,TESTKEY1

INC13H

INC13H

SJMPTESTKEY2

TESTKEY1:

MOVA,14H

JNBACC.3,TESTKEY2

MOVA,#03H

ADDA,13H

MOV13H,A

TESTKEY2:

MOVDPTR,#0E101H

CLRA

MOVX@DPTR,A

TESTKEY3:

MOVR7,#0AH

LCALLMLOOP

LCALLMLOOP4

MOVA,R7

JNZTESTKEY3

MOVR7,13H

MOVA,R7

MOVDPTR,#0134H

MOVCA,@A+DPTR

MOVR7,A

RET

TESTKEY4:

DB22H。

"

TESTKEY5:

MOVR7,#0FFH

RET

GETKEY:

MOV10H,#20H

MOV0EH,#00H

GETKEY1:

MOVA,0EH

CLRC

SUBBA,#06H

JNCGOON2

MOVDPTR,#0E101H

CLRA

MOVX@DPTR,A

MOVR7,0EH

MOVA,#08H

ADDA,R7

MOVR0,A

MOVA,@R0

MOVR7,A

MOV11H,R7

MOV0FH,#00H

GETKEY2:

MOVA,0FH

CLRC

SUBBA,#08H

JNCGOON1

MOVA,11H

JNBACC.7,KLOOP

MOVDPTR,#0E102H

MOVA,#01H

MOVX@DPTR,A

SJMPKLOOP1

KLOOP:

MOVDPTR,#0E102H

CLRA

MOVX@DPTR,A

KLOOP1:

MOVDPTR,#0E102H

MOVXA,@DPTR

MOVR7,A

MOVA,R7

ORLA,#02H

MOVR7,A

MOVA,R7

MOVX@DPTR,A

MOVDPTR,#0E102H

MOVXA,@DPTR

MOVR7,A

MOVA,R7

ANLA,#0FDH

MOVR7,A

MOVA,R7

MOVX@DPTR,A

MOVA,11H

ADDA,ACC

MOV11H,A

INC0FH

SJMPGETKEY2

GOON1:

MOVDPTR,#0E101H

MOVA,10H

MOVX@DPTR,A

MOVR7,#01H

LCALLMLOOP

MOVA,10H

CLRC

RRCA

MOV10H,A

INC0EH

SJMPGETKEY1

GOON2:

RET

WAIT:

MOVDPTR,#0E100H

MOVA,#03H

MOVX@DPTR,A

MOV08H,#0FFH

MOV09H,#0FFH

MOV0AH,#0FFH

MOV0BH,#0FFH

MOV0CH,#00H

MOV0DH,#00H

WAIT1:

LCALLGETKEY

LCALLMLOOP4

MOVA,R7

JZWAIT1

LCALLKEY1

MOVR6,#00H

MOVR6,#00H

MOVA,R7

ANLA,#0FH

MOVR7,A

MOVA,#24H

ADDA,R7

MOVDPL,A

MOVA,#01H

ADDCA,R6

MOVDPH,A

CLRA

MOVCA,@A+DPTR

MOVR7,A

MOV0DH,R7

SJMPWAIT1

RET

TAB:

Q0124:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H。

Q012C:

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H。

Q0134:

DB00H,01H,04H,07H,0FH,02H,05H,08H。

Q013C:

DB0EH,03H,06H,09H,0DH,0CH,0BH,0AH。

Q0144:

DB10H,11H,12H,13H,14H,15H,16H。

MLOOP:

MOV15H,R7

MLOOP1:

MOVR7,15H

DEC15H

MOVA,R7

JZMLOOP3

MOV16H,#64H

MLOOP2:

MOVA,16H

JZMLOOP1

DEC16H

SJMPMLOOP2

SJMPMLOOP1

MLOOP3:

RET

MLOOP4:

MOVDPTR,#0E101H

CLRA

MOVX@DPTR,A

MOVDPTR,#0E103H

MOVXA,@DPTR

MOVR7,A

MOVA,R7

CPLA

MOVR7,A

MOVA,R7

ANLA,#0FH

MOVR7,A

RET

STAR:

MOVR0,#7FH

CLRA

STAR1:

MOV@R0,A

DJNZR0,STAR1

MOVSP,#16H

LJMPWAIT

END

实验三智能仪器的通信接口设计

一、实验目的:

<1)掌握单片机串行口工作方式的程序设计及简单三线式通讯的方法。

<2)了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。

<3)学习串行口通讯的中断方式程序的编写方法。

二、实验内容:

利用8031单片机串行口,实现实验台和电脑之间的串行通讯。

其中实验台作为发送方,电脑为接收方。

实验台读入按键值,将键值在LED上显示。

同时每次按键按下时发送方将A/D转换数据通过串口发送给电脑,电脑可通过串口调试助手观察。

三、接线图

四、实验步骤

1、把AD0809的零通道09IN0孔用连线接至模拟信号发生器的VIN孔,AD0809的片选信号CS09孔接“译码器”YC2<0A000-0AFFFH)孔,“脉冲源”中的0.5MHZ孔连AD0809的CLOCK孔。

2、将实验台RX1、TD1孔分别连P3.0、P3.1孔。

3、将串口线分别连接实验台串口插槽和实验电脑串口插槽。

4、完成实验台串口通信程序,电脑运行串口调试助手观察串口输出数据。

五、实验程序:

#include

#include

#defineLEDLen6

#definemode0x03。

#defineCAddrXBYTE[0xe100]/*控制字地址*/

#defineOUTBITXBYTE[0xe101]/*位控制口*/

#defineCLK164XBYTE[0xe102]/*段控制口(接164时钟位>*/

#defineDAT164XBYTE[0xe102]/*段控制口(接164数据位>*/

#defineINXBYTE[0xe103]/*键盘读入口*/

#defineCS0809XBYTE[0xa000]

unsignedcharLEDBuf[LEDLen]。

/*显示缓冲*/

codeunsignedcharLEDMAP[]={/*八段管显示码*/

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

}。

voidDelay(unsignedcharCNT>

{

unsignedchari。

while(CNT--!

=0>

for(i=100。

i!

=0。

i-->。

}

voidDisplayLED(>

{

unsignedchari,j。

unsignedcharPos。

unsignedcharLED。

Pos=0x20。

/*从左边开始显示*/

for(i=0。

i

i++>{

OUTBIT=0。

/*关所有八段管*/

LED=LEDBuf[i]。

for(j=0。

j<8。

j++>{/*送164*/

if(LED&0x80>DAT164=1。

elseDAT164=0。

CLK164=CLK164|0x02。

CLK164=CLK164&0xfd。

LED<<=1。

}

OUTBIT=Pos。

/*显示一位八段管*/

Delay(1>。

Pos>>=1。

/*显示下一位*/

}

}

codeunsignedcharKeyTable[]={/*键码定义*/

0x00,0x01,0x04,0x07,

0x0f,0x02,0x05,0x08,

0x0e,0x03,0x06,0x09,

0x0d,0x0c,0x0b,0x0a,

0x10,0x11,0x12,0x13,0x14,

0x15,0x16,

}。

unsignedcharTestKey(>

{

OUTBIT=0。

/*输出线置为0*/

return(~IN&0x0f>。

/*读入键状态(高四位不用>*/

}

unsignedcharGetKey(>

{

unsignedcharPos。

unsignedchari。

unsignedchark。

i=6。

Pos=0x20。

/*找出键所在列*/

do{

OUTBIT=~Pos。

Pos>>=1。

k=~IN&0x0f。

}while((--i!

=0>&&(k==0>>。

/*键值=列X4+行*/

if(k!

=0>{

i*=4。

if(k&2>

i+=1。

elseif(k&4>

i+=2。

elseif(k&8>

i+=3。

OUTBIT=0。

doDelay(10>。

while(TestKey(>>。

/*等键释放*/

return(KeyTable[i]>。

/*取出键码*/

}elsereturn(0xff>。

}

unsignedcharRead0809(>

{

unsignedchari。

CS0809=0。

/*起动A/D*/

for(i=0。

i<0x20。

i++>。

/*延时>100us*/

return(CS0809>。

/*读入结果*/

}

unsignedcharstring[]={"AT89S52Microcomputer\0"}。

unsignedchari=0。

voidmain(>

{

CAddr=mode。

LEDBuf[0]=0xff。

LEDBuf[1]=0xff。

LEDBuf[2]=0xff。

LEDBuf[3]=0xff。

LEDBuf[4]=0x00。

LEDBuf[5]=0x00。

TMOD=0x21。

TH1=0xFD。

TL1=0xFD。

SCON=0x40。

TR1=1。

TI=0。

RI=0。

TH0=0x3c。

TL0=0xb0。

IE=0x82。

TR0=1。

P1=0x00。

while(1>{

DisplayLED(>。

if(TestKey(>>{

LEDBuf[5]=LEDMAP[GetKey(>&0x0f]。

i=0。

SBUF=Read0809(>。

LEDBuf[4]=LEDMAP[Read0809(>&0x0f]。

LEDBuf[3]=LEDMAP[Read0809(>>>4&0x0f]。

/*

while(string[i]!

=0>

{

while(TI==0>。

TI=0。

SBUF=0x5A。

i++。

}

*/

}

}

}

timer0(>interrupt1using1

{

staticunsignedintjitter=0。

TH0=0x3c。

TL0=0xb0。

P1^=0xFF。

jitter++。

if(jitter>=20>{

//while(TI==0>。

//TI=0。

//SBUF=Read0809(>。

jitter=0。

}

}

voidserial(>interrupt4using1

{

unsignedcharRX_char。

TI=0。

if(RI>{

RI=0。

RX_char=SBUF。

SBUF=RX_char。

}

}

附录实验报告基本要求与书写格式

一、实验名称:

说明:

本次实验的名称。

二、实验目的:

说明:

本次实验的主要目的,参考每次的实验指导书。

三、实验环境:

说明:

实验用到的硬件软件环境。

四、实验内容与步骤:

说明:

实现实验目的而进行的实验内容,如果有步骤要求则简要列出步骤。

五、实验总结:

说明:

1.画出硬件连接图和程序流程图。

2.参照本次实验的主程序,重新设计主程序并给出详尽注释。

3.本次实验得到了什么?

收获是什

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2