標(biāo)題: 89C51電子伏特表 [打印本頁]
作者: qp6898 時(shí)間: 2016-12-6 14:38
標(biāo)題: 89C51電子伏特表
(1)課題任務(wù)
基本要求:可測(cè)電壓為直流,典雅幅度范圍0-5V,測(cè)量值用3位LED顯示,誤差小于0.01伏,測(cè)量值可以通過喇叭自動(dòng)播報(bào)。
提高要求:可測(cè)電壓可以是交流信號(hào),電壓幅度可以擴(kuò)大到20V。
(2)方案比較與選擇
(1)根據(jù)設(shè)計(jì)要求,選擇AT89C51單片機(jī)為核心控制器件。
(2)A/D轉(zhuǎn)換采用ADC0809實(shí)現(xiàn),與單片機(jī)的接口為P1口和P2口的高四位引腳。
(3)電壓顯示采用4位的LED數(shù)碼管。
(4)LED數(shù)碼的段選輸入,由并行端口P0產(chǎn)生;位選輸入,用并行端口P2低四位產(chǎn)生。
硬件電路設(shè)計(jì)由6個(gè)部分組成; A/D轉(zhuǎn)換電路,AT89C51單片機(jī)系統(tǒng),LED顯示系統(tǒng)、時(shí)鐘電路、復(fù)位電路以及測(cè)量電壓輸入電路。硬件電路設(shè)計(jì)系統(tǒng)框圖如圖1所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
圖1 數(shù)字電壓表系統(tǒng)框圖
(3)電路設(shè)計(jì)
3.1 A/D轉(zhuǎn)換
現(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)化原理可分為計(jì)數(shù)比較型,逐次逼近型,雙重積分型等等。雙積分式A/D轉(zhuǎn)換器具有抗干擾能力強(qiáng)、轉(zhuǎn)換精度高、價(jià)格便宜等優(yōu)點(diǎn)。與雙積分相比,逐次逼近式A/D轉(zhuǎn)換的轉(zhuǎn)換速度更快,而且精度更高,比如ADC0808、ADC0809等,它們通常具有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í)際中廣泛使用。
3.1.1 ADC0809的外部引腳特征
ADC0809芯片有28條引腳,采用雙列直插式封裝,其引腳圖如圖2所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif
圖2 ADC0809引腳圖
下面說明各個(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路模擬輸入中的一路。
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í)鐘輸入端。
3.1.2 ADC0809的內(nèi)部結(jié)構(gòu)及工作流程
ADC0809由8路模擬通道選擇開關(guān),地址鎖存與譯碼器,比較器,8位開關(guān)樹型A/D轉(zhuǎn)換器,逐次逼近型寄存器,定時(shí)和控制電路和三態(tài)輸出鎖存器等組成,其內(nèi)部結(jié)構(gòu)如圖3所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif
圖3 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ù)。
3.2 單片機(jī)系統(tǒng)
3.2.1 AT89C51性能
AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含有4KB的可反復(fù)擦寫的只讀程序存儲(chǔ)器和128字節(jié)的隨機(jī)存儲(chǔ)器。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容,由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,它為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。
AT89C51功能性能:與MCS-51成品指令系統(tǒng)完全兼容;4KB可編程閃速存儲(chǔ)器;壽命:1000次寫/擦循環(huán);數(shù)據(jù)保留時(shí)間:10年;全靜態(tài)工作:0-24MHz;三級(jí)程序存儲(chǔ)器鎖定;128*8B內(nèi)部RAM;32個(gè)可編程I/O口線;2個(gè)16位定時(shí)/計(jì)數(shù)器;5個(gè)中斷源;可編程串行UART通道;片內(nèi)震蕩器和掉電模式。
3.2.2 AT89C51各引腳功能
T89C51提供以下標(biāo)準(zhǔn)功能:4KB的Flash閃速存儲(chǔ)器,128B內(nèi)部RAM,32個(gè)I/O口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)震蕩器及時(shí)鐘電路,同時(shí),AT89C51可降至0Hz靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式?臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作,掉電方式保存RAM中的內(nèi)容,但震蕩器停止工作并禁止其他所有工作直到下一個(gè)硬件復(fù)位。AT89C51采用PDIP封裝形式,引腳配置如圖4所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.gif
圖4 AT89C51的引腳圖
AT89C51芯片的各引腳功能為:
P0口:這組引腳共有8條,P0.0為最低位。這8個(gè)引腳有兩種不同的功能,分別適用于不同的情況,第一種情況是89C51不帶外存儲(chǔ)器,P0口可以為通用I/O口使用,P0.0-P0.7用于傳送CPU的輸入/輸出數(shù)據(jù),這時(shí)輸出數(shù)據(jù)可以得到鎖存,不需要外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性;第二種情況是89C51帶片外存儲(chǔ)器,P0.0-P0.7在CPU訪問片外存儲(chǔ)器時(shí)先傳送片外存儲(chǔ)器的低8位地址,然后傳送CPU對(duì)片外存儲(chǔ)器的讀/寫數(shù)據(jù)。P0口為開漏輸出,在作為通用I/O使用時(shí),需要在外部用電阻上拉。
P1口:這8個(gè)引腳和P0口的8個(gè)引腳類似,P1.7為最高位,P1.0為最低位,當(dāng)P1口作為通用I/O口使用時(shí),P1.0-P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。
P2口:這組引腳的第一功能與上述兩組引腳的第一功能相同即它可以作為通用I/O口使用,它的第一功能和P0口引腳的第二功能相配合,用于輸出片外存儲(chǔ)器的高8位地址,共同選中片外存儲(chǔ)器單元,但并不是像P0口那樣傳送存儲(chǔ)器的讀/寫數(shù)據(jù)。
P3口:這組引腳的第一功能和其余三個(gè)端口的第一功能相同,第二功能為控制功能,每個(gè)引腳并不完全相同,如下表1所示:
表1 P3口各位的第二功能
P3口各位 | |
| |
| |
| |
| |
| T0(定時(shí)器/計(jì)數(shù)器0的外部輸入) |
| T1(定時(shí)器/計(jì)數(shù)器1的外部輸入) |
| /WR(片外數(shù)據(jù)存儲(chǔ)器寫允許) |
| /RD(片外數(shù)據(jù)存儲(chǔ)器讀允許) |
Vcc為+5V電源線,Vss接地。
ALE:地址鎖存允許線,配合P0口的第二功能使用,在訪問外部存儲(chǔ)器時(shí),89C51的CPU在P0.0-P0.7引腳線去傳送隨后而來的片外存儲(chǔ)器讀/寫數(shù)據(jù)。在不訪問片外存儲(chǔ)器時(shí),89C51自動(dòng)在ALE線上輸出頻率為1/6震蕩器頻率的脈沖序列。該脈沖序列可以作為外部時(shí)鐘源或定時(shí)脈沖使用。
/EA:片外存儲(chǔ)器訪問選擇線,可以控制89C51使用片內(nèi)ROM或使用片外ROM,
若/EA=1,則允許使用片內(nèi)ROM,若/EA=0,則只使用片外ROM。
/PSEN:片外ROM的選通線,在訪問片外ROM時(shí),89C51自動(dòng)在/PSEN線上產(chǎn)生一個(gè)負(fù)脈沖,作為片外ROM芯片的讀選通信號(hào)。
RST:復(fù)位線,可以使89C51處于復(fù)位(即初始化)工作狀態(tài)。通常89C51復(fù)位有自動(dòng)上電復(fù)位和人工按鍵復(fù)位兩種。
XTAL1和XTAL2:片內(nèi)震蕩電路輸入線,這兩個(gè)端子用來外接石英晶體和微調(diào)電容,即用來連接89C51片內(nèi)OSC(震蕩器)的定時(shí)反饋回路。
3.3 復(fù)位電路和時(shí)鐘電路
3.3.1復(fù)位電路設(shè)計(jì)
單片機(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ù)位兩種,圖5是51系列單片機(jī)統(tǒng)常用的上電復(fù)位和手動(dòng)復(fù)位組合電路,只要Vcc上升時(shí)間不超過1ms,它們都能很好的工作。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.gif
圖5 復(fù)位電路
3.3.2時(shí)鐘電路設(shè)計(jì)
單片機(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)部的高增益反相放大器,外部電路簡,只需要一個(gè)晶振和 2個(gè)電容即可,如圖6所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif
圖6 時(shí)鐘電路
電路中的器件選擇可以通過計(jì)算和實(shí)驗(yàn)確定,也可以參考一些典型電路的參數(shù),電路中,電容器C1和C2對(duì)震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個(gè)系統(tǒng)中選擇了33pF;石英晶振選擇范圍最高可選24MHz,它決定了單片機(jī)電路產(chǎn)生的時(shí)鐘信號(hào)震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時(shí)鐘信號(hào)的震蕩頻率為12MHz。
3.4 LED顯示系統(tǒng)設(shè)計(jì)
3.4.1 LED基本結(jié)構(gòu)
LED是發(fā)光二極管顯示器的縮寫。LED由于結(jié)構(gòu)簡單、價(jià)格便宜、與單片機(jī)接口方便等優(yōu)點(diǎn)而得到廣泛應(yīng)用。LED顯示器是由若干個(gè)發(fā)光二極管組成顯示字段的顯示器件[6]。在單片機(jī)中使用最多的是七段數(shù)碼顯示器。LED七段數(shù)碼顯示器由8個(gè)發(fā)光二極管組成顯示字段,其中7個(gè)長條形的發(fā)光二極管排列成“日”字形,另一個(gè)圓點(diǎn)形的發(fā)光二極管在顯示器的右下角作為顯示小數(shù)點(diǎn)用,其通過不同的組合可用來顯示各種數(shù)字。LED引腳排列如下圖7所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif
圖7 LED引腳排列
在應(yīng)用系統(tǒng)中,設(shè)計(jì)要求不同,使用的LED顯示器的位數(shù)也不同,因此就生產(chǎn)了位數(shù),尺寸,型號(hào)不同的LED顯示器供選擇,在本設(shè)計(jì)中,選擇4位一體的數(shù)碼型LED顯示器,簡稱“4-LED”。本系統(tǒng)中前一位顯示電壓的整數(shù)位,即個(gè)位,后兩位顯示電壓的小數(shù)位。
4-LED顯示器引腳如圖9所示,是一個(gè)共陰極接法的4位LED數(shù)碼顯示管,其中a,b,c,e,f,g為4位LED各段的公共輸出端,1、2、3、4分別是每一位的位數(shù)選端,dp是小數(shù)點(diǎn)引出端,4位LED數(shù)碼顯示管的內(nèi)部結(jié)構(gòu)是由4個(gè)單獨(dú)的LED組成,每個(gè)LED的段輸出引腳在內(nèi)部都并聯(lián)后,引出到器件的外部。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.gif
圖8 4位LED引腳
對(duì)于這種結(jié)構(gòu)的LED顯示器,它的體積和結(jié)構(gòu)都符合設(shè)計(jì)要求,由于4位LED陰極的各段已經(jīng)在內(nèi)部連接在一起,所以必須使用動(dòng)態(tài)掃描方式(將所有數(shù)碼管的段選線并聯(lián)在一起,用一個(gè)I/O接口控制)顯示。
3.4.2LED與單片機(jī)的連接
由于單片機(jī)的并行口不能直接驅(qū)動(dòng)LED顯示器,所以,在一般情況下,必須采用專用的驅(qū)動(dòng)電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作[7]。如果驅(qū)動(dòng)電路能力差,即負(fù)載能力不夠時(shí),顯示器亮度就低,而且驅(qū)動(dòng)電路長期在超負(fù)荷下運(yùn)行容易損壞,因此,LED顯示器的驅(qū)動(dòng)電路設(shè)計(jì)是一個(gè)非常重要的問題。
為了簡化數(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ù)字,如圖9所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.gif
圖9 LED與單片機(jī)接口間的設(shè)計(jì)
3.5 總體電路設(shè)計(jì)
經(jīng)過以上的設(shè)計(jì)過程,可設(shè)計(jì)出基于單片機(jī)的數(shù)字電壓表系統(tǒng)硬件電路圖,如圖10所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif圖10 數(shù)字電壓表電路圖
此電路的工作原理是:+5V模擬電壓信號(hào)通過變阻器VR1分壓后由ADC08008的IN0通道進(jìn)入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低電平),經(jīng)過模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過其輸出通道D0-D7傳送給AT89C51芯片的P1口,AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,同時(shí)它還通過其四位I/O口P2.0、P2.1、P2.2、P2.3產(chǎn)生位選信號(hào)控制數(shù)碼管的亮滅。此外,AT89C51還控制ADC0809的工作。其中,單片機(jī)AT89C51通過定時(shí)器中斷從P2.4輸出方波,接到ADC0809的CLOCK,P2.6發(fā)正脈沖啟動(dòng)A/D轉(zhuǎn)換,P2.5檢測(cè)A/D轉(zhuǎn)換是否完成,轉(zhuǎn)換完成后,P2.7置高從P1口讀取轉(zhuǎn)換結(jié)果送給LED顯示出來[3]。
簡易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計(jì)完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細(xì)地檢查修改,直至形成完善的硬件原理圖。但要真正實(shí)現(xiàn)電路對(duì)電壓的測(cè)量和顯示的功能,還需要有相應(yīng)的軟件配合,才能達(dá)到設(shè)計(jì)要求。
(4)程序設(shè)計(jì)
根據(jù)模塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序,這三個(gè)程序模塊構(gòu)成了整個(gè)系統(tǒng)軟件的主程序,如圖12所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif
圖12 數(shù)字式直流電壓表主程序框圖
4.1 系統(tǒng)子程序設(shè)計(jì)
4.2.1初始化程序
所謂初始化,是對(duì)將要用到的MCS_51系列單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定,初始化子程序的主要工作是設(shè)置定時(shí)器的工作模式,初值預(yù)置,開中斷和打開定時(shí)器等。
4.2.2 A/D轉(zhuǎn)換子程序
A/D轉(zhuǎn)換子程序用來控制對(duì)輸入的模塊電壓信號(hào)的采集測(cè)量,并將對(duì)應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其轉(zhuǎn)換流程圖如圖13所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif
圖13 A/D轉(zhuǎn)換流程圖
4.2.3顯示子程序
顯示子程序采用動(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[10]。
在本設(shè)計(jì)中,為了簡化硬件設(shè)計(jì),主要采用軟件定時(shí)的方式,即用定時(shí)器0溢出中斷功能實(shí)現(xiàn)11μs定時(shí),通過軟件延時(shí)程序來實(shí)現(xiàn)5ms的延時(shí)。
(5)測(cè)試方案
5.1軟件調(diào)試
軟件調(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)試。
本系統(tǒng)的調(diào)試主要以軟件為主,其中,系統(tǒng)電路圖的繪制和仿真我采用的是Proteus軟件,而程序方面,采用的是匯編語言,用Keil軟件將程序?qū)懭雴纹瑱C(jī)。
5.2結(jié)果顯示
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif
圖11 電壓為0V時(shí)
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif
圖12 電壓為3.5V時(shí)
(6)系統(tǒng)調(diào)試
(7)數(shù)據(jù)測(cè)試與處理
(8)總結(jié)
由上所述,數(shù)字電壓表基本完成。但設(shè)計(jì)中的不足之處仍然存在。在這過程中,我對(duì)電路設(shè)計(jì),單片機(jī)的使用等都有了新的認(rèn)識(shí)。通過這次設(shè)計(jì)學(xué)會(huì)了Proteus和Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設(shè)計(jì)、功能模塊的劃分、原理圖的設(shè)計(jì)和電路圖的仿真的設(shè)計(jì)流程,積累了不少經(jīng)驗(yàn)。
基于單片機(jī)的數(shù)字電壓表使用性強(qiáng)、結(jié)構(gòu)簡單、成本低、外接元件少。在實(shí)際應(yīng)用工作應(yīng)能好,測(cè)量電壓準(zhǔn)確,精度高。系統(tǒng)功能、指標(biāo)達(dá)到了課題的預(yù)期要求、系統(tǒng)在硬件設(shè)計(jì)上充分考慮了可擴(kuò)展性,經(jīng)過一定的改造,可以增加功能。本文設(shè)計(jì)主要實(shí)現(xiàn)了簡易數(shù)字電壓表測(cè)量一路電壓的功能,詳細(xì)說明了從原理圖的設(shè)計(jì)、電路圖的仿真再到軟件的調(diào)試。
通過本次設(shè)計(jì),我對(duì)單片機(jī)這門課有了進(jìn)一步的了解。無論是在硬件連接方面還是在軟件編程方面。本次設(shè)計(jì)采用了AT89C51單片機(jī)芯片,與以往的單片機(jī)相比增加了許多新的功能,使其功能更為完善,應(yīng)用領(lǐng)域也更為廣泛。設(shè)計(jì)中還用到了模/數(shù)轉(zhuǎn)換芯片ADC0809,以前在學(xué)單片機(jī)課程時(shí)只是對(duì)其理論知識(shí)有了初步的理解。通過這次設(shè)計(jì),對(duì)它的工作原理有了更深的理解。在調(diào)試過程中遇到很多問題,硬件上的理論知識(shí)學(xué)得不夠扎實(shí),對(duì)電路的仿真方面也不夠熟練。
總之這次電路的設(shè)計(jì)和仿真,基本上達(dá)到了設(shè)計(jì)的功能要求。在以后的實(shí)踐中,我將繼續(xù)努力學(xué)習(xí)電路設(shè)計(jì)方面的理論知識(shí),并理論聯(lián)系實(shí)際,爭取在電路設(shè)計(jì)方面能有所提升。
(9)參考文獻(xiàn)
[1]、李朝青,單片機(jī)原理及接口技術(shù),北京航空航天超大型出版社。
[2]、王賢勇,趙傳申,單片機(jī)原理與接口技術(shù)應(yīng)用教程,清華大學(xué)出版社
(10)附錄:A、設(shè)計(jì)電路圖(原理圖、PCB圖)
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif
B、程序(要求有文字注釋)
程序代碼
LED_0 EQU30H
LED_1 EQU31H
LED_2 EQU 32H
ADC EQU 35H
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
AJMP START
ORG 0BH
LJMP INT_T0
START: MOV LED_0, #00H
MOV P2, #0FFH
MOV LED_1, #00H
MOV LED_2, #00H
MOV DPTR, #TABLE
MOV TMOD, #02H
MOV TH0, #245H
MOV TL0, #00H
MOV IE, #82H
SETB TR0
WAIT: CLRST
SETB STH
CLR ST
JNB EOC, $
SETB OE
MOV ADC, P1
CLR OE
MOV A, ADC
MOV B, #51
DIV AB
MOV LED_2, A
MOV A, B
MOV B, #5
DIV AB
MOV LED_1, A
MOV LED_0, B
LCALL DISP
SJMP WAIT
INT_T0:CPL, CLOCK
RETI
DISP: MOVA, LED_0
MOVCA, @A+DPTR
CLRP2.3
MOV P0, A
LCALL DELAY
SETB P2.3
MOV A, LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0, A
LCALL DELAY
SETB P2.2
MOV A, LED_2
MOVC A, @A+DPTRL
CLR P2.1
ORL A, #80H
MOV P0, A
LCALL DELAY
SETB P2.1
RET
DELAY: MOVR6, #10
D1: MOV R7, #250
DJNZ R7, $
DJNZ R6, D1
RET
TABLE: DB 3FH, 06H, 5BH, 4FH, 66H
DB 6DH, 7DH, 07H, 7FH, 6FH
END
作者: tangsongwz 時(shí)間: 2017-11-8 20:27
為什么看不見圖片呢?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |