欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6980|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于單片機的數(shù)字電壓表

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111475 發(fā)表于 2016-3-30 21:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      
2006 屆本科畢業(yè)設(shè)計
基于單片機的數(shù)字電壓表
                 
   

姓    名:       趙營        
系    別: 物理與信息工程系  
專    業(yè):    電子信息工程     
學(xué)    號:     040314034      
指導(dǎo)教師:      李曉偉        
2006年   4 月  12 日
基于單片機的數(shù)字電壓表
趙營   商丘師范學(xué)院物理與信息工程系 040314班   河南商丘   476000
摘要:本文介紹一種基于89S52單片機的一種電壓測量電路,該電路采用ICL7135高精度、雙積分A/D轉(zhuǎn)換電路,測量范圍直流0-±2000伏,使用LCD液晶模塊顯示,可以與PC機進行串行通信。正文著重給出了軟硬件系統(tǒng)的各部分電路,介紹了雙積分電路的原理,89S52的特點,ICL7135的功能和應(yīng)用,LCD1601的功能和應(yīng)用。該電路設(shè)計新穎、功能強大、可擴展性強。
關(guān)鍵詞:電壓測量,ICL7135,雙積分A/D轉(zhuǎn)換器,1601液晶模塊
Abstract : The introduction of a cost-based 89S52 MCU a voltage measurement circuits, the circuits used ICL7135 high-precision, dual-scoring A/D conversion circuits, measuring scope DC 0-2000 volts, the use of LCD that can be carried out with a PC serial communications. The paper focuses on providing a software and hardware system components circuit, introduced double integral circuit theory, 89S52 features ICL7135 functions and applications, LCD1601 functions and applications.
the circuit design innovative, powerful, can be expansionary strong.
Key Words : Digital Voltmeter  ICL7135   LCD1601  89S52
1前言
數(shù)字電壓表(Digital Voltmeter)簡稱DVM,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時代的需求,采用單片機的數(shù)字電壓表,由精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC進行實時通信。目前,由各種單片A/D 轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領(lǐng)域,示出強大的生命力。與此同時,由DVM擴展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測量技術(shù)提高到嶄新水平。本章重點介紹單片A/D 轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機的數(shù)字電壓表的工作原理。
2 系統(tǒng)原理及基本框圖
如圖2.1所示,模擬電壓經(jīng)過檔位切換到不同的分壓電路衰減后,經(jīng)隔離干擾送到A/D轉(zhuǎn)換器進行A/D轉(zhuǎn)換,然后送到單片機中進行數(shù)據(jù)處理。處理后的數(shù)據(jù)送到LCD中顯示,同時通過串行通訊與上位機通信。
                                           圖2.1系統(tǒng)基本方框圖
3硬件設(shè)計
3.1 輸入電路
圖3.1.1量程切換開關(guān)                    圖3.1.2衰減輸入電路
輸入電路的作用是把不同量程的被測的電壓規(guī)范到A/D轉(zhuǎn)換器所要求的電壓值。智能化數(shù)字電壓表所采用的單片雙積分型ADC芯片ICL7135,它要求輸入電壓0-±2V。本儀表設(shè)計是0-1000V電壓,靈敏度高所以可以不加前置放大器,只需衰減器,如圖3.1.2所示9M、900K、90K、和10K電阻構(gòu)成1/10、1/100、1/1000的衰減器。衰減輸入電路可由開關(guān)來選擇不同的衰減率,從而切換檔位。為了能讓CPU自動識別檔位,還要有圖3.1.1的硬件連接。
3.2 A/D 轉(zhuǎn)換電路
A/D 轉(zhuǎn)換器的轉(zhuǎn)換精度對測量電路極其重要,它的參數(shù)關(guān)系到測量電路性能。本設(shè)計采用雙積A/D 轉(zhuǎn)換器,它的性能比較穩(wěn)定,轉(zhuǎn)換精度高,具有很高的抗干擾能力,電路結(jié)構(gòu)簡單,其缺點是工作速度較低。在對轉(zhuǎn)換精度要求較高,而對轉(zhuǎn)換速度要求不高的場合如電壓測量有廣泛的應(yīng)用。
3.2.1雙積A/D 轉(zhuǎn)換器的工作原理
圖3.2.1.1雙積A/D 轉(zhuǎn)換器
    如圖所示:對輸入模擬電壓和基準電壓進行兩次積分,先對輸入模擬電壓進行積分,將其變換成與輸入模擬電壓成正比的時間間隔 T1,再利用計數(shù)器測出此時間間隔,則計數(shù)器所計的數(shù)字量就正比于輸入的模擬電壓;接著對基準電壓進行同樣的處理。在常用的A/D轉(zhuǎn)換芯片(如ADC -0809、ICL7135、ICL7109等)中,ICL7135與其余幾種有所不同,它是一種四位半的雙積分
