基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)_第1頁
基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)_第2頁
基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)_第3頁
基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)_第4頁
基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于數(shù)控直流電流源系統(tǒng)的設(shè)計(jì) 摘要:隨著電子技術(shù)的發(fā)展、數(shù)字電路應(yīng)用領(lǐng)域的擴(kuò)展,人們對數(shù)控恒走電流器件的需求越來越高。 應(yīng)社會(huì)發(fā)展的需求,對基于單片機(jī)控制的數(shù)控直流電流源的設(shè)計(jì)逬行研究論證,并運(yùn)用Proteus 軟件逬行仿真。以直流穩(wěn)壓電源和穩(wěn)流電源為核心,結(jié)合單片機(jī)最小系統(tǒng)實(shí)現(xiàn)對輸出電流的控制。 首先采用了單片集成穩(wěn)壓芯片實(shí)現(xiàn)直流穩(wěn)壓,然后采用了分立元件實(shí)現(xiàn)穩(wěn)流。為實(shí)現(xiàn)對輸出電流的 精確控制:方面,通過D/A輸出實(shí)現(xiàn)電流的預(yù)置,再通過運(yùn)算放大器控制晶體管的輸出電流; 另一方面,運(yùn)用A/D轉(zhuǎn)換器件將輸出電流的采樣值送入單片機(jī),與預(yù)置值進(jìn)行比較,將誤差值通 過D/A轉(zhuǎn)換芯片添加到調(diào)整電路,從而逬

2、一步降低了輸出電流的紋波。 Abstract: The requiements of numerical controlling constant current devices is increasing as development of electronic technology and expanding of digital circuit applicational field. As to satisfy society development, do a study based on M Numerical control de current source design M

3、of SCM controlling and apply Proteus to simulating software.DC (digital current ) Voltage regulator and DC current regulator is the key part of the design its output current is controlled by single chip microprocessor,Firslly,singlc chip IC (integrated circuit) Voltage regulator LM338K is used to ge

4、nerate stable voltage, and then desperate devices is used to generate stabilize current Tocontrol the output current , on one hand ,system sets output current by D/A (digital / analogue converter and controls current of transistor by operational amplifier ; on the other hand , with the help of A/D (

5、analogue / digital) converter t system samples the output current and convert it into digital data , compares it with preset value , converts the error value into analogy and puts it on adjusting circuit , and decreases the ripple of the system output current 目錄 1弓I言1 1.1數(shù)控直流電流源的發(fā)展現(xiàn)狀1 1.2數(shù)控直流電流源的研究意

6、義1 1.3該研究解決的主要內(nèi)容1 2設(shè)計(jì)任務(wù)及要求1 2.1任務(wù)1 2.2設(shè)計(jì)思路2 2.3方案論證2 2.4總體方案設(shè)計(jì)2 3硬件系統(tǒng)的設(shè)計(jì)3 3.1硬件系統(tǒng)的模塊3 3.1.1單片機(jī)最小系統(tǒng)3 3.1.2 自制電源模塊5 3.1.3顯示模塊5 3.1.4鍵盤模塊7 3.1.5電流源模塊8 3.1.6負(fù)載模塊8 3.1.4D/A、A/D轉(zhuǎn)換模塊8 3.2系統(tǒng)的原理圖9 4軟件系統(tǒng)的設(shè)計(jì)10 4.1單片機(jī)資源使用情況10 4.2軟件系統(tǒng)的模塊10 4.3程序流程圖11 4.4程序淸單15 5仿真測試及結(jié)果15 5.1設(shè)計(jì)結(jié)論及使用方法15 5.2仿真結(jié)果15 5.2.1輸出電流范圍仿真15

7、5.2.2步進(jìn)調(diào)整仿真17 5.2.3 輸出電流仿真17 5.3謀差分析18 6總結(jié)20 參考文獻(xiàn)21 謝辭22 附錄23 II 1引言 1.1數(shù)控直流電流源的發(fā)展現(xiàn)狀 電源技術(shù)尤其是數(shù)控電源技術(shù)是一門實(shí)踐性很強(qiáng)的工程技術(shù),服務(wù)于各行各業(yè)。電子電力技術(shù) 是電能的最佳應(yīng)用技術(shù)之一。現(xiàn)在電源技術(shù)融合了電子、電氣、系統(tǒng)集成、控制理論、材料等眾多 領(lǐng)域。隨著數(shù)控電源在電子設(shè)備中的普遍使用,普通電源在工作時(shí)產(chǎn)生的誤差,會(huì)影響整個(gè)系統(tǒng)的 精確度。電源在使用時(shí)會(huì)產(chǎn)生很多不良后果,世界各國紛紛對電源產(chǎn)品提出了不同要求并制左了一 系列的產(chǎn)品精度標(biāo)準(zhǔn)。隨著經(jīng)濟(jì)全球化的發(fā)展,恒流源是電路中廣泛使用的一種電路,恒流源

8、的實(shí) 質(zhì)是利用器件對電流進(jìn)行反饋,動(dòng)態(tài)調(diào)節(jié)設(shè)備的供電狀態(tài),從而使得所輸出的電流趨于恒泄。本課 題對恒流源進(jìn)行研究,設(shè)計(jì)出所需要的符合標(biāo)準(zhǔn)的數(shù)控制流電流源。 1.2數(shù)控直流電流源的研究意義 數(shù)控直流電流源是我們生活中比較常見的設(shè)備,這次設(shè)il就是基于單片機(jī)為主體所設(shè)il的微機(jī) 數(shù)字觸發(fā)式直流電流源,相比英他以往的電源設(shè)計(jì),此次的課題更新穎,更符合技術(shù)發(fā)展的潮流。 設(shè)計(jì)中,對整體電源進(jìn)行了硬件、軟件總體設(shè)計(jì),從兩方而滿足設(shè)計(jì)的基本要求的同時(shí),對整個(gè)微 機(jī)控制的系統(tǒng)有了比較全而的了解。 13該研究解決的主要內(nèi)容 本次對數(shù)控直流電流源的設(shè)計(jì)主要是針對以下方而:如何實(shí)現(xiàn)對電源的輸岀控制,該系統(tǒng)主要 是應(yīng)

9、用單片機(jī),用微處理器來替代傳統(tǒng)直流穩(wěn)壓電源中手動(dòng)旋轉(zhuǎn)電位器,實(shí)現(xiàn)輸出電壓的連續(xù)可調(diào), 精度要求高。實(shí)現(xiàn)的途徑很多,可以用DAC的模擬輸出控制電源的基準(zhǔn)電壓或分壓電阻,或者用其它 更有效的方法,因此如何選擇簡單有效的方法是本課題需要解決的首要問題:數(shù)控直流電流源要實(shí) 現(xiàn)電流的鍵盤化輸出控制,同時(shí)對于輸出的電流的精度也具有相應(yīng)的要求,如何有效的實(shí)現(xiàn)這些功 能也是課題所需研究解決的問題。 2設(shè)計(jì)任務(wù)及要求 21任務(wù) 設(shè)訃并制作數(shù)控直流電流源。輸入交流200240V, 50Hz;輸岀直流電壓W10V。苴原理示意圖如 下所示。 電源 2.2設(shè)計(jì)思路 采用改進(jìn)型單輸出端單向電流源電路來產(chǎn)生恒左的電流。此方

10、法是利用精密電阻取樣得到反饋 電壓,將反饋電壓和高精度的參考電壓比較得到誤差電壓,該誤差電壓經(jīng)放大后輸出控制調(diào)整管的 導(dǎo)通程度,使預(yù)設(shè)電流值和實(shí)測電流值的步步逼近,直到相等,從而達(dá)到數(shù)控的目的。 2.3方案論證 對于數(shù)控直流電流源的設(shè)計(jì)有很多方案,下而做一下介紹: 方案一:方框圖如圖1所示,數(shù)控直流電流源由鍵盤、控制器、顯示器、數(shù)模轉(zhuǎn)換、電壓電流 轉(zhuǎn)換和模數(shù)轉(zhuǎn)換等部分組成,鍵盤的作用是設(shè)左電流值和確左電流步進(jìn)值;控制器的作用是將設(shè)左 電流值的8位(或12位)二進(jìn)制輸岀:顯示器的作用是顯示設(shè)左電流值:數(shù)模轉(zhuǎn)換的作用是設(shè)龍電 流值的數(shù)字量轉(zhuǎn)換為模擬量:電壓電流轉(zhuǎn)換的作用是將電壓轉(zhuǎn)換成恒定電流輸出:

11、模數(shù)轉(zhuǎn)換的作用 是將輸出的模擬量再轉(zhuǎn)換為數(shù)字量反饋到控制器,使實(shí)際輸出電流值與設(shè)左電流值一致。 電路輸出 =! 圖1方案一的方框圖 方案二:方框圖如圖2所示,采用改進(jìn)型的單輸岀端單向電流源電路來產(chǎn)生恒左電流。該方法 是用精密電阻取樣得到反饋電壓,將反饋電壓與髙精度的參考電壓比較得到誤差電壓,此誤差電壓 經(jīng)放大后輸出控制調(diào)整管的導(dǎo)通程度,使預(yù)設(shè)電流值和實(shí)測電流值的逐步逼近,直至相等,從而達(dá) 到數(shù)控的目的。從題目的要求來分析,該題目最大的難點(diǎn)在于大電流輸岀和髙精度控制,所以在具 體的方案確上中,大電流、功耗,以及精度、誤差等都是我們所必須要考慮和克服的。 2.4總體方案設(shè)計(jì) 方案一的數(shù)控直流電流源

12、設(shè)訃較簡單,對于電流的變化是用相比而言使用可編程芯片,如CPLD 或FPGA等和DAC控制,采用LED數(shù)碼管進(jìn)行實(shí)時(shí)顯示,操作也較方便。 方案二的數(shù)控直流電源設(shè)計(jì)采用單片機(jī)作為核心控制,基本原理簡單,實(shí)現(xiàn)比較方便,電源的 電流值也可以調(diào)整到較精確的數(shù)值,同樣的也是采用LCD進(jìn)行顯示。此方案采用保持電阻恒左而改 變輸入電壓的方法來改變電流的大小。利用髙精度D/A轉(zhuǎn)換器在單片機(jī)程序控制下提供可變的高精 度的基準(zhǔn)電壓,該基準(zhǔn)電壓經(jīng)過V/I轉(zhuǎn)換電路得到電流,再通過A/D轉(zhuǎn)換器將輸出電流反饋至單片 機(jī)進(jìn)行比較,調(diào)整D/A的輸入電壓,從而達(dá)到數(shù)控的目的。該方案的難點(diǎn)在于穩(wěn)左恒流源的設(shè)計(jì)和 高精度電流檢測電

13、路的設(shè)計(jì)。特點(diǎn)是可精確的控制電流的步進(jìn)量,負(fù)載變化對電流輸出的影響較小。 根據(jù)題目要求以及設(shè)訃思路,比較之后,基于以上優(yōu)點(diǎn)以及對于單片機(jī)的成熟應(yīng)用,因此我決 左用單片機(jī)來作為控制器,我所采用的是第二種方案 圖2方案二方框圖 預(yù)設(shè)顯示 3硬件系統(tǒng)的設(shè)計(jì) 3.1硬件系統(tǒng)的模塊 3.1.1單片機(jī)最小系統(tǒng) (1) 時(shí)鐘電路 單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩 源就能產(chǎn)生一泄的時(shí)鐘信號送到單片機(jī)內(nèi)部的各個(gè)單元,決泄單片機(jī)的工作速度。 一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度 為3V左右的正弦波時(shí)鐘信號,英

14、振蕩頻率主要由石英晶振的頻率確左。電路中仃英晶體振蕩器的頻 率為12MHz,兩個(gè)電容Cl、C2的作用有兩個(gè):一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。 Cl、C2的典型值為33PFo單片機(jī)的時(shí)鐘電路如圖3所示。 (2) 復(fù)位電路 單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,復(fù)位 后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài)。 復(fù)位電路用于產(chǎn)生復(fù)位信號,通過RST引腳送入單片機(jī),進(jìn)行復(fù)位。因?yàn)锳T89S52單片機(jī)的復(fù) 位是靠外部電路實(shí)現(xiàn)的。復(fù)位電路的好壞直接影響單片機(jī)系統(tǒng)工作的可靠性,因此,要重視復(fù)位電 路的設(shè)計(jì)和研究。只要RST端保持10ms以上的高電平,就能

