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

QQ登錄

只需一步,快速開始

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

基于單片機(jī)+ADC0809的數(shù)字電流表Proteus仿真+源程序資料

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

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


下面是設(shè)計(jì)文檔:
目錄


摘 要2

關(guān)鍵詞2

1 概述3

1.1設(shè)計(jì)意義

    1.2系統(tǒng)主要功能

2 硬件電路設(shè)計(jì)方案及描述3

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

    2.2 主要元器件的介紹

    2. 3控制電路模塊

    2.4 元件清單

3數(shù)字式電流表的軟件設(shè)計(jì)16

3.1系統(tǒng)程序設(shè)計(jì)總方案

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

4數(shù)字式電流表的調(diào)試

4.1軟件調(diào)試

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

5總結(jié)

附錄1.電路原理圖及仿真圖

2. 程序代碼

參考文獻(xiàn)



基于單片機(jī)的簡(jiǎn)易數(shù)字電流表設(shè)計(jì)

摘要

數(shù)字電流表的誕生打破了傳統(tǒng)電子測(cè)量?jī)x器的模式和格局。它顯示清晰直觀、讀數(shù)準(zhǔn)確,采用了先進(jìn)的數(shù)顯技術(shù),大大地減少了因人為因素所造成的測(cè)量誤差事件。數(shù)字電流表是建立在數(shù)字電壓表的基礎(chǔ)上,讓電壓表與電阻串聯(lián),其顯示的是電流,數(shù)字電壓表是把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式,并加以顯示的儀表。數(shù)字電流表把電子技術(shù)、計(jì)算技術(shù)、自動(dòng)化技術(shù)的成果與精密電測(cè)量技術(shù)密切的結(jié)合在一起,成為儀器、儀表領(lǐng)域中獨(dú)立而完整的一個(gè)分支,數(shù)字電流表標(biāo)志著電子儀器領(lǐng)域的一場(chǎng)革命,也開創(chuàng)了現(xiàn)代電子測(cè)量技術(shù)的先河。本設(shè)計(jì)采用了以單片機(jī)為開發(fā)平臺(tái),控制系采用AT89C52單片機(jī),A/D轉(zhuǎn)換采用ADC0809。系統(tǒng)除能確保實(shí)現(xiàn)要求的功能外,還可以方便進(jìn)行8路其它A/D轉(zhuǎn)換量的測(cè)量、遠(yuǎn)程測(cè)量結(jié)果傳送等擴(kuò)展功能。簡(jiǎn)易數(shù)字電流測(cè)量電路由A/D轉(zhuǎn)換、數(shù)據(jù)處理、顯示控制等組成。

1 .概述

1.1設(shè)計(jì)意義

通過設(shè)計(jì),掌握電子設(shè)計(jì)的一般步驟和方法,鍛煉分析問題解決問題的能力,學(xué)會(huì)如何查找所需資料,同時(shí)復(fù)習(xí)以前所學(xué)知識(shí)并加深記憶,為設(shè)計(jì)打好基礎(chǔ),也為以后工作作準(zhǔn)備。通過對(duì)選題的分析設(shè)計(jì),學(xué)習(xí)數(shù)字電流表的工作原理、組成和特性;掌握數(shù)字電流表的校準(zhǔn)方法和使用方法;

1.2系統(tǒng)主要功能

A、利用AD轉(zhuǎn)換芯片和精密電阻測(cè)量0~20mA電流

   B、系統(tǒng)工作符合一般數(shù)字電流表要求

2 硬件電路設(shè)計(jì)方案及描述

2.1 數(shù)字式電流表系統(tǒng)硬件設(shè)計(jì)   
硬件電路設(shè)計(jì)主要包括:AT89S51單片機(jī)系統(tǒng),A/D轉(zhuǎn)換電路,顯示電路。測(cè)量最大電
20ma,顯示最大值為20.00ma。本實(shí)驗(yàn)采用AT89S51單片機(jī)芯片配合ADC0809模/數(shù)轉(zhuǎn)換芯片構(gòu)成一個(gè)簡(jiǎn)易的數(shù)字電流表。

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

2.1數(shù)字式電流表系統(tǒng)硬件設(shè)計(jì)框圖

2.2.2  ADC0809內(nèi)部邏輯結(jié)構(gòu)

            

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

圖中多路模擬開關(guān)可選通8路模擬通道,允許8路模擬量分時(shí)輸入,并共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。地址鎖存與譯碼電路完成對(duì)A、B、C三個(gè)地址位進(jìn)行鎖存與譯碼,如表所示。


ADC0809通道選擇表


C(ADDC)

B(ADDB)

A(ADDA)

選擇的通道

0

0

0

IN0

0

0

1

IN1

0

1

0

IN2

0

1

1

IN3

1

0

0

IN4

1

0

1

IN5

1

1

0

IN6

1

1

1

IN7

2.2.3 ADC0809的引腳ADC0809芯片為28引腳雙列直插式芯片,其主要功能:(1)IN0~I(xiàn)N7:8路模擬量輸入通道。

(2)A、B、C:模擬通道地址線。這3根地址線用于對(duì)8路模擬通道的選擇,其譯碼關(guān)系如表4.3所示。其中,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。

(3)ALE:地址鎖存允許信號(hào)。對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。

(4)START:轉(zhuǎn)換啟動(dòng)信號(hào)。START上升沿時(shí),復(fù)位ADC0809;START下降沿時(shí)啟動(dòng)芯片,開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號(hào)有時(shí)簡(jiǎn)寫為ST。

(5)D7~D0:數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高。

(6)OE:輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。

(7)CLK:時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500KHz的時(shí)鐘信號(hào)。

(8)EOC:轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。

(9)Vcc: +5V電源,GND:地。

(10)Vref:參考電壓。參考電壓用來與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=0V)。

  ADC0809的工作原理

首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。

(注意:ALE信號(hào)常與START信號(hào)連在一起,這樣連接可以在信號(hào)的前沿寫入地址信號(hào),在其后沿啟動(dòng)A/D轉(zhuǎn)換,圖為ADC0809信號(hào)的時(shí)序配合圖)。


              ADC0809信號(hào)的時(shí)序配合

2.2.3  4位一體7段LED數(shù)碼管

本實(shí)驗(yàn)的顯示模塊主要由一個(gè)4位一體的7段LED數(shù)碼管(SM410564)構(gòu)成,用于顯示測(cè)量到的電壓值。它是一個(gè)共陽(yáng)極的數(shù)碼管,每一位數(shù)碼管的原理圖如圖4.5所示。每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收AT89C52的P1口產(chǎn)生的顯示段碼。C1,C2,C3,C4引腳端為其位選端,用于接收AT89C52的P3口產(chǎn)生的位選碼。


圖4.5 一位數(shù)碼管的原理圖

  4位一體7段LED數(shù)碼管圖


2.3控制電路模塊
2.3.1  總電路

本課題實(shí)驗(yàn)主要采用AT89S51芯片和ADC0809芯片來完成一個(gè)簡(jiǎn)易的數(shù)字電壓表,能夠?qū)斎氲?~20ma 的模擬直流電流進(jìn)行測(cè)量,并通過一個(gè)4位一體的7段LED數(shù)碼管進(jìn)行顯示,測(cè)量誤差約為0.02 ma。該電流表的測(cè)量電路主要由三個(gè)模塊組成:A/D轉(zhuǎn)換模塊、數(shù)據(jù)處理模塊及顯示控制模塊。A/D轉(zhuǎn)換主要由芯片ADC0809來完成,它負(fù)責(zé)把采集到的模擬量轉(zhuǎn)換為相應(yīng)的數(shù)字量再傳送到數(shù)據(jù)處理模塊。數(shù)據(jù)處理則由芯片AT89S51來完成,其負(fù)責(zé)把ADC0809傳送來的數(shù)字量經(jīng)一定的數(shù)據(jù)處理,產(chǎn)生相應(yīng)的顯示碼送到顯示模塊進(jìn)行顯示;另外它還控制著ADC0809芯片的工作。顯示模塊主要由7段數(shù)碼管及相應(yīng)的驅(qū)動(dòng)組成,顯示測(cè)量到的電流值。數(shù)字式電流表的設(shè)計(jì)的總電路圖見附錄一。


