新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 二線串行8位數模轉換器MAX517的特性與應用(圖)

        二線串行8位數模轉換器MAX517的特性與應用(圖)

        ——
        作者:合肥工業大學 王玉琳 時間:2007-02-06 來源: 收藏

        摘 要:介紹了二線串行8位數模轉換器max517的特性,并以at89s52單片機與max517的通信為例,詳細說明了max517的硬件連接與軟件編程方法。
        關鍵詞:數模轉換器;max517;單片機;通信;應用

        引言
        ---在計算機的測控系統中,常要用到模擬輸出,數模轉換器(dac)就是一種將數字信號轉換成模擬電信號的器件。dac根據輸入數據的格式一般分為并行和串行兩種,并行的dac通常有8位、10位、12位和16位等,并行芯片進行d/a轉換時,輸出建立時間短,通常不超過10μs,但它們的引腳比較多,芯片體積大,與cpu連接時電路較復雜。有些應用并不太計較d/a轉換的輸出建立時間,比如在數控機床中,主軸電機通常由交流變頻器來控制,交流變頻器接受數控系統輸出的模擬電壓,當需要改變主軸轉速時,從數字量轉速的輸入到模擬量轉速的實現,由于三相異步電機的啟動,中間通常有一個較長的時間(一般需要1~3s)。此時,在數控系統中,選用串行dac來控制變頻器,即可滿足要求,雖然輸出建立時間比并行dac稍長(通常也不超過100μs),但這樣的時間與電機的啟動時間比起來,完全可以忽略不計,且串行dac與cpu連接時所用引線少、電路簡單,芯片體積小、價格低。
         ---當精度要求不是太高時,對于單路的dac,可以選用美國maxim公司生產的8位串行d/a芯片max517。本文將主要介紹max517的特性及其與at89s52單片機的通信。

        max517的性能簡介
        ---max517是8位電壓輸出型數模轉換器,它帶有簡單的雙線串行接口,允許多個設備之間進行通信。max517使用簡單的雙線串行接口,只需要標準的微處理器提供2根總線與之相連,如圖1所示。微處理器的scl輸出時鐘信號,sda輸出數據。當微處理器的scl傳送時鐘脈沖時,對于max517來說,最高頻率不能超過400khz,即波特率不超過400kbps。圖2是max517的一個完整的串行數據傳送時序。
        ---首先,微處理器應給max517一個地址字節,max517收到之后,給處理器一個應答信號;其次,處理器再給max517一個命令字節,max517收到之后,又發一個應答信號給處理器;最后,處理器將要轉換的數字量(輸出字節)送給max517,max517收到之后,再一次向處理器發送一個應答信號。至此,一個完整的串行數據傳送即告結束。

        max517與at89s52單片機的通信
        ---對于at89s52單片機來說,有兩種方式向max517傳送數據,一種是串行傳送方式,另外一種是普通輸出方式。
        ● 串行傳送方式
        ---如圖4所示,將at89s52的rxd、txd引腳分別連接到max517的sda和scl引腳,把at89s52的串行口設置成工作方式0。此時,at89s52 cpu的串行口為同步移位寄存器方式,其波特率是固定的,為cpu晶振頻率fosc的 1/12,數據由rxd引腳出入,同步移位脈沖由txd引腳送出,發送或接收的是8位數據,低位在先,高位在后。當一個8位的數據寫入cpu的串行口發送緩沖器sbuf時,串行口即將8位數據以 fosc/12的波特率從rxd引腳輸出(從低位到高位),發送完成時,置中斷標志ti=1。采用上述傳送方式時,正好與max517的串行口特性相吻合。詳細的傳送程序清單如下。
        ---clr es ;關串行口中斷
        ---mov scon,#00h ;初始化,寫串行口控制字,取工作模式0
        ---mov a,#01011000b ;準備max517的地址字節
        ---mov sbuf,a ;向cpu的串口發送
        ---jnb ti,$ ;送完8位否?若未送完,則踏步等待
        ---clr ti ;若送完,則清ti標志
        ---jb p3.0,$ ;查應答信號
        ---nop ;地址已送完
        ---mov a,#00000000b ;準備max517的命令字節
        ---mov sbuf,a ;向cpu的串口發送
        ---jnb ti,$ ;送完8位否?若未送完,則踏步等待
        ---clr ti ;若送完,則清ti標志
        ---jb p3.0,$ ;查應答信號
        ---nop ;命令已送完
        ---mov a,#xxh ;準備max517的輸出字節
        ---mov sbuf,a ;向cpu的串口發送
        ---jnb ti,$ ;送完8位否?若未送完,則踏步等待
        ---clr ti ;若送完,則清ti標志
         ---jb p3.0,$ ;查應答信號


        ---nop ;輸出字節已送完
        ---ret
        ---值得注意的是,max517的+5v scl在接收cpu送來的脈沖信號時,fmax=400khz,而cpu的串口工作在方式0時,從txd引腳輸出的脈沖頻率ftxd=fosc/12。這樣,就要求ftxd=fosc/12≤400khz,即fosc≤4.8mhz,也就是說,cpu的晶振頻率不能超出4.8mhz。對于機床數控系統來說,選用mcs-51系列單片機作cpu時,若fosc≤4.8mhz,雖然照顧了max517的數據傳送,但會導致系統的處理速度大大降低。因此,采用cpu串口方式0進行數據傳送的方案,要視具體場合,在高速場合,通常不可取,只能用在低速場合。另外,采用串行傳送時,cpu就不能再與其他系統進行串行通信了。
        ● 普通輸出方式
        ---在普通輸出方式下,可以通過cpu的2根輸出線,或系統擴展輸出芯片(如8255a)的2根輸出線與max517進行通信。圖4中采用的是at89s52的p1.1、p1.0兩引腳,分別與max517的scl、sda兩引腳相連接。cpu遵照max517的工作時序,通過其p1.1引腳在必要的時候主動地輸出單個的時鐘脈沖,作為時鐘信號,然后從p1.0引腳逐個地輸出地址字節、命令字節和輸出字節。在普通輸出方式下,串行數據傳送的軟件流程如圖5所示。在數據的傳送過程中,必須遵守以下的約定:
        (1)起始條件
        ---傳送沒有開始的時候,cpu 先將p1.1置高,使得max517的scl=1;然后cpu控制p1.0由高變低,使得max517的sda產生負跳變,標志著傳送的開始。
        (2)中間過程
        ---中間過程需要傳送地址字節、命令字節和輸出字節。根據max517的工作時序,當且僅當scl=0(即p1.1=0)時,sda才能產生跳變(p1.0由0變1,或由1變0);當scl=1(即p1.1=1)時,sda狀態保持(即p1.0=0或1,保持不變)。
        (3)終止條件
        ---當傳送快要結束的時候,cpu先將p1.1置高,使得max517的scl=1;然后cpu控制p1.0由低變高,使得max517的sda產生正跳變,標志著傳送的結束。
        ---在普通輸出方式下,不占用cpu的串行口,不影響本系統與其他系統的串行數據通信;并且普通輸出方式的傳送易于控制速度,不像串行傳送方式對cpu的晶振頻率有限制,因此推薦使用普通輸出方式。

        結束語
        ---在研制的機床數控系統中,選擇at89s52單片機作為cpu,采用本文提出的普通輸出方式向max517傳送數據,實現了對交流變頻器的控制。應用實踐表明,采用max517進行d/a轉換時,硬件連接簡單,軟件編程方便,器件成本低廉,系統運行可靠。本文提出的單片機與max517的通信方式,對于max518和max519兩種dac也具有一定的參考價值。

        參考文獻
        1 吳秀清等.微型計算機原理與接口技術.中國科學技術大學出版社.2002
        2 劉紅玲等.實用微機接口技術.中國電力出版社.2003
        3 maxim. new releases data book. volume v. printed usa.1996
        4 李華.mcs-51系列單片機實用接口技術.北京航空航天大學出版社.1993
        5 王玉琳.ck-i型車床閉環控制系統的研究與應用.合肥工業大學.1991



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岚皋县| 外汇| 静安区| 普宁市| 泗阳县| 盐边县| 抚顺市| 旺苍县| 兰州市| 安西县| 博客| 宣城市| 许昌市| 洛隆县| 阳信县| 兴安县| 通城县| 平陆县| 华池县| 内乡县| 怀宁县| 通榆县| 德清县| 华安县| 广东省| 日照市| 娱乐| 利津县| 普定县| 准格尔旗| 织金县| 宁晋县| 洛阳市| 咸丰县| 衡阳市| 石棉县| 伊川县| 昌邑市| 乌拉特后旗| 博罗县| 永顺县|