15、使單片機(jī)有效地復(fù)位。AT89S52單片機(jī) 通常采用上電自動(dòng)復(fù)位、按鍵復(fù)位、以及上電加按鍵復(fù)位等,我們采用的是上電加按鍵復(fù)位方式, 這樣做的優(yōu)點(diǎn)是上電后可以直接進(jìn)入復(fù)位狀態(tài),當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),可以隨時(shí)使電路復(fù)位。則復(fù)位 電路圖如圖4所示。 (3) AT89C52 單片機(jī) AT89C52是一種帶8K字節(jié)閃爍可擦除可編程只讀存儲(chǔ)器的低電壓,高性能CM0S8位微處理器, 簡稱單片機(jī)。AT89C52單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 AT89C52共有4個(gè)8位的并行雙向I/O 口,分別記作PO、Pl、P2、P3.這4個(gè)口除可按字節(jié)尋址以 外,還可按位尋址。P0 口地址為80H,位

16、地址為80H87H。各位口線具有完全相同但又相互獨(dú)立的邏 借電路。P1 口地址為90H,位地址為90H97H。Pl 口只能作為通用數(shù)據(jù)I/O 口使用,所以在電路結(jié)構(gòu) 上與P0 口有些不同。P2 口地址為AOH,位地址為A0HA7Ho P2 口既可以作為系統(tǒng)髙位地址線使用, 也可以為通用I/O 口使用,所以P2 口電路邏輯與P0 口類似。P3 口地址為B0H,位地址為B0B7H。 雖然P3 口可以作為通用I/O 口使用,但在實(shí)際應(yīng)用中它的第二功能信號更為重要。 AT89C52單丿翌還有一個(gè)地址鎖存控制信號ALE,外部程序存儲(chǔ)器讀選通信號PSEN,訪問程序 存儲(chǔ)器控制信號臥,復(fù)位信號RST,地線叫

17、$ 雖然P3 口可以作為通用I/O 口使用,但在實(shí)際應(yīng)用中它的第二功能信號更為重要。 AT89C52單片機(jī)還有一個(gè)地址鎖存控制信號ALE,外部程序存儲(chǔ)器讀選通信號PSEN,訪問程序 存儲(chǔ)器控制信號E4,復(fù)位信號RST,地線叫$和+5V的電源嶺c。單片機(jī)最小系統(tǒng)圖如圖5所示. 宜春學(xué)院 C1 圖3單片機(jī)的時(shí)鐘電路圖 4 1 11 I R1 AMI we C3 TEXT- VSTAL R2 TBCTf | X1 1 3 5 ? S 33PF C2 5 T ET:- 3JPF 22T1 POJWfflR P3.T/RD 訂巳6 甜383T36皓?工二I91刃”二苗7TKin11121.312fiU

18、二2?R 衆(zhòng)二21筋 FCACC FOJAri $02M)3 MOW5 21(AS 23t) 2311 M朋t2 3.inxo ujrfrnr TOyfrrr P3.m P3SH-I P3txEF F3.1XW 仇 33 圖7 LM016L與單片機(jī)的接線圖 3.1.4鍵盤模塊 采用標(biāo)準(zhǔn)4X4鍵盤,此類鍵盤采用矩陣式行列掃描方式,優(yōu)點(diǎn)是當(dāng)按鍵較多時(shí)可降低占用單 片機(jī)的I/O 口數(shù)目,而且可以做到直接輸入電流值而不必步進(jìn)。 使用標(biāo)準(zhǔn)的4x4鍵盤,可以實(shí)現(xiàn)09數(shù)字輸入、“ + =“-= “OKS “SET”、“DEL”、“RESET/ON” 這些功能按鍵。其電路圖如圖8所示。 RGT 3 Q H S

19、BJ ponwo PQ1XPD1 PQ2D2 PQ3K0D3 POiDl PQSWS PQ6XPD6 PQ?D? P2IW8 P2.1A9 PZZffiia P211 PU.4JW12 P2S13 P2J6WH PZTW15 P3CMWD P31/TXD P3WTU pirnT P3.4OT3 舊切工 P3J6AUR P3.TXW AT59CS2 : TEXT 宜春學(xué)院 8 ES/ON 10 5 H n$ 1C 25. JAD7 3 21 22 23 24 , fD2 # -5T =5 J=L,,Q_=_=L_0 0 C一 010 OO O 魯 0DELOKSET 圖8鍵盤與單片機(jī)的接線圖 3

