2006 屆本科畢業設計  基于單片機的數字電壓表
姓 名: 趙營 系 別: 物理與信息工程系 專 業: 電子信息工程 學 號: 040314034 指導教師: 李曉偉 2006年 4 月 12 日 基于單片機的數字電壓表 趙營 商丘師范學院物理與信息工程系 040314班 河南商丘 476000 摘要:本文介紹一種基于89S52單片機的一種電壓測量電路,該電路采用ICL7135高精度、雙積分A/D轉換電路,測量范圍直流0-±2000伏,使用LCD液晶模塊顯示,可以與PC機進行串行通信。正文著重給出了軟硬件系統的各部分電路,介紹了雙積分電路的原理,89S52的特點,ICL7135的功能和應用,LCD1601的功能和應用。該電路設計新穎、功能強大、可擴展性強。 關鍵詞:電壓測量,ICL7135,雙積分A/D轉換器,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前言 數字電壓表(Digital Voltmeter)簡稱DVM,它是采用數字化測量技術,把連續的模擬量(直流輸入電壓)轉換成不連續、離散的數字形式并加以顯示的儀表。傳統的指針式電壓表功能單一、精度低,不能滿足數字化時代的需求,采用單片機的數字電壓表,由精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC進行實時通信。目前,由各種單片A/D 轉換器構成的數字電壓表,已被廣泛用于電子及電工測量、工業自動化儀表、自動測試系統等智能化測量領域,示出強大的生命力。與此同時,由DVM擴展而成的各種通用及專用數字儀器儀表,也把電量及非電量測量技術提高到嶄新水平。本章重點介紹單片A/D 轉換器以及由它們構成的基于單片機的數字電壓表的工作原理。 2 系統原理及基本框圖  如圖2.1所示,模擬電壓經過檔位切換到不同的分壓電路衰減后,經隔離干擾送到A/D轉換器進行A/D轉換,然后送到單片機中進行數據處理。處理后的數據送到LCD中顯示,同時通過串行通訊與上位機通信。 圖2.1系統基本方框圖 3硬件設計   3.1 輸入電路 圖3.1.1量程切換開關 圖3.1.2衰減輸入電路 輸入電路的作用是把不同量程的被測的電壓規范到A/D轉換器所要求的電壓值。智能化數字電壓表所采用的單片雙積分型ADC芯片ICL7135,它要求輸入電壓0-±2V。本儀表設計是0-1000V電壓,靈敏度高所以可以不加前置放大器,只需衰減器,如圖3.1.2所示9M、900K、90K、和10K電阻構成1/10、1/100、1/1000的衰減器。衰減輸入電路可由開關來選擇不同的衰減率,從而切換檔位。為了能讓CPU自動識別檔位,還要有圖3.1.1的硬件連接。 3.2 A/D 轉換電路 A/D 轉換器的轉換精度對測量電路極其重要,它的參數關系到測量電路性能。本設計采用雙積A/D 轉換器,它的性能比較穩定,轉換精度高,具有很高的抗干擾能力,電路結構簡單,其缺點是工作速度較低。在對轉換精度要求較高,而對轉換速度要求不高的場合如電壓測量有廣泛的應用。 3.2.1雙積A/D 轉換器的工作原理 圖3.2.1.1雙積A/D 轉換器   如圖所示:對輸入模擬電壓和基準電壓進行兩次積分,先對輸入模擬電壓進行積分,將其變換成與輸入模擬電壓成正比的時間間隔 T1,再利用計數器測出此時間間隔,則計數器所計的數字量就正比于輸入的模擬電壓;接著對基準電壓進行同樣的處理。在常用的A/D轉換芯片(如ADC -0809、ICL7135、ICL7109等)中,ICL7135與其余幾種有所不同,它是一種四位半的雙積分
A/D轉換器,具有精度高(精度相當 于14位二進制數)、價格低廉、抗干擾能力強等優點。本文介紹用單片機并行方式采集ICL7135的數據以實現單片機電壓表和小型智能儀表的設計方案。  3.2.1 7135的應用 7135是采用CMOS工藝制作的單片4位半A/D轉換器,其所轉換的數字值以多工掃描的方式輸出,只要附加譯碼器,數碼顯示器,驅動器及電阻電容等元件,就可組成一個滿量程為2V的數字電壓表。 ㈠7135主要特點如下: ①雙積型A/D轉換器,轉換速度慢。 ②在每次A/D轉換前,內部電 路都自動進行調零操作,可保證零點在常溫下的長期穩定。在20000字(2V
滿量程)范圍內,保證轉換精度1字相當于14bitA/D轉換器。
③具有自動極性轉換功能。能在但極性參考電壓下對雙極性模擬輸入電壓進行A/D轉換,模擬電壓的范圍為0~±1.9999V。。
④模擬出入可以是差動信號,輸入電阻極高,輸入電流典型值1PA。
⑤所有輸出端和TTL電路相容。
⑥有過量程(OR)和欠量程(UR)標志信號輸出,可用作自動量程轉換的控制信號。
⑦輸出為動態掃描BCD碼。
⑧對外提供六個輸入,輸出控制信號(R/H,BUSH,ST,POL,OR,UR),因此除用于數字電壓表外,還能與異步接收 /發送器,微處理器或其它控制電路連接使用。
⑨采用28外引線雙列直插式封裝,外引線功能端排列如圖所示。
㈡7135數字部分
數字部分主要由計數器、鎖存器、多路開關及控制邏輯電路等組成。7135一次A/D轉換周期分為四個階段:1、自動調零(AZ);2、被測電壓積分(INT);3、基準電壓反積分(DE);4、積分回零(ZI)。具體內部轉換過程這里不做祥細介紹,主要介紹引腳的使用。 ①R/H(25腳)當R/H=“1”(該端懸空時為“1”)時,7135處于連續轉換狀態,每40002個時鐘周期完成一次A/D轉換。若R/H由“1”變“0”,則7135在完成本次A/D轉換后進入保持狀態,此時輸出為最后一次轉換結果,不受輸入電壓變化的影響。因此利用R/H端的功能可以使數據有保持功能。若把R/H端用作啟動功能時,只要在該端輸入一個正脈沖(寬度≥300ns),轉換器就從AZ階段開始進行A/D轉換。注意:第一次轉換周期中的AZ階段時間為9001-10001個時鐘脈沖,這是由于啟動脈沖和內部計數器狀態不同步造成的。  ②/ST(26腳)每次A/D轉換周期結束后,ST端都輸出5個負脈沖,其輸出時間對應在每個周期開始時的5個位選信號正脈沖的中間,ST負脈沖寬度等于1/2時鐘周期。  第一個ST負脈沖在上次轉換周期結束后101個時鐘周期產生。因為每個選信號(D5--D1)的正脈沖寬度為200個時鐘周期(只有AZ和DE階段開始時的第一個D5的脈沖寬度為201個CLK 周期),所以ST負脈沖之間相隔也是200個時鐘周期。需要注意的是,若上一周期為保持狀態(R/H=“0”)則ST無脈沖信號輸出。ST信號主要用來控制將轉換結果向外部鎖存器、UARTs或微處理器進行傳送。
③BUSY(21腳)在雙積分階段(INT+DE),BUSY為高電平,其余時為低電平。因此利用BUSY功能,可以實現A/D轉換結果的遠距離雙線傳送,其還原方法是將BUSY和CLK“與”后來計數器,再減去10001就可得到原來的轉換結果。 ④OR(27腳)當輸入電壓超出量程范圍(20000),OR將會變高。該信號在BUSY信號結束時變高。在DE階段開始時變低。 ⑤UR(28腳)當輸入電壓等于或低于滿量程的9%(讀數為1800),則一當BUST信號結束,UR將會變高。該信號在INT階段開始時變低。 ⑥POL(23腳)該信號用來指示輸入電壓的極性。當輸入電壓為正,則POL等于“1”,反之則等于“0”。該信號DE階段開始時變化,并維持一個A/D轉換調期。 ⑦位驅動信號D5、D4、D3、D2、D1(12、17、18、19、20腳)每一位驅動信號分別輸出一個正脈沖信號,脈沖寬度為200個時鐘周期,其中D5對應萬位選通,以下依次為千、百、十、個位。在正常輸入情況下,D5--D1輸出連續脈沖。當輸入電壓過量程時,D5--D1在AZ階段開始時只分別輸出一個脈沖,然后都處于低電平,直至DE階段開始時才輸出連續脈沖。利用這個特性,可使得顯示器件在過程時產生一亮一暗的直觀現象。
⑧B8、B4、B2、B1(16、15、14、13腳)該四端為轉換結果BCD碼輸出,采用動態掃描輸出方式,即當位選信號D5=“1”時,該四端的信號為萬位數的內容,D4=“1”時為千位數內容,其余依次類推。在個、十、百、千四位數的內容輸出時,BCD碼范圍為0000--1001,對于萬位數只有0和1兩種狀態,所以其輸出的BCD碼為“0000”和“0001”。當輸入電壓過量程時,各位數輸出全部為零,這一點在使用時應注意。
最后還要說明一點,由于數字部分以DGNG端作為接地端,所以所有輸出端輸出電平以DGNG作為相對參考點。基準電壓,基準電壓的輸入必須對于模擬公共端COM是正電壓。 ㈢與單片機系統的串行連接 在ICL7135與單片機系統進行連接時,使用并行采集方式,要連接BCD碼數據輸出線,可以將ICL7135的/STB信號接至AT89C52的P3.2(INT0)。 ICL7135需要外部的時鐘信號,本設計采用CD4060來對4M信號進行32分頻得到125KHz的時鐘信號。CD4060計數為14級2進制計數器,在數字集成電路中可實現的分頻次數最高,而且CD4060還包含振蕩電路所需的非門,使用更為方便。   圖3.2.1.3 ICL7135與系統的連接圖 圖3.2.1.4 CD4060時鐘發生電路
 3.3單片機部分 單片機選用的是ATMEL公司新推出的AT89S52,如圖 3.2.1.1所示。該芯片具有低功耗、高性能的特點,是采用CMOS工藝的8位單片機,與AT89C51完全兼容。AT89S52還有以下主要特點:
①采用了ATMEL公司的高密度、非易失性存儲器(NV-SRAM)技術;
②其片內具有256字節RAM,8KB的可在線編程(ISP)FLASH存儲器;
③有2種低功耗節電工作方式:空閑模式和掉電模式
④片內含有一個看門狗定時器(WDT),WDT包含一個14位計數器和看門狗定時器復位寄存器(WDTRST),只要對WDTRST按順序先寫入01EH,后寫入0E1H,WDT便啟動,當CPU由于擾動而使程序陷入死循環或“跑飛”狀態時,WDT即可有效地使系統復位,提高了系統的抗干擾性能。 3.4液晶顯示部分  顯示接口用來顯示系統的狀態,命令或采集的電壓數據。本系統顯示部分用的是LCD液晶模塊,采用一個16×1的字符型液晶顯示模塊,
點陣圖形式液晶由 M 行×N 列個顯示單元組成,假設 LCD 顯示屏有64行,每行有 128列,每 8列對應 1 個字節的 8 個位,即每行由 16 字節,共 16×8=128個點組成,屏上 64×16 個顯示單元和顯示 RAM 區 1024 個字節相對應,每一字節的內容和屏上相應位置的亮暗對應。一個字符由 6×8 或 8×8點陣組成,即要找到和屏上某幾個位置對應的顯示 RAM區的 8 個字節,并且要使每個字節的不同的位為‘1’,其它的為‘0’,為‘1’的點亮,為‘0’的點暗,這樣一來就組成某個字符。但對于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據在LCD 上開始顯示的行列號及每行的列數找出顯示 RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。 3.4.1 1601使用說明 圖3.4.1.1 1601引腳圖 表3.4.1.1 LCD1601液晶模塊的引腳 引腳
| 符號 | 功能說明 | 1 | GND | 接地 | 2 | Vcc | +5V | 3 | VL | 驅動LCD,一般將此腳接地 | 4 | RS | 寄存器選擇 0:指令寄存器(WRITE)Busy flag,位址計數器(READ) 1:數據寄存器(WRITE,READ) | 5 | R/W | READ/WRITE選擇 1:READ 0:WTITE | 6 | E | 讀寫使能(下降沿使能) | 7 | DB0 | 低4位三態、雙向數據總線 | |
| 8 | DB1 |
| 9 | DB2 | 10 | DB3 | 11 | DB4 | 高4位三態、雙向數據總線 另外DB7也是一個Busy flag | 12 | DB5 | 13 | DB6 | 14 | DB7 | | | | |
寄存器選擇,如表所示: 表3.4.1.3 寄存器選擇控制線操作 RS | R/W | 操作說明 | 0 | 0 | 寫入指令寄存器(清除屏幕…等) | 0 | 1 | 讀Busy flag(DB7),以及讀取位址計數器(DB0~DB6)值 | 1 | 0 | 寫入數據寄存器(顯示各字型等) | 1 | 1 | 從數據寄存器讀取數據 |
Busy flag(DB7):在此位未被清除為“0”時,LCD將無法再處理其他指令要求。 (1)顯示地址:內部地址計數器的計數地址: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+內部計數地址,可以用此方式將字顯示在某一位置。 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 的指令組 指 令 說 明 | 設置碼 |
| 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 | * | * |
| 字發生器地址設定 | 0 | 0 | 0 | 1 | AGC |
| 設置顯示地址 | 0 | 0 | 0 | 1 | ADD |
| 忙碌標志位BF | 0 | 0 | 1 | BF |
| 顯示數據 | 1 | 0 | 寫入數據 | 讀取數據 | 1 | 1 | 讀取數據 | 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:內部正在動作 BF=0:可接收指令或數據碼 |
| | | | | | | | | | | | |
3.4.2 液晶顯示部分與89S52的接口 如圖所示:用89S52的P2口作為數據線,用P0.1、P0.2、P0.3分別作為LCD的E、R/W、RS。其中E是下降沿觸發的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設計要點如下:顯示模塊初始化:首先清屏,再設置接口數據位為8位,顯示行數為1行,字型為5×7點陣,然后  設  置為整體顯示,取消光標和字體閃爍,最后設置為正向增量方式且不移位。向LCD的顯示緩沖區中送字符,程序中采用2個字符數組,一個顯示字符,另一個顯示電壓數據,要顯示的字符或數據被送到相應的數組中,完成后再統一顯示.首先取一個要顯示的字符或數據送到LCD的顯示緩沖區,程序延時2.5ms,判斷是否夠顯示的個數,不夠則地址加一取下一個要顯示的字符或數據。
 3.5 通訊模塊  89S52內部已集成通信接口URT,只需擴展一片MAX232芯片將輸出信號轉換成RS-232協議規定的電平標準, MAX232 是 一 種 雙 組 驅 動 器 / 接 收 器 ,每個接收器將EIA/TIA-232-E電平輸入轉換為5V TTL/CMOS電平。 每個驅動器將TTL/CMOS輸入電平轉換 為 EIA/TIA-232-E電平。即EIA接口,就是把5V轉換為-8V到-15V電位0V轉換為8V到15V再經RXD輸出,接收時由RXD輸入,把-8V到-15V電位轉換為5V,8V到15V轉換為0V。MAX232的工作電壓只需5V,內部有振蕩電路產生正負9V電位。
4 系統的軟件設計 4.1主程序設計 ICL7135A/D與單片機連接電路的軟件設計系統的程序流程圖如圖所示。主程序一開始運行則設置堆棧起始地址為70H,設置中斷寄存器,用來對ICL7135的中斷進行計數,每5次后清零,完成一次數據采集工作,然后設置ICL7135  的STB端的中斷的優先級。緊接著LCDM1601B進行一次清屏,使其各個指令、數據寄存器的值進行清空,屏幕不顯示任何字符。以前面對1601B的介紹,只要將01H送到數據總線,使RS=0,R/W=0,E有個下降沿的脈沖就可以完成清屏工作。用以下指令實現 MOV P2,#01H ;送到數據DB7---DB0,調用子程序 ENABLE,由于下降沿時,內部數據要送到RAM區,所以要有一個延時子程序,使這個下降沿持續2.5毫秒。內部RAM有指令代碼后就開始對RAM進行清零,所以屏幕原有的字符將被清除。接著對1601進行功能的設定。MOV P2,#01111000B,按表3.4.5來看是設定 顯示器按2行顯示,每行8位,5×7點陣。
調用一次子程序ENABLE程序,寫入CPU的指令寄存器中。每次向LCDM中寫入一個指令,就調用一次ENABLE,然后再對顯示器進行閃爍、光標等功能進行設定。顯示器的RAM地址按加1方法進行讀寫。再設定第一行字符,也就是‘Voltage’的顯示地址80H。字符‘Voltage’的TABLE表地址送到DPTR中,然后調用遠程查表命令,依次把數據送到P2口,這時再調用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E產生一個下降沿脈沖,將數據送入到數據寄存器中,接下來執行子程序DISPLAY1,它的主要功能是將TABLE表中的字符輸出到LCD中去。調定好顯示字符數即遠程查表的次數,就開始查表了。
 例如第一個字符“V”的ASCII碼是56H,就將這個碼送到P2口,再調用使能數據子程序,使RS=1(數據區使能)寫入顯示數據區,R/W=0表示寫,E=來個下降沿延時2.5毫秒,使數據寫入RAM內。完成  TABLE表輸出以后,向指令RAM中寫入第2
行的起始地址為OCH,再調用顯示采樣數據 的子程序。采樣數據存放的數據地址安排如下圖所示,首先將60H中的數顯示在正負號的位置上,按照ASCII碼表,正號不顯示(#20H),負號顯示“-”(#2DH)。 4.2 A/D中斷程序設計 ICL7135每一分鐘完成3次據的采集工作,1/3秒完成后向CPU申請中斷,CPU這時暫停工作,為中斷服務.中斷響應后關中斷,將PSW、ACC壓棧,判斷是否首次中斷,如果是首次中斷,則將正負號標志位置入60H,再把萬位置入61H中,如果不是首次中斷,則跳到NEXT處,如果是第二次中斷,則將千位數置入62H中,如果是第三次中斷,再將百位數置入63H中,第四次中斷則將十位數置入64H中,第五次中斷則將小數點位置入65H中,同時個位置入66H中。同時清除中斷次數寄存器30H中的值,完成中斷后將ACC、PSW出棧,開中斷。 消隱的思想:每次電壓采集后,CPU將數據送到LCD顯示,將可能出現以下幾種需要消隱的情況。 例如:2000V檔量程: 此時萬位的值‘0’不符合人們的視覺習慣,需要把萬位的值消隱掉,編程是將#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檔量程:
在采集到數據之后,置數之前判斷檔位,是2V檔不消隱,是其他檔位時再看要消隱的位之前有幾個是零。例如2000V檔量程,-0001.9V,在2次中斷時判斷檔位是2000V檔,第1位是零,消隱第2位千位。 4.3通訊模塊程序設計 89S52單片機內部有一個全雙工的串行通信口,即串行接收和發送緩沖器(SBUF),這兩個在物理上獨立的接收發送器,既可以接收數據也可以發送數據。但接收緩沖器只能讀出不能寫入,而發送緩沖器則只能寫入不能讀出,它們的地址為99H。這個通信口既可以用于網絡通信,亦可實現串行異步通信,還可以構成同步移位寄存器使用。如果在傳行口的輸入輸出引腳上加上電平轉換器,就可方便地構成標準的RS-232接口。89S52的串行口有4種工作方式,1種同步方式,3種異步方式。本方式選方式1,一幀數據有10位,包括起始位0、8位數據位和1位停止位1。串行口電路在發送時能自動加入起始位和停止位。在接收時,停止位進入SCON中的RB8位。方式1的波特率是可變的,由定時器1的溢出率決定。由定時器1最好工作在方式2上(自動重裝載模式),這樣只需對TH1設置一次即可。數據通過TXD輸出,在8個位輸出完畢后,SCON寄存器的TI位被設為1,CPU只要判斷TI是1,接著發送下一個字節。 波特率的設定:定時器T1工作在方式2的初值為: 為了減小誤差,時鐘振蕩頻率采用11.0592MHz,選用定時器T1工作在方式2作波特率發生器,波特率為300,設SMOD為0,依公式(1.1)得初值為: 所以TH1 = TL1 = A0H MOV SCON ,#50H ;URAT工作在方式1上 MOV TMOD ,#20H ;TIME1工作在方式2上 MOV TH1 , #0A0H ;設置波特率為300 本設計的中斷十分重要,為了減少相互間的干擾,保證可靠性,采用查詢方式判斷是否發送完畢。 A6: JBC TI , A5 ;如果發送完畢跳,清標志位,跳到A5。 AJMP A6 ;否則跳到A6,等待 A5: INC R0 5 結束語 電壓測量通過不同的接口電路可實現溫度、濕度、壓力等測量,廣泛應用于工業領域。本電路設計別具一格,是一種高精度、低功耗、寬量程、智能化的電壓表。可擴展鍵盤、EEPROM、報警電路,實現電壓異常記錄、報警。 參考文獻 [1] 徐愛鈞.《智能化測量控制儀表原理與設計》(第二版)[M].北京:北京航空航天大學出版社,2004. [2] 吳金戌,沈慶陽,郭庭吉.《8051單片機實踐與應用》[M].北京:清華大學出版社,2002. [3] 張國勛,《縮短ICL7135A/D采樣程序時間的一種方法》[J]. 《電子技術應用》,1993,第一期. [4] 高峰,《單片微型計算機與接口技術》[M].北京:科學出版社,2003. [5] 劉偉,趙俊逸,黃勇,《一種基予C8051F單片機的SOC型數據采錄器的設計與實現》[A].天津市計算機學會單片機分會編. 《2003年全國單片機及嵌如入式系統學術年會論文集(下冊)》[C] .北京:北京航空航天大學出版社,2003 .790-794 致 謝 在我寫本論文的過程中,李曉偉老師給我提供了許多資料,并對實踐中出現的問題給予耐心的解答,完稿之后在百忙之中仔細閱讀,給出修改意見。有時午夜向李老師求助,他從不推辭,認真解答。李老師愛崗敬業,治學嚴謹,思維嚴密,平易近人是我十分尊敬的老師,在此對他表示感謝。 在本文錄入的過程中,得到了任軍偉、劉曉峰同學的幫助,在這里對他們也表示的感謝! 設計感想 這是我2006年的畢業設計。 當時在選題時,沒人和我選重,因為有一定的難度。 指導教師要求也不高。 當時的參考資料都是些測量5V電壓的,采用8位A/D轉換,LED數碼管顯示。 可能懂的人認為沒什么大不了的, 對于只上了不到50個學時的課,沒有上過實習課的我,太不容易了。 我一心想做的更高級些,加些難度,加些挑戰。 設計個至少測DC1000V電壓表,要誤差小于0.3V,液晶顯示,可換擋測量。 當我把我的想法告訴我的同學時,他們沒有一個相信我會做成。 我個人認為學單片機學的不錯,有信心啊。 由于學校的條件有限,板子是別人做的,本來是想做一個的,后來時間不夠。 這個設計的難度在于編程,液晶顯示,可換擋測量更增加了設計難度。 由于第一次實踐,加之條件有限。我設計程序,調試,做成成品花了將近一個星期。 程序中除了液晶驅動部分參考了參考文獻[2],剩下的大部分都是自己寫的。 為了盡量追求完美,我加了很多輔助的部分。 調試程序時,我遇到了很多困難,例如:參考文獻錯誤的誤導,調試環境的錯誤使用, 硬件改裝,程序本身不可預見的錯誤等。 經歷了,寫程序,調試,仿真,如果成功寫進硬件,不成功繼續改進; 寫進硬件后出問題了,就不知是硬件問題還是元件問題了。 沒有人告訴你錯在那里,沒有人告訴你該怎么做,我在走沒人可借見的路,坎坷充滿荊棘的路。 那短日子真的是難熬啊,幾乎每時每刻都在想辦法。有空就在紙上寫畫著 由于時間不夠,很多地方還可以更加完美。 最后,再歷經多次調試后,寫進硬件成功了,我高興的大喊大叫起來,真的太難了,家人也很為我高興。 我好好在同學面前炫了一把,很多同學感到驚訝。可能懂的人認為沒什么大不了的,對于只上了不到50個學時的課,沒有上過實習課的我,太不容易了。 。。。。。。 做好一件事真的不容易!
|