DA和AD综合实验

单片机实验

28人已加入

描述

DA和AD综合实验

实验目的

1、掌握D/A和A/D的接口方法和程序设计。

2、进一步了解键盘管理设计和仪表总体设计。

实验内容:

实验板中采用1路D/A转换电路,由DAC0832和运放,µA741组成。D/A的VREF=+5V,当输入00~FFH时,相应输出0~5V。D/A的输出又送至0809的通道0,作为0809通道0的输入。

设计要求:1、显示格式如图8-1示,最左二位显示D/A的数字输入(00~FFH),最右二位显示A/D的数字输出(00~FFH)。

3、D/A的数字输入可通过键盘输入,为输入16进制,键盘布置如图8-2规定:

单键输入:按键号0~9的数字键时,输出键值为0~9H。

双键输入:先按下键号为B的键,再按0~5号数字键,则输出键值为A~F。

D/A输入       A/D输出

图8-1  显示格式               图8-2  键盘布置

根据实验内容要求,列出主程序流程图,见图8-3,其中,键盘输入部分编为子程序,流程图如图8-4。

ORG  0000H

LJMP  MAIN

ORG  0700H

  MAIN:

MOV  SP, #60H

;设置堆栈

MOV  DPTR, #0B000H

;8155初始化

MOV  A, #03H

;A、B口输出,C口输入

MOV X  @DPTR, A

MOV  A, #13H

;初始显示全灭

MOV  R0, 2AH

   MP0:

MOV  @R0, A

INC  R0

CJNE  R0, #30H, MP0

  D25:

LCALL  DISP

;调用显示

LCALL  KS1

;有无键按下?

JZ  MP1

;无键按下,转

LCALL  KEYP

;有键按下,调KEYP

  MP1:

MOV  A, 2AH

;(2A)(2B)输入至0832

SWAP  A

ADD  A, 2BH

 

MOV  DPTR, #C000H

指向0832

MOVX  @ DPTR, A

NOP

MOV  DPTR, #5000H

;启动A/D通道0

MOV X  @DPTR, A

MOV  R2, #20H

;延时

   DL:

DJNZ  R2, DL

WEND:

JB  P3.3, WEND

;等待A/D完成

MOVX  A, @DPTR

;A/D输出

PUSH  A

;送2E、2F

ANL  A, #0F0H

SWAP  A

MOV  2EH, A


  POP  A

ANL  A,#0FH

MOV  2FH,A

LJMP  DIS

ORG  0740H

 KEYP:

LCALL  KEYA

;键号→A

CJNE  A, #0BH, KC1

;不是键号B,转

SETB  00H

;是键号B,设置标志

RET

  KC1:

JB  00H, KC3

;已按过B键,转

CJNE  A, #0A, KC2

;属单键输入

  KC2:

JNC  KC6

;若键号≥0A,转退出

SJMP  KC5

;单键输入0~9

  KC3:

CJNE  A, #06, KC4

  KC4:

JNC  KC6

;双键输入时,键号≥6,则退出

ADD  A, #0AH

;双键输入时键值修正

  KC5:

CPL  01H

;按键顺序标志位求反

JNB  01H, KC7

   

MOV  2AH, A

;键值送显示缓冲2AH

  KC6:

RET

  KC7:

MOV  2BH, A

;下一次按键的键值送2BH

      

RET

实验要求:

读通程序后输入。可以先连续运行程序,检查运行是否正常。如果不正常,则单步或断点调试。

思考题:

1、用键盘给D/A输入16进制数00~FFH,在程序中如何区分按键属于第一位16进制数还是第二位16进制数?

2、D/A的输入显示和A/D的输出显示之间,为什么有误差?试分析原因。

3、A/D采样改用中断法编程,读改写程序。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
万里晴空 2013-12-25
0 回复 举报
能不能加图? 收起回复
  • 相关推荐
  • 热点推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分