20、.1.5電流源模塊 采用運(yùn)放和場效應(yīng)管的壓控恒流源。該恒流源電路由運(yùn)算放大器、大功率場效應(yīng)管Q1、采樣電 阻R2、負(fù)載電阻RL等組成硬件設(shè)訃。采用場效應(yīng)管,更加容易實(shí)現(xiàn)電壓線性控制電流,既滿足輸 出電流最大達(dá)到2A的要求,電路簡潔也能較好地實(shí)現(xiàn)電壓近似線性地控制電流。該電路中,為了滿 足題目的設(shè)訃要求,調(diào)整管用大功率場效應(yīng)管IRF640。當(dāng)場效應(yīng)管工作到飽和區(qū)時(shí),漏電流Id近 似為電壓Ugs控制的電流。即當(dāng)l;d為常數(shù)時(shí),滿足:Id二f (Ugs),只要Ugs不變,Id就不變。在 此電路中,R2為取樣電阻,采用康銅絲繞制阻值為1Q。運(yùn)放OP07作為電壓跟隨器,Uin二Up二Un, 場效應(yīng)管Id

21、二Is所以lout二Is二Un/R2二Uin/R2。正因?yàn)閘out二Uin/R2,電流lout被輸入電壓UI控 制,即lout不會(huì)隨RL的變化而變化,從而實(shí)現(xiàn)壓控恒流。電路原理圖如圖9所示 T IvV 宜春學(xué)院 =?L L u 5 r- L 1L n U V 3 1 iPFRdn J - 6 K 1 tnir TfSfT 2 -Il 寸 8 1 c O A. 15V upui 1 匚“ 4 = 18()0 mA 2,0 = 1024,故應(yīng)采用12位D/A轉(zhuǎn)換器為D/A轉(zhuǎn)換芯片,供選擇的很多,在此選LTC1456芯片。 (2) A/D轉(zhuǎn)換器 A/D模塊的是反饋的核心,我采用Proteus元件庫中

22、的TLC2543芯片實(shí)現(xiàn)。TLC2543是一種低功 耗、低電壓的12位串行開關(guān)電容型AD轉(zhuǎn)換器。它使用逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。最大非線 性誤差小于1LSB,轉(zhuǎn)換時(shí)間9M。它具有三個(gè)控制器輸入端,采用簡單的3線SPI串行接口可方便 與微機(jī)進(jìn)行連接,是12位數(shù)據(jù)采集系統(tǒng)的最佳選擇器件之一。 (3) D/A、A/D連接電路 D/A、A/D連接電路如圖11所示。 宣春學(xué)院 CWfllt q 圖10負(fù)載電流、電壓測量電路圖 o 3.2系統(tǒng)的原理圖 所繪制的系統(tǒng)原理圖采用的是Proteus軟件。其系統(tǒng)原理圖見附錄所示。 U3 16 09聊 圖11 D/A、A/D連接電路圖 H 15 1 2 3 A

23、 i Din4 1 U2 5 AINO AIN1 AIN2 AIN3 AltU AIMS AIN6 AIN7 AIN8 AIN9 SDI ce CLK 6 ADi n: 2 17 ? I 3 1$ 3 I 13 S 6 B3C 7 8 9 11 12 AIN ID H REF4- REF- - 13 TLC2543 P1IVT2 P1.1/T2D55 eru ecooooec LJ Is鶴15箕lir Ik 程序清單B : include:reg52 h #define uchar unsigned char #define uint unsigned int sbit rs二P30; sbi

24、t rw=p3i; sbit lcckn二P32;/液晶顯示屏相關(guān)位定義 sbit AD_OUT二P0; sbit AD_IN=Pri; sbit AD_CS二P2; sbit AD_CLOCK二P3; sbit DA_IN二P33; sbit DA_CK二P3“4; sbit DA_CS二P3“5; sbit x二Pl/4; 23 uchar code tablel=,/yichun xueyuan uchar code table2=,/ huan ying ni!; uchar code table3= ERROR!RESET unsigned long int tempO, tempi

25、; uint ADCdat, i, AD_DAstart; float Voltagel, Voltage2, r; int vol, rtt; uchar set,volarryO4,volarryl4, rt2; char iset 5 = 0, 0,2, 0, 0,; void led_init 0 ;/函數(shù)聲明 void delayms(uint z); void delay(uint t); void write_com(uchar com); void write_date(uchar date); void display_AD(); uint read2543 (uchar p

26、ort); void Sendl456(uint DACdat); void keyscan 0; * t ;*;主程序* * r mainO led_init 0; i 二 20; di splay_AD(); Sendl456(20); while(l) keyscan 0; 辻(AD Dx4start=l) di splay_AD(); Sendl456(isetl*1000+iset2*100+iset3*10+iset4); void delayms (uint z) /延時(shí)函數(shù),參數(shù)為 z uint x, y; for (x=z;x0;x) for (y=110;y0;y);/z=

