機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
使用單片機制作多路輸入電壓表
使用單片機制作多路輸入電壓表
 更新時間:2008-7-27 13:55:58  點擊數(shù):4
【字體: 字體顏色

在工業(yè)控制和智能化儀表中,常由單片機進行實時控制及實時數(shù)據(jù)處理。單片機所加工的信息都是數(shù)字量,而被控制或測量對象的有關(guān)參量往往是連續(xù)變化的模擬量,如溫度、速度、壓力等等,與此對應(yīng)的電信號是模擬電信號。單片機要處理這種信號,首先必須將模擬量轉(zhuǎn)換成數(shù)字量,這一轉(zhuǎn)換過程就是模—數(shù)轉(zhuǎn)換,實現(xiàn)模/數(shù)轉(zhuǎn)換的設(shè)備稱為A/D轉(zhuǎn)換器或ADC。
  AD轉(zhuǎn)換器是單片機應(yīng)用中常見的接口,從事單片機開發(fā)的人員通常都會遇到使用AD的要求,本文通過一個典型的例子來學(xué)習(xí)一種常用AD轉(zhuǎn)換器的用法。

一、模數(shù)轉(zhuǎn)換簡介
    A/D轉(zhuǎn)換電路種類很多,在選擇模/數(shù)轉(zhuǎn)換器時,主要考慮以下的一些技術(shù)指標:轉(zhuǎn)換時間和轉(zhuǎn)換頻率、量化誤差與分辨率、轉(zhuǎn)換精度、接口形式等。目前,較為流行的 AD轉(zhuǎn)換器件有很多都采用了串行接口,這使得這類芯片與單片機的硬件連接非常簡單,而軟件編程相對要復(fù)雜一些,下面,我們以TI公司的TLC1543為例,制作一個多路輸入的電壓表,了解一下這類芯片的使用特點。

二、TLC1543特性簡介
    TLC1543是由TI公司開發(fā)的開關(guān)電容式AD轉(zhuǎn)換器,該芯片具有如下的一些特點:
    10位精度、11通道、三種內(nèi)建的自測模式、提供EOC(轉(zhuǎn)換完成)信號等。該芯片與單片機的接口采用串行接口方式,引線很少,與單片機連接簡單。
    圖1是TLC1543的引腳示意圖,其中A0~A10是11路輸入,Vcc和GND分別是電源引腳,REF+和REF-分別是參考電源的正負引腳,使用時一般將REF-接到系統(tǒng)的地,達到一點接地的要求,以減少干擾。其余的引腳是TLC1543與CPU的接口,其中CS為片選端,如不需選片,可直接接地。I/O Clock是芯片的時鐘端,Adress是地址選擇端,Data Out是數(shù)據(jù)輸出端,這三根引腳分別接到CPU的三個I/O端即可。EOC用于指示一次AD轉(zhuǎn)換已完成,CPU可以讀取數(shù)據(jù),該引腳是低電平有效,根據(jù)需要,該引腳可接入CPU的中斷引腳,一旦數(shù)據(jù)轉(zhuǎn)換完成,向CPU提出中斷請求;此外,也可將該引腳接入一個普通的I/O引腳,CPU通過查詢該引腳的狀態(tài)來了解當前的狀態(tài),甚至該引腳也可以不接,在CPU向TLC1543發(fā)出轉(zhuǎn)換命令后,過一段固定的時間去讀取數(shù)據(jù)即可。
三、單片機與TLC1543芯片的接口
    圖2使用TLC1543制作的多路輸入電壓表的電路圖,從圖中可以看出,這里使用了TLC1543作為基準電壓源,將REF-直接接地,P1.0、P1.1、P1.2、P1.3和P1.4分別與EOC、時鐘、地址、數(shù)據(jù)、片選端分別相連。制作時,請參考表1進制連線。注意電容E1和C1一定要用,E1可用10u/16V電解,C1可用0.1u CBB電容,安裝時盡量接近20腳和第10腳。輸入端可根所需要,接入相應(yīng)的信號。
編程的要求是在六位數(shù)碼管的后四位數(shù)碼管上輪流顯示TLC1543各通道的測量值,同時用十六進制表示的通道號顯示在第1位數(shù)碼管上。
圖2 用單片機制作多路輸入電壓表

四、TLC1543驅(qū)動程序編寫
    由于采用串行接口,在硬件電路簡單的同時,帶來了軟件編制的復(fù)雜性,初學(xué)單片機的入門者很難掌握這類芯片的編程方法,這給此類芯片的應(yīng)用帶來一定的限制。為解決這一問題,我們在實際應(yīng)用該芯片的基礎(chǔ)上寫出了該芯片的驅(qū)動程序,有了驅(qū)動程序,使用者不必再關(guān)心TLC1543數(shù)據(jù)手冊中的時序圖之類不易懂的部份,只要了解清楚驅(qū)動程序的用法,即可使用該芯片。
TLC1543共有11條輸入通道,這11條通道的編號從0~10,讀取時,根據(jù)編號來獲得想應(yīng)通道的數(shù)據(jù),此外,內(nèi)部還有三條用于測試的通道,分別是接:
 、 和 其通道編號分別是11、12和13.
1.驅(qū)動程序
;以下定義各引腳
ADCLK  EQU  P1.1 ;時鐘
ADaddr  EQU  P1.2 ;地址引腳
ADDout  EQU  P1.3 ;數(shù)據(jù)端
ADCS  EQU  P1.4 ;片選端
命令:ADConver
參數(shù):r2 通道號,轉(zhuǎn)換前存入 轉(zhuǎn)換結(jié)后數(shù)據(jù)在r0r1中,高位在前
資源占用:r0,r1,r7,A 
ADConver:
CLR ADClk
CLR ADCS
MOV A,R2
RLC A
;送出地址信號
MOV R7,#4
C_L1:
RLC A
MOV ADAddr,C
SETB ADClk
NOP
NOP
NOP
NOP
CLR ADClk
DJNZ R7,C_L1
;補6個脈沖
MOV R7,#6
C_L2:
SETB ADClk
NOP
NOP
NOP
NOP
CLR ADClk
DJNZ R7,C_L2
;等待轉(zhuǎn)換結(jié)束
SETB ADCS
NOP
NOP
NOP
NOP
CLR ADCS
;取高2位
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.1,C
CLR ADClk
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.0,C
CLR ADClk
ANL A,#00000011B ;清A的高6位
MOV R0,A ;保存數(shù)據(jù)

MOV R7,#8
C_L3:
NOP
NOP
NOP
NOP
SETB ADDout
SETB ADClk
MOV C,ADDout
MOV ACC.0,C
RLC A
CLR ADClk
DJNZ R7,C_L3
SETB ADCS
MOV R1,A
RET

2.驅(qū)動程序的使用
    該驅(qū)動程序中用到了四個標記符號:
ADClk   與TLC1543的Clk引腳相連的單片機引腳
ADaddr   與TLC1543的Address引腳相連的單片機引腳
ADDout   與TLC1543的AdDout引腳相連的單片機引腳
ADCS 與TLC1543的 引腳相連的單片機引腳
實際使用時,根據(jù)接線的情況定義好ADclk、ADaddr、ADDout、ADCS,將通道號送入R2,調(diào)用ADConver,即可從R0、R1中得到轉(zhuǎn)換后的數(shù)據(jù),使用非常簡單。
;**************************************************
;   平凡單片機工作室
; http://www.mcustudio.com
;    Copyright 2003 pingfan's McuStudio
;    All rights Reserved
;作者:周堅
;文件名:ad.asm
;功能簡介:每隔1s輪流將一個通道的值顯示在數(shù)碼管后4位,首位顯示通道號
;**************************************************
gCoun DATA 22H ;通道計數(shù)器
CLK  bit   P1.1 ;時鐘端
ADDR  bit   P1.0 ;地址端
Dout  bit   P1.4 ;數(shù)據(jù)輸出端
CS  bit   P1.3 ;片選端
Hidden DATA 10H ;消隱碼
Counter DATA 57H ;顯示程序用計數(shù)器
DISPBUF DATA 58H ;顯示緩沖區(qū)首地址

ORG 0000H
JMP START
ORG 000BH ;定時中斷使用T0
JMP DISP ;定時中斷程序
ORG 30H
START:
MOV SP,#5FH ;初始化
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;關(guān)所有LED及數(shù)碼管
MOV TMOD,#00000001B
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
SETB TR0
SETB EA
SETB ET0
MOV Counter,#0 ;計數(shù)器清零
MOV DISPBUF+1,#Hidden ;第2位顯示器消隱
MOV gCoun,#0 ;通道計數(shù)器清零,指向通道0
LOOP:
CALL Delay ;延時1s
MOV R2,gCoun ;送通道號
CALL ADConver
MOV A,R0
MOV R6,A
MOV A,R1
MOV R7,A
CALL HB2
;調(diào)用二-十進制轉(zhuǎn)換程序
;入口:待轉(zhuǎn)換的雙字節(jié)十六進制數(shù)在R6和R7中
;出口:轉(zhuǎn)換結(jié)束的結(jié)果在R3、R4和R5中,壓縮BCD碼方式存儲
MOV A,R4
ANL A,#0F0H
SWAP A ;高低4位互換
MOV DispBuf+2,A ;最高位
MOV A,R4
ANL A,#0FH
MOV DispBuf+3,A
MOV A,R5
ANL A,#0F0H
SWAP A
MOV DispBuf+4,A
MOV A,R5
ANL A,#0FH
MOV DispBuf+5,A
;以上程序段將壓縮BCD碼轉(zhuǎn)換成非壓縮BCD碼并送顯示緩沖區(qū)
MOV DispBuf,gCoun ;將通道號送第1個顯示器的顯示緩沖區(qū)
INC gCoun ;通道號加1
MOV A,gCoun
CJNE A,#11,LOOP ;判斷是否到11了
MOV gCoun,#0 ;到則回零
JMP LOOP
;主程序到此結(jié)束

  • 上一篇: 用AT89C51對一款微型步進電機的驅(qū)動
  • 下一篇: 電子日歷設(shè)計(適于學(xué)校使用)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1