版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 直流電壓表</b></p><p><b> 摘要</b></p><p> 隨著時(shí)代的進(jìn)步, 用指針式萬(wàn)用表測(cè)量小幅度直流電壓已經(jīng)顯得有些不太方便。因?yàn)橹羔樖降臏y(cè)量不夠精確,隨著長(zhǎng)時(shí)間的使用可能會(huì)造成歐姆調(diào)零以及機(jī)械調(diào)零的磨損, 這都會(huì)對(duì)數(shù)據(jù)的測(cè)量造成很多困難,而采用數(shù)字式電壓表來(lái)測(cè)量就可以避免這種情況的發(fā)生,
2、而且操作更加方便。 下面本文將介紹一種由數(shù)字電路以及單片機(jī)構(gòu)成的數(shù)字電壓表的設(shè)計(jì)方法。</p><p> 數(shù)字電壓表(Digital Voltmeter)簡(jiǎn)稱 DVM,它是采用數(shù)字化測(cè)量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表</p><p><b> 關(guān)鍵字</b></p><p> 89C51單
3、片機(jī) 電壓表 Keil ADC0832數(shù)模轉(zhuǎn)換器 </p><p><b> 目錄</b></p><p><b> 第一章概述5</b></p><p> 第二章 直流電壓表的設(shè)計(jì)總方案………………………………………7</p><p> 硬件電路設(shè)計(jì)……………………………………………
4、……9</p><p> 軟件電路設(shè)計(jì)…………………………………………………23</p><p> 個(gè)人負(fù)責(zé)模塊AD0832驅(qū)動(dòng)程序設(shè)計(jì)………………………26</p><p> 直流電壓表的安裝與調(diào)試……………………………………33</p><p> 存在故障分析與進(jìn)一步改進(jìn)…………………………………35</p><
5、;p> 結(jié)論……………………………………………………………37</p><p> 參考文獻(xiàn)………………………………………………………………38</p><p> 附錄……………………………………………………………………39</p><p><b> 第一章 概述</b></p><p> 1.1 課程設(shè)計(jì)
6、的題目</p><p><b> 直流電壓表</b></p><p> 1.2課程設(shè)計(jì)的課題概述</p><p> 本設(shè)計(jì)運(yùn)用 89C51 和 ADC0832 進(jìn)行 A/D 轉(zhuǎn)換,根據(jù)數(shù)據(jù)采集的工作原理,設(shè)計(jì)現(xiàn)數(shù)字電壓表,最后完成單片機(jī)與 PC 的數(shù)據(jù)通信,傳送所測(cè)量的電壓值。該新數(shù)字電壓表測(cè)量電壓類型是直流,測(cè)量范圍是 0-51V(本設(shè)
7、計(jì)量程為 0-5V)。 </p><p> 電路包括:數(shù)據(jù)采集電路的單片機(jī)最小化系統(tǒng)設(shè)計(jì)、 單片機(jī)與 PC 接口電路、單片機(jī)時(shí)鐘電路、復(fù)位電路等。下位機(jī)采用 89C51 芯片,A/D轉(zhuǎn)換采用 ADC0832 芯片。通過(guò) 下載口與 PC 進(jìn)行通信,傳送所測(cè)量的直流電壓數(shù)據(jù)。 </p><p> 1.3課程設(shè)計(jì)的設(shè)計(jì)指標(biāo)</p><p> ?。?)利用51系列單片機(jī)
8、和相關(guān)器件,設(shè)計(jì)一個(gè)直流電壓表。</p><p> (2)測(cè)量電壓范圍:0-5V</p><p> ?。?)測(cè)量精度:0.01V</p><p> (4)設(shè)置最低電壓閾值,低于該值則系統(tǒng)報(bào)警。</p><p> ?。?)其他功能(創(chuàng)新部分)。</p><p> 提示:為實(shí)現(xiàn)設(shè)置最低電壓閾值,低于該值則系統(tǒng)報(bào)警功能
9、,系統(tǒng)可以設(shè)置3個(gè)功能鍵,即:K1—設(shè)置鍵、K2—數(shù)字加鍵、K3—數(shù)字減鍵。通過(guò)對(duì)數(shù)字加鍵或數(shù)字減鍵操作,可以對(duì)設(shè)定上限或下限電壓每次操作增加或減小0.01度;通過(guò)K1的操作次序確定當(dāng)前的顯示和校正內(nèi)容,由S2和S3進(jìn)行校正</p><p> 第二章 直流電壓表的設(shè)計(jì)總方案</p><p> 直流電壓表的基本組成和設(shè)計(jì)思路</p><p><b>
10、2.1.1基本組成</b></p><p><b> 2.1.2設(shè)計(jì)思路</b></p><p> 根據(jù)設(shè)計(jì)要求,選擇AT89c51單片機(jī)為核心控制器件;</p><p> A/D轉(zhuǎn)換采用ADC0832實(shí)現(xiàn),與單片機(jī)的接口為P2^4,P2^5,P2^6;</p><p> 電壓顯示采用LCD1602實(shí)
11、現(xiàn)</p><p> LCD的輸入是與并行口P0產(chǎn)生</p><p><b> 2.1.3設(shè)計(jì)方案</b></p><p> 硬件電路設(shè)計(jì)有8部分組成:A/D轉(zhuǎn)換電路,AT89C51單片機(jī)系統(tǒng),LCD顯示系統(tǒng)、報(bào)警電路、按鍵調(diào)節(jié)電路、時(shí)鐘電路、復(fù)位電路以及測(cè)量電壓輸電路。硬件電路設(shè)計(jì)框圖如圖1所示:</p><p>
12、; 圖1數(shù)字電壓表系統(tǒng)硬件設(shè)計(jì)框圖</p><p> 軟件電路主要有LCD驅(qū)動(dòng)、顯示函數(shù)、0832A/D轉(zhuǎn)換函數(shù)模塊、按鍵調(diào)節(jié)模塊、報(bào)警函數(shù)模塊還有延遲程序等6大模塊組成,大體流程圖如下;</p><p> 第三章 硬件電路設(shè)計(jì)</p><p> 3.1 A/D轉(zhuǎn)換模塊</p><p> A /D轉(zhuǎn)換在單片機(jī)接口中應(yīng)用廣泛,串行
13、A /D轉(zhuǎn)換器具有功耗低、性價(jià)比較高、芯片引腳少等特點(diǎn)。ADC0832是NS(National Semiconductor)公司生產(chǎn)的具有Microwire / Plus串行接口的8位A /D轉(zhuǎn)換器,通過(guò)三線接口與單片機(jī)連接,適宜在袖珍式智能儀器中使用。主要性能指標(biāo)有: 功耗低, 只有15mW; 8位分辨率,逐次逼近型,基準(zhǔn)電壓為5V;輸入模擬信號(hào)電壓范圍為0~5V;輸入和輸出電平與TTL和CMOS兼容;在250kHz時(shí)鐘頻率時(shí),轉(zhuǎn)換時(shí)
14、間為32us;具有兩個(gè)可供選擇的模擬輸入通道。</p><p> 3.1.2 A/D轉(zhuǎn)換的原理</p><p> 3.1.2.1 ADC0832的引腳及配置位功能</p><p> ADC0832有D IP和SO IC兩種封裝,D IP封裝ADC0832引腳排列如圖1所示。各引腳說(shuō)明如下圖2:</p><p> 圖2 ADC8032引
15、腳圖</p><p> CS———片選端,低電平有效。</p><p> CH0, CH1———兩路模擬信號(hào)輸入端。</p><p> D I———兩路模擬輸入選擇輸入端。</p><p> DO———模數(shù)轉(zhuǎn)換結(jié)果串行輸出端。</p><p> CLK———串行時(shí)鐘輸入端。</p><p&
16、gt; VCC /REF———正電源端和基準(zhǔn)電壓輸入端。</p><p> GND———電源地。</p><p> ADC0832工作時(shí),模擬通道的選擇及單端輸入和差分輸入的選擇,都取決于輸入時(shí)序的配置位當(dāng)差分輸入時(shí),要分配輸入通道的極性,兩個(gè)輸入通道的任何一個(gè)通道都可作為正極或負(fù)極。</p><p> 3.1.3 ADC0832的工作時(shí)序</p>
17、;<p> 當(dāng)CS由高變低時(shí),選中ADC0832。在時(shí)鐘的上升沿,D I端的數(shù)據(jù)移入ADC0832內(nèi)部的多路地址移位寄存器。在第一個(gè)時(shí)鐘期間, D I為高,表示啟動(dòng)位,緊接著輸入兩位配置位。當(dāng)輸入啟動(dòng)位和配置位后,選通輸入模擬通道,轉(zhuǎn)換開(kāi)始。轉(zhuǎn)換開(kāi)始后,經(jīng)過(guò)一個(gè)時(shí)鐘周期延遲, 以使選定的通道穩(wěn)定。ADC 0832 接著在第4個(gè)時(shí)鐘下降沿輸出轉(zhuǎn)換數(shù)據(jù)。</p><p> 數(shù)據(jù)輸出時(shí)先輸出最高位(D
18、7~D0) ;輸出完轉(zhuǎn)換結(jié)果后,又以最低位開(kāi)始重新輸出一遍數(shù)據(jù)(D7 ~D0) ,兩次發(fā)送的最低位共用。當(dāng)片選CS為高時(shí),內(nèi)部所有寄存器清0,輸出變?yōu)楦咦钁B(tài)。如果要再進(jìn)行一次模/數(shù)轉(zhuǎn)換,片選CS必須再次從高向低跳變,后面再輸入啟動(dòng)位和配置位。</p><p> 3.2 LCD1602顯示模塊</p><p> 3.2.1 LCD顯示的原理</p><p> 3
19、.2.1.1 線段的顯示:點(diǎn)陣圖形式液晶由M×N個(gè)顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對(duì)應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個(gè)點(diǎn)組成,屏上64×16個(gè)顯示單元與顯示RAM區(qū)1024字節(jié)相對(duì)應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對(duì)應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時(shí),則屏幕的左上角顯示一條短亮線,長(zhǎng)
20、度為8個(gè)點(diǎn);當(dāng)(3FFH)=FFH時(shí),則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時(shí),則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。</p><p> 3.2.1.2 字符的顯示 </p><p> 用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6
21、215;8或8×8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。 </p><p> 3
22、.2.1.3 漢字的顯示</p><p> 漢字的顯示一般采用圖形的方式,事先從微機(jī)中提取要顯示的漢字的點(diǎn)陣碼(一般用字模提取軟件),每個(gè)漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)可找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),送上要顯示的漢字的第一字節(jié),光標(biāo)位置加1,送第二個(gè)字節(jié),換行按列對(duì)齊,送第三個(gè)字節(jié)……直到32B顯示完就可以LCD上得
23、到一個(gè)完整漢字</p><p> 3.2.2 1602字符型LCD簡(jiǎn)介 </p><p> 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。一般1602字符型液晶顯示器實(shí)物如圖 </p><p> 3.2.2.1 1602LCD的基本參數(shù)及引腳功能</p><p&
24、gt; `LCD1602主要技術(shù)參數(shù):顯示容量:16×2個(gè)字符 ;芯片工作電壓:4.5—5.5V ;工作電流:2.0mA(5.0V); 模塊最佳工作電壓:5.0V ;</p><p> 字符尺寸:2.95×4.35(W×H)mm</p><p> 引腳功能說(shuō)明如表1 :</p><p> 表1 引腳接口說(shuō)明表</p>
25、<p> 第1腳:VSS為地電源。 </p><p> 第2腳:VDD接5V正電源。 </p><p> 第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。 </p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄
26、存器。 </p><p> 第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。 </p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 </p
27、><p> 第15腳:背光源正極。 </p><p> 第16腳:背光源負(fù)極。</p><p> 3.2.2.2 1602液晶模塊內(nèi)部的控制器控制指令</p><p> 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如上表所示</p><p> 1602液晶模塊的讀寫操作,屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)
28、的。(說(shuō)明1為高電平,0為低電平) </p><p> 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置 </p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H </p><p> 指令3:光標(biāo)和顯示位置設(shè)置I/D,光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或右移,高電平表示有效,低電平表示無(wú)效。 </p><
29、;p> 指令4:顯示開(kāi)關(guān)控制。D:控制整體的顯示開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示。C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。 </p><p> 指令5:光標(biāo)或顯示移位 S/C :高電平時(shí)顯示移動(dòng)的文字,低電平時(shí)移動(dòng)光標(biāo) </p><p> 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總
30、線 N:低電平時(shí)為單行顯示,高電平時(shí)為雙行顯示,F(xiàn):低電平時(shí)顯示5X7的點(diǎn)陣字符,高電平時(shí)顯示5X10的顯示字符。 </p><p> 指令7:字符發(fā)生器RAM地址設(shè)置。 </p><p> 指令8:DDRAM地址設(shè)置。 </p><p> 指令9:讀忙信號(hào)和光標(biāo)地址 BF:忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或數(shù)據(jù),如果為低電平表示不忙。</p
31、><p> 3.2.2.3 基本操作時(shí)序 </p><p> 讀寫操作時(shí)序如圖所示;</p><p><b> 寫操作時(shí)序如圖:</b></p><p> 3.3按鍵模塊和報(bào)警電路</p><p><b> 按鍵如圖所示</b></p><p>
32、<b> 報(bào)警電路如圖:</b></p><p> 為實(shí)現(xiàn)設(shè)置最低電壓閾值,低于該值則系統(tǒng)報(bào)警功能,系統(tǒng)設(shè)置了3功能鍵,即:S2設(shè)置鍵、S3數(shù)字加鍵、S4數(shù)字減鍵。通過(guò)對(duì)數(shù)字加鍵或數(shù)字減鍵操作,可以對(duì)設(shè)定上限或下限電壓每次操作增加或減小0.01度;通過(guò)K1的操作次序確定當(dāng)前的顯示和校正內(nèi)容,由S3H和S4校正</p><p><b> 3.4單片機(jī)系統(tǒng)
33、</b></p><p> 3.4.1 AT89c51的性能</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51
34、 ?指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51功能性能與成品MCS-51成品指令系統(tǒng)完全兼容;4KB可編程閃束存儲(chǔ)器;壽命1000次寫/查循環(huán);數(shù)據(jù)保留時(shí)間十年;全靜態(tài)工作:0-24MHZ;三級(jí)程序存儲(chǔ)器鎖定;128*8B內(nèi)部RAM;32個(gè)課編程I/O口線;2個(gè)16位定時(shí)/計(jì)時(shí)器;5個(gè)中斷;可
35、編程串行UART通道;片內(nèi)振蕩器和掉電模式。</p><p> 3.4.2 AT89C51個(gè)引腳的功能</p><p> VCC:供電電壓。GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FI
36、ASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 </p><p> P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸
37、出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p>
38、<p> P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p> P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p> 口管腳 備選功能P3.0 RXD(串行輸入口)
39、 P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1) </p><p> P3.4 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí)
40、,要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,
41、MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;
42、當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加1</p><p> 3.4.3 單片機(jī)晶振電路</p><p> XTAL1、XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求
43、,但必須保證脈沖的高低電平要求的寬度。</p><p> 3.4.4單片機(jī)復(fù)位電路</p><p> 復(fù)位電路的基本功能是 系統(tǒng)上電時(shí)提供復(fù)位信號(hào)直至系統(tǒng)電源穩(wěn)定后撤銷復(fù)位信號(hào)為可靠起見(jiàn)電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào)以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位</p><p><b> 軟件電路設(shè)計(jì)</b></p
44、><p><b> 4.1 初始化程序</b></p><p> 所謂初始化,是對(duì)將要用到的51單片機(jī)內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始化工作狀態(tài)設(shè)定。初始化子程序的主要工作是設(shè)置定時(shí)器的工作模式,初值預(yù)置,開(kāi)中斷和打開(kāi)定時(shí)器等。程序如下所示:</p><p> TMOD=0x01;//定時(shí)器0,模式1</p><p> T
45、H0=TIME0H;//定時(shí)器初值的高八位送入TH0</p><p> TL0=TIME0L;//定時(shí)器初值的低八位送入TH0</p><p> TR0=1;//啟動(dòng)定時(shí)器</p><p> ET0=1;//開(kāi)定時(shí)器中斷</p><p> EA=1;//開(kāi)總中斷</p><p> 4.2 A/D轉(zhuǎn)換程序<
46、;/p><p> A/D轉(zhuǎn)換程序用來(lái)控制對(duì)輸入的模塊電壓信號(hào)的采集測(cè)量,并將對(duì)應(yīng)的數(shù)值存入相應(yīng)的內(nèi)存單元,其中流程圖如圖:</p><p><b> 4.3顯示程序</b></p><p> 運(yùn)用LCD1602進(jìn)行驅(qū)動(dòng)顯示,程序模塊包括LCD初始化、1個(gè)字符子程序、1個(gè)命令子程序、1個(gè)數(shù)據(jù)子程序、1個(gè)數(shù)據(jù)子程序以及組字符寫入LCD進(jìn)行驅(qū)動(dòng)顯示
47、;模式設(shè)置為:8位2行5*7點(diǎn)陣,控制指令如圖下圖,按照指令進(jìn)行編寫程序,驅(qū)動(dòng)LCD1602.</p><p><b> 4.4按鍵調(diào)節(jié)程序</b></p><p> 為實(shí)現(xiàn)設(shè)置最低電壓閾值,低于該值則系統(tǒng)報(bào)警功能,系統(tǒng)設(shè)置3個(gè)功能鍵,即:K1—設(shè)置鍵、K2—數(shù)字加鍵、K3—數(shù)字減鍵。通過(guò)對(duì)數(shù)字加鍵或數(shù)字減鍵操作,可以對(duì)設(shè)定上限或下限電壓每次操作增加或減小0.01
48、度;通過(guò)K1的操作次序確定當(dāng)前的顯示和校正內(nèi)容,由S2和S3進(jìn)行校正,并且可以一位位進(jìn)行調(diào)節(jié)并不影響臨近數(shù)值,穩(wěn)定</p><p> 個(gè)人負(fù)責(zé)模塊最小系統(tǒng),報(bào)警程序設(shè)計(jì)</p><p> 5.1 晶振電路及功能介紹</p><p> 單片機(jī)系統(tǒng)里都有晶振,在單片機(jī)系統(tǒng)里晶振作用非常大,全程叫晶體振蕩器,他結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提
49、供的時(shí)鐘頻率越高,那么單片機(jī)運(yùn)行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機(jī)晶振提供的時(shí)鐘頻率。</p><p> 單片機(jī)晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。通常一個(gè)系統(tǒng)共用一個(gè)晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過(guò)電子調(diào)整頻率的方法保持同步。 晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時(shí)鐘頻率。如果不同子系統(tǒng)需要不同頻率的時(shí)鐘信號(hào),可以
50、用與同一個(gè)晶振相連的不同鎖相環(huán)來(lái)提供。</p><p> 我們采用的晶振是12M的石英晶振,經(jīng)過(guò)兩個(gè)磁片電容后分別接入XTAL1、XTAL2腳,使用單片機(jī)的內(nèi)部晶振電路。12M晶振為單片機(jī)提供1uS的機(jī)器周期。</p><p> 5.2 按鍵復(fù)位電路</p><p> 單片機(jī)在啟動(dòng)時(shí)都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開(kāi)始工作。89系
51、列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動(dòng)按鈕復(fù)位和上電復(fù)位。</p><p><b> 5.21上電復(fù)位</b></p><p> AT89S51的上電復(fù)位電路,只要在R
52、ST復(fù)位輸入引腳上接一電容至Vcc端,下接一個(gè)電阻到地即可。對(duì)于CMOS型單片機(jī),由于在RST端內(nèi)部有一個(gè)下拉電阻,故可將外部電阻去掉,而將外接電容減至1?F。上電復(fù)位的工作過(guò)程是在加電時(shí),復(fù)位電路通過(guò)電 容加給RST端一個(gè)短暫的高電平信號(hào),此高電平信號(hào)隨著Vcc對(duì)電容的充電過(guò)程而逐漸回落,即RST端的高電平持續(xù)時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號(hào)必須維持足夠長(zhǎng)的時(shí)間。上電時(shí),
53、Vcc的上升時(shí)間約為10ms,而振蕩器的起振時(shí)間取決于振蕩頻率,如晶振頻率為10MHz,起振時(shí)間為1ms;晶振頻率為1MHz,起振時(shí)間則為10ms。在圖2的復(fù)位電路中,當(dāng)Vcc掉電時(shí),必然會(huì)使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個(gè)負(fù)電壓將不會(huì)對(duì)器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端口置為全“l(fā)”態(tài)。如果系統(tǒng)在上電時(shí)得不到有效的復(fù)位,則程序計(jì)數(shù)器PC將得不到一個(gè)合適的初值,因此,
54、CPU可能會(huì)從一個(gè)未被定義的位置開(kāi)始執(zhí)行程序</p><p><b> 5.22 按鍵位</b></p><p> 手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端RST上加入高電平。一般采用的辦法是在RST端和正電源Vcc之間接一個(gè)按鈕。當(dāng)人為按下按鈕時(shí),則Vcc的+5V電平就會(huì)直接加到RST端。手動(dòng)按鈕復(fù)位的電路如所示。由于人的動(dòng)作再快也會(huì)使按鈕保持接通達(dá)數(shù)十毫秒,所以,完全
55、能夠滿足復(fù)位的時(shí)間要求。</p><p> 在設(shè)計(jì)中,我們采用按鍵復(fù)位,在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)的電源是5V,所以充電到0.7倍即為3.5V),需要的時(shí)間是10K*10UF=0.1S。在單片機(jī)啟動(dòng)0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時(shí)候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下
56、的時(shí)候,開(kāi)關(guān)導(dǎo)通,這個(gè)時(shí)候電容兩端形成了一個(gè)回路,電容被短路,所以在按鍵按下的這個(gè)過(guò)程中,電容開(kāi)始釋放之前充的電量。隨著時(shí)間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個(gè)時(shí)候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動(dòng)復(fù)位。</p><p> 5.3 報(bào)警程序設(shè)計(jì)的驅(qū)動(dòng)程序編寫及詳細(xì)分析</p>&l
57、t;p> void vShowVoltage (uint uiNumber,uchar cNumber[])</p><p><b> { </b></p><p> ucharucaNumber[3]; </p><p> uchar ucCount;</p><p> if((uiNumber
58、<255)&&(uiNumber>0))</p><p><b> {</b></p><p> ucaNumber[0]=cNumber[0];</p><p> ucaNumber[1]=cNumber[1];</p><p> ucaNumber[2]=cNumber[2];&l
59、t;/p><p> for(ucCount=0;ucCount<3;ucCount++)</p><p><b> {</b></p><p> Show_1_Char(ucaNumber[ucCount]+48);</p><p> if(ucCount==0)</p><p> S
60、how_1_Char('.');</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> {Show_Char("-.--");}</p>
61、<p> 適應(yīng)一般的模擬量轉(zhuǎn)換要求。其內(nèi)部電源輸入與參考電壓的復(fù)用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉(zhuǎn)換時(shí)間僅為32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過(guò)DI 數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇.</p><p> 5.2 AD0832的工作原理</p><p&g
62、t; 5.2.1 ADC0832的特點(diǎn)</p><p> 8位分辨率;雙通道A/D轉(zhuǎn)換; 輸入輸出電平與TTL/CMOS相兼容; 5V電源供電時(shí)輸入電壓在0~5V之間; 工作頻率為250KHZ,轉(zhuǎn)換時(shí)間為32μS; 一般功耗僅為15mW; 8P、14P—DIP(雙列直插)、PICC 多種封裝; 商用級(jí)芯片溫寬為0°C to +70°C,工業(yè)級(jí)芯片溫寬為?40°C to +8
63、5°C;</p><p> 5.2.2 ADC0832的優(yōu)點(diǎn)</p><p> ADC0832A/D轉(zhuǎn)換芯片0——255級(jí),可以適應(yīng)一般的模擬量轉(zhuǎn)換要求其內(nèi)部電源輸入與參考電壓的復(fù)用,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗(yàn),以減少數(shù)據(jù)誤差,轉(zhuǎn)換速度快且穩(wěn)定性能強(qiáng)。獨(dú)立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過(guò)DI數(shù)據(jù)輸入端,可以輕易的實(shí)現(xiàn)通道功能的選擇。 5.2.3
64、ADC0832的工作模式</p><p> 只用一通道 DO端與DI端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。 5.2.3 ADC0832的工作時(shí)序</p><p> 當(dāng)ADC0832未工作時(shí)其CS輸入端應(yīng)為高電平,此時(shí)芯片禁用,CLK和DO/DI的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時(shí),須先將 CS使能端置于低電平并且保持低電
65、平直到轉(zhuǎn)換完全結(jié)束。此時(shí)芯片開(kāi)始轉(zhuǎn)換工作,同時(shí)由處理器向芯片時(shí)鐘輸入端CLK輸入時(shí)鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號(hào). 2位數(shù)據(jù)為1,0時(shí),只對(duì)CH0進(jìn)行單通道轉(zhuǎn)換(本程序用通道0)為1,1時(shí),只對(duì)CH1進(jìn)行單通道轉(zhuǎn)換;為0,0時(shí),將CH0作為正輸入端IN+,CH1作為負(fù)輸入端IN-進(jìn)行輸入;為0,1時(shí),將CH0作為負(fù)輸入端IN-,CH1作為正輸入端IN+進(jìn)行輸入。 從第4個(gè)脈沖下沉開(kāi)始由DO端輸出轉(zhuǎn)換
66、數(shù)據(jù)最高位DATA7,隨后每一個(gè)脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個(gè)脈沖時(shí)發(fā)出最低位數(shù)據(jù)DATA0,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。 也正是從此位開(kāi)始輸出下一個(gè)相反字節(jié)的數(shù)據(jù),即從第11個(gè)字節(jié)的下沉輸出DATD0。 隨后輸出8位數(shù)據(jù),到第19個(gè)脈沖時(shí)數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。</p><p> 5.3 0832的工作時(shí)序圖</p><p> 5.4 0832的
67、驅(qū)動(dòng)程序編寫及詳細(xì)分析</p><p> 單片機(jī)串行口方式0 與ADC0832 的接口,單片機(jī)P2^5接ADC0832的CS, TXD (接0832的CLK)作為時(shí)鐘信號(hào)輸出端, RXD (接0832的DO和D I)作為啟動(dòng)位、配置位的發(fā)送端以及A /D轉(zhuǎn)換后輸出數(shù)據(jù)的接收端。由于ADC0832在CS變低后的前3個(gè)周期內(nèi),DO端為高阻態(tài);轉(zhuǎn)換開(kāi)始后,D I線禁止,因此,D I端和DO端可連接在一起.ADC083
68、2的時(shí)鐘頻率最高為400kHz,單片機(jī)晶振可選用4MHz,在TXD的輸出頻率為4MHz/12 =</p><p> 333. 3kHz,符合要求。ADC0832輸出的串行數(shù)據(jù)共15位,由兩段8位</p><p> 數(shù)據(jù)組成,前一段是最高位在先,后一段是最高在后,兩段數(shù)據(jù)的最低位共用。只有在時(shí)鐘的下降沿,ADC0832的串行數(shù)據(jù)才移出一位。由單片機(jī)控制時(shí)鐘信號(hào)的發(fā)送, 并由TXD 發(fā)出,
69、 以達(dá)到控制ADC0832輸出數(shù)據(jù)位的目的。為了得到一列完整的8位數(shù)據(jù),單片機(jī)分兩次采集含有不同位的數(shù)據(jù),再合成一列完整的8位數(shù)據(jù).由上面的0832的工作時(shí)序,及硬件設(shè)計(jì)編寫了下面的0832的驅(qū)動(dòng)程序。程序分析如下:</p><p> sbit ADC0832CS=P2^5;//啟動(dòng)ad8032,片選低電平有效</p><p> sbit ADC0832CLK=P2^6;//時(shí)鐘&
70、lt;/p><p> sbit ADC0832DO=P2^4;//單片機(jī)串行口方式0與ADC0832的接口</p><p> sbit ADC0832DI=P2^4;</p><p> unsigned char adc0832Rece(unsigned char ADC0832MODLE)//定義adc0832的輸入模式//可兩通道//可差分輸入//把模擬電
71、壓值轉(zhuǎn)換成8位二進(jìn)制數(shù)并返回 </p><p> {unsigned char adc0832Buf=0,number=0; //初值</p><p> ADC0832CS=0; //cs=0低電平有效,AD0832片選有效</p><p> for(;number<3;number++)//輸出命令</p><p> {ADC
72、0832DI=(bit)(ADC0832MODLE&0x80);//選擇CH0,通過(guò)組合選取通道(SGL/DIF)</p><p> ADC0832MODLE<<=1;</p><p> ADC0832CLK=1;</p><p><b> _nop_();</b></p><p><b&
73、gt; _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b&
74、gt;</p><p> ADC0832CLK=0;//形成下降沿1</p><p><b> _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</p><p><b> }</b></p><p> for(number
75、=0;number<7;number++)//丟棄高七位數(shù)據(jù)</p><p> {ADC0832DO=1;</p><p> adc0832Buf<<=1;// 將所收到的數(shù)據(jù)進(jìn)行左移一位</p><p> ADC0832CLK=1;</p><p><b> _nop_();</b></
76、p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><
77、b> _nop_();</b></p><p> ADC0832CLK=0;//形成下降沿2</p><p><b> _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</p><p> if(ADC0832DO==1){adc0832Buf++;
78、}</p><p><b> }</b></p><p> adc0832Buf=0;</p><p> for(number=0;number<8;number++)//接收八位數(shù)據(jù) </p><p> {ADC0832DO=1; //接著收數(shù)據(jù)</p><p> adc083
79、2Buf>>=1;// 將所收到的數(shù)據(jù)進(jìn)行右移一位 </p><p> ADC0832CLK=1;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b>&l
80、t;/p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> ADC0832CLK=0;//形成下降沿3</p><p><b&g
81、t; _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</p><p> if(ADC0832DO==1){adc0832Buf+=0x80;}</p><p><b> }</b></p><p> ADC0832CS=1;//將CS置高電平禁用芯片&
82、lt;/p><p> return(adc0832Buf);</p><p><b> }</b></p><p> 第五章直流電壓表安裝與調(diào)試</p><p> 5.1 直流電壓表的實(shí)際完成的電路</p><p> 5.2 直流電壓表實(shí)現(xiàn)的總體功能</p><p>
83、 測(cè)量電壓范圍:0-5V</p><p> 測(cè)量精度:0.01V</p><p> 設(shè)置最低電壓閾值,低于該值則系統(tǒng)報(bào)警。</p><p> 能夠?qū)崿F(xiàn)電壓值的0——5V的范圍內(nèi)調(diào)節(jié),并且仿真及實(shí)物調(diào)試成功</p><p> 5.3 直流電壓表所實(shí)現(xiàn)的功能評(píng)價(jià)</p><p> 總體的電路指標(biāo)全部實(shí)現(xiàn),在電壓
84、輸出的范圍還有更多的提升空間,繼續(xù)努力。</p><p> 第六章 存在故障分析與進(jìn)一步改進(jìn)</p><p><b> 4.1存在故障分析</b></p><p> 存在的問(wèn)題是對(duì)單片機(jī)c語(yǔ)言編寫設(shè)計(jì)不熟悉,調(diào)用函數(shù)經(jīng)常出錯(cuò)。</p><p> 4.2進(jìn)一步改進(jìn)的可能和方法</p><p>
85、; 解決的方法是查找資料,請(qǐng)教同學(xué)與老師,對(duì)c語(yǔ)言進(jìn)一步的了解和更好的學(xué)會(huì)使用。</p><p><b> 第七章 結(jié)論</b></p><p> 本次課程設(shè)計(jì)對(duì)數(shù)字電壓表電路認(rèn)真的學(xué)習(xí)探討以及對(duì)單片機(jī)技術(shù)有 了更進(jìn)一步的熟悉,實(shí)際操作和課本上的知識(shí)有很大聯(lián)系,但又高于 課本,一個(gè)看似很簡(jiǎn)單的電路,要?jiǎng)邮职阉O(shè)計(jì)出來(lái)就比較困難了, 因?yàn)槭窃O(shè)計(jì)要求我們?cè)谝院蟮膶W(xué)習(xí)
86、中注意這一點(diǎn), 要把課本上所學(xué)到 的知識(shí)和實(shí)際聯(lián)系起來(lái),同時(shí)通過(guò)本次電路的設(shè)計(jì),不但鞏固了所學(xué) 知識(shí),也是我們把理論與實(shí)踐從真正意義上結(jié)合起來(lái),增強(qiáng)了學(xué)習(xí)的 綜合能力通過(guò)這次設(shè)計(jì)不僅鍛煉了我們的團(tuán)隊(duì)協(xié)作精神,而且提高 了創(chuàng)新能力 在這一個(gè)半月的試驗(yàn)中,在收獲知識(shí)的同時(shí),還收獲了閱歷,收獲 了成熟在此過(guò)程中,我們通過(guò)查找大量資料,請(qǐng)教老師,以及不懈 的努力,不僅培養(yǎng)了獨(dú)立思考,動(dòng)手操作的能力在各種其他方面的能力上也都有了提高,特別是在c語(yǔ)
87、言這一塊, 而且在與老師和同學(xué)的交流過(guò)程中, 互動(dòng)學(xué)習(xí),將知識(shí)融會(huì)貫通更重要的是我們學(xué)會(huì)了很多學(xué)習(xí)的方法,而這是日后最實(shí)用的,真的是受益匪淺要面對(duì)社會(huì)的挑戰(zhàn),只有不斷學(xué)習(xí), 實(shí)踐,再學(xué)習(xí),再實(shí)踐不管怎樣,這些都是一種鍛煉,一種知識(shí)的 完全積累,可以把這個(gè)當(dāng)做基礎(chǔ)東西,只有掌握了這些最基礎(chǔ)的,才可以更進(jìn)一步,取得更好的成績(jī)。</p><p><b> 參考文獻(xiàn)</b></p>
88、<p> [1]皮大能, 單片機(jī)課程設(shè)計(jì)指導(dǎo)書,北京理工大學(xué)出版社, 2010. </p><p> [2]田希暉, C51單片機(jī)技術(shù)教程計(jì), 人民郵電出版社, 2007.</p><p> [3]蘇小紅, C語(yǔ)言大學(xué)實(shí)用教程第二版, 電子工業(yè)出版社, 2009.</p><p><b> 附錄1</b></p&g
89、t;<p><b> 程序</b></p><p> #include<REG52.h></p><p> #include <intrins.h></p><p> #define TIME0H 0xFE</p><p> #define TIME0L 0x0C</
90、p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit LCDRS=P2^0;</p><p> sbit LCDRW=P2^1;</p><p> sbit LCDE=P2^2;<
91、;/p><p> sbit ADC0832CS=P2^5;</p><p> sbit ADC0832CLK=P2^6;</p><p> sbit ADC0832DO=P2^4;</p><p> sbit ADC0832DI=P2^4;</p><p> sbit Up= P1^0; //加1鍵&
92、lt;/p><p> sbit Down=P1^1;//減1鍵</p><p> char count;</p><p> uchar aNumber[3];</p><p> char temp[3]; //臨時(shí)變量</p><p> sbit Set=P1^2; //
93、 設(shè)置鍵</p><p> bit done ; //設(shè)置選擇按鍵變量</p><p> #define LCDPORT P0</p><p> #define OUTPORT P0</p><p> uchar uc_Clock=0;</p><p> void Delay()
94、;</p><p> void UpKey();//加1調(diào)用</p><p> void DownKey(); //減1調(diào)用</p><p> void SetKey();//設(shè)置選擇按鍵</p><p> void keydone();</p><p> void WR_CMD(uchar ucCo
95、mmand);</p><p> void Initialize();</p><p> void WR_Data(uchar ucData);</p><p> void Show_1_Char(uchar ucChar);</p><p> void Show_Char(uchar ucaChar[]);</p>&
96、lt;p> void vShowVoltage(uint uiNumber,uchar);</p><p> void delay5ms(void);</p><p> void Time0();</p><p> void jindu(uint uNumber);</p><p> unsigned char adc0832
97、Rece(unsigned char ADC0832MODLE)//定義adc0832的輸入模式//可兩通道//可差分輸入</p><p> {unsigned char adc0832Buf=0,number=0; //初值</p><p> ADC0832CS=0; //cs=0低電平有效,AD0832片選有效</p><p> for(;number&l
98、t;3;number++)//輸出命令</p><p> {ADC0832DI=(bit)(ADC0832MODLE&0x80);//選擇CH0,通過(guò)組合選取通道(SGL/DIF)</p><p> ADC0832MODLE<<=1;</p><p> ADC0832CLK=1;</p><p><b>
99、 _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b>&
100、lt;/p><p><b> _nop_();</b></p><p> ADC0832CLK=0;//形成下降沿1</p><p><b> _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</p><p><b&g
101、t; }</b></p><p> for(number=0;number<7;number++)//丟棄高七位數(shù)據(jù)</p><p> {ADC0832DO=1;</p><p> adc0832Buf<<=1;// 將所收到的數(shù)據(jù)進(jìn)行左移一位</p><p> ADC0832CLK=1;</p&
102、gt;<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b&
103、gt; _nop_();</b></p><p><b> _nop_();</b></p><p> ADC0832CLK=0;//形成下降沿2</p><p><b> _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</
104、p><p> if(ADC0832DO==1){adc0832Buf++;}</p><p><b> }</b></p><p> adc0832Buf=0;</p><p> for(number=0;number<8;number++)//接收八位數(shù)據(jù)</p><p> {ADC
105、0832DO=1; //接著收數(shù)據(jù)</p><p> adc0832Buf>>=1;// 將所收到的數(shù)據(jù)進(jìn)行右移一位 </p><p> ADC0832CLK=1;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></
106、p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> AD
107、C0832CLK=0;//形成下降沿3</p><p><b> _nop_();</b></p><p> _nop_();//形成一次時(shí)鐘脈沖,數(shù)據(jù)傳一位</p><p> if(ADC0832DO==1){adc0832Buf+=0x80;}</p><p><b> }</b><
108、;/p><p> ADC0832CS=1;//將CS置高電平禁用芯片</p><p> return(adc0832Buf);</p><p><b> }</b></p><p> void delay5ms(void) //5ms延時(shí)函數(shù)</p><p><b> { &
109、lt;/b></p><p> unsigned char i,j;</p><p> for(i=10;i>0;i--)</p><p> for(j=248;j>0;j--);</p><p><b> }</b></p><p> void UpKey()//加
110、1調(diào)用</p><p><b> {</b></p><p><b> Up=1;</b></p><p><b> if(Up==0)</b></p><p><b> {</b></p><p> delay5ms(
111、);</p><p><b> if(Up==0)</b></p><p><b> {</b></p><p> switch(count)</p><p><b> {</b></p><p><b> case 1:</b
112、></p><p> temp[2]=temp[2]+1;</p><p> if(temp[2]>9)</p><p> {temp[2]=0;}</p><p><b> break;</b></p><p><b> case 2:</b><
113、/p><p> temp[1]=temp[1]+1;</p><p> if(temp[1]>9)</p><p> {temp[1]=0;}</p><p><b> break;</b></p><p><b> case 3:</b></p>
114、<p> temp[0]=temp[0]+1;</p><p> if(temp[0]>5)</p><p> {temp[0]=0;}</p><p><b> break;</b></p><p> default:break;</p><p><b>
115、}</b></p><p><b> }</b></p><p> while(Up==0);</p><p> do{delay5ms();}</p><p> while(Up==0);</p><p><b> }</b></p>&
116、lt;p><b> }</b></p><p> void DownKey()//加1調(diào)用</p><p><b> {</b></p><p><b> Down=1;</b></p><p> if(Down==0)</p><p&g
117、t;<b> {</b></p><p> delay5ms();</p><p> if(Down==0)</p><p><b> {</b></p><p> switch(count)</p><p><b> {</b></p
118、><p><b> case 1:</b></p><p> temp[2]=temp[2]-1;</p><p> if(temp[2]<0)</p><p> {temp[2]=9;}</p><p><b> break;</b></p>&l
119、t;p><b> case 2:</b></p><p> temp[1]=temp[1]-1;</p><p> if(temp[1]<0)</p><p> {temp[1]=9;}</p><p><b> break;</b></p><p>&
120、lt;b> case 3:</b></p><p> temp[0]=temp[0]-1;</p><p> if(temp[0]<0)</p><p> {temp[0]=5;}</p><p><b> break;</b></p><p> default
121、:break;</p><p><b> }</b></p><p><b> }</b></p><p> while(Down==0);</p><p> do{delay5ms();}</p><p> while(Down==0);</p>&
122、lt;p><b> }</b></p><p><b> }</b></p><p> void SetKey() //設(shè)置選擇按鍵</p><p><b> {</b></p><p><b> Set=1;</b></p>
123、<p> if(Set==0)</p><p><b> {</b></p><p> delay5ms();</p><p> if(Set==0)</p><p><b> {</b></p><p> done=1;count=count+1;
124、</p><p> if(count>3)</p><p><b> {</b></p><p><b> done=0;</b></p><p><b> count=0;</b></p><p><b> }</b&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)-- 簡(jiǎn)易直流電壓表的設(shè)計(jì)
- 基于_單片機(jī)的簡(jiǎn)易數(shù)字直流電壓表畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的直流電壓檢測(cè)系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- 基于單片機(jī)的直流電壓檢測(cè)系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- 基于單片機(jī)的簡(jiǎn)易數(shù)字直流電壓表畢業(yè)設(shè)計(jì)
- 51單片機(jī)自學(xué)手記之直流電壓表
- 課程設(shè)計(jì)-簡(jiǎn)易直流電壓表的設(shè)計(jì)
- 單片機(jī)直流電壓采集與顯示課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字電壓表
- 基于單片機(jī)的數(shù)字電壓表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的直流電機(jī)控制
- 基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)-課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)--基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)--基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-直流電機(jī)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
評(píng)論
0/150
提交評(píng)論