中山大学左明老师单片机实验.docx

上传人:b****1 文档编号:15221375 上传时间:2023-07-02 格式:DOCX 页数:18 大小:46.57KB
下载 相关 举报
中山大学左明老师单片机实验.docx_第1页
第1页 / 共18页
中山大学左明老师单片机实验.docx_第2页
第2页 / 共18页
中山大学左明老师单片机实验.docx_第3页
第3页 / 共18页
中山大学左明老师单片机实验.docx_第4页
第4页 / 共18页
中山大学左明老师单片机实验.docx_第5页
第5页 / 共18页
中山大学左明老师单片机实验.docx_第6页
第6页 / 共18页
中山大学左明老师单片机实验.docx_第7页
第7页 / 共18页
中山大学左明老师单片机实验.docx_第8页
第8页 / 共18页
中山大学左明老师单片机实验.docx_第9页
第9页 / 共18页
中山大学左明老师单片机实验.docx_第10页
第10页 / 共18页
中山大学左明老师单片机实验.docx_第11页
第11页 / 共18页
中山大学左明老师单片机实验.docx_第12页
第12页 / 共18页
中山大学左明老师单片机实验.docx_第13页
第13页 / 共18页
中山大学左明老师单片机实验.docx_第14页
第14页 / 共18页
中山大学左明老师单片机实验.docx_第15页
第15页 / 共18页
中山大学左明老师单片机实验.docx_第16页
第16页 / 共18页
中山大学左明老师单片机实验.docx_第17页
第17页 / 共18页
中山大学左明老师单片机实验.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

中山大学左明老师单片机实验.docx

《中山大学左明老师单片机实验.docx》由会员分享,可在线阅读,更多相关《中山大学左明老师单片机实验.docx(18页珍藏版)》请在冰点文库上搜索。

中山大学左明老师单片机实验.docx

中山大学左明老师单片机实验

实验七D/A与A/D转换

一、实验目的

1、学习D/A转换的基本原理和D/A转换芯片DAC0832的性能及篇程方法

2、了解单片机系统中扩展D/A转换芯片的基本方法

3、学习A/D芯片ADC0809的转换性能及编程方法

4、了解A/D芯片与写单片机的接口方法

5、通过实验掌握单片机进行数据采集的方法

二、实验说明

1、D/A转换是把数字量转换成模拟量的变换。

从D/A输出的是模拟信号。

实验程序一是通过在D/A的输入端送入有一定规律的数字量,在输出端产生锯齿波、三角波、正弦波的波形,通过示波器观察来直观地了解D/A的转换功能。

要把一个数据通过0832输出,要经过两次锁存。

典型的程序如下:

MOVDPTR,#PORT

MOVA,#DATA

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

2、A/D转换是把模拟量转换成数字量的变换。

启动A/D采样转换只需要两条指令:

MOVDPTR,#PORT

MOVX@DPTR,A

三、实验内容

内容一:

利用DAC0832编程产生锯齿波、三角波、正弦波。

三种波形轮流显示

一、连线方法:

0832的CS0832接CS0。

输出DAOUT接示波器探头,示波器探头地线接实验板地线

二、代码

;D61.ASM

ORG4000H

LJMPMAIN

ORG401BH

LJMPDELAY

PORTEQU0CFA0H

ORG4100H

MAIN:

MOVTMOD,#10H

SETBEA

SETBET1

MOVTL1,#0AFH

MOVTH1,#3CH

SETBTR1

DISP:

MOVR1,#50H

LCALLPRG1

MOVR1,#50H

LCALLPRG2

MOVR1,#50H

LCALLPRG3

LJMPDISP

DELAY:

CLRTR1

MOVTL1,#0AFH

MOVTH1,#3CH

DECR1

SETBTR1

RETI

PRG1:

MOVA,#00H

LOOP:

MOVDPTR,#PORT

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

INCA

CJNER1,#00H,LOOP

RET

PRG2:

MOVA,#00H

LP1:

MOVDPTR,#PORT

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

INCA

CJNEA,#0FFH,LP1

MOVR2,A

LP2:

MOVDPTR,#PORT

MOVA,R2

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

DJNZR2,LP2

CJNER1,#00H,LP1

RET

PRG3:

MOVR2,#02H

MOVR4,#0FFH

SJMPSUBDATA

LP3:

MOVDPTR,#PORT

MOVX@DPTR,A

INCDPTR

MOVX@DPTR,A

INCR2

DJNZR4,SUBDATA

MOVR4,#0FFH

MOVR2,#02H

CJNER1,#00H,SUBDATA

RET

SUBDATA:

MOVA,R2

MOVCA,@A+PC

SJMPLP3

DATA0:

DB80H,83H,86H,89H,8DH,90H,93H,96H

DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH

DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H

DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H

DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H

DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H

DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH

DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH

DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH

DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H

DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH

DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH

DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H

DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H

DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H

DB96H,93H,90H,8DH,89H,86H,83H,80H

DB80H,7CH,79H,78H,72H,6FH,6CH,69H

DB66H,63H,60H,5DH,5AH,57H,55H,51H

DB4EH,4CH,48H,45H,43H,40H,3DH,3AH

DB38H,35H,33H,30H,2EH,2BH,29H,27H

DB25H,22H,20H,1EH,1CH,1AH,18H,16H

DB15H,13H,11H,10H,0EH,0DH,0BH,0AH

DB09H,08H,07H,06H,05H,04H,03H,02H

DB02H,01H,00H,00H,00H,00H,00H,00H

DB00H,00H,00H,00H,00H,00H,01H,02H

DB02H,03H,04H,05H,06H,07H,08H,09H

DB0AH,0BH,0DH,0EH,10H,11H,13H,15H

DB16H,18H,1AH,1CH,1EH,20H,22H,25H

DB27H,29H,2BH,2EH,30H,33H,35H,38H

DB3AH,3DH,40H,43H,45H,48H,4CH,4EH

DB51H,55H,57H,5AH,5DH,60H,63H,66H

DB69H,6CH,6FH,72H,76H,79H,7CH,80H

END

三、现象及分析

接通电路后示波器上依次显示锯齿波、三角波、正弦波

图形如下:

 

4.998V

4.998V

4.998V

2.508V

内容二:

用中断方法来读取AN0的输入模拟电压,通过P1口输出到LED上显示。

一、接线方法:

1、0809的片选信号CS0809接CS0

2、电位器的输出信号AN0接ADC0809的ADIN0

3、EOC接CPU的INT0

4、P10-P1.7连L1-L8

二、代码分析

;D62.ASM

ORG4000H

LJMPMAIN

ORG4003H;外中断0的中断向量

LJMPINTX0

PORTEQU0CFA0H

ORG4050H

MAIN:

MOVR0,#50H;存数RAM的地址

MOVP3,#0FFH

SETBEA

SETBEX0

SETBIT0

START:

MOVDPTR,#PORT

MOVA,#0

MOVX@DPTR,A;启动ADC0809开始转换

ACALLDEL

SJMPSTART

INTX0:

CLREA;中断服务程序

MOVXA,@DPTR;取出转换的数据

CPLA

MOVP1,A

MOV@R0,A;存储数据

SETBEA

EXIT:

RETI;从中断返回

DEL:

MOVR7,#15

DEL1:

MOVR6,#130;延时一段时间

DEL2:

MOVR5,#200

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

三、现象及分析

通过旋转电位器,可以看到LED灯的亮灭不断改变,若将其转换为十进制,则抽取了部分数据如下表

LED显示

7

30

31

100

200

201

255

7

156

表示电压

0.1372

0.588

0.6076

1.96

3.92

3.9396

4.998

0.1372

3.0576

电位器电压

0.137

0.588

0.608

1.96

3.92

3.94

5.00

0.14

3.058

四、结论

通过比对上核定有格,可以看出A/D测出的电压基本与实际电压相符

内容三:

用EOC电位法作上述测量

一、前期连接:

1、P1口的P1.0~P1.5与数码管的输入:

LED1~LED6相连;

2、74LS273的00~07与LEDA~LEDDP相连,片选信号与CS1相连

3、0809的片选信号CS0809接CS0,EOC接CPU的P3.0

二、代码分析

PORTADEQU0CFA0H

PORTEQU0CFA8H

ORG4000H

MOV30H,#01H;选把30~36H处存好数值,#10H表示数码管

MOV31H,#01H;不显示

MOV32H,#10H

MOV33H,#10H

MOV34H,#10H

MOV35H,#10H

MOV36H,#10H

MOVB,#36H

MOVR0,#30H

MOVP3,#0FFH

MAIN:

;******************************************************************显示模块开始

PUSHACC

PUSHPSW

ANLPSW,#0C7H

ORLPSW,#10H

DISPLAY:

;显示模块

MOVB,#36H

NOP

DS1:

MOVR0,B;R0赋予要显示的最后一个数据地址

MOVR4,#60H;扫描需要显示60次

MOVR2,#20H;位码的初值

DS2:

MOVA,@R0;A里面暂存RAM里的数据

ACALLTABLE;取段码

MOVDPTR,#PORT;送段码的入口地址

MOVX@DPTR,A;送段码

MOVA,R2;读位码

CPLA;取反

MOVP1,A;送位码

MOVR3,#0FFH;适当延时

DEL:

NOP

DJNZR3,DEL;判断地是否结束

CLRC;清C

MOVA,R2

RRCA

MOVR2,A;右移位码

DECR0

MOVA,R0

CJNEA,#30H,DS2;若没有显示到足够的码,则继续扫描

MOVR0,B;重新赋给R0要显示的最后一个数的地址

MOVR2,#20H;重新赋给R2显示的位码

DJNZR4,DS2;扫描60次完毕

MOVR4,#60H

JMPNONUM;显示程序完,准备退出显示程序

TABLE:

INCA;算上RET一个字节

MOVCA,@A+PC

RET

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H

NONUM:

POPPSW

POPACC

;****************************************************************显示模块结束

START:

MOVDPTR,#PORTAD

MOVA,#0

MOVX@DPTR,A;启动AD0809开始转换

LOP:

MOVA,P3;读取P3口的值

CJNEA,#0FFH,LOP;如果没有转换完,则继续等待

MOVXA,@DPTR;取出转换的数据

MOVB,#10H;准备把高四位与低四位分开

DIVAB;A存储低四位,B存储高四位

MOV32H,A;低四位存入32H中

MOV31H,B;高四位存入31H中

JMPMAIN;跳回程序开始,准备显示31H与32H中的值

END

三、现象及分析

当旋转电位器时,数码管上显示ADC所读到的数,其中最大为FE,最小为00,如果将ADC所读取的数放到LED上显示,可以明显感觉到转换的速度要比内容二中用中断法要快很多

四、结论

用中断查询法可以使程序更加简洁,在程序不大时,其响应的速度还比中断法更快。

内容四:

用中断法再作测量

一、前期连接:

1、P1口的P1.0~P1.5与数码管的输入:

LED1~LED6相连;

2、74LS273的00~07与LEDA~LEDDP相连,片选信号与CS1相连

3、0809的片选信号CS0809接CS0,EOC接CPU的INT0

二、代码分析

PORTADEQU0CFA0H

PORTEQU0CFA8H

ORG4000H

ORG4000H

LJMPMAIN

ORG4003H;外中断0的中断向量

LJMPINTX0

ORG4050H

MOV30H,#01H;选把30~36H处存好数值,#10H表示数码管

MOV31H,#01H;不显示

MOV32H,#10H

MOV33H,#10H

MOV34H,#10H

MOV35H,#10H

MOV36H,#10H

MOVB,#36H

MOVR0,#30H

MOVP3,#0FFH

MAIN:

;******************************************************************显示模块开始

PUSHACC

PUSHPSW

ANLPSW,#0C7H

ORLPSW,#10H

DISPLAY:

;显示模块

MOVB,#36H

NOP

DS1:

MOVR0,B;R0赋予要显示的最后一个数据地址

MOVR4,#60H;扫描需要显示60次

MOVR2,#20H;位码的初值

DS2:

MOVA,@R0;A里面暂存RAM里的数据

ACALLTABLE;取段码

MOVDPTR,#PORT;送段码的入口地址

MOVX@DPTR,A;送段码

MOVA,R2;读位码

CPLA;取反

MOVP1,A;送位码

MOVR3,#0FFH;适当延时

DEL:

NOP

DJNZR3,DEL;判断地是否结束

CLRC;清C

MOVA,R2

RRCA

MOVR2,A;右移位码

DECR0

MOVA,R0

CJNEA,#30H,DS2;若没有显示到足够的码,则继续扫描

MOVR0,B;重新赋给R0要显示的最后一个数的地址

MOVR2,#20H;重新赋给R2显示的位码

DJNZR4,DS2;扫描60次完毕

MOVR4,#60H

JMPNONUM;显示程序完,准备退出显示程序

TABLE:

INCA;算上RET一个字节

MOVCA,@A+PC

RET

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H

NONUM:

POPPSW

POPACC

;****************************************************************显示模块结束

START:

MOVP3,#0FFH

SETBEA

SETBEX0

SETBIT0

START:

MOVDPTR,#PORT

MOVA,#0

MOVX@DPTR,A;启动ADC0809开始转换

ACALLDEL

SJMPMAIN

INTX0:

CLREA;中断服务程序

MOVXA,@DPTR;取出转换的数据

MOVXA,@DPTR;取出转换的数据

MOVB,#10H;准备把高四位与低四位分开

DIVAB;A存储低四位,B存储高四位

MOV32H,A;低四位存入32H中

MOV31H,B;高四位存入31H中

SETBEA

EXIT:

RETI;从中断返回

DEL:

MOVR7,#15

DEL1:

MOVR6,#130;延时一段时间

DEL2:

MOVR5,#200

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

三、现象及分析

当旋转电位器时,数码管上显示ADC所读到的数,其中最大为FE,最小为00,但其响应的速度就不及内容三

四、结论

用中断查询法可以使程序更加简洁,在程序不大时,其响应的速度还比中断法更快。

(注:

本资料素材和资料部分来自网络,仅供参考。

请预览后才下载,期待您的好评与关注!

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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