A/D轉(zhuǎn)換器,具有精度高(精度相當
于14位二進制數(shù))、價格低廉、抗干擾能力強等優(yōu)點。本文介紹用單片機并行方式采集ICL7135的數(shù)據(jù)以實現(xiàn)單片機電壓表和小型智能儀表的設(shè)計方案。
3.2.1 7135的應(yīng)用
7135是采用CMOS工藝制作的單片4位半A/D轉(zhuǎn)換器,其所轉(zhuǎn)換的數(shù)字值以多工掃描的方式輸出,只要附加譯碼器,數(shù)碼顯示器,驅(qū)動器及電阻電容等元件,就可組成一個滿量程為2V的數(shù)字電壓表。
㈠7135主要特點如下:
①雙積型A/D轉(zhuǎn)換器,轉(zhuǎn)換速度慢。
②在每次A/D轉(zhuǎn)換前,內(nèi)部電           
路都自動進行調(diào)零操作,可保證零點在常溫下的長期穩(wěn)定。在20000字(2V

滿量程)范圍內(nèi),保證轉(zhuǎn)換精度1字相當于14bitA/D轉(zhuǎn)換器
  
  ③具有自動極性轉(zhuǎn)換功能。能在但極性參考電壓下對雙極性模擬輸入電壓進行A/D轉(zhuǎn)換,模擬電壓的范圍為0~±1.9999V。。
  
  ④模擬出入可以是差動信號,輸入電阻極高,電流典型值1PA。
  
  ⑤所有輸出端和TTL電路相容。
  
  ⑥有過量程(OR)和欠量程(UR)標志信號輸出,可用作自動量程轉(zhuǎn)換的控制信號。
  
  ⑦輸出為動態(tài)掃描BCD碼。
  
  ⑧對外提供六個輸入,輸出控制信號(R/H,BUSH,ST,POL,OR,UR),因此除用于數(shù)字電壓表外,還能與異步接收 /發(fā)送器,微處理器或其它控制電路連接使用。
  
  ⑨采用28外引線雙列直插式封裝,外引線功能端排列如圖所示。
  
  ㈡7135數(shù)字部分
數(shù)字部分主要由計數(shù)器、鎖存器、多路開關(guān)及控制邏輯電路等組成。7135一次A/D轉(zhuǎn)換周期分為四個階段:1、自動調(diào)零(AZ);2、被測電壓積分(INT);3、基準電壓反積分(DE);4、積分回零(ZI)。具體內(nèi)部轉(zhuǎn)換過程這里不做祥細介紹,主要介紹引腳的使用。
①R/H(25腳)當R/H=“1”(該端懸空時為“1”)時,7135處于連續(xù)轉(zhuǎn)換狀態(tài),每40002個時鐘周期完成一次A/D轉(zhuǎn)換。若R/H由“1”變“0”,則7135在完成本次A/D轉(zhuǎn)換后進入保持狀態(tài),此時輸出為最后一次轉(zhuǎn)換結(jié)果,不受輸入電壓變化的影響。因此利用R/H端的功能可以使數(shù)據(jù)有保持功能。若把R/H端用作啟動功能時,只要在該端輸入一個正脈沖(寬度≥300ns),轉(zhuǎn)換器就從AZ階段開始進行A/D轉(zhuǎn)換。注意:第一次轉(zhuǎn)換周期中的AZ階段時間為9001-10001個時鐘脈沖,這是由于啟動脈沖和內(nèi)部計數(shù)器狀態(tài)不同步造成的。
②/ST(26腳)每次A/D轉(zhuǎn)換周期結(jié)束后,ST端都輸出5個負脈沖,其輸出時間對應(yīng)在每個周期開始時的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或微處理器進行傳送。
③BUSY(21腳)在雙積分階段(INT+DE),BUSY為高電平,其余時為低電平。因此利用BUSY功能,可以實現(xiàn)A/D轉(zhuǎn)換結(jié)果的遠距離雙線傳送,其還原方法是將BUSY和CLK“與”后來計數(shù)器,再減去10001就可得到原來的轉(zhuǎn)換結(jié)果。
④OR(27腳)當輸入電壓超出量程范圍(20000),OR將會變高。該信號在BUSY信號結(jié)束時變高。在DE階段開始時變低。
⑤UR(28腳)當輸入電壓等于或低于滿量程的9%(讀數(shù)為1800),則一當BUST信號結(jié)束,UR將會變高。該信號在INT階段開始時變低。
⑥POL(23腳)該信號用來指示輸入電壓的極性。當輸入電壓為正,則POL等于“1”,反之則等于“0”。該信號DE階段開始時變化,并維持一個A/D轉(zhuǎn)換調(diào)期。
⑦位驅(qū)動信號D5、D4、D3、D2、D1(12、17、18、19、20腳)每一位驅(qū)動信號分別輸出一個正脈沖信號,脈沖寬度為200個時鐘周期,其中D5對應(yīng)萬位選通,以下依次為千、百、十、個位。在正常輸入情況下,D5--D1輸出連續(xù)脈沖。當輸入電壓過量程時,D5--D1在AZ階段開始時只分別輸出一個脈沖,然后都處于低電平,直至DE階段開始時才輸出連續(xù)脈沖。利用這個特性,可使得顯示器件在過程時產(chǎn)生一亮一暗的直觀現(xiàn)象。
    ⑧B8、B4、B2、B1(16、15、14、13腳)該四端為轉(zhuǎn)換結(jié)果BCD碼輸出,采用動態(tài)掃描輸出方式,即當位選信號D5=“1”時,該四端的信號為萬位數(shù)的內(nèi)容,D4=“1”時為千位數(shù)內(nèi)容,其余依次類推。在個、十、百、千四位數(shù)的內(nèi)容輸出時,BCD碼范圍為0000--1001,對于萬位數(shù)只有0和1兩種狀態(tài),所以其輸出的BCD碼為“0000”和“0001”。當輸入電壓過量程時,各位數(shù)輸出全部為零,這一點在使用時應(yīng)注意。
   最后還要說明一點,由于數(shù)字部分以DGNG端作為接地端,所以所有輸出端輸出電平以DGNG作為相對參考點。基準電壓,基準電壓的輸入必須對于模擬公共端COM是正電壓。
    ㈢與單片機系統(tǒng)的串行連接
在ICL7135與單片機系統(tǒng)進行連接時,使用并行采集方式,要連接BCD碼數(shù)據(jù)輸出線,可以將ICL7135的/STB信號接至AT89C52的P3.2(INT0)。
ICL7135需要外部的時鐘信號,本設(shè)計采用CD4060來對4M信號進行32分頻得到125KHz的時鐘信號。CD4060計數(shù)為14級2進制計數(shù)器,在數(shù)字集成電路中可實現(xiàn)的分頻次數(shù)最高,而且CD4060還包含振蕩電路所需的非門,使用更為方便。
圖3.2.1.3 ICL7135與系統(tǒng)的連接圖     圖3.2.1.4 CD4060時鐘發(fā)生電路   

3.3單片機部分
單片機選用的是ATMEL公司新推出的AT89S52,如圖 3.2.1.1所示。該芯片具有低功耗、高性能的特點,是采用CMOS工藝的8位單片機,與AT89C51完全兼容。AT89S52還有以下主要特點:
    ①采用了ATMEL公司的高密度、非易失性存儲器(NV-SRAM)技術(shù);
    ②其片內(nèi)具有256字節(jié)RAM,8KB的可在線編程(ISP)FLASH存儲器;
    ③有2種低功耗節(jié)電工作方式:空閑模式和掉電模式
    ④片內(nèi)含有一個看門狗定時器(WDT),WDT包含一個14位計數(shù)器和看門狗定時器復(fù)位寄存器(WDTRST),只要對WDTRST按順序先寫入01EH,后寫入0E1H,WDT便啟動,當CPU由于擾動而使程序陷入死循環(huán)或“跑飛”狀態(tài)時,WDT即可有效地使系統(tǒng)復(fù)位,提高了系統(tǒng)的抗干擾性能。
3.4液晶顯示部分
顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個16×1的字符型液晶顯示模塊,
點陣圖形式液晶由 M 行×N 列個顯示單元組成,假設(shè) LCD 顯示屏有64行,每行有 128列,每 8列對應(yīng) 1 個字節(jié)的 8 個位,即每行由 16 字節(jié),共 16×8=128個點組成,屏上 64×16 個顯示單元和顯示 RAM 區(qū) 1024 個字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對應(yīng)。一個字符由 6×8 或 8×8點陣組成,即要找到和屏上某幾個位置對應(yīng)的顯示 RAM區(qū)的 8 個字節(jié),并且要使每個字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點亮,為‘0’的點暗,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據(jù)在LCD 上開始顯示的行列號及每行的列數(shù)找出顯示 RAM對應(yīng)的地址,設(shè)立光標,在此送上該字符對應(yīng)的代碼即可。
3.4.1 1601使用說明
圖3.4.1.1 1601引腳圖
表3.4.1.1   LCD1601液晶模塊的引腳
      引腳
   
      
符號
   
      
功能說明
   
      
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
   
寄存器選擇,如表所示:
表3.4.1.3  寄存器選擇控制線操作
      
RS
   
      
R/W
   
      
操作說明
   
      
0
   
      
0
   
      
寫入指令寄存器(清除屏幕…等)
   
      
0
   
      
1
   
      
讀Busy flag(DB7),以及讀取位址計數(shù)器(DB0~DB6)值
   
      
1
   
      
0
   
      
寫入數(shù)據(jù)寄存器(顯示各字型等)
   
      
1
   
      
1
   
      
從數(shù)據(jù)寄存器讀取數(shù)據(jù)
   
Busy flag(DB7):在此位未被清除為“0”時,LCD將無法再處理其他指令要求。
(1)顯示地址:內(nèi)部地址計數(shù)器的計數(shù)地址:SB7=0(DB0~DB6)第一行00、01、02… …等,第二行40、41、42… …等,可配合檢測DB7=1 (RS=0,R/W=1)讀取目前顯示字的地址,判斷是否需要換行。
表3.4.1.4   LCD1601 16×1 顯示字的地址
      
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
   
(2)外部地址:DB7=1,亦即80H+內(nèi)部計數(shù)地址,可以用此方式將字顯示在某一位置。
LCD各地址列舉如下表:
表3.4.1.5   LCD1601 16×1 顯示字的外部地
16×1  16字1行 1601
      
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
   
表3.4.1.6   LCD1601 的指令組
      
指  令
      
說  明
   
      
設(shè)置碼
   
      
   
      
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
   
      
*
   
      
   
      
進入模式設(shè)定
   
      
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
   
      
*
   
      
*
   
      
   
      
功能設(shè)定
   
      
0
   
      
0
   
      
0
   
      
0
   
      
1
   
      
DL
   
      
N
   
      
F
   
      
*
   
      
*
   
      
   
      
字發(fā)生器地址設(shè)定
   
      
0
   
      
0
   
      
0
   
      
1
   
      
AGC
   
      
   
      
設(shè)置顯示地址
   
      
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ù)碼
   
      
   
