最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

有哪位用過AD7799?

作者:lau9527 欄目:測控之家
有哪位用過AD7799。
剛參加工作,第一個課題就讓我郁悶了!
拜托各位大哥大姐,救救我!

我用的是AD7799BRUZ芯片,打算應(yīng)用于靜態(tài)應(yīng)變儀。
電路連接參照數(shù)據(jù)手冊(Rev.0) 27頁的那個電路,
我只用了AIN1一個通道,其余未用。

出現(xiàn)的問題是:采不出數(shù)據(jù)。
不管AIN1兩端加不加電壓,
讀出的數(shù)據(jù)基本上都在零點附近(80xxxxxx或7fxxxxxx)。
但是,可以讀出其狀態(tài)信息,而且感覺應(yīng)該是正確的。


另附上我的程序,看看問題出在哪里

;;;;;;;;;;;;;;;;;;;;;;;;;;;  程序從這里開始  ;;;;;;;;;;;;;;;;;;;;;;;;;

CS    EQU        P1.7    ;AD7799使能端
SCLK    EQU        P3.5    ;串行時鐘信號(應(yīng)該是下降沿有效吧)
DIN    EQU        P3.4    ;數(shù)據(jù)輸入端
DOUT    EQU        P3.2    ;數(shù)據(jù)輸出端
        

ORG 0000H
    AJMP    START

ORG 0050H
START:
    CLR    CS            ;使能AD7799

    MOV    A, #00010000B        ;0 0 010 000   : 表明下一個操作是寫
“配置寄存器”
    ACALL    WriteAByte            
    MOV    A, #00000111B        ;00  0 0 0 111 :BO=0,雙極性輸入,
增益=128
    ACALL    WriteAByte
    MOV    A, #00110000B        ;00 1 1 0 000  :監(jiān)測參考電壓,緩沖
方式,模擬輸入通道是
AIN(+)-AIN(-)
    ACALL    WriteAByte

    MOV    A, #00001000B        ;0 0 001 000   :表明下一個操作是寫
“模式寄存器”
    ACALL    WriteAByte
    MOV    A, #00010000B        ;001 1 0000    :單次轉(zhuǎn)換模式,打開
PSW開關(guān)
    ACALL    WriteAByte
    MOV    A, #00001001B        ;0000 1001     :數(shù)據(jù)更新頻率 =
16.7Hz
    ACALL    WriteAByte
    

    MOV    A, #01000000B        ;0 1 000 000    :表明下一個操作是讀
“狀態(tài)寄存器”
    ACALL    WriteAByte
    ACALL    ReadAByte
    MOV    30H, A            ;將讀出的8位狀態(tài)字寫入30H
    
    MOV    A, #01011000B        ;0 1 011 000     :表明下一個操作是
讀“數(shù)據(jù)寄存器”
    ACALL    WriteAByte
    ACALL    ReadAByte
    MOV    31H, A            ;讀出第一個8位,寫入31H處
    ACALL    ReadAByte
    MOV    32H, A            ;讀出第二個8位,寫入32H處
    ACALL    ReadAByte
    MOV    33H, A            ;讀出第三個8位,寫入33H處

    JMP $

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;字程序:ReadAByte
;功能:從AD7799讀出8位數(shù)據(jù)(一個字節(jié))
;輸入:無
;輸出:寄存器A, 存放著讀出的8位數(shù)據(jù)

ReadAByte:
    CLR      A        ;A清零,用來保存數(shù)據(jù)
    MOV      R6, A        ;R6清零,用來為8次循環(huán)計數(shù)
C001:
    SETB     SCLK        ;
    CLR      SCLK        ;這兩條指令產(chǎn)生一個下降沿

    MOV      C, DOUT        ;將數(shù)據(jù)位存入C中
    RLC     A        ;再將其移入到A中
    INC      R6
    CJNE     R6, #08H, C001    ;循環(huán)8次
    RET      


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;字程序:WriteAByte
;功能:向AD7799寫入8位數(shù)據(jù)(一個字節(jié))
;輸入:A,要寫入的8位數(shù)據(jù)
;輸出:無

WriteAByte:
    MOV      R6, #0        ;R6清零,用來為8次循環(huán)計數(shù)
C002:
    SETB      SCLK        ;SCLK置1,為產(chǎn)生下降沿做準(zhǔn)備
    RLC    A        ;將要寫入的數(shù)據(jù)按位移出到C中
    MOV      DIN, C        ;將C中的數(shù)據(jù)送到DIN線上
     CLR     SCLK        ;產(chǎn)生下降沿,把數(shù)據(jù)送入AD7799
    INC      R6
    CJNE     R6, #08H, C002    ;循環(huán)8次

    RET      

    END    START



;;;;;;;;;;;;;;;;;;;;;;;;;;;  程序到此結(jié)束  ;;;;;;;;;;;;;;;;;;;;;;;;;

請各位高手哥哥姐姐不吝賜教。!


2樓: >>參與討論
syz528555
有問題。
有三點:

1,寫完mode register 后,要查詢RDY Pin 變低,或讀status Register 的RDY 為高,然后才能讀到Data Register.
2,測試時,最好改為連續(xù)轉(zhuǎn)換。
3。在寫Mode register  連續(xù)轉(zhuǎn)換之前,要校一下zero_scale,F(xiàn)ull_scale 的吧。




3樓: >>參與討論
zhu04303663

我用過AD7799,在我的網(wǎng)站里免已經(jīng)提供了C程序的源代碼,希望能與大家交流

http://zhu04303661.lingd.net/

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
為什么要用2.5V的電壓基準(zhǔn)阿
示波器的疑惑
關(guān)于測紋波電壓
請問有沒有廉價10bit或12bit的單通道的D/A?
求JIS標(biāo)準(zhǔn)PT100分度表
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號