cbs110 发表于 2010-3-9 09:40:39

求助ADC0804与51连接图,有些疑惑

http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537350.JPG
(原文件名:未命名.JPG)

请教AD0804的第1脚为什么是接地的,我查的资料第1脚是CS片选啊,程序里面都可以对CS进行置位操作。我是新手,谢谢大虾指点下。

wajlh 发表于 2010-3-9 09:42:46

你就当是固定低电平,不就行了

cbs110 发表于 2010-3-9 09:49:02

void adcstart()
{//准备转换
ad_cs = 0;
_nop_();
ad_wr = 0;
_nop_();
ad_wr = 1;
_nop_();
ad_cs = 1;
_nop_();
}
假如CS一直是0那不是一直处于选通状态,那不是一直在转换?我看的有的电路图上CS是用I/O口控制啊

wajlh 发表于 2010-3-9 10:27:40

是一直转换,他程序里的cs实际是rd引脚,

cbs110 发表于 2010-3-9 11:18:30

http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537368.JPG
(原文件名:未命名.JPG)


;*********************************************
;ADC0804端口定义
;*********************************************
         cs0804   equ p3.6;定义AD的片选信号线
         wr0804   equ p3.5
         rd0804   equ p3.7
         out0804equ p1;定义AD转换后的数字信号送P1口
         ge_bit   equ 30h
         shi_bitequ 31h
         bai_bitequ 32h

         org 0000h
         ajmp main

         org 0004h
main:

         lcall Start;调启动转换子程序
         lcall delay1ms;延时约1ms
         lcall read;调读取转换结果子程序
         clr wr0804;清除转换结果?

         mov r4,a
         mov b,#100;求转换结果百位
         div ab;
         mov bai_bit,a
         mov a,b
         mov b,#10;求转换结果十、个位
         div ab
         mov shi_bit,a
         mov ge_bit,b;
       lcall Display
         ajmp main

Display:                  
         setb p2.2
         mov DPTR,#disptab
         mov a,ge_bit
         movc a,@a+dptr
         mov p0,a
         clr p2.0
         call delay1ms

       setb p2.0
         mov DPTR,#disptab
         mov a,shi_bit
         movc a,@a+dptr
         mov p0,a
         clr p2.1
         call delay1ms

         setb p2.1
       mov DPTR,#disptab
         mov a,bai_bit
         movc a,@a+dptr
         mov p0,a
         clr p2.2
         call delay1ms
         ret
;*********************************************
;A/D转换开始
;*********************************************
Start:
         clr cs0804;选中ADC0804
         nop
         clr wr0804
         nop
         setb wr0804
         nop
         setb cs0804
         nop
         ret
;*********************************************
;读A/D 转换结果
;*********************************************
Read:
         mov out0804,#0ffh
         clr cs0804
         nop
         clr rd0804
         nop
         nop
         mov a,out0804;
         nop
         setb rd0804
         nop
         setb cs0804
         ret
;*********************************************
; 延时1ms子程序
;*********************************************
delay1ms:
         mov r1,#2
tt1:
         mov r0,#250
         djnz r0,$
         djnz r1,tt1
         ret


disptab:
         db 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;字形代码表
            ;0 1 2 3 4 5 6 7 8 9
         end
能否帮我看下这个程序,和他对应的图。他怎么是这样定义的,他第5脚INTR只有当转换完后,才有硬件置1,怎么他有I/O口控制高低呢?还有其他的RD、WR定义怎么看着有问题一样。

liufengzhe 发表于 2010-3-11 18:30:32

他的程序是有问题,不过可以这么定义。控制0804的数据转换需要CS、WR、RD三个引脚没有错。当CS接地时,0804常选中,但只要不进行WR操作,0804并不进行数据转换。

lanye 发表于 2013-4-28 10:30:42

楼上的说的对
页: [1]
查看完整版本: 求助ADC0804与51连接图,有些疑惑