2.3.2AT89S51的復(fù)位電路和時(shí)鐘電路

AT89S51的復(fù)位電路如圖所示。當(dāng)單片機(jī)一上電,立即復(fù)位;另外,如果在運(yùn)行中,外界干擾等因素使單片機(jī)的程序陷入死循環(huán)狀態(tài)或“跑飛”,就可以通過按鍵使其復(fù)位。復(fù)位也是使單片機(jī)退出低功耗工作方式而進(jìn)入正常狀態(tài)的一種操作。

  復(fù)位電路和時(shí)鐘電路

電容C和電阻R1實(shí)現(xiàn)上電自動(dòng)復(fù)位。增加按鍵開關(guān)S又可實(shí)現(xiàn)按鍵復(fù)位功能。一般取C=10uF,R1=1KΩ。

單片機(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í)鐘電路還需附加其他電路。

電路中的器件選擇可以通過計(jì)算和實(shí)驗(yàn)確定,也可以參考一些典型電路的參數(shù),電路中,電容器C1和C2對(duì)震蕩頻率有微調(diào)作用,通常的取值范圍是30±10pF,在這個(gè)系統(tǒng)中選擇了33uF;石英晶振選擇范圍最高可選24MHz,它決定了單片機(jī)電路產(chǎn)生的時(shí)鐘信號(hào)震蕩頻率,在本系統(tǒng)中選擇的是12MHz,因而時(shí)鐘信號(hào)的震蕩頻率為12MHz。

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

A/D轉(zhuǎn)換由ADC0809完成。ADC0809具有8路模擬輸入端口,地址線(23~25腳)可決定對(duì)哪一路模擬輸入作A/D轉(zhuǎn)換。22腳為地址控制,當(dāng)輸入為高電平時(shí),對(duì)地址信號(hào)進(jìn)行鎖存。6腳為測(cè)試控制,當(dāng)輸入一個(gè)2μs寬高電平脈沖時(shí),就開始A/D轉(zhuǎn)換。7腳為A/D轉(zhuǎn)換結(jié)束標(biāo)志,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),7腳輸出高電平。9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制,當(dāng)OE腳為高電平時(shí),A/D轉(zhuǎn)換數(shù)據(jù)從該端口輸出。10腳為ADC0809的時(shí)鐘輸入端,利用單片機(jī)AT89S51的30腳的六分頻晶振頻率再通過14024二分頻得到1MHz時(shí)鐘。AT89S51與ADC0809的連接電路原理圖如圖所示。

           AT89S51與ADC0809的連接電路原理圖


AT89S51與ADC0809的連接必須注意處理好3個(gè)問題:

(1)在START端送一個(gè)100μs寬的啟動(dòng)正脈沖;

              (2)獲取EOC端上的狀態(tài)信息,因?yàn)樗茿/D轉(zhuǎn)換的結(jié)束標(biāo)志;

  • 給“三態(tài)輸出鎖存器”分配一個(gè)端口地址,也就是給OE端送一個(gè)地址譯碼器的輸出信號(hào)。
2.3.4顯示電路

由于單片機(jī)的并行口不能直接驅(qū)動(dòng)LED顯示器,所以,在一般情況下,必須采用專用的驅(qū)動(dòng)電路芯片,使之產(chǎn)生足夠大的電流,顯示器才能正常工作[7]。如果驅(qū)動(dòng)電路能力差,即負(fù)載能力不夠時(shí),顯示器亮度就低,而且驅(qū)動(dòng)電路長(zhǎng)期在超負(fù)荷下運(yùn)行容易損壞,因此,LED顯示器的驅(qū)動(dòng)電路設(shè)計(jì)是一個(gè)非常重要的問題。

為了簡(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ù)字。

系統(tǒng)采用動(dòng)態(tài)顯示方式驅(qū)動(dòng)4個(gè)數(shù)碼管工作,顯示電路與單片機(jī)的P1口相連來顯示采集到的電流值。

顯示電路原理圖

2.4 元件清單

器件類型

器件名

數(shù)值

數(shù)量

單片機(jī)

AT89S51


1

A/D轉(zhuǎn)換器

ADC0809


1

數(shù)碼管

TSEG-MP*4-CA-BLUE


1

電容

C1、C2

33uF

2

電解電容

C3

10uF

1

電阻

R1

10K

2

排阻

RP1

200

1

電阻

R2

250

1

晶振

X1

12MHz

1

3數(shù)字式電流表的軟件設(shè)計(jì)3.1系統(tǒng)程序設(shè)計(jì)總方案
   根據(jù)模塊的劃分原則,將該程序劃分初始化模塊,A/D轉(zhuǎn)換子程序和顯示子程序,這三個(gè)程序模塊構(gòu)成了整個(gè)系統(tǒng)軟件的主程序。
數(shù)字式直流電流表主程序框圖

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

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

3.2.3A/D轉(zhuǎn)換子程序

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

   A/D轉(zhuǎn)換流程圖


3.2.4顯示子程序

顯示子程序采用動(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。

在本設(shè)計(jì)中,為了簡(jiǎn)化硬件設(shè)計(jì),主要采用軟件定時(shí)的方式,即用定時(shí)器0溢出中斷功能實(shí)現(xiàn)11μs定時(shí),通過軟件延時(shí)程序來實(shí)現(xiàn)5ms的延時(shí)。其轉(zhuǎn)換流程圖如圖5.3所示。

                       顯示子程序流程圖

4數(shù)字式電流表的調(diào)試

4.1軟件調(diào)試

    軟件調(diào)試的主要任務(wù)是排查錯(cuò)誤,錯(cuò)誤主要包括邏輯和功能錯(cuò)誤,這些錯(cuò)誤有些是顯性的,而有些是隱形的。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軟件,而程序方面,采用的是C語(yǔ)言。
4.2顯示結(jié)果及誤差分析1.1.1        顯示結(jié)果
  • 當(dāng)IN0口輸入電0ma時(shí),顯示結(jié)果如圖所示,測(cè)量誤差為0ma。


2.當(dāng)IN0口輸入電流為10.50ma時(shí),顯示結(jié)果如圖所示,測(cè)量誤差為0ma。



3. 當(dāng)IN0口輸入電流為5ma時(shí),顯示結(jié)果如圖所示,測(cè)量誤差為0.01ma。

4. 當(dāng)IN0口輸入電壓流為15ma時(shí),顯示結(jié)果如圖所示,測(cè)量誤差為0.02ma。

誤差分析

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

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


標(biāo)準(zhǔn)電流值/A

簡(jiǎn)易電流表測(cè)量值/A

絕對(duì)誤差/A

0.00

0.00

0.00

2.00

2.01

0.01

4.00

4.00

0.00

6.00

6.02

0.02

8.00

8.01

0.01

10.00

10.01

0.01

12.00

11.98

0.02

14.00

14.00

0.00

16.00

15.98

0.02

20.00

20.00

0.00


  從上表可以看出,簡(jiǎn)易數(shù)字電流表測(cè)得的值基本上比標(biāo)準(zhǔn)電壓值偏大0-0.02mA,這可以通過校正ADC0809的基準(zhǔn)電壓來解決。因?yàn)樵撾娏鞅碓O(shè)計(jì)時(shí)直接用5A的供電電源作為電壓,所以電壓可能有偏差。當(dāng)要測(cè)量電流大于5V所對(duì)應(yīng)的電流時(shí),可在輸入口使用分壓電阻,而程序中只要將計(jì)算程序的除數(shù)進(jìn)行調(diào)整就可以了。
5.總結(jié)

這次的單片機(jī)設(shè)計(jì),是把硬件和軟件結(jié)合起來的設(shè)計(jì),,其硬件電路是比復(fù)雜的,需要足夠的耐心加細(xì)心,同時(shí)也需要一定的硬件知識(shí)基礎(chǔ)。只有這樣才能保證電路的成功。而且在這次設(shè)計(jì)中硬件是基礎(chǔ),只有把基礎(chǔ)打好才會(huì)有更高的設(shè)計(jì)。硬件工作完成了就是解決程序設(shè)計(jì)的問題,程序設(shè)計(jì)是一個(gè)很靈活的東西,它反映了我們解決問題的邏輯思維和創(chuàng)新能力,它是一個(gè)設(shè)計(jì)的靈魂所在。

要設(shè)計(jì)一個(gè)成功的電路,必須要有耐心,要有堅(jiān)持的毅力。在整個(gè)電路的設(shè)計(jì)過程中,花費(fèi)時(shí)間最多的是各個(gè)單元電路的連接及電路的細(xì)節(jié)設(shè)計(jì)上,如在多種方案的選擇中,我們仔細(xì)比較分析其原理以及可行的原因。這就要求我們對(duì)硬件系統(tǒng)中各組件部分有充分透徹的理解和研究,并能對(duì)之靈活應(yīng)用。通過這次實(shí)訓(xùn),我在書本理論知識(shí)的基礎(chǔ)上又有了更深層次的理解。

此次設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,和與人合作共同提高,都受益非淺。

附錄1 總電路原理圖及仿真圖
電路原理圖
                          仿真圖

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. unsigned char dispbuf[4];
  4. unsigned int i;
  5. unsigned int j;
  6. unsigned char getdata;
  7. unsigned int temp;
  8. unsigned int temp1;
  9. unsigned char count;
  10. unsigned char d;
  11. sbit ST=P3^0;
  12. sbit OE=P3^1;
  13. sbit EOC=P3^2;
  14. sbit CLK=P3^3;
  15. sbit P34=P3^4;
  16. sbit P35=P3^5;
  17. sbit P36=P3^6;
  18. sbit P20=P2^0;
  19. sbit P21=P2^1;
  20. sbit P22=P2^2;
  21. sbit P23=P2^3;
  22. sbit P17=P1^7;
  23. void TimeInitial();
  24. void Delay(unsigned int i);

  25. void TimeInitial()
  26. { TMOD=0x10;
  27. TH1=(65536-200)/256;
  28. TL1=(65536-200)%256;
  29. EA=1;
  30. ET1=1;
  31. TR1=1;
  32. }
  33. void Delay(unsigned int i)
  34. {
  35.   unsigned int j;
  36.   for(;i>0;i--)
  37.   {
  38.   for(j=0;j<125;j++)
  39.   {;}
  40.   }
  41. }

  42. void Display()

  43. {
  44. P1=~dispbitcode[dispbuf[3]];
  45. P20=1;
  46. P21=0;
  47. P22=0;
  48. P23=0;
  49. Delay(10);
  50. P1=0xFF;
  51. P1=~dispbitcode[dispbuf[2]];
  52. P17=0;
  53. P20=0;
  54. P21=1;
  55. P22=0;
  56. P23=0;
  57. Delay(10);
  58. P1=0xFF;
  59. P1=~dispbitcode[dispbuf[1]];
  60. P20=0;
  61. P21=0;
  62. P22=1;
  63. P23=0;
  64. Delay(10);
  65. P1=0xFF;
  66. P1=~dispbitcode[dispbuf[0]];
  67. P20=0;
  68. P21=0;
  69. P22=0;
  70. P23=1;
  71. Delay(10);
  72. P1=0xFF;
  73. }
  74. void main()
  75. {
  76. TimeInitial();
  77. while(1)
  78. {
  79. ST=0;
  80. OE=0;
  81. ST=1;
  82. ST=0;

  83. while(EOC==0);
  84. OE=1;
  85. getdata=P0;
  86. OE=0;
  87. temp=getdata*1.0/255*2000;
  88. dispbuf[0]=temp%10;
  89. dispbuf[1]=temp/10%10;
  90. dispbuf[2]=temp/100%10;
  91. dispbuf[3]=temp/1000;
  92. Display();

  93. }
  94. }

  95. void t1(void) interrupt 3 using 0
  96. {
  97.   TH1=(65536-200)/256;
  98.   TL1=(65536-200)%256;
  99.   CLK=~CLK;
  100.   }
復(fù)制代碼


所有資料51hei提供下載,仿真是Proteus7.5版本的dsn文件:
單片機(jī)設(shè)計(jì)—簡(jiǎn)易數(shù)字電流表.7z (236.84 KB, 下載次數(shù): 507)

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:69408 發(fā)表于 2018-9-9 21:57 | 只看該作者
下載學(xué)習(xí)學(xué)習(xí),謝謝樓主分享!仿真要Proteus7.5才能打開
回復(fù)

使用道具 舉報(bào)

板凳
ID:459831 發(fā)表于 2019-1-2 10:49 | 只看該作者
樓主大大請(qǐng)問怎么把量程改成4-20ma?
回復(fù)

使用道具 舉報(bào)

地板
ID:442952 發(fā)表于 2019-4-10 07:45 來自手機(jī) | 只看該作者
樓樓主大大,怎么把量程改成0~20A
回復(fù)

使用道具 舉報(bào)

5#
ID:518574 發(fā)表于 2019-4-30 17:27 | 只看該作者
樓主   你這個(gè)代碼。。。。。。   心就不疼嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:693122 發(fā)表于 2020-2-14 12:03 | 只看該作者
這代碼有點(diǎn)厲害啊。。
回復(fù)

使用道具 舉報(bào)

7#
ID:696049 發(fā)表于 2020-2-22 10:53 | 只看該作者
想知道想改量程為A該怎么改呀
回復(fù)

使用道具 舉報(bào)

8#
ID:696049 發(fā)表于 2020-2-22 14:24 | 只看該作者
請(qǐng)問怎么改量程呢
回復(fù)

使用道具 舉報(bào)

9#
ID:530343 發(fā)表于 2020-3-14 17:21 | 只看該作者
改取樣電阻
回復(fù)

使用道具 舉報(bào)

10#
ID:754077 發(fā)表于 2020-5-22 14:22 | 只看該作者
謝謝分享,用Proteus7.5打開

51hei.gif (298.06 KB, 下載次數(shù): 89)

51hei.gif
回復(fù)

使用道具 舉報(bào)

11#
ID:597316 發(fā)表于 2020-6-9 16:36 | 只看該作者
太好了,解決了我目前遇到的問題,非常感謝
回復(fù)

使用道具 舉報(bào)

12#
ID:744425 發(fā)表于 2020-6-10 11:26 | 只看該作者
請(qǐng)問如果不用定時(shí)器制造時(shí)鐘信號(hào),而直接用脈沖發(fā)生器應(yīng)該怎么改?
回復(fù)

使用道具 舉報(bào)

13#
ID:797821 發(fā)表于 2020-7-6 13:47 | 只看該作者
這個(gè)資料能做成硬板PCB嗎?我想試一下
回復(fù)

使用道具 舉報(bào)

14#
ID:234560 發(fā)表于 2020-7-10 16:42 | 只看該作者
這個(gè)壇子里的人是不是多數(shù)都是在校大學(xué)生啊,電壓表不做過壓保護(hù),電流表不做過流保護(hù),做著玩玩還行,完全沒有實(shí)用性。
回復(fù)

使用道具 舉報(bào)

15#
ID:859497 發(fā)表于 2020-12-17 13:52 | 只看該作者
[SPICE] I1: unknown controlling source (null)
Real Time Simulation failed to start.
這是怎么回事呢
回復(fù)

使用道具 舉報(bào)

16#
ID:968948 發(fā)表于 2021-9-28 21:42 來自手機(jī) | 只看該作者
我這么運(yùn)行不出來?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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