基于單片機的數(shù)字電壓表pcf8591_第1頁
基于單片機的數(shù)字電壓表pcf8591_第2頁
基于單片機的數(shù)字電壓表pcf8591_第3頁
基于單片機的數(shù)字電壓表pcf8591_第4頁
基于單片機的數(shù)字電壓表pcf8591_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 XXXXXXX 學(xué)生實習(xí)(實訓(xùn))總結(jié)報告 學(xué) 院: XXXXXXXXXXXX 專業(yè)班級: 測控 學(xué)生姓名: xxxxxxx 學(xué) 號: 2014000000 設(shè)計地點(單位) I001 設(shè)計題目: 單片機綜合實訓(xùn)-基于單片機的電壓表設(shè)計 完成日期: 年 月 日 指導(dǎo)教師評語: 成績(五級記分制): 指導(dǎo)教師(簽字): 前言本次單片機綜合訓(xùn)練,我們做了一個基于單片機的數(shù)字電壓表。在設(shè)計這個電壓表之前,指導(dǎo)老師給我們講解了設(shè)計要求和步驟。按照要求我們設(shè)計的數(shù)字電壓表,通過A/D轉(zhuǎn)換芯片實時采集輸入端電壓的變化,顯示于數(shù)碼管上??赏ㄟ^按鍵選擇輸入通道。在芯片的選擇上,單片機選用的是AT89C52芯片

2、,A/D采樣芯片片為PCF8591A/D轉(zhuǎn)換芯片。這個數(shù)字電壓表除了測量電壓的功能,還可以設(shè)置報警,超過上下限自動報警。本次單片機綜合訓(xùn)練,用到了單片機開發(fā)板、proteus軟件等工具,運用了IIC總線、數(shù)碼管顯示等技術(shù)。經(jīng)歷了一個從設(shè)計到產(chǎn)品的過程,學(xué)到了很多,也收獲了很多。 目錄前言I一、實訓(xùn)的目的和任務(wù)11.1實訓(xùn)目的11.2實訓(xùn)任務(wù)1二、設(shè)計總方案2三、系統(tǒng)硬件設(shè)計33.1單片機最小系統(tǒng)33.2 A/D轉(zhuǎn)換部分53.3數(shù)碼管73.4四位獨立按鍵及聲光報警8四、系統(tǒng)軟件設(shè)計94.1軟件實現(xiàn)流程圖94.2 IIC總線在實訓(xùn)中的應(yīng)用104.3完整程序見附錄312五、調(diào)試及性能分析135.1調(diào)

3、試效果圖135.2性能分析13心得體會14致謝15參考文獻16附錄1 任務(wù)書17附錄2 自畫原理圖18附錄3 源程序:19一、實訓(xùn)的目的和任務(wù)1.1實訓(xùn)目的培養(yǎng)學(xué)生的單片機系統(tǒng)的實際應(yīng)用能力,掌握單片機系統(tǒng)設(shè)計、調(diào)試技能。通過實訓(xùn),要求學(xué)生掌握單片機最小系統(tǒng)、定時器及中斷的應(yīng)用,掌握按鍵、LED顯示等接口技術(shù),了解proteus軟件如何仿真,如何使用,完成一個單片機應(yīng)用系統(tǒng)的設(shè)計,寫出設(shè)計報告。1.2實訓(xùn)任務(wù)要求電壓表完成以下功能:1.基本功能對輸入的4路直流電壓進行測量并顯示出來;可以選擇顯示方式,輪流顯示 和指定通道顯示;有報警功能,按鍵設(shè)定上下限報警。 2. 擴展功能 實現(xiàn)歷史數(shù)據(jù)的保存

4、,可保存10組電壓值3.參數(shù)設(shè)計 1)測量精度5% 2)測量范圍0-5V4. 其他要求及可參考資料,見附件1 25二、設(shè)計總方案 系統(tǒng)整體結(jié)構(gòu)如圖所示:PCF8591AT89C52RC4個獨立按鍵8個LED燈8位數(shù)碼管蜂鳴器電壓輸入(電位器調(diào)電壓) 圖2-1系統(tǒng)結(jié)構(gòu)圖根據(jù)系統(tǒng)功能要求,可將系統(tǒng)組成結(jié)構(gòu)分成六大部分:單片機系統(tǒng)、PCF8591A/D轉(zhuǎn)換芯片、LED數(shù)碼管顯示系統(tǒng)、LED和蜂鳴器報警系統(tǒng)、軟件。單片機采用STC89C52,系統(tǒng)的工作原理為:STC89C52單片機開關(guān)復(fù)位后,通過IIC總線給PCF8591發(fā)送相關(guān)指令,PCF8591收到指令開始工作,采集到數(shù)據(jù)后通過IIC總線發(fā)送給單

5、片機,經(jīng)過單片機處理后在數(shù)碼管上顯示相應(yīng)電壓值??梢酝ㄟ^按鍵K1選擇要采集的通道號,通過K4 進入電壓閾值的設(shè)置,K2 設(shè)置上限K3 設(shè)置下限K1 確認。當(dāng)采集到電壓超出上下限是,8個LED閃爍,蜂鳴器發(fā)出滴滴響聲。個模塊的大致關(guān)系如圖2-1。 三、系統(tǒng)硬件設(shè)計 說明:本次綜合實訓(xùn)雖然有電路的設(shè)計,但用的是現(xiàn)成實驗板,故在介紹相關(guān)硬件系統(tǒng)時將按照成品的各個模塊介紹及配套相應(yīng)電路圖,在附件2中將附上自己畫的電路圖。3.1單片機最小系統(tǒng)3.3.1單片機最小系統(tǒng)圖:圖3-1單片機最小系統(tǒng)3.3.2單片機簡介: STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可

6、編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但也做了很多改進使得芯片具有傳統(tǒng)51單片機不具備的功能。STC89C52具有8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu),全雙工串行口。 圖3-1加上電源及為單片機最小系統(tǒng)。 以下為STC89C52的管腳說明:1) P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低

7、八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。 2) P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。3) P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由

8、于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。4) P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為STC89C52的一些特殊功能口:P3.0 RXD(串行輸入口);P3.1 TXD(

9、串行輸出口);P3.2 /INT0(外部中斷0);P3.3 /INT1(外部中斷1);P3.4 T0(記時器0外部輸入);P3.5T1(記時器1外部輸入);P3.6 /WR(外部數(shù)據(jù)存儲器寫選通);P3.7 /RD(外部數(shù)據(jù)存儲器讀選通);P3口同時為閃爍編程和編程校驗接收一些控制信號。5) RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。6) ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外

10、部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。7) /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。8) /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為R

11、ESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。9) XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。10) XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。本次實驗應(yīng)用晶振為11.0592MHz。3.2 A/D轉(zhuǎn)換部分如圖3-2所示,為A/D轉(zhuǎn)

12、換部分。其中SW3和SW4為藍白臥式電位器,調(diào)節(jié)電阻可使VO輸入芯片的電壓發(fā)生變化R11為LED的限流電阻,L3(紅色)為電壓大小體現(xiàn)的發(fā)光二極管。 圖3-2 A/D轉(zhuǎn)換部分PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數(shù)據(jù)獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0,A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。PCF8591的功能包括多路模擬輸入、內(nèi)置

13、跟蹤保持、8-bit模數(shù)轉(zhuǎn)換和8-bit數(shù)模轉(zhuǎn)換。PCF8591的最大轉(zhuǎn)化速率由I2C總線的最大速率決定。如圖3-3為PCF8591內(nèi)部結(jié)構(gòu)圖:圖3-3為PCF8591內(nèi)部結(jié)構(gòu)圖如圖3-4為PCF8591引腳圖:圖3-4為PCF8591引腳圖AIN0AIN3:模擬信號輸入端。A0A3:引腳地址端。VDD、VSS:電源端。SDA、SCL:I2C總線的數(shù)據(jù)線、時鐘線。OSC:外部時鐘輸入端,內(nèi)部時鐘輸出端。EXT:內(nèi)部、外部時鐘選擇線,使用內(nèi)部時鐘時EXT接地。AGND:模擬信號地。AOUT:D/A轉(zhuǎn)換輸出端。VREF:基準(zhǔn)電源端。3.3數(shù)碼管 3.3.1數(shù)碼管簡介:數(shù)碼管按段數(shù)可分為七段數(shù)碼管和

14、八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、3位、4位、5位、6位、7位等數(shù)碼管;按發(fā)光二極管單元連接方式可分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。本實驗用的是兩個四位八 段共陰數(shù)碼管。3.3.2數(shù)碼管連接電路圖3-5 圖3-5數(shù)碼管顯示3.4四位獨立按鍵及聲光報警3.4.1四位獨立按鍵四位獨立按鍵如電路圖3-

15、6,按鍵無動作,對應(yīng)端口為高電平。當(dāng)按鍵按下,單片機檢測到低電平,按程序?qū)崿F(xiàn)相應(yīng)動作。 圖3-6獨立按鍵3.4.2 led燈和蜂鳴器 圖3-7 8個共陽極led燈 圖3-8蜂鳴器 當(dāng)給測量電壓超過上下限時8個led開始閃爍,同時,蜂鳴器發(fā)出滴滴的聲音。當(dāng)看到這一現(xiàn)象是說明測量電壓超限,應(yīng)注意調(diào)節(jié)電壓。四、系統(tǒng)軟件設(shè)計4.1軟件實現(xiàn)流程圖Led D1亮,其余熄滅,蜂鳴器無動作單片機判斷K4是否按下?按鍵數(shù)碼管顯示,對應(yīng)通道。顯示上下限(默認零,但上下限都為0時不報警)顯示對應(yīng)通道電壓單片機通過IIC總線給PCF8591發(fā)送命令,讓PCF8591開始工作。單片機通過中斷程序定時采樣(默認采樣通道為

16、通道0)開始 D1熄滅,如果按下K2,設(shè)置報警電壓下限,調(diào)節(jié)范圍0-4V,按下K3設(shè)置電壓上限調(diào)節(jié)范圍1-5V。設(shè)置時數(shù)碼管,顯示上下變化否 是單片機判斷K1是否按下?K1是否按下? 是單片機采集8591的0通道值,顯示退出上下限設(shè)置,完成上下限設(shè)置 否否單片機判斷電壓是否在設(shè)定范圍?是 是單片機給PCF8591,發(fā)送指令,使采集通道在0-34個通道中切換并采集電壓。數(shù)碼管顯示對應(yīng)通道,顯示對應(yīng)電壓8個數(shù)碼管閃爍,蜂鳴器,發(fā)出滴滴聲。數(shù)碼管,顯示通道,上下限,對應(yīng)通道電壓否是否設(shè)置上下限不影響,通道選擇,及對應(yīng)通道電壓值,上下限,可在任意時刻設(shè)置。定時器T1,控制單片機采樣頻率,定時器T0控制

17、數(shù)碼管掃描。下載好程序,上電開始工作執(zhí)行相應(yīng)功能,斷電及結(jié)束。不報警,正常定時采集,數(shù)碼管顯示,電壓,通道,上下限。是4.2 IIC總線在實訓(xùn)中的應(yīng)用4.2.1單片機與PCF8591芯片之間IIC總線應(yīng)用程序void init() /初始化總線 SCL 和SDA都拉成高電平SCL=1;/時鐘線_nop();SDA=1;/數(shù)據(jù)線_nop();_nop();_nop();_nop();_nop();void start()/開始信號SDA=1;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=0;_nop();_nop();_nop();_nop();_no

18、p();SCL=0;void stop()/終止信號 SDA=0;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=1;_nop();_nop();_nop();_nop();_nop();SDA=0;void ack()/發(fā)送應(yīng)答uchar i;SDA=0;SCL=1;_nop();_nop();_nop();_nop();while(SDA=1)&&(i<255)i+;SCL=0;_nop();_nop();_nop();_nop();void noack()/發(fā)送非應(yīng)答SDA=1;SCL=1; _nop();_nop();_n

19、op();_nop();SCL=0;SDA=0;void sendbaty(uchar da)/發(fā)送字節(jié)uchar i,temp;temp=da;for(i=0;i<8;i+)temp=temp<<1;SCL=0; _nop();_nop();_nop();_nop(); SDA=CY; _nop();_nop();_nop();_nop(); SCL=1; _nop();_nop();_nop();_nop();SCL=0;_nop();_nop();_nop();_nop();SDA=1;_nop();_nop();_nop();_nop();unsigned char

20、readbaty()/讀字節(jié)uchar i,temp;SCL=0;_nop();_nop();_nop();_nop();SDA=1;for(i=0;i<8;i+)SCL=1;_nop();_nop();_nop();_nop();temp=(temp<<1)|SDA;SCL=0; _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();return temp;void DAC(uchar Data) start(); sendbaty(0x90); /寫入芯片地址 ack(); sendbaty(0x40); /寫入控

21、制位 ack(); sendbaty(Data); /寫數(shù)據(jù) ack(); stop();unsigned char ReadADC(uchar Chl) uchar Data; start(); /寫入芯片地址 sendbaty(0x90); ack(); sendbaty(0x40|Chl);/寫入選擇的通道ch1(1.2.3.4通道) ack(); start(); sendbaty(0x91); /讀入地址 ack(); Data=readbaty(); /讀數(shù)據(jù) SCL=0; noack(); stop(); return Data; /返回值 4.3完整程序見附錄3五、調(diào)試及性能分

