
基于單片機的數(shù)字電壓表
如圖2.1所示,模擬電壓經(jīng)過檔位切換到不同的分壓電路衰減后,經(jīng)隔離干擾送到A/D轉(zhuǎn)換器進行A/D轉(zhuǎn)換,然后送到單片機中進行數(shù)據(jù)處理。處理后的數(shù)據(jù)送到LCD中顯示,同時通過串行通訊與上位機通信。
3.1 輸入電路


如圖所示:對輸入模擬電壓和基準電壓進行兩次積分,先對輸入模擬電壓進行積分,將其變換成與輸入模擬電壓成正比的時間間隔 T1,再利用計數(shù)器測出此時間間隔,則計數(shù)器所計的數(shù)字量就正比于輸入的模擬電壓;接著對基準電壓進行同樣的處理。在常用的A/D轉(zhuǎn)換芯片(如ADC -0809、ICL7135、ICL7109等)中,ICL7135與其余幾種有所不同,它是一種四位半的雙積分
3.2.1 7135的應用
路都自動進行調(diào)零操作,可保證零點在常溫下的長期穩(wěn)定。在20000字(2V
②/ST(26腳)每次A/D轉(zhuǎn)換周期結(jié)束后,ST端都輸出5個負脈沖,其輸出時間對應在每個周期開始時的5個位選信號正脈沖的中間,ST負脈沖寬度等于1/2時鐘周期。
第一個ST負脈沖在上次轉(zhuǎn)換周期結(jié)束后101個時鐘周期產(chǎn)生。因為每個選信號(D5--D1)的正脈沖寬度為200個時鐘周期(只有AZ和DE階段開始時的第一個D5的脈沖寬度為201個CLK 周期),所以ST負脈沖之間相隔也是200個時鐘周期。需要注意的是,若上一周期為保持狀態(tài)(R/H=“0”)則ST無脈沖信號輸出。ST信號主要用來控制將轉(zhuǎn)換結(jié)果向外部鎖存器、UARTs或微處理器進行傳送。

圖3.2.1.3 ICL7135與系統(tǒng)的連接圖 圖3.2.1.4 CD4060時鐘發(fā)生電路
3.3單片機部分
顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個16×1的字符型液晶顯示模塊, 
| 引腳 | 符號 | 功能說明 | |
| 1 | GND | 接地 | |
| 2 | Vcc | +5V | |
| 3 | VL | 驅(qū)動LCD,一般將此腳接地 | |
| 4 | RS | 寄存器選擇 0:指令寄存器(WRITE)Busy flag,位址計數(shù)器(READ) 1:數(shù)據(jù)寄存器(WRITE,READ) | |
| 5 | R/W | READ/WRITE選擇 1:READ 0:WTITE | |
| 6 | E | 讀寫使能(下降沿使能) | |
| 7 | DB0 | 低4位三態(tài)、雙向數(shù)據(jù)總線 | |
續(xù)表3.4.1.1 LCD1601液晶模塊的引腳 | |||
| 8 | DB1 | | |
| 9 | DB2 | ||
| 10 | DB3 | ||
| 11 | DB4 | 高4位三態(tài)、雙向數(shù)據(jù)總線 另外DB7也是一個Busy flag | |
| 12 | DB5 | ||
| 13 | DB6 | ||
| 14 | DB7 | ||
| RS | R/W | 操作說明 |
| 0 | 0 | 寫入指令寄存器(清除屏幕…等) |
| 0 | 1 | 讀Busy flag(DB7),以及讀取位址計數(shù)器(DB0~DB6)值 |
| 1 | 0 | 寫入數(shù)據(jù)寄存器(顯示各字型等) |
| 1 | 1 | 從數(shù)據(jù)寄存器讀取數(shù)據(jù) |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 |
| 指 令 說 明 | 設置碼 | | |||||||||
| RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | | |
| 清除顯示幕 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | |
| 光標回到原點 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | |
| 進入模式設定 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | |
| 顯示幕ON/OFF | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | |
| 移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | |
| 功能設定 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | |
| 字發(fā)生器地址設定 | 0 | 0 | 0 | 1 | AGC | | |||||
| 設置顯示地址 | 0 | 0 | 0 | 1 | ADD | | |||||
| 忙碌標志位BF | 0 | 0 | 1 | BF | |||||||
| 顯示數(shù)據(jù) | 1 | 0 | 寫入數(shù)據(jù) | ||||||||
| 讀取數(shù)據(jù) | 1 | 1 | 讀取數(shù)據(jù) | ||||||||
| I/D I/D=1 表示加1, I/D=0 表示減1 S S=1 表示顯示幕ON S=0表示OFF | | ||||||||||
| D D=1 表示顯示屏幕ON D=0表示顯示屏幕OFF C C=1 表示光標ON C=0表示光標OFF B B=1 表示閃爍ON B=0表示顯示閃爍OFF | | ||||||||||
| S/C S/C=1表示顯示屏幕移位 S/C=0光標移位 R/L R/L=1表示右移 R/L=0表示左移 | | ||||||||||
| DL DL=1表示8位 DL=0表示4位 F F=1表示5×10點矩陣 F=0表示5×7點矩陣 N N=1表示2行顯示行 N=0表示1行顯示行 | | ||||||||||
| BF BF=1:內(nèi)部正在動作 BF=0:可接收指令或數(shù)據(jù)碼 | | ||||||||||
設
置為整體顯示,取消光標和字體閃爍,最后設置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。
3.5 通訊模塊
89S52內(nèi)部已集成通信接口URT,只需擴展一片MAX232芯片將輸出信號轉(zhuǎn)換成RS-232協(xié)議規(guī)定的電平標準, MAX232 是 一 種 雙 組 驅(qū) 動 器 / 接 收 器 ,每個接收器將EIA/TIA-232-E電平輸入轉(zhuǎn)換為5V TTL/CMOS電平。 每個驅(qū)動器將TTL/CMOS輸入電平轉(zhuǎn)換 為 EIA/TIA-232-E電平。即EIA接口,就是把5V轉(zhuǎn)換為-8V到-15V電位0V轉(zhuǎn)換為8V到15V再經(jīng)RXD輸出,接收時由RXD輸入,把-8V到-15V電位轉(zhuǎn)換為5V,8V到15V轉(zhuǎn)換為0V。MAX232的工作電壓只需5V,內(nèi)部有振蕩電路產(chǎn)生正負9V電位。
的STB端的中斷的優(yōu)先級。緊接著LCDM1601B進行一次清屏,使其各個指令、數(shù)據(jù)寄存器的值進行清空,屏幕不顯示任何字符。以前面對1601B的介紹,只要將01H送到數(shù)據(jù)總線,使RS=0,R/W=0,E有個下降沿的脈沖就可以完成清屏工作。用以下指令實現(xiàn) MOV P2,#01H ;送到數(shù)據(jù)DB7---DB0,調(diào)用子程序 ENABLE,由于下降沿時,內(nèi)部數(shù)據(jù)要送到RAM區(qū),所以要有一個延時子程序,使這個下降沿持續(xù)2.5毫秒。內(nèi)部RAM有指令代碼后就開始對RAM進行清零,所以屏幕原有的字符將被清除。接著對1601進行功能的設定。MOV P2,#01111000B,按表3.4.5來看是設定
顯示器按2行顯示,每行8位,5×7點陣。
例如第一個字符“V”的ASCII碼是56H,就將這個碼送到P2口,再調(diào)用使能數(shù)據(jù)子程序,使RS=1(數(shù)據(jù)區(qū)使能)寫入顯示數(shù)據(jù)區(qū),R/W=0表示寫,E=來個下降沿延時2.5毫秒,使數(shù)據(jù)寫入RAM內(nèi)。完成
TABLE表輸出以后,向指令RAM中寫入第2

| ─ | 0 | 1 | 9 | 9 | . | 9 |
2000V檔量程:| ─ | 0 | 0 | 1 | 9 | . | 9 |
| ─ | 0 | 0 | 0 | 1 | . | 9 |
200V檔量程:| ─ | 0 | 1 | 9 | . | 9 | 9 |
| ─ | 0 | 0 | 1 | . | 9 | 9 |
20V檔量程:| ─ | 0 | 1 | . | 9 | 9 | 9 |



| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |