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

QQ登錄

只需一步,快速開(kāi)始

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

簡(jiǎn)易數(shù)字電壓表 課程設(shè)計(jì)報(bào)告下載 ICL7107芯片+單片機(jī)實(shí)現(xiàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

課程設(shè)計(jì)報(bào)告


課程名稱(chēng):單片機(jī)原理及應(yīng)用

設(shè)計(jì)題目       簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)      

系    別:

專(zhuān)    業(yè):

班    級(jí):

學(xué)生姓名

學(xué)   號(hào):

起止日期:

指導(dǎo)教師:

教研室主任:



指導(dǎo)教師評(píng)語(yǔ)

         指導(dǎo)教師簽名:                 年     月     日


成績(jī)?cè)u(píng)定

項(xiàng)       目

權(quán)重

成績(jī)

1、設(shè)計(jì)過(guò)程中出勤、學(xué)習(xí)態(tài)度等方面

0.2

2、課程設(shè)計(jì)質(zhì)量與答辯

0.5

3、設(shè)計(jì)報(bào)告書(shū)寫(xiě)及圖紙規(guī)范程度

0.3

總  成  績(jī)

教研室審核意見(jiàn):

教研室主任簽字:                 年     月     日

教學(xué)系審核意見(jiàn):

                      主任簽字:                       年     月     日            


摘  要

本文介紹了一種基于單片機(jī)STC89C52的簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)。該設(shè)計(jì)主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊,數(shù)據(jù)處理模塊及顯示模塊。A/D轉(zhuǎn)換主要由芯片ADC0809來(lái)完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量然后傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89C52來(lái)完成,其負(fù)責(zé)把ADC0808傳送來(lái)的數(shù)字量經(jīng)過(guò)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼并通過(guò)8255芯片送到數(shù)碼管進(jìn)行顯示;此外,它還控制著ADC0809芯片工作。該系統(tǒng)的數(shù)字電壓表電路簡(jiǎn)單,所用的元件較少,成本低,且測(cè)量精度和可靠性較高。此數(shù)字電壓表可以測(cè)量0-5V的4路模擬直流輸入電壓值,并通過(guò)共陽(yáng)極7段數(shù)碼管顯示出來(lái)。                                                      


目   錄

            

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

1、              前言

2、方案選擇與論證

2.1方案一

2.2方案二

2.3方案對(duì)比與選擇

3  單元電路設(shè)計(jì)

3.1單片機(jī)系統(tǒng)

3.2時(shí)鐘電路

3.3電源電路

3.4復(fù)位電路

3.5              A/D 轉(zhuǎn)換電路

3.6 顯示電路設(shè)計(jì)

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

4、程序設(shè)計(jì)與調(diào)試

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

4.2              程序調(diào)試

5、結(jié)果顯示及誤差分析

5.1  結(jié)果顯示

5.2              誤差分析

6、設(shè)計(jì)總結(jié)

7、主要芯片資料

7.1  STC89C52

7.2              ADC0809

7.3              8255A

8、參考文獻(xiàn)

9、致謝

10、附 錄





簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)


設(shè)計(jì)要求
設(shè)計(jì)要求:
  •     能用數(shù)碼管顯示電壓值
  •   可以測(cè)量0~5V范圍內(nèi)的4路輸入電壓值
  •   其測(cè)量最小分辨率為0.02V
  •   在4位LED數(shù)碼管上輪流顯示或者單路顯示
1、   前言

隨著微電子技術(shù)的不斷發(fā)展,微處理器芯片的集成程度越來(lái)越高,單片機(jī)已可以在一塊芯片上同時(shí)集成運(yùn)算部件、控制部件、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器中斷系統(tǒng),這就很容易將計(jì)算機(jī)技術(shù)與測(cè)量控制技術(shù)結(jié)合,組成智能化測(cè)量控制系統(tǒng)。                                                                                 

數(shù)字電壓表(Digtal Voltmeter)簡(jiǎn)稱(chēng)DVM,它是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。與此同時(shí),由DVM擴(kuò)展而成的各種通用及專(zhuān)用數(shù)字儀器儀表,也把電量及非電量測(cè)量技術(shù)提高到嶄新水平。本文重點(diǎn)介紹基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表。目前,由各種單片A/D 轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測(cè)量、工業(yè)自動(dòng)化儀表、自動(dòng)測(cè)試系統(tǒng)等智能化測(cè)量領(lǐng)域,顯示出強(qiáng)大的生命力量。

本設(shè)計(jì)是基于STC89C52單片機(jī)的一種電壓測(cè)量電路,該電路采用ADC0809進(jìn)行A/D轉(zhuǎn)換電路,測(cè)量范圍為直流 0~5V 的4路輸入電壓值,并在四位LED數(shù)碼管上顯示,測(cè)量最小分辨率為0.019V,測(cè)量誤差約為正負(fù)0.02V。



2、方案選擇與論證
2.1方案一

A/D轉(zhuǎn)換器采用ICL7107型三位半顯示的芯片,輸入信號(hào),流經(jīng)取樣電路取樣后送到ICL7107型三位半A/D轉(zhuǎn)換器,只需要很少的簡(jiǎn)單外圍元件,就可組成數(shù)字電流表模塊,直接驅(qū)動(dòng)三位半LED顯示器顯示,最后輸入電流在顯示部分顯示。此方案的方框圖如圖2-2-1所示。

2.2方案二

STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用STC公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。STC89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,2個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,STC89C52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式?臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。方案二的方框圖如圖2-2-1所示:

2.3方案對(duì)比與選擇

方案一: ICL7107做的LED數(shù)字表,能直接驅(qū)動(dòng)共陽(yáng)極的LED顯示器,不須另加驅(qū)動(dòng)硬件,缺點(diǎn)就是數(shù)字亂跳不穩(wěn)定,特別最后一位。并且本人對(duì)此電路不是很熟悉,我們平時(shí)學(xué)的都是STC89C52,也有相應(yīng)的單片機(jī)板子。

方案二:采用單片機(jī)作為系統(tǒng)的控制單元,通過(guò)A/D轉(zhuǎn)換將被測(cè)值轉(zhuǎn)換為數(shù)字量送入單片機(jī)中,再由單片機(jī)來(lái)送顯。此方案各類(lèi)功能易于實(shí)現(xiàn),成本低、功耗低,顯示穩(wěn)定。

通過(guò)比較,我選擇方案二。



3  單元電路設(shè)計(jì)

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

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

3.1單片機(jī)系統(tǒng)

本次課程設(shè)計(jì)選擇的單片機(jī)是STC89C52,之所以選擇這塊芯片,是因?yàn)樵撔酒母黜?xiàng)功能均符合本次課程設(shè)計(jì)的指標(biāo)要求,并且該芯片有很多成熟的資料供我們學(xué)習(xí),使用起來(lái)很方便,也有專(zhuān)門(mén)的下載程序平臺(tái),方便現(xiàn)場(chǎng)調(diào)試。本實(shí)驗(yàn)所用的單片機(jī)板子原理圖如圖3-1-1所示。

3.2時(shí)鐘電路

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

本設(shè)計(jì)系統(tǒng)采用內(nèi)部時(shí)鐘方式,利用單片機(jī)內(nèi)部的高增益反相放大器,外部電路簡(jiǎn),只需要一個(gè)晶振和 2個(gè)電容即可。


                        圖 3-2-1時(shí)鐘電路


3.3電源電路
如圖3-3-1:通過(guò)數(shù)據(jù)線的USB接口與電源相接,給單片機(jī)供電。



3.4復(fù)位電路

復(fù)位電路工作原理如圖3-4-1所示,VCC上電時(shí),C充電,在電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位;幾個(gè)毫秒后,C充滿(mǎn),電阻上電流降為0,電壓也為0,使得單片機(jī)進(jìn)入工作狀態(tài)。工作期間,按下摁鍵放電,松手,C又充電,在電阻上出現(xiàn)電壓,使得單片機(jī)復(fù)位。幾個(gè)毫秒后,單片機(jī)進(jìn)入工作狀態(tài)。


3.5          A/D 轉(zhuǎn)換電路

原理圖如圖3-5-1所示,本設(shè)計(jì)用的ADC0809是8位A/D轉(zhuǎn)換器,每采集一次一般需

。本設(shè)計(jì)采用中斷方式讀入A/D轉(zhuǎn)換結(jié)果,在中斷方式下,A/D轉(zhuǎn)換結(jié)束后會(huì)自動(dòng)產(chǎn)生EOC信號(hào),本設(shè)計(jì)中該信號(hào)與CPU的外部中斷0相接。

   
            

3.6 顯示電路設(shè)計(jì)

LED是發(fā)光二極管顯示器的縮寫(xiě)。LED由于結(jié)構(gòu)簡(jiǎn)單、價(jià)格便宜、與單片機(jī)接口方便等優(yōu)點(diǎn)而得到廣泛應(yīng)用。在單片機(jī)中使用最多的是七段數(shù)碼顯示器。本次采用的是共陽(yáng)極7端數(shù)碼管,并且采用軟件譯碼的方式,既簡(jiǎn)化了硬件電路又增加了程序編寫(xiě)的靈活性。其電路原理圖如圖3-6-1所示。









本課程設(shè)計(jì)利用8255可編程并行口芯片,實(shí)現(xiàn)數(shù)據(jù)從STC89C52輸入,用8255PA和PB口做輸出,其中用PA口控制數(shù)碼管的位選信號(hào),表3-6-1為PA口控制位選信號(hào)的編碼;用PB口控制數(shù)碼管的段選信號(hào),表3-6-2為共陽(yáng)極數(shù)碼管的段碼表。

表3-6-1 數(shù)碼管的位選碼

控制的數(shù)碼管(從右邊開(kāi)始)

位選碼

1

DFH

2

EFH

3

F7H

4

FBH

5

FDH

6

FEH

表3-6-2  共陽(yáng)極數(shù)碼管的段碼表

顯示字符
共陽(yáng)極字段碼
0
A0H
1
BBH
2
62H
3
2AH
4
39H
5
2CH
6
24H
7
BAH
8
20H
9
28H


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

此電路的工作原理是:+5V模擬電壓信號(hào)通過(guò)變阻器分壓后由ADC0809的通道進(jìn)入(本設(shè)計(jì)用到IN0、IN1、IN2、IN3四個(gè)通道),經(jīng)過(guò)模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過(guò)其輸出通道D0-D7傳送給STC89C52芯片的P0口,STC89C52和8255負(fù)責(zé)把接收到的數(shù)字量經(jīng)過(guò)數(shù)據(jù)處理并產(chǎn)生正確的7段數(shù)碼管的顯示段碼傳送給四位LED,8255的PA口產(chǎn)生位選信號(hào)控制數(shù)碼管的亮滅。此外,STC89C52還控制ADC0809的工作:START與單片機(jī)的P2^7相連;CLK與單片機(jī)的P2^0相連;EOC與單片機(jī)的P3^4相連;OE與單片機(jī)的P2^3相連;數(shù)據(jù)輸出端與P0口相連。工作是先將START置為低電平,再置為高電平,產(chǎn)生一個(gè)上升沿從而清除內(nèi)部寄存器;然后再將其置為低電平,產(chǎn)生下降沿,從而啟動(dòng)控制電路開(kāi)始A/D 轉(zhuǎn)換。轉(zhuǎn)換結(jié)束后EOC輸出一個(gè)寬為8個(gè)CLK周期的正脈沖,通過(guò)檢測(cè)該信號(hào)把OE置為1,即允許數(shù)據(jù)輸出,暫存轉(zhuǎn)換結(jié)果后再關(guān)閉輸出。把暫存的數(shù)據(jù)取出并把其換算為十進(jìn)制數(shù)字,通過(guò)數(shù)碼管顯示出電壓值。

4路電壓值輪流顯示的原理:硬件上把ADC0809的ADD A與P1^0相連,ADC0809的ADD B與P1^1相連,所以會(huì)伴隨有LED亮滅現(xiàn)象。其通道選擇與對(duì)應(yīng)的LED亮滅現(xiàn)象如表3-7-1所示,同時(shí)通過(guò)數(shù)碼管顯示通道“0”“1”“2”“3”。

表3-7-1  通道選擇與對(duì)應(yīng)的LED亮滅現(xiàn)象

地址碼

模擬通道號(hào)

LED現(xiàn)象

ADD A(與P1^0相連)

ADD B(與P1^1相連)

0

0

IN0

D4亮D5亮

0

1

IN1

D4亮D5滅

1

0

IN2

D4滅 D5亮

1

1

IN3

D4滅 D5滅


簡(jiǎn)易數(shù)字直流電壓表的硬件電路已經(jīng)設(shè)計(jì)完成,就可以選取相應(yīng)的芯片和元器件,利用Proteus軟件繪制出硬件的原理,并仔細(xì)地檢查修改,直至形成完善的硬件原理圖。但要真正實(shí)現(xiàn)電路對(duì)電壓的測(cè)量和顯示的功能,還需要有相應(yīng)的軟件配合,才能達(dá)到設(shè)計(jì)要求。

4、程序設(shè)計(jì)與調(diào)試4.1  程序設(shè)計(jì)總方案

本程序利用KEIL軟件進(jìn)行程序編寫(xiě),根據(jù)模塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序,這三個(gè)程序模塊構(gòu)成了整個(gè)系統(tǒng)軟件的主程序,如圖4-1-1所示。


圖4-1-1 數(shù)字式直流電壓表主程序框圖

4.2          程序調(diào)試

軟件調(diào)試的主要任務(wù)是排查錯(cuò)誤,錯(cuò)誤主要包括邏輯和功能錯(cuò)誤,這些錯(cuò)誤有些是顯性的,而有些是隱形的,可以通過(guò)仿真開(kāi)發(fā)系統(tǒng)發(fā)現(xiàn)逐步改正。編好程序后,在KEIL平臺(tái)下對(duì)程序進(jìn)行調(diào)試,本課程設(shè)計(jì)的程序是用C語(yǔ)言編寫(xiě)的,由于程序代碼不多,因此調(diào)試也較為順利,但還是遇到一些問(wèn)題,因此也學(xué)到了不少東西,積累了一些調(diào)試經(jīng)驗(yàn)。



5、結(jié)果顯示及誤差分析5.1  結(jié)果顯示

(1)IN0口輸入電壓值為3.93V時(shí),顯示結(jié)果如圖5-1-1所示,測(cè)量結(jié)果為3.95V,誤差為0.02V。

前一位為通道數(shù),后三位為實(shí)際電壓值。



圖5-1-1

(2)當(dāng)IN1輸入電壓值為3.57V時(shí),顯示結(jié)果如圖5-1-2所示。測(cè)量誤差為0.01 V。



圖5-1-2
(3)當(dāng)IN2口輸入電壓值為2.77V時(shí),顯示結(jié)果如圖5-1-3。測(cè)量誤差為0.00V。


圖5-1-3

(4)當(dāng)IN3輸入電壓值為1.50V時(shí),顯示結(jié)果如圖5-1-4所示。測(cè)量誤差為0.01 V。


5.2          誤差分析

通過(guò)以上仿真測(cè)量結(jié)果可得到簡(jiǎn)易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對(duì)比測(cè)試表,如下表5.2.1所示:

表5.2.1 簡(jiǎn)易數(shù)字電壓表與“標(biāo)準(zhǔn)”數(shù)字電壓表對(duì)比測(cè)試表

標(biāo)準(zhǔn)電壓值/V

簡(jiǎn)易電壓表測(cè)量值/V

絕對(duì)誤差/V

0.00
0.00
0.00
0.14
0.12
0.02
0.25
0.23
0.02
0.48
0.46
0.02
1.00
0.99
0.01
2.00
1.99
0.01
2.50
2.48
0.02
3.50
3.49
0.01
4.00
3.99
0.01
4.50
4.48
0.02


由于單片機(jī)STC89C52為8位處理器,當(dāng)輸入電壓為5.00V時(shí),ADC0804輸出數(shù)據(jù)值為255(FFH),因此單片機(jī)最高的數(shù)值分辨率為0.0196V(5/255)。這就決定了電壓表的最高分辨率只能到0.0196V,從上表可看到,測(cè)試電壓一般以0.01V的幅度變化。

從上表可以看出,簡(jiǎn)易數(shù)字電壓表測(cè)得的值基本上比標(biāo)準(zhǔn)電壓值偏小0-0.01V,這可以通過(guò)校正ADC0809的基準(zhǔn)電壓來(lái)解決。因?yàn)樵撾妷罕碓O(shè)計(jì)時(shí)直接用數(shù)據(jù)線的USB接口接上電源作為測(cè)量電壓,且數(shù)據(jù)線上有電壓損耗,所以電壓可能有偏差。當(dāng)要測(cè)量大于5V的電壓時(shí),可在輸入口使用分壓電阻,而程序中只要將計(jì)算程序的除數(shù)進(jìn)行調(diào)整就可以了。

6、設(shè)計(jì)總結(jié)

    通過(guò)本學(xué)期對(duì)單片機(jī)原理及應(yīng)用這門(mén)課程的學(xué)習(xí)完成這次課程設(shè)計(jì)讓我們對(duì)此門(mén)課程有了更深的認(rèn)識(shí),為期兩個(gè)星期的課程設(shè)計(jì)不僅鞏固了我們的理論知識(shí)而且也培養(yǎng)了我們的動(dòng)手能力,同時(shí)也讓我們認(rèn)識(shí)到理論與實(shí)踐的差距,讓我們受益匪淺。

首先在課題的設(shè)計(jì)過(guò)程中,不僅要運(yùn)用到課堂學(xué)到的知識(shí),還需要查閱不少單片機(jī)相關(guān)的資料,對(duì)我們學(xué)習(xí)用的單片機(jī)板子的原理圖進(jìn)行詳細(xì)地了解。經(jīng)過(guò)一段時(shí)間的努力,基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表基本完成。但設(shè)計(jì)中的不足之處仍然存在。在這過(guò)程中,我對(duì)電路設(shè)計(jì),單片機(jī)的使用等都有了進(jìn)一步地認(rèn)識(shí)。通過(guò)這次設(shè)計(jì)我加深了對(duì)Keil軟件的使用方法,掌握了從系統(tǒng)的需要、方案的設(shè)計(jì)、功能模塊的劃分、原理圖的設(shè)計(jì)和電路圖的仿真的設(shè)計(jì)流程,積累了不少經(jīng)驗(yàn)。

通過(guò)本次設(shè)計(jì),提高了自己的能力,無(wú)論是在硬件連接方面還是在軟件編程方面。本次設(shè)計(jì)采用了STC89C52單片機(jī)芯片,與以往的單片機(jī)相比增加了許多新的功能,使其功能更為完善,應(yīng)用領(lǐng)域也更為廣泛。設(shè)計(jì)中還用到了模/數(shù)轉(zhuǎn)換芯片ADC0809,以前在學(xué)單片機(jī)課程時(shí)只是對(duì)其理論知識(shí)有了初步的理解,做實(shí)驗(yàn)時(shí)也很少自己去編寫(xiě)程序,只是在原有的程序下了解然后做一些小的修改完成老師要求的擴(kuò)展實(shí)驗(yàn)。通過(guò)這次設(shè)計(jì),對(duì)編程有了更深的理解。在調(diào)試過(guò)程中遇到很多問(wèn)題,硬件上的理論知識(shí)學(xué)得不夠扎實(shí),對(duì)電路的仿真方面也不夠熟練。

總之這次電路的設(shè)計(jì)和仿真,基本上達(dá)到了設(shè)計(jì)的功能要求。在以后的實(shí)踐中,我將繼續(xù)努力學(xué)習(xí)電路設(shè)計(jì)方面的理論知識(shí),并理論聯(lián)系實(shí)際,爭(zhēng)取在電路設(shè)計(jì)方面能有所提升。同時(shí)在課程設(shè)計(jì)的自主設(shè)計(jì)、學(xué)習(xí)和研究過(guò)程中,通過(guò)寫(xiě)課程設(shè)計(jì)的總結(jié)報(bào)告,初步訓(xùn)練我們的書(shū)面表達(dá)能力。組織邏輯能力,這些技能應(yīng)用性強(qiáng),對(duì)我們的將來(lái)就業(yè)和進(jìn)一步發(fā)展幫助較大。同時(shí)也加強(qiáng)了我們對(duì)課本知識(shí)的理解,使我們做到理論和與實(shí)際的聯(lián)系,收獲很大。并且我們也深深地體會(huì)到自己所學(xué)知識(shí)的不足,激發(fā)了我們的自學(xué)能力和應(yīng)對(duì)挑戰(zhàn)的能力。為今后學(xué)習(xí)打下了良好的基礎(chǔ),培養(yǎng)了我們嚴(yán)謹(jǐn)務(wù)實(shí),戒驕戒躁的作風(fēng),為我們的未來(lái)做了很好的鋪墊。

7、主要芯片資料7.1  STC89C52
其引腳圖如圖7-1-1所示:

部分引腳功能說(shuō)明:

Vcc(40腳):接+5V電源正極;

Vss(20腳):接+5V電源地;

XTAL1(19腳):接外部晶體的一個(gè)引腳;

XTAL2(18腳):接外部晶體的另一端,在單片機(jī)內(nèi)部接至反相放大器的輸出端。

RST/VPD(9腳):當(dāng)振蕩器運(yùn)行時(shí),在此引腳加上兩個(gè)周期以上的高電平將使單片機(jī)復(fù)位(RST);

P0口(P0.0~P0.7):為雙向8位三態(tài)I /O口,當(dāng)作為I /O口使用時(shí),連接外部I /O設(shè)備由于輸出的驅(qū)動(dòng)電路工作于開(kāi)漏狀態(tài),因此需要外接上拉電阻。P0口還是地址總線低8位及數(shù)據(jù)總線分時(shí)復(fù)用口,可驅(qū)動(dòng)8個(gè)TTL負(fù)載;

P1口(P1.0~P1.7):為8位準(zhǔn)雙向I /O口,它的每一位都可以分別定義為輸入線或輸出線,可驅(qū)動(dòng)4個(gè)TTL負(fù)載;

P2口(P2.0~P2.7):為8位準(zhǔn)雙向I /O口,當(dāng)作為I /O口使用時(shí),可直接連接外部

I /O設(shè)備。它是與地址總線高8位復(fù)用,可驅(qū)動(dòng)4個(gè)TTL負(fù)載;

P3口(P3.0~P3.7):為8位準(zhǔn)雙向I /O口,是雙功能復(fù)用口,可驅(qū)動(dòng)4個(gè)TTL負(fù)載。

7.2          ADC0809

ADC0809是一種8路模擬量輸入、8位逐次逼近法 A/D,轉(zhuǎn)換時(shí)間在典型時(shí)鐘頻率下約為100 微秒,適用于多路數(shù)據(jù)采集。

ADC0809的引腳圖如圖7-2-1所示:


ADC0809的引腳功率如下:

IN0~IN7:8路模擬量輸入線;

2-1~2-8 :8位三態(tài)數(shù)據(jù)輸入線,常用D7~D0表示;

A、B、C:模擬通道選擇輸入線;

ALE:通道鎖存控制信號(hào)輸入線,ALE電平正跳變時(shí)可以鎖存A、B、C上的地址信息,經(jīng)譯碼后控制IN0~IN7中哪一路模擬電壓送入比較器;

CLOCK:轉(zhuǎn)換時(shí)鐘輸入線,CLOCK的頻率范圍為10~1200kHz,一般取640 kHz(此時(shí)轉(zhuǎn)換速度為100微秒);

START:?jiǎn)?dòng)轉(zhuǎn)換信號(hào)控制信號(hào)輸入線,該信號(hào)的上升沿清除內(nèi)部寄存器,下降沿啟動(dòng)控制電路開(kāi)始A/D轉(zhuǎn)換;

EOC:轉(zhuǎn)換結(jié)束信號(hào)輸出線,轉(zhuǎn)換結(jié)束后EOC輸出一個(gè)寬為8個(gè)CLK周期的正脈沖;

OE:輸出允許控制信號(hào)輸出線,OE為高電平時(shí)把轉(zhuǎn)換結(jié)果送數(shù)據(jù)線2-1~2-8,OE為低電平時(shí)2-1~2-8為浮空態(tài);

Vcc:主電源+5V;

GND:數(shù)字地;

VREF+:參考電壓輸入線,VREF+≤Vcc;

VREF-:參考電壓輸入線,VREF+≥GND,應(yīng)保證VREF++ VREF-= Vcc。

7.3          8255A
8255A是Intel公司生產(chǎn)的可編程并行接口芯片,它具有3個(gè)8位的并行I /O口,分別稱(chēng)為 PA、PB、PC口,其中PC口又分為高四位和低四位口,它們都可以通過(guò)軟件編程來(lái)改變其I /O口的輸入輸出工作方式。8255A在單片機(jī)應(yīng)用系統(tǒng)中被廣泛用作可編
程外部I /O擴(kuò)展接口。

8255A的引腳圖及其內(nèi)部結(jié)構(gòu)圖如圖7-3-1所示:

8、參考文獻(xiàn)

[1] 楊恢先,黃輝先,等.單片機(jī)原理及應(yīng)用[M]. 湘潭:湘潭大學(xué)出版社,2013.1.

[2] 于殿泓,王新年.單片機(jī)原理與程序設(shè)計(jì)實(shí)驗(yàn)教程[M].西安:西安電子科技大學(xué)出版社,2007.5.

[3] 周興華.手把手教你學(xué)單片機(jī)C程序設(shè)計(jì) [M].北京:北京航空航天大學(xué)出版社,2007.

[4] 馬忠梅,等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第4版)[M]. 北京:北京航空航天大學(xué)出版社,2007.

[5]李光飛,樓然苗,胡佳文,等.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M]. 北京:北京航空航天大學(xué)出版社,2004.

[6] 李光飛,李良兒,樓然苗,等.單片機(jī)C程序設(shè)計(jì)實(shí)例指導(dǎo)[M]. 北京:北京航空航天大學(xué)出版社,2005.

9、致謝

    此次的課程設(shè)計(jì)能順利完成,首先要感謝學(xué)院提供我們這個(gè)寶貴的平臺(tái),讓我們有這個(gè)機(jī)會(huì)去鍛煉自己,發(fā)展自己。還要感謝老師們和學(xué)長(zhǎng)的細(xì)心指導(dǎo),是你們的指導(dǎo)使我們一步一步走向成功。課程設(shè)計(jì)中到充滿(mǎn)了歡笑和淚水,我們?yōu)榱艘恍K的成功而高興,為了一時(shí)的困難而沮喪,但是整個(gè)過(guò)程讓我們收獲了不少,動(dòng)手和動(dòng)腦能力得到了加強(qiáng),學(xué)到了許多書(shū)本上學(xué)不到的知識(shí)?傊,我們?cè)谡n程設(shè)計(jì)中學(xué)到了許多,真是一言難盡。在這里我們謝謝老師和同學(xué)們的幫助,真誠(chéng)地謝謝大家!

10、附 錄
附錄   C語(yǔ)言源程序
單路顯示:
  1. #include<reg52.h>
  2. #include <absacc.h>
  3. #include <intrins.h>
  4. #define A8255_PA    XBYTE[0xD1FF]     /*PA口地址*/
  5. #define A8255_PB    XBYTE[0xD2FF]     /*PB口地址*/
  6. #define A8255_CON   XBYTE[0xD7FF]     /*控制字地址*/
  7. sbit start=P2^7;
  8. sbit oe=P2^3;
  9. sbit eoc=P3^4;
  10. sbit clock=P2^0;
  11. code unsigned char  dispdata[10]={ 0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28};//‘0’‘1’‘2’‘3’‘4’‘5’‘6’‘7’‘8’‘9’
  12. code unsigned char  dispdatad[10]={ 0x80,0x9B,0x42,0x0A,0x19,0x0C,0x04,0x9A,0x00,0x08};//  帶小數(shù)點(diǎn)的數(shù)字顯示
  13. code unsigned char  wei[3]={0xDF,0xEF,0xF7,};//              右邊第一個(gè)數(shù)碼管,第二個(gè)數(shù)碼
  14. unsigned char getdata,num[3],count=20;
  15. void init()
  16. {
  17.      TMOD=0x01;
  18.               TH0=0x3C;//50ms
  19.               TL0=0xB0;
  20.               TR0=1;
  21.      EA=1;
  22.               ET0=1;
  23.      A8255_CON=0x80;
  24.               A8255_PB=0xFF;
  25.               A8255_PA=0xFF;
  26. }
  27. void delay(int x)
  28. {
  29.      int y;
  30.      for(;x>0;x--)
  31.                  for(y=100;y>0;y--);
  32. }

  33. void display()
  34. {
  35.               unsigned char i;
  36.        for(i=0;i<3;i++)
  37.            {
  38.                    A8255_PA=wei[i];
  39.                             if(i==2)A8255_PB=dispdatad[num[i]];  
  40.                                 else A8255_PB=dispdata[num[i]];
  41.            delay(5);
  42.               }
  43. }

  44. void xch()
  45. {   float temp;
  46.    unsigned int buf=0;
  47.    temp =(float)getdata ;
  48.    buf =(unsigned int)temp*19.53;

  49.     num[2] = buf/1000;       //個(gè)位
  50.     num[1] = buf/100%10;      //小數(shù)點(diǎn)后第一位
  51.     num[0] = buf/10%10;     //小數(shù)點(diǎn)后第二位



  52. }

  53. void main()
  54. {
  55.             
  56.               init();
  57.          while(1)
  58.         {
  59.                    if(count==20)
  60.                             {

  61.                                    count=0;
  62.                           start=0;
  63.                           start=1;
  64.                           start=0;
  65.                           while(eoc==0)
  66.                 clock=~clock ;
  67.                           oe=1;
  68.                           getdata=P0;
  69.                           delay(10);
  70.                           oe=0;
  71.                           xch();
  72.                               }
  73.                             display();
  74.               }
  75. }

  76. void int0() interrupt 1 using 0
  77. {
  78.               TH0=0x3C;
  79.               TL0=0xB0;
  80.               count++;
  81.             
  82. }
  83. 多路顯示:
  84. #include <reg52.h>
  85. #include <absacc.h>
  86. #include <intrins.h>
  87. #define A8255_PA    XBYTE[0xD1FF]     /*PA口地址*/
  88. #define A8255_PB    XBYTE[0xD2FF]     /*PB口地址*/
  89. #define A8255_CON   XBYTE[0xD7FF]     /*控制字地址*/
  90. sbit start=P2^7;
  91. sbit oe=P2^3;
  92. sbit eoc=P3^4;
  93. sbit clock=P2^0;
  94. sbit adda=P1^0;
  95. sbit addb=P1^1;
  96. code unsigned char  dispdata[10]={ 0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28};//‘0’‘1’‘2’‘3’‘4’‘5’‘6’‘7’‘8’‘9’
  97. code unsigned char  dispdatad[10]={ 0x80,0x9B,0x42,0x0A,0x19,0x0C,0x04,0x9A,0x00,0x08};//  帶小數(shù)點(diǎn)的數(shù)字顯示
  98. code unsigned char  wei[4]={0xDF,0xEF,0xF7,0xFB};//              右邊第一個(gè)數(shù)碼管,第二個(gè)數(shù)碼管,第三個(gè)數(shù)碼管,第四個(gè)數(shù)碼管
  99. unsigned char num[4],count=20,xbit;
  100. void init()
  101. {
  102.      TMOD=0x01;
  103.               TH0=0x3C;//50ms
  104.               TL0=0xB0;
  105.               TR0=1;
  106.      EA=1;
  107.               ET0=1;
  108.      A8255_CON=0x80;
  109.               A8255_PB=0xFF;
  110.               A8255_PA=0xFF;
  111. }
  112. void delay(int x)
  113. {
  114.      int y;
  115.      for(;x>0;x--)
  116.                  for(y=100;y>0;y--);
  117. }

  118. void tongdao(unsigned char ch)
  119. {
  120.   switch(ch)
  121. {
  122.   case 0:  adda=0,addb=0;break;
  123.   case 1:  adda=0,addb=1;break;
  124.   case 2:  adda=1,addb=0;break;
  125.   case 3:  adda=1,addb=1;break;
  126.   default:  break;
  127. }
  128. }

  129. void display()
  130. {
  131.               unsigned char i;
  132.        for(i=0;i<4;i++)
  133.            {
  134.                    A8255_PA=wei[i];
  135.                             if(i==2)A8255_PB=dispdatad[num[i]];  
  136.                                 else A8255_PB=dispdata[num[i]];
  137.            delay(5);
  138.               }
  139. }

  140. void xch(unsigned char data1)
  141. {
  142.    float temp;
  143.    unsigned int buf;
  144.    temp =(float)data1;
  145.    buf =(unsigned int)(temp*19.53);
  146.    num[3] = xbit;
  147.    num[2] = buf/1000;       //個(gè)位
  148.    num[1] = buf/100%10;      //小數(shù)點(diǎn)后第一位
  149.    num[0] = buf/10%10;     //小數(shù)點(diǎn)后第二位
  150. }

  151. unsigned char ADC_change(unsigned char ch)
  152. {
  153.   unsigned char value;
  154.   tongdao(ch);
  155.   if(count>=20)
  156.   {                  
  157.     count=0;
  158.     start=0;
  159.     start=1;
  160.     start=0;
  161.     while(eoc==0)
  162.     clock=~clock ;
  163.     oe=1;
  164.     value=P0;
  165.     delay(10);
  166.     oe=0;   
  167.   }
  168.   return value;
  169. }
  170.               void main()
  171. {            
  172.               unsigned char i,n;
  173.               init();
  174.      while(1)
  175.     {

  176. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

word格式可編輯的論文下載:
單片機(jī)課程設(shè)計(jì)報(bào)告-簡(jiǎn)易數(shù)字電壓表.doc (2.36 MB, 下載次數(shù): 28)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:387410 發(fā)表于 2023-5-13 11:18 | 只看該作者
沒(méi)有看著寫(xiě)ICL7107。繕侵
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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