DA和AD综合实验

网友投稿 228 2022-11-27

DA和AD综合实验

实验目的

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

实验内容:

设计要求: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采样改用中断法编程,读改写程序。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:1739: 魔术球问题——最小路径覆盖
下一篇:Gym 100781B Bell Ringing——构造
相关文章

 发表评论

暂时没有评论,来抢沙发吧~