版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《單片機(jī)原理及應(yīng)用》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 學(xué) 院: 源與動(dòng)力工程學(xué)院__</p><p> 班 級(jí):_____ _____</p><p> 學(xué) 號(hào):__ _____</p><p> 姓 名:_____ ___
2、____</p><p> 時(shí) 間:2012-12-17 ~ 2012-12-21</p><p><b> 目 錄</b></p><p><b> 任務(wù)書1</b></p><p> 第一章方案設(shè)計(jì)2</p><p> 第二章硬件系統(tǒng)設(shè)計(jì)3&l
3、t;/p><p> 第三章軟件設(shè)計(jì)7</p><p> 第四章系統(tǒng)調(diào)試10</p><p><b> 小 結(jié)11</b></p><p> 附錄1:原理圖13</p><p> 附錄2:源程序14</p><p><b> 任務(wù)書</
4、b></p><p> 1、題 目:基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)</p><p><b> 2、設(shè)計(jì)要求:</b></p><p> ?。?)利用單片機(jī)及ADC0809構(gòu)成一個(gè)電壓采集系統(tǒng),實(shí)現(xiàn)8通道循環(huán)采樣,循環(huán)顯示。</p><p> ?。?)顯示采用ZLG7290,顯示精度到小數(shù)點(diǎn)后一位。</p
5、><p><b> 方案設(shè)計(jì)</b></p><p><b> 1、總體設(shè)計(jì)方案</b></p><p> 本設(shè)計(jì)使用ADC0809對(duì)模擬信號(hào)進(jìn)行轉(zhuǎn)換,然后經(jīng)過(guò)AT89C51轉(zhuǎn)換后的結(jié)果來(lái)進(jìn)行運(yùn)算和處理,然后由數(shù)碼管直接顯示數(shù)字電壓信號(hào),其中分辨率為0.02v。用電位器控制輸入電壓,經(jīng)ADC0809模數(shù)轉(zhuǎn)換,然后數(shù)據(jù)被單
6、片機(jī)采集,并經(jīng)過(guò)單片機(jī)利用相應(yīng)的算法進(jìn)行調(diào)整,最后利用串口將處理好的數(shù)據(jù)輸出至數(shù)碼管。其中ADC0809通過(guò)IN0~IN7采集模擬電壓信號(hào)送給單片機(jī),單片機(jī)將采集來(lái)的信號(hào)通過(guò)一定的處理然后通過(guò)串口輸出至共陽(yáng)極的LED數(shù)碼管顯示采集到的電壓值。</p><p><b> 2、總體設(shè)計(jì)框圖</b></p><p><b> 硬件系統(tǒng)設(shè)計(jì)</b>&
7、lt;/p><p><b> 硬件系統(tǒng)設(shè)計(jì)思路</b></p><p> 8路數(shù)字電壓表應(yīng)用系統(tǒng)硬件電路由單片機(jī)、A/D轉(zhuǎn)換器、數(shù)碼管顯示電路</p><p> 等組成。ADC0809具有8路模擬量輸入通道IN0---IN7,通過(guò)3位地址輸入端C、B、A(引腳23--25)進(jìn)行選擇。引腳22為地址鎖存控制端ALE,當(dāng)輸入為高電平時(shí),C、B、A
8、引腳輸入的地址鎖存于ADC0809內(nèi)部是鎖存器中,經(jīng)內(nèi)部譯碼電路譯碼選中相應(yīng)的模擬通道。引腳6為啟動(dòng)轉(zhuǎn)換控制端START,當(dāng)輸入一個(gè)2μs寬的高電平脈沖時(shí),就啟動(dòng)ADC0809開始對(duì)輸入通道的模擬量進(jìn)行轉(zhuǎn)換。引腳7為A/D轉(zhuǎn)換器,當(dāng)開始轉(zhuǎn)換時(shí),EOC信號(hào)為低電平,經(jīng)過(guò)一段時(shí)間,轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)束信號(hào)EOC輸出高電平,轉(zhuǎn)換結(jié)果存放于ADC0809內(nèi)部的輸出數(shù)據(jù)寄存器中。引腳9腳為A/D轉(zhuǎn)換數(shù)據(jù)輸出允許控制端OE,當(dāng)OE為高電平時(shí),存放于輸
9、出數(shù)據(jù)鎖存器中的數(shù)據(jù)通過(guò)ADC0809的數(shù)據(jù)線D0—D7輸出。引腳10為ADC0809的時(shí)鐘信號(hào)輸入端CLOCK。在連接時(shí),ADC0809的數(shù)據(jù)線D0—D7與AT89S52的P0口相連接,ADC0809的地址引腳、地址鎖存端ALE、啟動(dòng)信號(hào)START、數(shù)據(jù)輸出允許控制端OE分別與AT89S52的P2口相連接,轉(zhuǎn)換結(jié)束信號(hào)EOC與AT89S52的P3.7相連接。時(shí)鐘信號(hào)輸入端C</p><p><b>
10、 模塊分析</b></p><p> ?。?)AT89C51單片機(jī) </p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/ 地址的第八位。在這里P0口作為輸入與輸出分別與ADC0808的輸出端和LCD顯示的輸入端相連,且P0外部被阻值為1K
11、?的電阻拉高。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出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ù)
12、據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。這里只用到了P2.0~P2.3四個(gè)端口,其中P2.1~P2.3都是作為輸出端口控制顯示電路的寄存器選擇、讀寫信號(hào)和使能端口。 </p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣
13、故。 </p><p> P3口也可作為AT89C51的一些特殊功能口,在這里用到了P3.3 /INT1(外部中斷1)、 P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)、P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)。</p><p><b> ?。?)A/D轉(zhuǎn)換</b></p><p> IN0~I(xiàn)N7為8路模擬量輸入端,這里只接一路電壓信號(hào),其輸入
14、信號(hào)是由直流電源及可調(diào)電阻提供。 </p><p> OUT1~OUT8為8位二進(jìn)制數(shù)字量輸出端,其另一端連接到AT89C51單片機(jī)進(jìn)行數(shù)值轉(zhuǎn)換。 </p><p> ADDA、ADDB、ADDC為3位片選地址輸入線,用于選通8路模擬輸入中的一路。 </p><p> ALE為地址鎖存允許信號(hào),由單片機(jī)P3.6口寫信號(hào)與P2.0口相或取反輸入,高電平有效。 &
15、lt;/p><p> START為 A/D轉(zhuǎn)換啟動(dòng)脈沖輸入端,由單片機(jī)P3.6口寫信號(hào)與P2.0口相或取反輸入一個(gè)正脈沖使其啟動(dòng)(脈沖上升沿使0808復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。 </p><p> EOC為 A/D轉(zhuǎn)換結(jié)束信號(hào),當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平取反給P3.3口(轉(zhuǎn)換期間一直為低電平)。 </p><p> OE為數(shù)據(jù)輸出允許信號(hào),高電平有
16、效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端由單片機(jī)P3.7讀信號(hào)與P2.0口相或后取反輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 </p><p><b> ?。?)顯示電路 </b></p><p> RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。由單片機(jī)P2.1口控制</p><p> R/W為讀寫信號(hào)線,高電平時(shí)
17、進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電</p><p> 平R/W為低電平時(shí)可以寫入數(shù)據(jù)。由單片機(jī)P2.2口控制</p><p> E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。由單片機(jī)P2.3口控制</p><p> D0~D7為8位雙向數(shù)
18、據(jù)線。由單片機(jī)P0口輸入,經(jīng)過(guò)阻值為1K?的上拉電阻連接。</p><p><b> 軟件設(shè)計(jì)</b></p><p><b> 設(shè)計(jì)說(shuō)明</b></p><p> 本實(shí)驗(yàn)采用AT89C51 單片機(jī)芯片配合 ADC0809 模/數(shù)轉(zhuǎn)換芯片構(gòu)成一個(gè)簡(jiǎn) 易的數(shù)字電壓表,原理電路如圖1-1 所示。該電路通過(guò) ADC0809
19、 芯片采樣輸入口 AI0 輸入的0~5V 的模擬量電壓,經(jīng)過(guò)模/數(shù)轉(zhuǎn)換后,產(chǎn)生相應(yīng)的數(shù)字量經(jīng)過(guò)其輸出通道D0~D7 傳送給 AT89C51 芯片的F0口。AT89C51負(fù)責(zé)把接收到的數(shù)字量經(jīng)過(guò)數(shù)據(jù)處理,產(chǎn)生正確的7段數(shù)碼管的顯示段碼,并通過(guò)P1 口傳送給數(shù)碼管。同時(shí)它還通過(guò)其三位 I/O 口 P3.0、P3.1、P3.2 產(chǎn)生位片選信號(hào),控制數(shù)碼管的亮滅。另外,AT89C51 還控制著 ADC0809 的工作。其ALE管腳為 ADC08
20、09提供了 1MHZ 工作的時(shí)鐘脈沖;P2.3 控制 ADC0809 的地址鎖存端(ALE); P2.4 控制 ADC0809 的啟動(dòng)端(START); P2.5 控制 ADC0809 的輸出允許端(OE); P3.7 控制 ADC0809 的轉(zhuǎn)換結(jié)束信號(hào)(EOC)。</p><p><b> 主程序設(shè)計(jì)</b></p><p> 主程序包含初始化部分、調(diào)用A/D
21、轉(zhuǎn)換子程序和調(diào)用顯示程序,如圖所示。初始化部分包含存放通道數(shù)據(jù)緩沖區(qū)初始化和顯示緩沖區(qū)初始化。</p><p> A/D轉(zhuǎn)換子程序設(shè)計(jì)</p><p> A/D轉(zhuǎn)換子程序用于對(duì)ADC0809的8路輸入模擬電壓進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)值存入8個(gè)相應(yīng)的存儲(chǔ)單元中,如圖所示。A/D轉(zhuǎn)換子程序每隔一定時(shí)間調(diào)用一次,即隔一段時(shí)間對(duì)輸入電壓采樣一次。</p><p>&
22、lt;b> 顯示子程序設(shè)計(jì)</b></p><p> 顯示子程序采用動(dòng)態(tài)掃描法實(shí)現(xiàn)八位數(shù)碼管的數(shù)值顯示。高位數(shù)碼管顯示通道數(shù),低兩位顯示所測(cè)電壓數(shù)值。測(cè)量所得的A/D轉(zhuǎn)換數(shù)據(jù)放在70H內(nèi)存單元中,測(cè)量數(shù)據(jù)在顯示時(shí)需轉(zhuǎn)換成10進(jìn)制BCD碼放在66H~6DH單元中。寄存器R1用作顯示數(shù)據(jù)地址指針。</p><p><b> 系統(tǒng)調(diào)試</b><
23、/p><p> 由于單片機(jī)為8位處理器,當(dāng)輸入電壓為5.00V時(shí),輸出數(shù)據(jù)值為255(FFH)因此單片機(jī)最大的數(shù)值分辨率為0.0196V(5/255)。這就決定了該電壓表的最大分辨率(精度)只能達(dá)到0.0196V。測(cè)試時(shí)電壓數(shù)值的變化一般以0.02的電壓幅度變化,如要獲得更高的精度要求,應(yīng)采用12位、13位的A/D轉(zhuǎn)換器或者使用雙字節(jié)指令。</p><p> 由于實(shí)驗(yàn)箱只有兩個(gè)電位器接口,
24、因此要實(shí)現(xiàn)八通道,可通過(guò)其它不用接線口串聯(lián)實(shí)現(xiàn)等電位,進(jìn)而實(shí)現(xiàn)模擬電壓八通道輸入。</p><p> 3、當(dāng)顯示過(guò)快時(shí)可通過(guò)改變程序設(shè)置跳轉(zhuǎn)時(shí)間,可便于觀察。</p><p><b> 小 結(jié)</b></p><p> 經(jīng)過(guò)一個(gè)多星期的不斷學(xué)習(xí)、不斷嘗試、不斷提問(wèn),單片機(jī)課程設(shè)計(jì)終于完成了。課題不是很難,但是由于是第一次接觸這種類型的學(xué)
25、習(xí)過(guò)程,所以一開始效率有點(diǎn)低,主要是無(wú)從下手,不知該做什么。課程設(shè)計(jì)前一天我在網(wǎng)上搜索了很多關(guān)于課題的文檔資料,有一定參照作用,但是也有很多不同之處,比如選用的單片機(jī)器件、A/D轉(zhuǎn)換器件或者顯示器件的不同,往往會(huì)令我在設(shè)計(jì)時(shí)不知如何正確接線。</p><p> 本次課程設(shè)計(jì)是理論與實(shí)踐相結(jié)合的一次實(shí)用性學(xué)習(xí),要學(xué)會(huì)學(xué)以致用,將所學(xué)知識(shí)用到實(shí)處。這在編程調(diào)試時(shí)尤其突出重要,比如小數(shù)點(diǎn)的顯示,精度的提高,誤差的減小
26、,這些內(nèi)容一部分取決于器件的優(yōu)劣,還有一部分來(lái)自于程序設(shè)計(jì)的好壞。所以,熟練匯編語(yǔ)言,熟練編程是我從此次課程設(shè)計(jì)中得到的一個(gè)重要啟示,因?yàn)檫@將是我們將來(lái)學(xué)以致用的關(guān)鍵。</p><p> 我的課題雖然是基于單片機(jī)的數(shù)字電壓表設(shè)計(jì),但是實(shí)際上就是一個(gè)數(shù)據(jù)采集的程序設(shè)計(jì),只不過(guò)這里數(shù)據(jù)采集的是模擬電壓罷了,采集后的數(shù)據(jù)然后通過(guò)ZLG7290顯示出來(lái)。顯示程序來(lái)源于以前的實(shí)驗(yàn),我的U盤里面正好有,因此節(jié)省了不少力氣。
27、其次在調(diào)試程序仿真時(shí),需要認(rèn)真仔細(xì),隨機(jī)應(yīng)變。</p><p> 課程設(shè)計(jì)時(shí)間雖短暫,卻是另一種完全不同的學(xué)習(xí)過(guò)程,它讓我意識(shí)到理論聯(lián)系實(shí)踐的重要性以及應(yīng)用時(shí)可能會(huì)出現(xiàn)很多意想不到的問(wèn)題,這些東西不是書本上的知識(shí)可以學(xué)到的,而要通過(guò)實(shí)踐不斷積累經(jīng)驗(yàn),不斷虛心請(qǐng)教和學(xué)習(xí)才能真正掌握的,因此以后要積極實(shí)驗(yàn)、實(shí)踐,認(rèn)真學(xué)習(xí)這些課本之外的東西??偟膩?lái)說(shuō),課程設(shè)計(jì)還是讓我學(xué)到了不少新知識(shí),也有不少新領(lǐng)悟,當(dāng)然,對(duì)單片機(jī)也
28、有了更深層次的認(rèn)識(shí),也讓我對(duì)單片機(jī)有了更高的興趣,希望學(xué)到更多關(guān)于單片機(jī)的知識(shí),做更多的實(shí)踐內(nèi)容。</p><p><b> 附錄1:原理圖</b></p><p><b> 附錄2:源程序</b></p><p> SDABITP3.0;I2C總線定義</p><p> SCL
29、BITP3.1</p><p> RSTBITP1.7</p><p> MTDEQU63H;發(fā)送數(shù)據(jù)緩沖器</p><p> ZLG7290EQU70H;ZLG7290的器件地址</p><p> ACKBIT10H;應(yīng)答標(biāo)志位</p><p> SLADATA60H
30、;器件的從地址</p><p> SUBADATA61H;器件的子地址</p><p> NUMBYTEDATA62H;讀/寫的字節(jié)數(shù)變量</p><p> ORG 00H </p><p> SJMP MAIN </p><p><b> ORG 00BH</
31、b></p><p> LJMP INT_T0</p><p> ORG 0003H</p><p> LJMP INT_EX0</p><p><b> ORG 030H</b></p><p> MAIN: MOV SP,#70H</p><p&g
32、t; MOV R2,#08H</p><p> MOV TMOD, #01H </p><p> MOV TL0, #0B0H </p><p> MOV TH0, #3CH</p><p><b> SETB EX0</b></p><p><b>
33、 SETB IT0</b></p><p><b> SETB ET0</b></p><p><b> SETB EA</b></p><p> SETB TR0 </p><p> MOV 66H,#0</p><p> MOV
34、67H,#0</p><p> MOV 68H,#0</p><p> MOV 69H,#0</p><p> MOV 6AH,#0</p><p> MOV 6BH,#0</p><p> MOV 6CH,#0</p><p> MOV 6DH,#0<
35、/p><p> MOV R1,#30H</p><p> MOV R7,#20</p><p><b> SJMP $</b></p><p> INT_T0:MOV TL0, #0B0H </p><p> MOV TH0, #3CH</p>&l
36、t;p> MOV DPTR,#0000H</p><p> MOVX @DPTR,A</p><p> MOV R0,#30H</p><p> MOV A,@R1</p><p> MOV B,#5</p><p><b> DIV AB</b></
37、p><p> MOV B,#10</p><p><b> DIV AB</b></p><p> MOV 66H,B</p><p> MOV B,#10</p><p><b> DIV AB</b></p><p>
38、MOV 67H,B</p><p> ORL 67H,#80H</p><p> MOV 68H,A</p><p> MOV 6DH,R1</p><p> ANL 6DH,#07H</p><p> LCALL LEDDISP</p><p> DJNZ R
39、7,T0_END</p><p> MOV R7,#20</p><p><b> INC R1</b></p><p> CJNE R1,#38H,T0_END</p><p> MOV R1,#30H</p><p> T0_END:RETI</p>&
40、lt;p> INT_EX0:MOVX A,@DPTR</p><p> MOV @R0,A</p><p> INC DPTR</p><p><b> INC R0</b></p><p> CJNE R0,#38H,LOP</p><p><b>
41、RETI</b></p><p> LOP: MOVX @DPTR,A</p><p><b> RETI</b></p><p> leddisp:push psw</p><p><b> push acc</b></p><p><
42、b> setb rs1</b></p><p><b> setb rs0</b></p><p> mov r0,#66H</p><p> mov r4,#8</p><p> mov r5,#60h</p><p> loop: MOV
43、MTD,R5</p><p> MOV MTD+1,@R0</p><p> MOV SLA,#70H</p><p> MOV SUBA,#07H</p><p> MOV NUMBYTE,#02H</p><p> LCALL IWRNBYTE</p><p>
44、LCALL DELY1</p><p><b> INC R0</b></p><p><b> INC R5</b></p><p> DJNZ R4,LOOP</p><p><b> POP ACC</b></p><p>&
45、lt;b> POP PSW</b></p><p><b> RET</b></p><p> re7290: clr rst</p><p> lcall dely</p><p><b> setb rst</b></p><p>
46、 lcall dely</p><p><b> ret</b></p><p> dely :mov r7,#80H</p><p> min :djnz r7,ys500 </p><p><b> ret</b></p><p> ys
47、500 :lcall ys500us</p><p> ljmp min</p><p> ys500us:mov r6,#80h</p><p> djnz r6,$</p><p><b> ret</b></p><p> dely1 :mov r7,#40h&
48、lt;/p><p> djnz r7,$</p><p><b> ret</b></p><p> ;啟動(dòng)I2C總線子程序 </p><p> START: nop</p><p><b> nop</b></p><p>&
49、lt;b> nop</b></p><p><b> SETB SDA</b></p><p><b> NOP</b></p><p> SETB SCL ;起始條件建立時(shí)間大于4.7us</p><p><b> NOP</b>
50、</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR SDA &l
51、t;/p><p> NOP ;起始條件鎖定時(shí)大于4us</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> N
52、OP</b></p><p> CLR SCL ;鉗住總線,準(zhǔn)備發(fā)數(shù)據(jù)</p><p><b> NOP</b></p><p><b> nop</b></p><p><b> nop</b></p><p>
53、<b> RET</b></p><p><b> ;結(jié)束總線子程序</b></p><p> STOP: NOP</p><p><b> NOP</b></p><p><b> NOP</b></p><p>
54、; CLR SDA</p><p><b> NOP</b></p><p> SETB SCL ;發(fā)送結(jié)束條件的時(shí)鐘信號(hào)</p><p> NOP ;結(jié)束總線時(shí)間大于4us</p><p> NOP </p><p>
55、;<b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB SDA ;結(jié)束總線</p><p> NOP ;保證一個(gè)終止
56、信號(hào)和起始信號(hào)的空閑時(shí)間大于4.7us</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> nop</b></p><p>
57、<b> nop</b></p><p><b> RET</b></p><p><b> ;檢查應(yīng)答位子程序</b></p><p> ;返回值,ACK=1時(shí)表示有應(yīng)答</p><p><b> CACK:NOP</b></p>
58、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> SETB SDA</b></p><p><b> NOP</b></p><p><b> NOP</b>
59、;</p><p><b> SETB SCL</b></p><p><b> CLR ACK</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> MOV
60、 C,SDA</p><p> JC CEND</p><p> SETB ACK ;判斷應(yīng)答位</p><p><b> CEND:NOP</b></p><p><b> CLR SCL</b></p><p><
61、b> NOP</b></p><p><b> nop</b></p><p><b> nop</b></p><p><b> RET</b></p><p><b> ;發(fā)送字節(jié)子程序</b></p><
62、;p> ;字節(jié)數(shù)據(jù)放入ACC </p><p> ;每發(fā)送一字節(jié)要調(diào)用一次CACK子程序,取應(yīng)答位 </p><p> WRBYTE: MOV R7,#08H</p><p> WLP: RLC A ;取數(shù)據(jù)位</p><p><b> JC
63、 WR1</b></p><p> SJMP WR0 ;判斷數(shù)據(jù)位</p><p> WLP1: DJNZ R7,WLP</p><p><b> NOP</b></p><p><b> RET</b></p><p
64、> WR1: SETB SDA ;發(fā)送1</p><p><b> NOP</b></p><p><b> SETB SCL</b></p><p><b> NOP</b></p><p><b> NOP&l
65、t;/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR SCL</b></p><p> SJM
66、P WLP1</p><p> WR0: CLR SDA ;發(fā)送0</p><p><b> NOP</b></p><p><b> SETB SCL</b></p><p><b> NOP</b></p>&l
67、t;p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR SCL</b><
68、;/p><p> SJMP WLP1</p><p> ;向器件指定子地址寫N字節(jié)數(shù)據(jù)</p><p> ;入口參數(shù): 器件從地址SLA、器件子地址SUBA 、發(fā)送數(shù)據(jù)緩沖區(qū)MTD、發(fā)送字節(jié)數(shù)NUMBYTE</p><p> ; 占用: A 、R0 、R1 、R3 、CY </p><p> IWRNBYT
69、E: MOV A,NUMBYTE</p><p> MOV R3,A</p><p> LCALL START ;起動(dòng)總線</p><p> MOV A,SLA</p><p> LCALL WRBYTE ;發(fā)送器件從地址 </p><p>
70、 LCALL CACK</p><p> JNB ACK,RETWRN ;無(wú)應(yīng)答則退出</p><p> MOV A,SUBA ;指定子地址 </p><p> LCALL WRBYTE</p><p> LCALL CACK</p><p> MOV R1
71、,#MTD</p><p> WRDA: MOV A,@R1</p><p> LCALL WRBYTE ;開始寫入數(shù)據(jù)</p><p> LCALL CACK</p><p> JNB ACK,IWRNBYTE</p><p><b> INC R1
溫馨提示
- 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ì)報(bào)告--基于單片機(jī)的數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的簡(jiǎn)易數(shù)字電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--基于單片機(jī)的數(shù)字電壓表.doc
- 單片機(jī)課程設(shè)計(jì)----數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)--數(shù)字電壓表
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表課程設(shè)計(jì)
- 基于單片機(jī)的數(shù)字電壓表設(shè)計(jì)-課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易數(shù)字電壓表
- 單片機(jī)(數(shù)字電壓表)課程設(shè)計(jì).rar
評(píng)論
0/150
提交評(píng)論