27、l 測試為大約 1 微秒 void delay (uint t)/極短延時(shí) 24 while (t); void write_com(uchar com) /寫命令函數(shù) rs=0;/rs置0表示寫命令 lcden二0;/按時(shí)序圖垃低 P0=com;/位聲明,按原理圖接P0D,輸入數(shù)據(jù) lcden二 1;/置髙 delayms(5);/時(shí)序圖中須有thd2時(shí)間延時(shí) lcden二0;/按時(shí)序圖置低 void write_date(uchar date) /寫數(shù)據(jù)函數(shù) rs二1;/rs 1表示寫數(shù)據(jù) lcden=0; P0二date; 將數(shù)據(jù)賦到P0 口 delayms(5); lcden=l; d

28、elayms(5); lcden二0; void led_init 0/初始化函數(shù) lcden二0; rw=o; write_com(0 x38); write_com(0 x0c); write_com(0 x06); write_com(0 x01); write_com(0 x80); /顯示模式設(shè)置:16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù) /開顯示,關(guān)光標(biāo),光標(biāo)不閃爍 /寫一個(gè)數(shù)據(jù)后地址指針加一,光標(biāo)加一 /數(shù)據(jù)指針及數(shù)據(jù)淸0 /設(shè)置數(shù)據(jù)地址指針,第一行 write_com(0 x80+5); write_date(0 x6d); write_date(0 x41); write_com(

29、0 x80); write_date(0 x53); write_date(0 x30+iset1); write_date(0 x30+iset2); write_date(0 x30+iset3); write_date(0 x30+iset4); * f ;*;A/D轉(zhuǎn)換子程序 * * 9 void display_AD() uchar num; 25 tempO-= read2543(0 x00); /進(jìn)行 AD 轉(zhuǎn)換 templ+= read2543(0 x01); i-;/取20次AD轉(zhuǎn)換的結(jié)果,求平均值 if(i=0) ADCdat=templ/20; templ=0; Volt

30、age2=(ADCdat*5. 0) /4096; /基準(zhǔn)電壓為 5. 0V vol=(int) (Voltage2*4)*1000);/ 擴(kuò)大 1000 倍 volarryl3=vol/1000; volarryl2=vol%l000/100; volarryll=vol%100/10; volarryl0=vol%10; ADCdat=temp0/20; temp0=0; i=20; Voltagel=(ADCdat*5. 0)/4096; /基準(zhǔn)電壓為 5. 0V vol=(int) (Voltagel*1000+1) ;/ 擴(kuò)大 1000 倍 volarryO3二vol/1000; v

31、olarryO2=vol%1000/100; vo1arryOl=vo1%100/10; volarryO0=vol%10; write_com(0 x80+0 x40); write_date(0 x54); write_date(0 x30+volarry03); write_date(0 x30+volarry02); write_date(0 x30+volarry01); write_date(0 x30+volarry00); Tite_date(0 x6d); write_date(0 x41); if (vol2000 vol10 volarryl3=10) write_com

32、(0 x01) ;/數(shù)據(jù)指針及數(shù)據(jù)淸0 write_com(0 x80) ;/設(shè)置數(shù)據(jù)地址指針,第一行 for(num=0;num16;num+) Tite_date(table3num); delayms(l);/循環(huán)方式寫第一行數(shù)據(jù) set=l; AD_DAstart=O; else wr i t e_com(0 x80+0 x40-13); write_date(0 x4f); 26 uTite_date(0 x4b); uTite_date(0 x21); write_com(0 x80+9); uTite_date(0 x30+volarryl3); uTite_date(0 x2e

33、); uTite_date(0 x30+volarryl2); Tite_date(0 x30+volarrylEl); Tite_date(0 x30+volarryl0); Tite_date(0 x56); r=Voltage2*4/Voltagel; rtt=(int)(r*10); rtl=rtt/10; rt 0=rtt%10; write_com(0 x80+0 x49); uTite_date(0 x30+rt1); uTite_date(0 x52); uTite_date(0 x30+rt0); .* ;* ;D/A轉(zhuǎn)換子程序* * * * * * * * * * * *

34、* * uint read2543 (uchar port) /DA 轉(zhuǎn)換子程序 uint ad=0,j; AD_CLOCK二0; AD_CS二0; port=4; delay (50); for(j=0;j12;j+) if(AD_OUT) ad =0 x01; AD_IN二(bit)(port AD_CLOCK=1; delay(6); AD_CLOCK=0; delay (3); port=l; ad=l; AD_CS二1; ad=l; 27 return(ad); void Sendl456(uint DACdat) uchar i=0; DA_CK二0; delay(2); DA_C

35、S二0; delay(2); for(i=0;i12;i+) DA_IN=(bit)(DACdat DA_CK二1; DACdat=l; DA_CK二0; DA_CS二1; DA_CS二0; ;*経*経*枠*経* ;*;按鍵鍵掃子程序枠* * r void keyscan ()/矩陣鍵盤 uchar temp, ke5rcount, num; / 定義局部變量 P2=0 xfe; /檢測最上而一行務(wù)鍵是否有按鍵按下 temp二P2;/ 將 P2 口的值賦給 temp temp=temp/ 位與 if(temp!=0 xf0) delayms(100); temp=P2; temp=temp i

36、f(temp!=0 xf0)/確認(rèn)被按卞,防止抖動(dòng) temp=P2; switch(temp) case Oxee:/檢測到7被按下 if(keycount!=0) write_date(0 x30+7); iset keycount+=7; break; case Oxde:/檢測到8被按下 28 if(keycount!=0) write_date(0 x30+8); isetkeycount+=8; break; case Oxbe:/檢測到9被按下 if(keycount!=0) write_date(0 x30+9); isetkeycount+=9; break; case 0 x

37、7e:檢測到取消鍵被按下 Tite_com(0 x01);/數(shù)據(jù)指針及數(shù)據(jù)淸0 write_com(0 x0c); write_com(0 x80+5); write_date(0 x6d); write_date(0 x41); write_com(0 x80); write_date(0 x53); write_date(0 x30+iset Ll); write_date(0 x30+iset2); write_date(0 x30+iset3); write_date(0 x30+iset4); ADDAstart=l; while (temp! =0 xf0)/松手檢測 temp=P

38、2; temp=P2 P2二Oxfd; /檢測最二行各鍵是否有按鍵按下 temp二P2;/ 將 P2 口的值賦給 temp temp二temp/ 位與 if(temp!=0 xf0) delayms(100); temp二P2; temp=temp if (temp!=0 xf0)/確認(rèn)被按下,防止抖動(dòng) temp=P2; switch(temp) 29 case Oxed:/檢測到4被按下 if (keycount!=0) writedate(0 x30+4); isetkeycount+J=4; break; case Oxdd:/檢測到5被按下 if (keycount!=0) write

39、_date(0 x30+5); iset keycount+j=5; break; case Oxbd:/檢測到6被按下 if (keycount!=0) write_date(0 x30+6); iset keycount+-=6; break; case 0 x7d:/檢測到+被按下 iset4+; if(iset4=10) iset4=0; iset3+; if (iset3=10) iset3=0; iset2+; if(iset2=10) iset2=0; isetl+; writ e_com(0 x80+5); write_date(0 x6d); write_date(0 x41

40、); write_com(0 x80); write_date(0 x53); write_date(0 x30+iset.1); write_date(0 x30*iset2); 30 write_date(0 x30+iset 3); write_date(0 x30+iset4); AD_DAstart=l; break; while (t emp !=OxfO)/松手檢測 temp=P2; temp=P2 P2二Oxfb; /檢測第三行各鍵是否有按鍵按下 temp二P2;/ 將 P2 口的值賦給 temp temptemp/ 位與 辻(temp!=0 xf0) delayms(100); temp=P2; temp=temp if (temp !=OxfO) /確認(rèn)被按下,防止抖動(dòng) temp=P2; switch(temp) case Oxeb:/檢測到1被按下 if(keycount!=0) write_date(0 x30+1); iset keycount+=l; break; case Oxdb:/檢測到2被按下 if(keycount!=0) write_date(0 x30+2); iset keycount+=2; break; case Oxbb:/檢測到3被按下 if(keycount!=0) write_date(0 x30

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論