找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于單片機(jī)的ADC0809數(shù)字電壓表設(shè)計(jì)報(bào)告(匯編語言)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:362056 發(fā)表于 2018-7-21 17:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目錄

目錄

第一章 課設(shè)題目分析

1.1  數(shù)字電壓表簡(jiǎn)介

1.2  數(shù)字電壓表基本工作原理

1.3  設(shè)計(jì)要求

1.4  設(shè)計(jì)思路

1.5  設(shè)計(jì)方案

第二章 硬件電路分析

2.1  單片機(jī)系統(tǒng)設(shè)計(jì)

2.1.1  STC89C51簡(jiǎn)介

2.1.2  單片機(jī)最小系統(tǒng)

2.2  A/D轉(zhuǎn)換模塊設(shè)計(jì)

2.2.1  逐次逼近式A/D轉(zhuǎn)換工作原理

2.2.2  ADC0809簡(jiǎn)介

2.3  LED顯示系統(tǒng)設(shè)計(jì)

2.3.1  LED基本結(jié)構(gòu)

2.3.2  LED顯示方式

2.3.3  LED顯示器與單片機(jī)接口設(shè)計(jì)

2.4  電壓采集電路

2.5  總體電路設(shè)計(jì)

第三章 軟件系統(tǒng)設(shè)計(jì)

3.1  程序設(shè)計(jì)總方案

3.2  系統(tǒng)子程序設(shè)計(jì)

3.2.1  AD轉(zhuǎn)換子程序

3.2.2  顯示子程序

3.3  編程軟件KEIL簡(jiǎn)介

3.4  PROTUES仿真軟件簡(jiǎn)介

第四章 仿真與實(shí)物調(diào)試

4.1  軟件仿真

4.2  實(shí)物調(diào)試

4.3  誤差分析

參考文獻(xiàn)

附錄1  仿真電路圖

附錄2  實(shí)物連接圖

附錄3  顯示示數(shù)圖

附錄4  源程序


第一章 課設(shè)題目分析
第一章 課設(shè)題目分析1.1 數(shù)字電壓表簡(jiǎn)介
在電量的測(cè)量中,電壓、電流和頻率是最基本的三個(gè)被測(cè)量,其中電壓量的測(cè)量最為經(jīng)常。而且隨著電子技術(shù)的發(fā)展,更是經(jīng)常需要測(cè)量高精度的電壓,所以數(shù)字電壓表就成為一種必不可少的測(cè)量?jī)x器。數(shù)字電壓表(Digital Voltmeter)簡(jiǎn)稱DVM,它是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。與此同時(shí),由DVM擴(kuò)展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測(cè)量技術(shù)提高到嶄新水平。本文重點(diǎn)介紹單片A/D 轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機(jī)的數(shù)字電壓表的工作原理。目前,由各種單片A/D 轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測(cè)量、工業(yè)自動(dòng)化儀表、自動(dòng)測(cè)試系統(tǒng)等智能化測(cè)量領(lǐng)域,示出強(qiáng)大的生命力理。
目前,數(shù)字電壓表的內(nèi)部核心部件是A/D轉(zhuǎn)換器,轉(zhuǎn)換的精度很大程度上影響著數(shù)字電壓表的準(zhǔn)確度,因而,以后數(shù)字電壓表的發(fā)展就著眼在高精度和低成本這兩個(gè)方面。A/D轉(zhuǎn)換器分成四種:計(jì)數(shù)式A/D轉(zhuǎn)換器、雙積分式A/D轉(zhuǎn)換器、逐次逼近式A/D轉(zhuǎn)換器和并行式A/D轉(zhuǎn)換器。
目前最常用的是雙積分式A/D轉(zhuǎn)換器和逐次逼近式A/D轉(zhuǎn)換器,其中雙積分式A/D轉(zhuǎn)換器的主要優(yōu)點(diǎn)是轉(zhuǎn)換精度高,抗干擾性能好,價(jià)格便宜。但是其轉(zhuǎn)換速度慢,因此這種轉(zhuǎn)換器這種轉(zhuǎn)換器主要用于速度要求不高的場(chǎng)合。而逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,但精度相對(duì)較差。因此未來的A/D轉(zhuǎn)換器將兼顧精度和速度,成本也會(huì)隨著集成電路的發(fā)展而降低。
1.2 數(shù)字電壓表基本工作原理
本文介紹了一種基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)。該設(shè)計(jì)主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊及顯示模塊。A/D轉(zhuǎn)換主由芯片ADC0809來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量在傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片STC89C51來完成,其負(fù)責(zé)把ADC0809傳送來的數(shù)字量經(jīng)過一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;此外,它還控制著ADC0809芯片工作。
    該系統(tǒng)的數(shù)字電壓表電路簡(jiǎn)單,所用的元件較少,成本低,且測(cè)量精度和可靠性較高。此數(shù)字電壓表可以測(cè)量0-10V的1路模擬直流輸入電壓并通過一個(gè)四位一體的7段數(shù)碼管顯示出來。
1.3 設(shè)計(jì)要求

⑴以MCS-51系列單片機(jī)為核心器件,組成一個(gè)簡(jiǎn)單的直流數(shù)字電壓表

⑵采用1路模擬量輸入,能夠測(cè)量0-10V之間的直流電壓值

1.4 設(shè)計(jì)思路
電路盡量采用中、大規(guī)模集成電路。其中,A/D轉(zhuǎn)換器將輸入的模擬量轉(zhuǎn)換成數(shù)字量,按規(guī)定的時(shí)序?qū)/D轉(zhuǎn)換器中各組模擬開關(guān)接通或斷開,保證A/D轉(zhuǎn)換正常進(jìn)行。A/D轉(zhuǎn)換結(jié)果通過單片機(jī)輸出,最后顯示在數(shù)碼管上。
⑴ 根據(jù)設(shè)計(jì)要求,選擇STC89C51單片機(jī)為核心控制器件。
⑵ A/D轉(zhuǎn)換采用ADC0809實(shí)現(xiàn)。
⑶ 電壓顯示采用四位一體的LED數(shù)碼管。
⑷ LED數(shù)碼的段碼輸入,由并行端口P0產(chǎn)生:位碼輸入,用并行端口P2
  低4位產(chǎn)生。
1.5 設(shè)計(jì)方案

硬件電路設(shè)計(jì)由6個(gè)部分組成; A/D轉(zhuǎn)換電路,STC89C51單片機(jī)、LED顯示系統(tǒng)、時(shí)鐘電路、復(fù)位電路以及測(cè)量電壓輸入電路。硬件電路設(shè)計(jì)框圖如圖1.1所示。


圖1.1 數(shù)字電壓表總體設(shè)計(jì)方框圖



第二章 硬件電路分析
第二章 硬件電路分析2.1 單片機(jī)系統(tǒng)設(shè)計(jì)2.1.1 STC89C51簡(jiǎn)介
STC89C51是一種低功耗、高性能CMOS 8位微控制器,具有4K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用。
其各引腳功能如下:
VCC:電源電壓
GND:地
P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口P0寫“1”時(shí)可作為高阻抗輸入端用。  在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)位,在訪問期間激活內(nèi)部上拉電阻。
P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTE邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ILL)。
表2-1  P1口特殊功能【1】
引腳號(hào)
功能特性
P1.0
T2(定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出
P1.1
T2EX(定時(shí)/計(jì)數(shù)2捕獲/重裝載出發(fā)和方向控制)

P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ILL)。  在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX @RI指令)時(shí),P2口輸出P2鎖存器的內(nèi)容。
P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻輸出電流(ILL)。  P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表2-2所示。
表2-2  P3端口第二功能【1】
端口引腳
第二功能
P3.0
RXD(串行輸入口)
P3.1
TXD(串行輸出口)
P3.2
INTO(外部中斷0)
P3.3
INT1(外部中斷1)
P3.4
T0(定時(shí)/計(jì)數(shù)0)
P3.5
T1(定時(shí)/計(jì)數(shù)1)
P3.6
WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7
RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)


RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。

圖2.1 單片機(jī)引腳圖

EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH ) 。 EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。  如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。  Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源VPP,當(dāng)然這必須是該器件是使用12V編程電壓VCC 。
XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
數(shù)據(jù)存儲(chǔ)器:89C51有256個(gè)字節(jié)的內(nèi)部RAM,80H-FFH高128個(gè)字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128。  字節(jié)的RAM和特殊功能寄存器的地址是相同的,但在物理上它們是分開的。  當(dāng)一條指令訪問7FH以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)。RAM還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。
中斷:89C51共有6個(gè)中斷向量:兩個(gè)外中斷(INT0和INT1),3個(gè)定時(shí)器中斷(定時(shí)器0, 1, 2)和串行口中斷。
2.1.2 單片機(jī)最小系統(tǒng)
單片機(jī)最小系統(tǒng),也叫做單片機(jī)最小應(yīng)用系統(tǒng),是指用最少的原件組成單片機(jī)可以工作的系統(tǒng)。單片機(jī)最小系統(tǒng)包括電源、晶振、復(fù)位電路、時(shí)鐘電路。


圖2.2 最小系統(tǒng)                      圖2.3 復(fù)位電路

復(fù)位電路:?jiǎn)纹瑱C(jī)在啟動(dòng)運(yùn)行時(shí)都需要復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。MCS-51單片機(jī)有一個(gè)復(fù)位引腳RST,采用施密特觸發(fā)輸入。當(dāng)震蕩器起振后,只要該引腳上出現(xiàn)2個(gè)機(jī)器周期以上的高電平即可確保時(shí)器件復(fù)位[1]。復(fù)位完成后,如果RST端繼續(xù)保持高電平,MCS-51就一直處于復(fù)位狀態(tài),只要RST恢復(fù)低電平后,單片機(jī)才能進(jìn)入其他工作狀態(tài)。單片機(jī)的復(fù)位方式有上電自動(dòng)復(fù)位和手動(dòng)復(fù)位兩種,圖2.3是51系列單片機(jī)統(tǒng)常用的復(fù)位電路,只要Vcc上升時(shí)間不超過1ms,它們都能很好的工作。

時(shí)鐘電路:?jiǎn)纹瑱C(jī)中CPU每執(zhí)行一條指令,都必須在統(tǒng)一的時(shí)鐘脈沖的控制下嚴(yán)格按時(shí)間節(jié)拍進(jìn)行,而這個(gè)時(shí)鐘脈沖是單片機(jī)控制中的時(shí)序電路發(fā)出的。CPU執(zhí)行一條指令的各個(gè)微操作所對(duì)應(yīng)時(shí)間順序稱為單片機(jī)的時(shí)序。MCS-51單片機(jī)芯片內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成震蕩器,XTAL1為該放大器的輸入端,XTAL2為該放大器輸出端,但形成時(shí)鐘電路還需附加其他電路[1]。

    本設(shè)計(jì)系統(tǒng)采用內(nèi)部時(shí)鐘方式,利用單片機(jī)內(nèi)部的高增益反相放大器,外部電路簡(jiǎn),只需要一個(gè)晶振和 2個(gè)電容即可,如圖2.4所示。電路中的器件選擇可以通過計(jì)
算和實(shí)驗(yàn)確定,也可以參考一些典型電路的參數(shù),電路中,電容器C1和C2對(duì)震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個(gè)系統(tǒng)中選擇了30pF;石英晶振選擇

圖2.4 時(shí)鐘電路

范圍最高可選24MHz,它決定了單片機(jī)電路產(chǎn)生的時(shí)鐘信號(hào)震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時(shí)鐘信號(hào)的震蕩頻率為12MHz。
2.2 A/D轉(zhuǎn)換模塊設(shè)計(jì)
現(xiàn)實(shí)世界的物理量都是模擬量,能把模擬量轉(zhuǎn)化成數(shù)字量的器件稱為模/數(shù)轉(zhuǎn)換器(A/D轉(zhuǎn)換器),A/D轉(zhuǎn)換器是單片機(jī)數(shù)據(jù)采集系統(tǒng)的關(guān)鍵接口電路,按照各種A/D芯片的轉(zhuǎn)化原理可分為逐次逼近型,雙重積分型等等。雙積分式A/D轉(zhuǎn)換器具有抗干擾能力強(qiáng)、轉(zhuǎn)換精度高、價(jià)格便宜等優(yōu)點(diǎn)。與雙積分相比,逐次逼近式A/D轉(zhuǎn)換的轉(zhuǎn)換速度更快,而且精度更高,比如ADC0809、ADC0808等,它們通常具有8路模擬選通開關(guān)及地址譯碼、鎖存電路等,它們可以與單片機(jī)系統(tǒng)連接,將數(shù)字量送到單片機(jī)進(jìn)行分析和顯示。一個(gè)n位的逐次逼近型A/D轉(zhuǎn)換器只需要比較n次,轉(zhuǎn)換時(shí)間只取決于位數(shù)和時(shí)鐘周期,逐次逼近型A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,因而在實(shí)際中廣泛使用。
2.2.1 逐次逼近式A/D轉(zhuǎn)換工作原理
逐次逼近型A/D轉(zhuǎn)換器是由一個(gè)比較器、A/D轉(zhuǎn)換器、存儲(chǔ)器及控制電路組成。它利用內(nèi)部的寄存器從高位到低位一次開始逐位試探比較。
轉(zhuǎn)換過程如下:

開始時(shí),寄存器各位清零,轉(zhuǎn)換時(shí),先將最高位置1,把數(shù)據(jù)送入A/D轉(zhuǎn)換器轉(zhuǎn)換,轉(zhuǎn)換結(jié)果與輸入的模擬量比較,如果轉(zhuǎn)換的模擬量比輸入的模擬量小,則1保留,如果

圖2.5  AD轉(zhuǎn)換原理框圖

轉(zhuǎn)換的模擬量比輸入的模擬量大,則1不保留,然后從第二位依次重復(fù)上述過程直至最低位,最后寄存器中的內(nèi)容就是輸入模擬量對(duì)應(yīng)的二進(jìn)制數(shù)字量。其原理框圖如圖2.5所示。
2.2.2 ADC0809簡(jiǎn)介
ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,帶有使能控制端,與微機(jī)直接接口,片內(nèi)帶有鎖存功能的8路模擬多路開關(guān),可以對(duì)8路0-5V輸入模擬電壓信號(hào)分時(shí)進(jìn)行轉(zhuǎn)換,由于ADC0809設(shè)計(jì)時(shí)考慮到若干種模/數(shù)變換技術(shù)的長(zhǎng)處,所以該芯片非常適應(yīng)于過程控制,微控制器輸入通道的接口電路,智能儀器和機(jī)床控制等領(lǐng)域。
ADC0809主要特性:8路8位A/D轉(zhuǎn)換器,即分辨率8位;具有鎖存控制的8路模擬開關(guān);易與各種微控制器接口;可鎖存三態(tài)輸出,輸出與TTL兼容;轉(zhuǎn)換時(shí)間:128μs;轉(zhuǎn)換精度:0.2%;單個(gè)+5V電源供電;模擬輸入電壓范圍0- +5V,無需外部零點(diǎn)和滿度調(diào)整;低功耗,約15mW。
ADC0809是8位AD轉(zhuǎn)換器,輸入信號(hào)等于參考電壓時(shí),輸出為255,1.25V為1/4滿量程,輸出為255/4,轉(zhuǎn)為整數(shù)64,也就是40H。
ADC0809的電源電壓范圍是4.75v - 5.25v。一般都直接用5V;鶞(zhǔn)電壓一般接5V,這樣輸入電壓為5V時(shí),轉(zhuǎn)換的數(shù)字量為255.基準(zhǔn)電壓是有用的,在特定條件下可以提高轉(zhuǎn)換精度。如;輸入電壓范圍為0-2.5V,基準(zhǔn)電源用5V,轉(zhuǎn)換成數(shù)字量的值為0-128.如果把基準(zhǔn)電壓定為2.5V,那么此時(shí)轉(zhuǎn)換成的數(shù)字量就為0-255.


圖2.6  ADC0809引腳圖

模數(shù)轉(zhuǎn)換器的分辨率表示能夠改變數(shù)字輸出值的最小輸入電壓值。分辨率由 A/D 的位數(shù)決定, 位數(shù)越多,電壓分辨率越高。如:當(dāng)前的模擬輸入電壓是 1.00V,對(duì)應(yīng)的輸出數(shù)值是 2EH,當(dāng)輸入電壓改變?yōu)?1.01V時(shí),輸出數(shù)值是2FH,分辨率就是 10mV 。ADC0809是8位逐次逼近型模數(shù)轉(zhuǎn)換器,輸出數(shù)值范圍是 0 ~ 2^8 -1(0 ~ 255),滿量程
是 5V ,分辨率就是最低有效位(LSB) 的對(duì)應(yīng)輸入電壓值,分辨率 = 5000/255 = 19.6mV。分辨率高是精度高的前提,但是分辨率高未必精度一定高,如基準(zhǔn)電壓( Vref) 的穩(wěn)定度、芯片抗干擾能力、電路噪聲等指標(biāo)都會(huì)影響測(cè)量精度。所以n位的A/D芯片,分辨率直接用滿量程電壓除以 2^n 計(jì)算即可。分辨率 = 5000/256 = 19.5mV。
ADC0809芯片有28條引腳,采用雙列直插式封裝,其引腳圖如圖2.6所示。
下面說明各個(gè)引腳功能:
IN0-IN7(8條):8路模擬量輸入線,用于輸入和控制被轉(zhuǎn)換的模擬電壓。
地址輸入控制(4條):
ALE:地址鎖存允許輸入線,高電平有效,當(dāng)ALE為高電平時(shí),為地址輸入線,用于選擇IN0-IN7上那一條模擬電壓送給比較器進(jìn)行A/D轉(zhuǎn)換。
ADDA,ADDB,ADDC:3位地址輸入線,用于選擇8路模擬輸入中的一路,其對(duì)應(yīng)關(guān)系如表2-3所示:
表2-3  ADC0809通道選擇表
地址碼
對(duì)應(yīng)的輸入通道
C
B
A
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7


START:START為“啟動(dòng)脈沖”輸入法,該線上正脈沖由CPU送來,寬度應(yīng)大于100ns,上升沿清零SAR,下降沿啟動(dòng)ADC工作。
EOC:EOC為轉(zhuǎn)換結(jié)束輸出線,該線上高電平表示A/D轉(zhuǎn)換已結(jié)束,數(shù)字量已鎖入三態(tài)輸出鎖存器。
D1-D8:數(shù)字量輸出端,D1為高位。
OE:OE為輸出允許端,高電平能使D1-D8引腳上輸出轉(zhuǎn)換后的數(shù)字量。
REF+、REF-:參考電壓輸入量,給電阻階梯網(wǎng)絡(luò)供給標(biāo)準(zhǔn)電壓。
Vcc、GND:Vcc為主電源輸入端,GND為接地端,一般REF+與Vcc連接在一起,REF-與GND連接在一起.
CLK:時(shí)鐘輸入端。

ADC0809由8路模擬通道選擇開關(guān),地址鎖存與譯碼器,比較器,8位開關(guān)樹型A/D轉(zhuǎn)換器,逐次逼近型寄存器,定時(shí)和控制電路和三態(tài)輸出鎖存器等組成,其內(nèi)部結(jié)構(gòu)如圖2.7所示。

圖2.7  ADC0809內(nèi)部結(jié)構(gòu)圖

其中:
(1)8路模擬通道選擇開關(guān)實(shí)現(xiàn)從8路輸入模擬量中選擇一路送給后面的比較器進(jìn)行比較。
(2)地址鎖存與譯碼器用于當(dāng)ALE信號(hào)有效時(shí),鎖存從ADDA、ADDB、ADDC 3根地址線上送來的3位地址,譯碼后產(chǎn)生通道選擇信號(hào),從8路模擬通道中選擇當(dāng)前模擬通道。
(3)比較器,8位開關(guān)樹型A/D轉(zhuǎn)換器,逐次逼近型寄存器,定時(shí)和控制電路組成8位A/D轉(zhuǎn)換器,當(dāng)START信號(hào)有效時(shí),就開始對(duì)當(dāng)前通道的模擬信號(hào)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換完成后,把轉(zhuǎn)換得到的數(shù)字量送到8位三態(tài)鎖存器,同時(shí)通過引腳送出轉(zhuǎn)換結(jié)束信號(hào)。
(4)三態(tài)輸出鎖存器保存當(dāng)前模擬通道轉(zhuǎn)換得到的數(shù)字量,當(dāng)OE信號(hào)有效時(shí),把轉(zhuǎn)換的結(jié)果送出。
ADC0809的工作流程為:
(1)輸入3位地址,并使ALE=1,將地址存入地址鎖存器中,經(jīng)地址譯碼器從8路模擬通道中選通1路模擬量送給比較器。
(2)送START一高脈沖,START的上升沿使逐次寄存器復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換,并使EOC信號(hào)為低電平。
(3)當(dāng)轉(zhuǎn)換結(jié)束時(shí),轉(zhuǎn)換的結(jié)果送入到輸出三態(tài)鎖存器中,并使EOC信號(hào)回到高電平,通知CPU已轉(zhuǎn)換結(jié)束。
(4)當(dāng)CPU執(zhí)行一讀數(shù)據(jù)指令時(shí),使OE為高電平,則從輸出端D0-D7讀出數(shù)據(jù)。
2.3 LED顯示系統(tǒng)設(shè)計(jì)2.3.1 LED基本結(jié)構(gòu)
LED是發(fā)光二極管顯示器的縮寫。LED由于結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜、與單片機(jī)接口方便等優(yōu)點(diǎn)而得到廣泛應(yīng)用。LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示器件。在單片機(jī)中使用最多的是七段數(shù)碼顯示器。LED七段數(shù)碼顯示器由8個(gè)發(fā)光二極管組成顯示字段,其中7個(gè)長(zhǎng)條形的發(fā)光二極管排列成“日”字形,另一個(gè)圓點(diǎn)形的發(fā)光二極管在顯示器的右下角作為顯示小數(shù)點(diǎn)用,其通過不同的組合可用來顯示各種數(shù)字。LED引腳排列如下圖2.8所示:


圖2.8  數(shù)碼管引腳圖                 圖2.9  四位一體數(shù)碼管實(shí)物圖

led數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。led數(shù)碼管常用段數(shù)一般為7段有的另加一個(gè)小數(shù)點(diǎn),還有一種是類似于3位“+1”型。位數(shù)有半位、1、2、3、4、5、6、8、10位等等....,led數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。
2.3.2 LED顯示方式
LED數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。
A、靜態(tài)顯示驅(qū)動(dòng):
靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O埠進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)位*器*進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O埠多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O埠來驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O埠才32個(gè)呢。故實(shí)際應(yīng)用時(shí)必須增加*驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬體電路的復(fù)雜性。
B、動(dòng)態(tài)顯示驅(qū)動(dòng):
數(shù)碼管動(dòng)態(tài)顯示介面是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位元選通控制電路,位元選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位元選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位元就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。
透過分時(shí)輪流控制各個(gè)LED數(shù)碼管的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位元數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O埠,而且功耗更低。
2.3.3 LED顯示器與單片機(jī)接口設(shè)計(jì)
由于單片機(jī)的并行口不能直接驅(qū)動(dòng)LED顯示器,所以,在一般情況下,必須采用專用的驅(qū)動(dòng)電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作[1]。如果驅(qū)動(dòng)電路能力差,即負(fù)載能力不夠時(shí),顯示器亮度就低,而且驅(qū)動(dòng)電路長(zhǎng)期在超負(fù)荷下運(yùn)行容易損壞,因此,LED顯示器的驅(qū)動(dòng)電路設(shè)計(jì)是一個(gè)非常重要的問題。


圖2.10 數(shù)碼管與單片機(jī)連接圖

為了簡(jiǎn)化數(shù)字式直流電壓表的電路設(shè)計(jì),在LED驅(qū)動(dòng)電路的設(shè)計(jì)上,可以利用單片機(jī)P0口上外接的上拉電阻來實(shí)現(xiàn),即將LED的A-G段顯示引腳和DP小數(shù)點(diǎn)顯示引腳并聯(lián)接到P0口與上拉電阻之間,這樣,就可以加大P0口作為輸出口的驅(qū)動(dòng)能力,使得LED能按照正常的亮度顯示出數(shù)字,同時(shí),四個(gè)數(shù)碼管的位選端分別接到P2口的低四位,如圖2.10所示。
2.4 電壓采集電路

由于使用的是5V基準(zhǔn)電壓,所以需要使用電阻分壓來實(shí)現(xiàn)電壓的采集,仿真時(shí)可以通過調(diào)節(jié)可變電阻來改變輸入電壓的大小,使輸入電壓在基準(zhǔn)電壓范圍內(nèi)改變,采集電路如下圖所示。

圖2.11 電壓采集電路

2.5 總體電路設(shè)計(jì)
經(jīng)過以上的設(shè)計(jì)過程,可設(shè)計(jì)出基于單片機(jī)的簡(jiǎn)易數(shù)字直流電壓表硬件電路原理圖(見附錄1)。此電路的工作原理是:+10V模擬電壓信號(hào)被信號(hào)采集電路采集后,由ADC08009的IN0通道進(jìn)入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低電平),經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過其輸出通道D0-D7傳送給STC89C51芯片的P1口,STC89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,控制P0口的電位變化從而驅(qū)動(dòng)LED,同時(shí)它還通過其四位I/O口P2.0、P2.1、P2.2、P2.3產(chǎn)生位選信號(hào)控制數(shù)碼管的亮滅以及小數(shù)點(diǎn)位。此外,STC89C51還控制ADC0809的工作。其中,單片機(jī)STC89C51通過從ALE引腳輸出方波,接到ADC0809的CLOCK,P3.2發(fā)正脈沖啟動(dòng)A/D轉(zhuǎn)換,P3.0置高從P1口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來。
簡(jiǎn)易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計(jì)完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細(xì)地檢查修改,直至形成完善的硬件原理圖。

1



第三章 軟件系統(tǒng)設(shè)計(jì)
第三章 軟件系統(tǒng)設(shè)計(jì)3.1 程序設(shè)計(jì)總方案

根據(jù)模塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序,這三個(gè)程序模塊構(gòu)成了整個(gè)系統(tǒng)軟件的主程序,如圖3.1所示。

圖3.1 系統(tǒng)程序流程圖

所謂初始化,是對(duì)將要用到的MCS_51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時(shí)器的工作模式,初值預(yù)置,開中斷和打開定時(shí)器等[2]。

3.2 系統(tǒng)子程序設(shè)計(jì)3.2.1 AD轉(zhuǎn)換子程序
A/D轉(zhuǎn)換子程序用來控制對(duì)輸入的模塊電壓信號(hào)的采集測(cè)量,并將對(duì)應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其轉(zhuǎn)換流程圖如圖3.2所示。


圖3.2 AD轉(zhuǎn)換流程圖

下面是部分A/D轉(zhuǎn)換程序:


圖3.2  A/D轉(zhuǎn)換子程序                圖3.3 數(shù)據(jù)處理

圖3.2是執(zhí)行A/D轉(zhuǎn)換的初始程序,“ST”是啟動(dòng)AD轉(zhuǎn)換,清楚單片機(jī)對(duì)ADC0809的控制;然后“EOC”等待轉(zhuǎn)換結(jié)束;“OE”允許輸出;最后將轉(zhuǎn)換結(jié)果存入P1口。
圖3.3是數(shù)據(jù)處理程序的一部分,將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)變成BCD碼,028H是16進(jìn)制數(shù),換算成十進(jìn)制是40,ADC0809在基準(zhǔn)電壓為5V時(shí)的分辨率為19.6mV,此次課設(shè)需要的量程為10V,通過采壓電路的分壓與數(shù)據(jù)換算得出40,然后A、B兩個(gè)寄存器數(shù)據(jù)相乘。
3.2.2 顯示子程序
顯示子程序采用動(dòng)態(tài)掃描實(shí)現(xiàn)四位數(shù)碼管的數(shù)值顯示,在采用動(dòng)態(tài)掃描顯示方式時(shí),要使得LED顯示的比較均勻,又有足夠的亮度,需要設(shè)置適當(dāng)?shù)膾呙桀l率,當(dāng)掃描頻率在70HZ左右時(shí),能夠產(chǎn)生比較好的顯示效果,一般可以采用間隔10ms對(duì)LED進(jìn)行動(dòng)態(tài)掃描一次,每一位LED的顯示時(shí)間為1ms。
3.3 編程軟件KEIL簡(jiǎn)介
Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。下面詳細(xì)介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。
C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。
Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢(shì)。與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會(huì)更加深刻。 Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。
3.4 PROTUES仿真軟件簡(jiǎn)介
Protues軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、KEIL和MPLAB等多種編譯。
Protues軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:原理布圖 、PCB自動(dòng)或人工布線 、SPICE電路仿真。其革命性的特點(diǎn):(1)互動(dòng)的電路仿真。用戶甚至可以實(shí)時(shí)采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真處理器及其外圍電路?梢苑抡51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Protues建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。
在PROTUES繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTUES的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。PROTUES 是單片機(jī)課堂教學(xué)的先進(jìn)助手。PROTUES不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對(duì)應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測(cè)、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)是學(xué)生走向就業(yè)的重要實(shí)踐環(huán)節(jié)。由于PROTUES提供了實(shí)驗(yàn)室無法相比的大量的元器件庫(kù),提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺(tái)。隨著科技的發(fā)展“計(jì)算機(jī)仿真技術(shù)”已成為許多設(shè)計(jì)部門重要的前期設(shè)計(jì)手段。它具有設(shè)計(jì)靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)?墒乖O(shè)計(jì)時(shí)間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險(xiǎn)。相信在單片機(jī)開發(fā)應(yīng)用中PROTUES也能茯得愈來愈廣泛的應(yīng)用。

第四章 仿真與實(shí)物調(diào)試
第四章 仿真與實(shí)物調(diào)試4.1 軟件仿真
軟件調(diào)試的主要任務(wù)是排查錯(cuò)誤,錯(cuò)誤主要包括邏輯和功能錯(cuò)誤,這些錯(cuò)誤有些是顯性的,而有些是隱形的,可以通過仿真開發(fā)系統(tǒng)發(fā)現(xiàn)逐步改正。Proteus軟件可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真,用戶甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤、RS232終端等動(dòng)態(tài)外設(shè)模型來對(duì)設(shè)計(jì)進(jìn)行交互仿真。Proteus支持的微處理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成單片機(jī)系統(tǒng)原理圖電路繪制、PCB設(shè)計(jì),更為顯著點(diǎn)的特點(diǎn)是可以與u Visions3 IDE工具軟件結(jié)合進(jìn)行編程仿真調(diào)試(仿真圖見附錄1)。
4.2 實(shí)物調(diào)試
仿真電路圖調(diào)試完畢,可以實(shí)現(xiàn)正常功能,然后根據(jù)仿真電路圖進(jìn)行實(shí)物連接(實(shí)物連接圖見附錄2),實(shí)物連接過程由于使用的面包板,所以插線要盡量整潔,保持接觸良好。實(shí)物調(diào)試過程中,由于使用到了10V電壓,所以使用了一個(gè)降壓模塊,不僅可


圖4.1 降壓模塊

以穩(wěn)壓,也可以調(diào)節(jié)輸入電壓的大小。此次調(diào)試最大的問題就是數(shù)碼管顯示不穩(wěn)定、亮度不夠,通過適度調(diào)試延時(shí)周期,最終調(diào)試成功。
4.3 誤差分析
(1)當(dāng)IN0口輸入電壓為零時(shí),數(shù)碼管顯示00.00。顯示結(jié)果如圖(附錄3.1);
(2)當(dāng)IN0口輸入電壓為1.5V時(shí),數(shù)碼管顯示01.48。顯示結(jié)果如圖(附錄3.2);
(3)當(dāng)IN0口輸入電壓為10V時(shí),數(shù)碼管顯示0.0。顯示結(jié)果如圖(附錄3.3);
通過以上仿真測(cè)量結(jié)果可得到簡(jiǎn)易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對(duì)比測(cè)試表,如下表4-1所示:
表4-1 電壓表對(duì)比測(cè)試表
標(biāo)準(zhǔn)電壓值
/V
簡(jiǎn)易電壓表測(cè)量
/V
絕對(duì)誤差
/V
0.0
0.0
0.00
1.5
1.48
0.02
5.0
4.99
0.01
8.5
8.49
0.01
10.0
10.0
0.00


由于單片機(jī)STC89C51為8位處理器,當(dāng)測(cè)量10V電壓時(shí),即輸入電壓為5.00V,ADC0808輸出數(shù)據(jù)值為255(FFH),因此單片機(jī)最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V。
從上表可以看出,簡(jiǎn)易數(shù)字電壓表測(cè)得的值基本上比標(biāo)準(zhǔn)電壓值偏小0-0.02V,這可以通過校正ADC0809的基準(zhǔn)電壓來解決。因?yàn)樵撾妷罕碓O(shè)計(jì)時(shí)直接用5V的供電電源作為電壓,所以電壓可能有偏差。

1



參考文獻(xiàn)
參考文獻(xiàn)

[1] 張毅坤,《單片微型計(jì)算機(jī)原理及應(yīng)用》,西安電子科技大學(xué)出版社,1998年09月

[2] 于殿泓、王新年,《單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程》,西安電子科技大學(xué)出版社,2007年5月
[3] 蔡美琴,《MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用》, 高等教育出版
[4] 江曉安、董秀峰、楊頌華,《數(shù)字電路技術(shù)》 第三版,西安電子科技大學(xué)出版社 ,2010年1月

1



參考文獻(xiàn)

1



附錄

附錄1 仿真電路圖

1



附錄

附錄2 實(shí)物連接圖



附錄
附錄3 顯示示數(shù)圖

附錄3.1


附錄3.2