22、析 5.1調(diào)試效果圖 從左到右依次是,通道 號、上限、下限、電壓值。 超過上限報警5.2性能分析 通過測試結(jié)果,電壓的測量范圍為0-5V,電壓測量誤差+0.02V。誤差相對較小,在切換通道時,很迅速,沒有無法切換的現(xiàn)象。上限極限值為5V,最小為1V;下限設(shè)置極限為4V,最小為0V,超出范圍報警正常。通過測試,證明我們實現(xiàn)了我們要實現(xiàn)的所有功能,在運行過程中沒有出現(xiàn)bug,設(shè)計比較成功。心得體會為期一周的單片綜合訓(xùn)練已經(jīng)結(jié)束,這一周我學(xué)到了很多知識和經(jīng)驗。這次實訓(xùn)我們做的題目是基于單片機的數(shù)字電壓表要完成這個題目,我們需要用到定時器及定時器初值的計算、數(shù)碼管動態(tài)顯示、蜂鳴器報警、A/D轉(zhuǎn)換芯片的

23、運用、IIC總線通信的應(yīng)用等一些列東西。設(shè)計知識面比較廣泛,把單片機常用的一些運用都用到了,通過這個實訓(xùn)讓我對單片機編程有了更深刻的理解,進一步對了單片機編程有了更濃厚的興趣。在設(shè)計過程中,我也遇到了一些不懂得地方,在調(diào)試的過程中也出現(xiàn)了很多錯誤。同過請教老師和同學(xué),這些問題一一得到了解答。經(jīng)過3天的不懈努力,成功的實現(xiàn)了電壓的測量在數(shù)碼管上顯示,超過限制報警等一系列功能。本次實訓(xùn)培養(yǎng)了我對單片機系統(tǒng)的實際應(yīng)用能力,掌握單片機系統(tǒng)設(shè)計、調(diào)試的基本技能。通過實訓(xùn),我也掌握單片機最小系統(tǒng)、定時器及中斷的應(yīng)用,掌握按鍵、LED顯示等接口技術(shù),了解proteus軟件如何仿真,如何使用,完成一個單片機應(yīng)

24、用系統(tǒng)的設(shè)計。經(jīng)過這次培訓(xùn),不論是單片機的相關(guān)知識點還是,系統(tǒng)的開發(fā)能力都得到了提高,學(xué)到的東西也將為我所用。希望這樣的實訓(xùn),在今后會做的更好,影響更多的同學(xué)。致謝 感謝學(xué)院給我們安排了這樣一個非常有意義實訓(xùn),讓我學(xué)到了很多知識,讓我對單片機應(yīng)用有了新的認識,提高了我對單片機的應(yīng)用能力。感謝我們的指導(dǎo)老師,xxx老師和xx老師。正是有你們的細心指導(dǎo),及時給我們解決我們遇到的問題,我才能正確的,快速的完成實訓(xùn)。在你們的指導(dǎo)下,讓我們學(xué)到了很多關(guān)于單片機系統(tǒng)開發(fā)的經(jīng)驗和技巧。在這里還要感謝,和我一起做課題的同學(xué),感謝你們和我一起學(xué)習(xí),共度難關(guān)。感謝單片機原理及接口技術(shù)課本編者以及我查閱過的相關(guān)資料

25、的作者,因為你們讓我走了很多捷徑。實訓(xùn)已經(jīng)圓滿結(jié)束,再次感謝你們,謝謝!參考文獻1 張毅剛. 單片機原理及皆空技術(shù)M. 北京.人民郵電出版社,2008.2 PCF8591說明書.3 自編.單片機應(yīng)用設(shè)計指導(dǎo)書.附錄1 任務(wù)書:重慶科技學(xué)院任務(wù)書設(shè)計題目:基于單片機的電壓表設(shè)計學(xué)生姓名課程名稱單片機系統(tǒng)綜合訓(xùn)練專業(yè) 班 級測控地 點實驗樓I001起止時間18設(shè)計內(nèi)容及要求要求電壓表完成以下功能:1.基本功能 對輸入的4路直流電壓進行測量并顯示出來; 可以選擇顯示方式,輪流顯示和指定通道顯示; 有報警功能,按鍵設(shè)定上下限報警。2. 擴展功能實現(xiàn)歷史數(shù)據(jù)的保存,可保存10組電壓值。 設(shè)計參數(shù)1. 測

26、量精度5% 2. 測量范圍0-5V 進度要求見附表參考資料1. 張毅剛. 單片機原理及應(yīng)用. 人民郵電出版社2.自編.單片機應(yīng)用設(shè)計指導(dǎo)書說明.本表應(yīng)在每次實施前一周由負責(zé)教師填寫二份,院系審批后交院系辦備案,一份由負責(zé)教師留用。.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。系主任: 指導(dǎo)教師: 年 月 日 附錄2 自畫原理圖附錄3 源程序:#include<reg52.h>#include<intrins.h>#define _nop() _nop_()#define uchar unsigned char#define

27、uint unsigned intsbit SDA=P20;sbit SCL=P21;sbit wela=P27;sbit dula=P26;sbit key=P34;sbit lb=P35;sbit hb=P36;sbit lg=P37;sbit pp=P23;bit ADFlag;unsigned char Data_Buffer6=0,1,2,3,4,5;uchar code sz17=0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d , 0x07 , 0x7f , 0x6f;void anj(uchar m,uchar u,uchar i);vo

28、id delay(uint count) /delay uint i; while(count) i=200; while(i>0) i-; count-; void mDelay(uchar j) uint i; for(;j>0;j-) for(i=0;i<125;i+) ; void Init_Timer1(void) TMOD = 0x11;/T1定時器工作方式1 TH1=0xfc; /定時1000us 調(diào)節(jié)掃描時間,可以適當(dāng)加可減 TL1=0x18; TH0=0xf4; /T0定時3000us,主要調(diào)節(jié)數(shù)碼管顯示時是否閃爍,可以適當(dāng)加減 TL0=0x48; EA=1

29、; ET1=1; TR1=1; ET0=1; TR0=1; P1=0xff; pp=1; void init() /初始化總線SCL=1;_nop();SDA=1;_nop();_nop();_nop();_nop();_nop();void start()/開始信號SDA=1;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=0;_nop();_nop();_nop();_nop();_nop();SCL=0;void stop()/終止信號 SDA=0;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=1;_n

30、op();_nop();_nop();_nop();_nop();SDA=0;void ack()/發(fā)送應(yīng)答uchar i;SDA=0;SCL=1;_nop();_nop();_nop();_nop();while(SDA=1)&&(i<255)i+;SCL=0;_nop();_nop();_nop();_nop();void noack()/發(fā)送非應(yīng)答SDA=1;SCL=1; _nop();_nop();_nop();_nop();SCL=0;SDA=0;void sendbaty(uchar da)/發(fā)送字節(jié)uchar i,temp;temp=da;for(i=0;i

31、<8;i+)temp=temp<<1;SCL=0; _nop();_nop();_nop();_nop(); SDA=CY; _nop();_nop();_nop();_nop(); SCL=1; _nop();_nop();_nop();_nop();SCL=0;_nop();_nop();_nop();_nop();SDA=1;_nop();_nop();_nop();_nop();unsigned char readbaty()/讀字節(jié)uchar i,temp;SCL=0;_nop();_nop();_nop();_nop();SDA=1;for(i=0;i<8;

32、i+)SCL=1;_nop();_nop();_nop();_nop();temp=(temp<<1)|SDA;SCL=0; _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();return temp;void DAC(uchar Data) start(); sendbaty(0x90); /寫入芯片地址 ack(); sendbaty(0x40); /寫入控制位 ack(); sendbaty(Data); /寫數(shù)據(jù) ack(); stop();unsigned char ReadADC(uchar Chl) ucha

33、r Data; start(); /寫入芯片地址 sendbaty(0x90); ack(); sendbaty(0x40|Chl);/寫入選擇的通道ch1(1.2.3.4通道) ack(); start(); sendbaty(0x91); /讀入地址 ack(); Data=readbaty(); /讀數(shù)據(jù) SCL=0; noack(); stop(); return Data; /返回值 void main() uchar e=0,m,a=0,x,c=0,y,s=1; Init_Timer1(); while(1) s=1; if(key=0) delay(5); if(key=0) e

34、=e+1; while(!key); m=e;if(m>3) e=0; m=e; Data_Buffer5=m; if(lg=0)/上下限設(shè)置 delay(5);if(lg=0)P1=0xff; while(s) if(lb=0) delay(5); if(lb=0) x=a; while(!lb); a=a+1;Data_Buffer2=y;Data_Buffer3=x;if(x>3) a=0; if(hb=0) delay(5); if(hb=0) c=c+1; while(!hb); y=c; Data_Buffer2=y;Data_Buffer3=x;if(y>4) c=0; if(key=0) delay(5); if(key=0) s=0; anj(m,x,y); void time1() interrupt 3 usin

溫馨提示

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

最新文檔

評論

0/150

提交評論