3.4.2 液晶顯示部分與89S52的接口
如圖所示:用89S52的P2口作為數(shù)據(jù)線,用P0.1、P0.2、P0.3分別作為LCD的E、R/W、RS。其中E是下降沿觸發(fā)的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設(shè)計要點如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點陣,然后設(shè)置為整體顯示,取消光標和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(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電位。
4 系統(tǒng)的軟件設(shè)計
4.1主程序設(shè)計
ICL7135A/D與單片機連接電路的軟件設(shè)計系統(tǒng)的程序流程圖如圖所示。主程序一開始運行則設(shè)置堆棧起始地址為70H,設(shè)置中斷寄存器,用來對ICL7135的中斷進行計數(shù),每5次后清零,完成一次數(shù)據(jù)采集工作,然后設(shè)置ICL7135的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進行功能的設(shè)定。MOV  P2,#01111000B,按表3.4.5來看是設(shè)定
顯示器按2行顯示,每行8位,5×7點陣。

調(diào)用一次子程序ENABLE程序,寫入CPU的指令寄存器中。每次向LCDM中寫入一個指令,就調(diào)用一次ENABLE,然后再對顯示器進行閃爍、光標等功能進行設(shè)定。顯示器的RAM地址按加1方法進行讀寫。再設(shè)定第一行字符,也就是Voltage的顯示地址80H。字符Voltage的TABLE表地址送到DPTR中,然后調(diào)用遠程查表命令,依次把數(shù)據(jù)送到P2口,這時再調(diào)用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E產(chǎn)生一個下降沿脈沖,將數(shù)據(jù)送入到數(shù)據(jù)寄存器中,接下來執(zhí)行子程序DISPLAY1,它的主要功能是將TABLE表中的字符輸出到LCD中去。調(diào)定好顯示字符數(shù)即遠程查表的次數(shù),就開始查表了。
    例如第一個字符“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
行的起始地址為OCH,再調(diào)用顯示采樣數(shù)據(jù)
的子程序。采樣數(shù)據(jù)存放的數(shù)據(jù)地址安排如下圖所示,首先將60H中的數(shù)顯示在正負號的位置上,按照ASCII碼表,正號不顯示(#20H),負號顯示“-”(#2DH)。
4.2 A/D中斷程序設(shè)計

ICL7135每一分鐘完成3次據(jù)的采集工作,1/3秒完成后向CPU申請中斷,CPU這時暫停工作,為中斷服務(wù).中斷響應(yīng)后關(guān)中斷,將PSW、ACC壓棧,判斷是否首次中斷,如果是首次中斷,則將正負號標志位置入60H,再把萬位置入61H中,如果不是首次中斷,則跳到NEXT處,如果是第二次中斷,則將千位數(shù)置入62H中,如果是第三次中斷,再將百位數(shù)置入63H中,第四次中斷則將十位數(shù)置入64H中,第五次中斷則將小數(shù)點位置入65H中,同時個位置入66H中。同時清除中斷次數(shù)寄存器30H中的值,完成中斷后將ACC、PSW出棧,開中斷。
消隱的思想:每次電壓采集后,CPU將數(shù)據(jù)送到LCD顯示,將可能出現(xiàn)以下幾種需要消隱的情況。
例如:2000V檔量程:
      
   
      
0
   
      
1
   
      
9
   
      
9
   
      
.
   
      
9
   
此時萬位的值‘0’不符合人們的視覺習(xí)慣,需要把萬位的值消隱掉,編程是將#20H送入萬位,使其在LCD中不顯示任何字符即可。同樣的情況如下:
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
   
在采集到數(shù)據(jù)之后,置數(shù)之前判斷檔位,是2V檔不消隱,是其他檔位時再看要消隱的位之前有幾個是零。例如2000V檔量程,-0001.9V,在2次中斷時判斷檔位是2000V檔,第1位是零,消隱第2位千位。
4.3通訊模塊程序設(shè)計
89S52單片機內(nèi)部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個在物理上獨立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,它們的地址為99H。這個通信口既可以用于網(wǎng)絡(luò)通信,亦可實現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標準的RS-232接口。89S52的串行口有4種工作方式,1種同步方式,3種異步方式。本方式選方式1,一幀數(shù)據(jù)有10位,包括起始位0、8位數(shù)據(jù)位和1位停止位1。串行口電路在發(fā)送時能自動加入起始位和停止位。在接收時,停止位進入SCON中的RB8位。方式1的波特率是可變的,由定時器1的溢出率決定。由定時器1最好工作在方式2上(自動重裝載模式),這樣只需對TH1設(shè)置一次即可。數(shù)據(jù)通過TXD輸出,在8個位輸出完畢后,SCON寄存器的TI位被設(shè)為1,CPU只要判斷TI是1,接著發(fā)送下一個字節(jié)。
波特率的設(shè)定:定時器T1工作在方式2的初值為:

為了減小誤差,時鐘振蕩頻率采用11.0592MHz,選用定時器T1工作在方式2作波特率發(fā)生器,波特率為300,設(shè)SMOD為0,依公式(1.1)得初值為:
所以TH1 = TL1 = A0H
MOV SCON ,#50H     ;URAT工作在方式1上
MOV TMOD ,#20H     ;TIME1工作在方式2上
MOV TH1  , #0A0H    ;設(shè)置波特率為300
本設(shè)計的中斷十分重要,為了減少相互間的干擾,保證可靠性,采用查詢方式判斷是否發(fā)送完畢。
A6:  JBC TI , A5    ;如果發(fā)送完畢跳,清標志位,跳到A5。
       AJMP A6        ;否則跳到A6,等待
A5:  INC R0
5 結(jié)束語
電壓測量通過不同的接口電路可實現(xiàn)溫度、濕度、壓力等測量,廣泛應(yīng)用于工業(yè)領(lǐng)域。本電路設(shè)計別具一格,是一種高精度、低功耗、寬量程、智能化的電壓表。可擴展鍵盤、EEPROM、報警電路,實現(xiàn)電壓異常記錄、報警。
參考文獻
[1] 徐愛鈞.《智能化測量控制儀表原理與設(shè)計》(第二版)[M].北京:北京航空航天大學(xué)出版社,2004.
[2] 吳金戌,沈慶陽,郭庭吉.《8051單片機實踐與應(yīng)用》[M].北京:清華大學(xué)出版社,2002.
[3] 張國勛,《縮短ICL7135A/D采樣程序時間的一種方法》[J]. 《電子技術(shù)應(yīng)用》,1993,第一期.
[4] 高峰,《單片微型計算機與接口技術(shù)》[M].北京:科學(xué)出版社,2003.
[5] 劉偉,趙俊逸,黃勇,《一種基予C8051F單片機的SOC型數(shù)據(jù)采錄器的設(shè)計與實現(xiàn)》[A].天津市計算機學(xué)會單片機分會編. 《2003年全國單片機及嵌如入式系統(tǒng)學(xué)術(shù)年會論文集(下冊)》[C] .北京:北京航空航天大學(xué)出版社,2003 .790-794
[6] http://www.ic-on-line.com/  ICL7135.PDF、MAX232.PDF
致 謝
在我寫本論文的過程中,李曉偉老師給我提供了許多資料,并對實踐中出現(xiàn)的問題給予耐心的解答,完稿之后在百忙之中仔細閱讀,給出修改意見。有時午夜向李老師求助,他從不推辭,認真解答。李老師愛崗敬業(yè),治學(xué)嚴謹,思維嚴密,平易近人是我十分尊敬的老師,在此對他表示感謝。
在本文錄入的過程中,得到了任軍偉、劉曉峰同學(xué)的幫助,在這里對他們也表示的感謝!
設(shè)計感想
這是我2006年的畢業(yè)設(shè)計。
當時在選題時,沒人和我選重,因為有一定的難度。
指導(dǎo)教師要求也不高。
當時的參考資料都是些測量5V電壓的,采用8位A/D轉(zhuǎn)換,LED數(shù)碼管顯示。
可能懂的人認為沒什么大不了的,
對于只上了不到50個學(xué)時的課,沒有上過實習(xí)課的我,太不容易了。
我一心想做的更高級些,加些難度,加些挑戰(zhàn)。
設(shè)計個至少測DC1000V電壓表,要誤差小于0.3V,液晶顯示,可換擋測量。
當我把我的想法告訴我的同學(xué)時,他們沒有一個相信我會做成。
我個人認為學(xué)單片機學(xué)的不錯,有信心啊。
由于學(xué)校的條件有限,板子是別人做的,本來是想做一個的,后來時間不夠。
這個設(shè)計的難度在于編程,液晶顯示,可換擋測量更增加了設(shè)計難度。
由于第一次實踐,加之條件有限。我設(shè)計程序,調(diào)試,做成成品花了將近一個星期。
程序中除了液晶驅(qū)動部分參考了參考文獻[2],剩下的大部分都是自己寫的。
為了盡量追求完美,我加了很多輔助的部分。
調(diào)試程序時,我遇到了很多困難,例如:參考文獻錯誤的誤導(dǎo),調(diào)試環(huán)境的錯誤使用,
硬件改裝,程序本身不可預(yù)見的錯誤等。
經(jīng)歷了,寫程序,調(diào)試,仿真,如果成功寫進硬件,不成功繼續(xù)改進;
寫進硬件后出問題了,就不知是硬件問題還是元件問題了。
沒有人告訴你錯在那里,沒有人告訴你該怎么做,我在走沒人可借見的路,坎坷充滿荊棘的路。
那短日子真的是難熬啊,幾乎每時每刻都在想辦法。有空就在紙上寫畫著
由于時間不夠,很多地方還可以更加完美。
最后,再歷經(jīng)多次調(diào)試后,寫進硬件成功了,我高興的大喊大叫起來,真的太難了,家人也很為我高興。
我好好在同學(xué)面前炫了一把,很多同學(xué)感到驚訝?赡芏娜苏J為沒什么大不了的,對于只上了不到50個學(xué)時的課,沒有上過實習(xí)課的我,太不容易了。
。。。。。。
做好一件事真的不容易!

   


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:148546 發(fā)表于 2016-11-18 09:23 | 只看該作者
可以啊 ,厲害了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表