附錄3.3


  1.               OE BIT   P3.0        ;ADC0809的OE端
  2.               EOC    BIT   P3.1    ;ADC0809的EOC端
  3.               CLOCK BIT P2.6
  4.               ST     BIT   P3.2    ;ADC0809的START和ALE端
  5.               LED_0 DATA 30H       ;顯示緩沖區(qū)
  6.               LED_1 DATA 31H
  7.               LED_2 DATA 32H
  8.               LED_3 DATA 33H
  9.               ADC    DATA 34H      ;存放轉(zhuǎn)換后的數(shù)據(jù)

  10. ;//////主程序開始////////

  11.               ORG    0000H
  12.               AJMP   START
  13.               ORG    000BH
  14.               LJMP TT0
  15.               ORG 0030H
  16. ;------初始化-----------

  17. START:
  18.               MOV SP,#60H           ;設(shè)置堆棧
  19.               MOV    LED_0,#00H     ;清空顯示緩沖區(qū)
  20.               MOV    LED_1,#00H
  21.               MOV    LED_2,#00H
  22.               MOV    LED_3,#00H
  23.               MOV    DPTR,#TABLE     ;送字型碼表首地
  24.             
  25.               MOV TMOD,#02H                               ;將02H送到TMOD寄存器,這里是設(shè)定定時(shí)器模式
  26.               MOV TH0,#01H
  27.               MOV TL0,#01H
  28.               MOV IE,#82H                                                        ;130
  29.               SETB TR0

  30. ;------ADC0809轉(zhuǎn)換---------

  31. WAIT:
  32.     CLR ST
  33.               SETB   ST
  34.               CLR    ST         ;啟動(dòng)轉(zhuǎn)換
  35.               JNB    EOC,$      ;等待轉(zhuǎn)換結(jié)束
  36.               SETB   OE         ;允許輸出
  37.               MOV    ADC,P1     ;暫存轉(zhuǎn)換結(jié)果

  38. ;------數(shù)據(jù)處理,已備顯示----------

  39.               MOV    A,ADC     ;將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼
  40.               MOV    B,#028H   ;乘以40MV
  41.               MUL    AB
  42.               MOV    R7,A
  43.               MOV    R6,B
  44. HB2:
  45.     CLR A              ;BCD碼初始化
  46.               CLR    C
  47.               MOV    R3,A
  48.               MOV    R4,A
  49.               MOV    R5,A
  50.               MOV    R2,#10H  ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
  51. HB3:
  52.     MOV A,R7            ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
  53.               RLC    A
  54.               MOV    R7,A
  55.               MOV    A,R6
  56.               RLC    A
  57.               MOV    R6,A
  58.               MOV    A,R5   ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
  59.               ADDC   A,R5
  60.               DA     A      ;十進(jìn)制調(diào)整
  61.               MOV    R5,A
  62.               MOV    A,R4
  63.               ADDC   A,R4
  64.               DA A
  65.               MOV    R4,A
  66.               MOV    A,R3
  67.               ADDC   A,R3
  68.               MOV    R3,A   ;雙字節(jié)十六進(jìn)制數(shù)的萬位數(shù)不超過6,不用調(diào)整
  69.               DJNZ   R2,HB3
  70.               MOV    A,R5
  71.               SWAP   A
  72.               ANL    A,#0FH
  73.               MOV    LED_0,A
  74.               MOV    A,R4
  75.               ANL    A,#0FH
  76.               MOV    LED_1,A
  77.               MOV    A,R4
  78.               SWAP   A
  79.               ANL    A,#0FH
  80.               MOV    LED_2,A
  81.               MOV    A,R3
  82.               ANL    A,#0FH
  83.               MOV    LED_3,A
  84.               LCALL DISP    ;調(diào)用顯示子程序
  85.               AJMP   WAIT

  86. ;//////數(shù)碼管顯示子程序//////////

  87. DISP:
  88.       MOV A,LED_0  ;數(shù)碼顯示子程序
  89.                  MOVC   A,@A+DPTR
  90.                  CLR    P2.3
  91.                  MOV    P0,A
  92.                  LCALL DELAY
  93.                  SETB   P2.3
  94.               MOV    A,LED_1
  95.               MOVC   A,@A+DPTR
  96.               CLR    P2.2
  97.               MOV    P0,A
  98.               LCALL DELAY
  99.               SETB   P2.2
  100.               MOV    A,LED_2
  101.               MOVC   A,@A+DPTR
  102.               CLR    P2.1
  103.               MOV    P0,A
  104.               SETB   P0.7 ;小數(shù)點(diǎn)
  105.               LCALL DELAY
  106.               SETB   P2.1
  107.               MOV    A,LED_3
  108.               MOVC   A,@A+DPTR
  109.               CLR    P2.0
  110.               MOV    P0,A
  111.               LCALL DELAY
  112.               SETB   P2.0
  113.               RET

  114. ;//////延時(shí)子程序///////////

  115. DELAY:   MOV R6,#02H  ;循環(huán)整個(gè)延時(shí)程序10次,延時(shí)5毫秒
  116. D1:      MOV R7,#0EEH ;循環(huán)下一條程序250次
  117. DJNZ   R7,$   ;DJNZ循環(huán)轉(zhuǎn)移指令,將第一個(gè)數(shù)減1,是否為0,不為0則轉(zhuǎn)移
  118. ;到指定地點(diǎn),為0則往下執(zhí)行
  119.               DJNZ   R6,D1
  120.               RET

  121. ;//////數(shù)碼管字形碼表///////////

  122. TABLE:
  123.      DB 3FH,06H,5BH,4FH,66H
  124.                 DB 6DH,7DH,07H,7FH,6FH

  125.               ORG 0100H
  126. TT0:
  127.               CPL CLOCK    ;產(chǎn)生ADC0808/0809時(shí)鐘脈沖信號(hào)
  128.               RETI
  129.               END
復(fù)制代碼


完整的Word格式文檔51黑下載地址:
基于單片機(jī)系統(tǒng)的數(shù)字電壓表.zip (716.57 KB, 下載次數(shù): 200)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:649588 發(fā)表于 2019-11-26 08:08 | 只看該作者
樓主你好,請(qǐng)問能分享一下protues
回復(fù)

使用道具 舉報(bào)

板凳
ID:867129 發(fā)表于 2020-12-24 16:28 | 只看該作者
請(qǐng)問我用你的程序和原理圖進(jìn)行仿真,數(shù)值不顯示是為什么
回復(fù)

使用道具 舉報(bào)

地板
ID:944998 發(fā)表于 2021-6-26 10:32 | 只看該作者
請(qǐng)問能分享下原理圖嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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