![電子設(shè)計創(chuàng)新訓(xùn)練(提高)第四章常用典型外設(shè)使用方法與編程技術(shù)1匯編_第1頁](http://file4.renrendoc.com/view/5d63714d964a5671002768ef8da4f40a/5d63714d964a5671002768ef8da4f40a1.gif)
![電子設(shè)計創(chuàng)新訓(xùn)練(提高)第四章常用典型外設(shè)使用方法與編程技術(shù)1匯編_第2頁](http://file4.renrendoc.com/view/5d63714d964a5671002768ef8da4f40a/5d63714d964a5671002768ef8da4f40a2.gif)
![電子設(shè)計創(chuàng)新訓(xùn)練(提高)第四章常用典型外設(shè)使用方法與編程技術(shù)1匯編_第3頁](http://file4.renrendoc.com/view/5d63714d964a5671002768ef8da4f40a/5d63714d964a5671002768ef8da4f40a3.gif)
![電子設(shè)計創(chuàng)新訓(xùn)練(提高)第四章常用典型外設(shè)使用方法與編程技術(shù)1匯編_第4頁](http://file4.renrendoc.com/view/5d63714d964a5671002768ef8da4f40a/5d63714d964a5671002768ef8da4f40a4.gif)
![電子設(shè)計創(chuàng)新訓(xùn)練(提高)第四章常用典型外設(shè)使用方法與編程技術(shù)1匯編_第5頁](http://file4.renrendoc.com/view/5d63714d964a5671002768ef8da4f40a/5d63714d964a5671002768ef8da4f40a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章 常用典型(dinxng)外設(shè)使用方法與編程技術(shù)4-1 常用(chn yn)鍵盤與顯示器接口 單片機(jī)的應(yīng)用越來越廣泛,因此它的接口也是品種繁多,但是從類別上看,也不過是人機(jī)接口、模入模出和開入開出這么幾類。在速度要求不是很高的情況下,從系統(tǒng)的簡潔性考慮,目前MCU的系統(tǒng)中,串行接口的器件獲得了越來越多的應(yīng)用。串行器件的操作目前主要有三種接口標(biāo)準(zhǔn):移位寄存器方式、SPI標(biāo)準(zhǔn)接口和I2C總線。本章將就一些常見的接口類型進(jìn)行一些介紹,主要是討論接口驅(qū)動編程。并口器件的驅(qū)動相對簡單,而且?guī)缀跛械慕涌陬悈⒖紩卸加泻茉敱M的介紹,因此本章不介紹標(biāo)準(zhǔn)并口器件的驅(qū)動,而是側(cè)重于串行器件和簡潔靈活的接口
2、應(yīng)用及編程介紹。共五十九頁一、鍵盤(jinpn)接口驅(qū)動程序設(shè)計 圖4-1 44掃描鍵盤(jinpn)電路 掃描式鍵盤是MCU系統(tǒng)中常用的輸入設(shè)備,本小節(jié)的例子是使用51單片機(jī)的一個八位I/O口設(shè)計一組16鍵的小鍵盤。16鍵的小鍵盤比較常用,采用44方式,市場上甚至有很多成品的薄膜式16鍵盤組出售。見圖4-1是本例的硬件原理圖,采用51的P1口完成鍵盤硬件驅(qū)動。它的檢測原理是:P1.4P1.7作為4行鍵盤的分時低電平驅(qū)動輸出,P1.0P1.3作為4列鍵盤按鍵的輸入檢測。無鍵盤按下時,輸入檢測中P1.0P1.3獲得的結(jié)果是高電平,而有按鍵輸入時,掃描到相應(yīng)按鍵所在行時,列輸出將有低電平存在,根據(jù)
3、輸出和輸入狀態(tài)就可以確定是那個按鍵按下。 共五十九頁 這里需要指出的是,在P1.0P1.3上分別加了10K的上拉電阻,使用目的是輔助上拉,保證無按鍵時輸入高電平。盡管單片機(jī)的P1口有內(nèi)部上拉,但很微弱,當(dāng)鍵盤連接線很短時,可以不加上拉電阻,如果鍵盤連接線比較(bjio)長,容易受到干擾,則需要使用這四只上拉電阻。下面是具體的驅(qū)動程序:/鍵盤(jinpn)掃描函數(shù),無鍵盤(jinpn)返回0,有則返回0 xf00 xff,低4位的0f表示鍵值號,高位標(biāo)示有按鍵。key_scan_dat() unsigned char data I,j,k; unsigned char code k_dat17=
4、0 xe7,0 xd7,0 xb7,0 x77,0 xeb,0 xdb,0 xbb,0 x7b,0 xed,0 xdd,0 xbd,0 x7d,0 xee,0 xde,0 xbe,0 x7e,0 x00;/定義0F共16個鍵的行列掃描結(jié)果,制作鍵值時用,多定義了一個空白符用于非法按鍵判別 P1=0 xff; /準(zhǔn)備掃描,P1口全部輸出高電平 j=0 xf7; /準(zhǔn)備掃描,下一個為P1.4,依次為P1.5、P1.6、P1.7 k=0 x0f /預(yù)置輸入狀態(tài)為無鍵盤,準(zhǔn)備輸入 while(j!=0 x70)&(k=0 x0f) /做P1.4P1.7掃描有按鍵退出,無鍵掃到P1.7后退出 j=j1;
5、 /移到下一個I/O掃描 P1=P1&0 x0f;共五十九頁P(yáng)1=P1|j; /I/O輸出 k=P1&0 x0f; /讀入P1.0P1.3的掃描結(jié)果,只留低4位 if(k=0 x0f) /掃描出口無按鍵,返回0 i=0; else /掃描出口有按鍵,處理 delay(20); /按鍵前沿20ms延時去抖動,delay為ms延時函數(shù) while(P1&0 x0f)!=0 x0f); /等待按鍵抬起 delay(20); /按鍵抬起后,做按鍵后沿20ms去抖動 j=j&0 xf0; j=j|k; /合成行列(hng li)信息,準(zhǔn)備制作鍵值 k=0; while(j!=k_datk)&(k17)
6、/查表做鍵值 k+; if(k=16) /如果查到表尾,則可能是非法的多鍵按下 i=0; /本函數(shù)不支持多鍵同時按下組合操作,返回0 共五十九頁 else i=k|0 xf0; /檢測的鍵是合法(hf)按鍵,返回0 xf00 xff return i; /返回檢測結(jié)果 上面的例子符合模塊化編程原則,能夠返回容易識別和使用的鍵值,它可以嵌入應(yīng)用程序的任何位置來進(jìn)行掃描按鍵。應(yīng)用中需要注意它的調(diào)用頻率,一般來講,人對一個動作的反應(yīng)速度是200ms,所以為保證不至于漏掉按鍵操作,程序中必須保證及時調(diào)用按鍵函數(shù)。還需要指出(zh ch)的是,這個鍵盤函數(shù)不支持多鍵同時操作的定義。這個程序只能夠識別單鍵
7、,不能夠識別組合按鍵。共五十九頁二、LED顯示(xinsh)接口驅(qū)動程序設(shè)計 智能設(shè)備的顯示器目前主要有LED和LCD兩類。LED一般都是采用動態(tài)掃描方式(fngsh)來驅(qū)動。LCD產(chǎn)品有簡單的是段驅(qū)動類數(shù)碼類型顯示板,復(fù)雜的則是內(nèi)置CPU驅(qū)動器的點(diǎn)陣圖形模塊,并且都提供標(biāo)準(zhǔn)的串口或并口邏輯,驅(qū)動簡單,一般廠家都提供51及C的驅(qū)動程序。本小節(jié)主要以LED掃描驅(qū)動和靜態(tài)驅(qū)動設(shè)計為主要內(nèi)容,介紹顯示器的設(shè)計和軟件驅(qū)動程序。(一) 4位LED動態(tài)掃描驅(qū)動程序 設(shè)計要求:使用單片機(jī)的一個8位I/O口設(shè)計一個4位動態(tài)LED顯示接口。單片機(jī)使用標(biāo)準(zhǔn)8051內(nèi)核的芯片,時鐘為12MHz。分析要求,8根I/O
8、口線顯然無法直接完成位和段的掃描驅(qū)動,只能采用比較靈活的接口方案。比較可行的就是采用BCD7段譯碼驅(qū)動器芯片做段掃描驅(qū)動,只需要4根I/O口線,余下4根I/O口做位驅(qū)動。本例使用74LS247芯片作為BCD7段譯碼驅(qū)動器,做為4只共陽LED數(shù)碼管的段驅(qū)動,使用P1.0P1.3做BCD碼輸出。使用P1.4P1.7作為位選通控制,通過4只PNP三極管做LED的位控,具體硬件見圖4-2。共五十九頁圖4-2 4位LED掃描(somio)驅(qū)動接口電路圖 圖中具體參數(shù)是這樣確定的:LED靜態(tài)驅(qū)動段電流應(yīng)該為5mA才能夠達(dá)到足夠亮度,LED位數(shù)比較少時,掃描時也應(yīng)該保持這樣一個平均電流水平,因此4只LED掃
9、描時,每段驅(qū)動電流應(yīng)該為20mA,LED的管壓降為2V,系統(tǒng)電壓為5V,因此段限流電阻應(yīng)該為150。位控制三極管選用C9012,它的值在100倍以上,掃描時LED包括小數(shù)點(diǎn)的8個管芯全亮?xí)r總電流為160mA,因此基極電流應(yīng)該保持1.6mA以上,因?yàn)榛鶚O驅(qū)動電壓為4.3V左右(zuyu),可以計算出基極限流電阻應(yīng)該2.7K以下,這里取2K。共五十九頁 軟件上,使用T0定時器產(chǎn)生2ms的中斷,使用中斷服務(wù)程序做顯示掃描(somio),每次中斷掃描(somio)一位LED,4次中斷掃描(somio)一個周期,整體刷新速度為125Hz。具體驅(qū)動程序如下: #include unsigned int d
10、ata disdat; /定義顯示數(shù)據(jù)變量,為無符號整形unsigned char data discount=0; /定義掃描顯示狀態(tài)變量,為03/T0中斷(zhngdun)函數(shù),2ms間隔,每次掃描一位LED,4個掃描周期循環(huán)掃描4位LED。void t0_int() interrupt 1 TH0=63536/256; /中斷入口重新初始化計數(shù)器 TL0=63536%256; switch (discount) /根據(jù)掃描狀態(tài)計數(shù)器掃描4個LED中的1個 case 0: P1=(disdat/1000)&0 x0f)|0 x70; /掃描顯示千位,送BCD碼和位選信號 break; ca
11、se 1: P1=(disdat%1000)/100)&0 x0f)|0 xb0; /掃描百位 break; case 2: P1=(disdat%1000)%100)/10)&0 x0f)|0 xd0; /掃描十位共五十九頁 break; case 3: P1=(disdat%1000)%100)%10)&0 x0f)|0 xe0; /掃描(somio)個位 break; default: break; discount+; /掃描計數(shù)器移動到下一個狀態(tài) if(discount=4) discount=0;/主函數(shù)初始化部分void main() TMOD=0 x01; TH0=63536/
12、256; TL0=63536%256; EA=1; ET0=1; 共五十九頁 本例軟件相當(dāng)簡潔,但該例有一些應(yīng)用限制,首先是沒有小數(shù)點(diǎn)顯示,如果需要顯示小數(shù)點(diǎn),也只能(zh nn)在硬件上接固定位置的小數(shù)點(diǎn),例如在圖4-2中的LED3的小數(shù)點(diǎn)段上對+5V電源接一個150電阻就可以點(diǎn)亮十位上的小數(shù)點(diǎn)。其次是這個顯示器沒有考慮顯示負(fù)數(shù)的問題,并且它的入口參數(shù)disdat的值不能超過9999。共五十九頁(二) LED靜態(tài)驅(qū)動方法及驅(qū)動程序 在LED顯示應(yīng)用領(lǐng)域中,一般要求控制芯片使用簡單、功能多樣化、多級灰度調(diào)節(jié)、外圍電路精簡可靠、譯碼與功率驅(qū)動于一體。MAX7219是一種集成化的串行輸入(shr)
13、/輸出共陰極顯示驅(qū)動器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個獨(dú)立的LED。其上包括一個片上的B型BCD編碼器、多路掃描回路,段字驅(qū)動器,而且還有一個8*8的靜態(tài)RAM用來存儲每一個數(shù)據(jù)。只有一個外部寄存器用來設(shè)置各個LED的段電流。MAX7219與SPI、QSPI以及 MICROWIRE相兼容,同時它有限制回轉(zhuǎn)電流的段驅(qū)動來減少EMI(電磁干擾)。一個方便的四線串行接口可以聯(lián)接所有通用的微處理器。每個數(shù)據(jù)可以尋址在更新時不需要改寫所有的顯示。 MAX7219/MAX7221同樣允許用戶對每一個數(shù)據(jù)選擇編碼或者不編碼。整個設(shè)備包含一個150A的低功耗關(guān)閉
14、模式,模擬和數(shù)字亮度控制,一個掃描限制寄存器允許用戶顯示1-8位數(shù)據(jù),還有一個讓所有LED發(fā)光的檢測模式。當(dāng)使用多于8位LED時,只需將N片級聯(lián),便可輕松實(shí)現(xiàn)N8位LED顯示。當(dāng)N8時,應(yīng)考慮到提高總線驅(qū)動能力。 共五十九頁引腳名稱功 能1DIN串行輸入。當(dāng)LOAD為高電平,串行輸入數(shù)據(jù)的最后16位被鎖定12LOAD裝載數(shù)據(jù)輸入。在CLK的下降沿,數(shù)據(jù)被加載到內(nèi)部16位移位寄存器中13CLK時鐘輸入。最高頻率為10MHz。在CLK的上升沿,數(shù)據(jù)被移入到內(nèi)部移位寄存器中。在CLK的下降沿,數(shù)據(jù)從DOUT輸出。24DOUT串行數(shù)據(jù)輸出。輸入到DIN的數(shù)據(jù)在16.5個時鐘周期后在DOUT端有效,用于
15、N片級聯(lián)。18ISET通過一個電阻(RSET )連接到V,用于設(shè)定段電流。19V+供電電源4,9GND供電電源2,3,58,10,11DIG078位數(shù)據(jù)驅(qū)動線,它從顯示器吸入電流1417,2023SEGAG,DP7段數(shù)碼和小數(shù)點(diǎn)線,它供給顯示器源電流圖4-3 MAX7219引腳表4-1 MAX7219引腳功能表共五十九頁圖4-4 MAX7219內(nèi)部結(jié)構(gòu)原理圖共五十九頁圖4-5 MAX7219操作(cozu)時序圖共五十九頁詳細(xì)描述(一)MAX7219硬件特點(diǎn) (1):MAX7219的段驅(qū)動有上升速度限制,可以減少EMI; (2):MAX7219的串行口和SPI完全兼容。(二)串行地址格式 對M
16、AX7219來說,串行數(shù)據(jù)在DIN輸入16位數(shù)據(jù)包,無論LOAD端處于(chy)何種狀態(tài),在時鐘的上升沿數(shù)據(jù)均移入到內(nèi)部16位移位寄存器。然后數(shù)據(jù)在LOAD/的上升沿被載入數(shù)據(jù)寄存器或控制寄存器。LOAD/端在第16個時鐘的上升沿同時或之后,下個時鐘上升沿之前變?yōu)楦唠娖?,否則數(shù)據(jù)將會丟失。在DIN端的數(shù)據(jù)傳輸?shù)揭莆患拇嫫髟?6.5個時鐘周期之后出現(xiàn)在DOUT端。數(shù)據(jù)位標(biāo)記為D0-D15(如表4-2表示)。D8-D11為寄存器地址位。D0-D7為數(shù)據(jù)位。D12-D15為無效位。D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0地址MSB 數(shù)據(jù) LSB表4-2 MAX72
17、19串行數(shù)據(jù)格式共五十九頁表4-3 數(shù)據(jù)(shj)寄存器與控制寄存器表共五十九頁 理論上,只使用3根I/O口即可進(jìn)行多片MAX7219的級聯(lián),具體芯片數(shù)量只受片選與時鐘端的總并聯(lián)電容限制。采用級聯(lián)的方法(fngf),可以驅(qū)動大量的LED。 但是級聯(lián)數(shù)量越大,驅(qū)動所需要的時間越長,因此在實(shí)際使用中,需要對驅(qū)動速度、驅(qū)動目標(biāo)的數(shù)量及所使用的I/O口進(jìn)行折中設(shè)計。下面的例子是擴(kuò)展兩片MAX7219,但不是采用級聯(lián)的方法,而是僅二組顯示器公用時鐘和片選,數(shù)據(jù)輸入采用獨(dú)立輸入端。這樣,每擴(kuò)展一個芯片需要增加一根I/O的開銷,速度基本不降低。共五十九頁圖4-6 MAX7219靜態(tài)(jngti)驅(qū)動原理圖A
18、共五十九頁圖4-7 MAX7219靜態(tài)(jngti)驅(qū)動原理圖B共五十九頁/顯示函數(shù).二組顯示器公用時鐘和片選(鎖存控制).第1,2組為MAX7219./顯示函數(shù)1,對第1,2組顯示器,僅輸入一組信息,可以是命令(mng lng)或者數(shù)據(jù).void display0(unsigned char add,unsigned char dat1,unsigned char dat2)unsigned char data i; sclk=0; cs=0; for(i=0;i8;i+) din1=(addi)&0 x80; /從最高位取第一組顯示器傳送數(shù)據(jù) din2=(addi)&0 x80; sclk
19、=1; sclk=0; for(i=0;i8;i+) din1=(dat1i)&0 x80; /從最高位取第一組顯示器傳送數(shù)據(jù) din2=(dat2i)&0 x80; sclk=1; sclk=0; 共五十九頁 cs=1; din1=1; din2=1; sclk=1;/顯示系統(tǒng)初始化函數(shù)void display_init() display0(0 x0f,0 x00,0 x00); /7219進(jìn)入工作模式 display0(0 x0c,0 xff,0 xff); /上電工作狀態(tài) display0(0 x0b,0 x07,0 x07); /允許8個LED全部工作 display0(0 x0a,
20、0 x05,0 x05); /設(shè)定(sh dn)掃描電流占空比 display0(0 x09,0 x00,0 x00); /工作在非譯碼狀態(tài)/顯示函數(shù)2,將全部顯示器刷新.循環(huán)調(diào)用顯示函數(shù)1.默認(rèn)使用顯示緩沖區(qū)displaybuf1,2/數(shù)組.實(shí)際上調(diào)用8次. 調(diào)用前,顯示緩沖區(qū)已經(jīng)送好段碼(芯片采用非七段譯碼).void display()unsigned char data i; for(i=0;i8;i+) display0(i+1,displaybuf1i,displaybuf2i); 共五十九頁4-2 MCU常用外圍串行接口器件(qjin)驅(qū)動程序設(shè)計 IMP705/706/707/
21、708和IMP813L等CMOS監(jiān)控電路能監(jiān)控電源及電池電壓(diny)和P/C的工作狀況。當(dāng)電源電壓降至4.65V以下(IMP705/707/813L)或4.40V以下(IMP706/708)時,即產(chǎn)生復(fù)位。該系列產(chǎn)品能提供多種功能。每個器件在上電、掉電期間及在電壓降低的情況下可產(chǎn)生一個復(fù)位信號。此外,IMP705/706/813L帶有一個1.6秒的看門狗定時器。IMP707/708雖然無看門狗功能,但是同時具有高電平有效和低電平有效的復(fù)位輸出,IMP813L的引腳和功能與IMP705相同但只具有高電平有效的復(fù)位輸出。具有1.25V門限的電源故障報警電路可用于檢測電池電壓和非5V的電源。所有
22、器件都具有手動復(fù)位(MR)輸入??撮T狗定時器的輸出如果連接至MR將會觸發(fā)復(fù)位信號。所有器件都具有8腳DIP、SO和MicroSO封裝。一、MCU系統(tǒng)監(jiān)控芯片IMP705/706/707/708和IMP813L共五十九頁系列芯片特點(diǎn):l 可替換Maxim公司的MAX705/6/7/8及MAX813Ll 精確的電源監(jiān)控 4.65V門限(IMP705/707/813L) 4.40V門限(IMP706/708)l 去抖動的手動復(fù)位輸入l 電壓監(jiān)控 1.25V門限 電池(dinch)監(jiān)控/輔助電源監(jiān)控l 看門狗定時器(IMP705/706/813L)l 200ms復(fù)位脈沖寬度l 高電平有效的復(fù)位輸出(I
23、MP707/708/813L)共五十九頁圖4-8 監(jiān)控(jin kn)芯片內(nèi)部工作原理圖共五十九頁二、EEPROM存儲器芯片(xn pin)93C46/56/66 AT93C46/56/66是ATMEL公司推出的低功耗、低電壓電可擦除的可編程只讀存儲器。它采用CMOS技術(shù)和Fairchild Semiconductor 公司的Mi-croWire工業(yè)標(biāo)準(zhǔn)線串行接口,具有1KB/2KB/4KB的容量,并可通過ORG管腳配置成1288/2568/5128或6416/12816/25616等結(jié)構(gòu)。該系列存儲器可靠性高,能夠重復(fù)寫100萬次,數(shù)據(jù)可以保存100年不丟失;采用8腳PDIP/SOIC封裝和
24、14腳SOI封裝(SOI封裝為JEDEC和EIAJ標(biāo)準(zhǔn)),與并行的EEPROM相比,AT93C46/56/66可大大節(jié)省印制板空間(kngjin),且接線簡單,因而在多功能的精密測試儀器中具有廣闊的前途。 圖4-9AT93C46/56/66引腳排列共五十九頁引腳符號功能1CS片選信號:高電平有效,低電平時進(jìn)入等待模式。在連續(xù)的指令之間,CS信號必須持續(xù)至少250ns的低電平,才能保證芯片正常工作。2CLK串行時鐘信號:在CLK的上升沿,操作碼、地址和數(shù)據(jù)位進(jìn)入器件或從器件輸出。在發(fā)送序列時,CLK最好不停止,以防止讀寫數(shù)據(jù)的錯誤。3DI串行數(shù)據(jù)輸入:可在CLK的同步下輸入開始位、操作碼、地址位
25、和數(shù)據(jù)位。4DO串行數(shù)據(jù)輸出:在CLK同步下讀周期時,用于輸出數(shù)據(jù);而在地址擦寫周期或芯片擦寫周期時,該端用于提供忙閑信息。5VSS接地6VCC接5V電源7ORG該存貯器構(gòu)造配置端:接VCC或懸空時,輸出為16位;接GND時,輸出為8位8NC空腳不連接表4-4 93C46引腳功能表共五十九頁硬件特點(diǎn):1、低的操作電壓和保持電壓 (1)2.7V版本(2.7Vto5.5V); (2)1.8V版本(1.8Vto5.5V);2、接口 3線串行;3、操作速度 2MHz時鐘;4、寫入時間 10ms最大;5、數(shù)據(jù)(shj)保存時間 100年;6、封裝形式 8-lead PDIP;8-lead JEDEC a
26、nd EIAJ SOIC;8-lead TSSOP;共五十九頁圖4-10 AT93C46/56/66內(nèi)部(nib)結(jié)構(gòu)圖共五十九頁指令起始位操作碼地址位數(shù)據(jù)位備 注*8*16*8*16READ110An AoAn Ao空空從指定的單元讀數(shù)EWEN10011xxxxx11xxxx空空允許寫指令ERASE111AnAoAn-1Ao空空擦除指定單元WRITE101AnAoAn-1AoD7D0D15D0寫入存儲單元ERAL10010 xxxxx10 xxxx空空擦除存儲器所有單元WRAL10001xxxx01xxxxD7D0D15D0寫入存儲器所有單元EWDS10000 xxxxx00 xxxx空空禁
27、止寫指令表4-5 93C46操作(cozu)指令表共五十九頁各指令的具體含義如下:1) 擦寫允許指令(EWEN)由于在上電復(fù)位后AT93C46/56/66首先將處于擦寫不允許狀態(tài),故該指令必須在所有編程模式前執(zhí)行,一旦該指令執(zhí)行后,只要外部沒有斷電就可以對芯片進(jìn)行編程。2)地址擦指令(ERASE)該指令用于強(qiáng)迫指定地址中所有數(shù)據(jù)位都為“1”。一旦信息在DI端上被譯碼,就需使CS信號保持至少250ns的低電平,然后將CS置為高電平,這時,DO端就會指示“忙”標(biāo)志。DO為“”,表示(biosh)編程正在進(jìn)行;DO為“”,表示(biosh)該指定地址的寄存器單元已擦完,可以執(zhí)行下一條指令。3) 地址
28、寫指令(WRITE)寫指令時,先寫地址,然后將16位或位的數(shù)據(jù)寫入到指定地址中。當(dāng)DI端輸出最后一個數(shù)據(jù)位后,在CLK時鐘的下一個上升沿以前,CS必須為低,且需至少保持250ns,然后將CS置為高電平。需要說明的是:寫周期時,每寫一個字節(jié)需耗時4ms。4) 地址讀指令(READ)讀指令用于從指定的單元中把數(shù)據(jù)從高位到低位輸出至DO端,但邏輯“0”位先于數(shù)據(jù)位輸出。讀指令在CLK的上升沿觸發(fā),且需經(jīng)過一段時間方可穩(wěn)定。為防止出錯,建議在讀指令結(jié)束后,再輸出23個CLK脈沖。5) 芯片擦指令(ERAL)該指令可將整個存貯器陣列置為1,其它功能與地址擦指令相同。6) 芯片寫指令(WRAL)該指令可將
29、命令中指定的數(shù)據(jù)寫入整個存貯器陣列,其它功能與地址寫指令相同。該指令周期所花費(fèi)時間的最大值為30ms。7) 擦寫禁止指令(EWDS)使用該指令可對寫入的數(shù)據(jù)進(jìn)行保護(hù),操作步驟與擦寫允許指令相同。共五十九頁圖4-11 93C46讀時序(sh x)圖4-12 93C46寫時序(sh x)共五十九頁/*寫入命令驅(qū)動函數(shù),說明:通用(tngyng)前置輸入,例如用于EWEN(30H),EWDS(00H)等命令,也可以用于通用(tngyng)讀寫的前*/*置地址及命令輸入,調(diào)用后需要拉低CS*/void eeprom_com(command)unsigned char command; unsigned
30、 char data i; eeprom_clk=0; eeprom_cs=1; eeprom_di=1; /*首先寫入1位1*/ eeprom_clk=1; eeprom_clk=0; bb=command; /*bb為全局bdata型unsigned char變量*/ i=8; while(i!=0) eeprom_di=bb_7; /*對bb字節(jié)最高位進(jìn)行位尋址*/ eeprom_clk=1; eeprom_clk=0; bb=bb8; /*bb1是準(zhǔn)備寫入的字節(jié),先送高8位.*/ i=8; while(i!=0) bb=bb1; /*bb是輸出的數(shù)據(jù).*/ eeprom_di=bb1_
31、7; eeprom_clk=1; bb1=bb11; bb_0=eeprom_do; eeprom_clk=0; i-; 共五十九頁 x=bb; x=x8; bb1=word; i=8; while(i!=0) bb=bb1; eeprom_di=bb1_7; eeprom_clk=1; bb1=bb11; bb_0=eeprom_do; eeprom_clk=0; i-; y=bb; x=x+y; eeprom_cs=0; dealy(15); /*延時15MS以上,防止(fngzh)寫未結(jié)束*/ eeprom_com(0 x00); /*寫禁止*/ eeprom_cs=0; eeprom_
32、clk=1; eeprom_di=1; return(x);共五十九頁三、X5045芯片應(yīng)用(一) 器件功能 內(nèi)含EEPROM的MCU(微處理器)監(jiān)控芯片X5045將四項(xiàng)功能合于一體:上電復(fù)位(f wi)控制、看門狗定時器、降壓管理以及具有塊保護(hù)功能的串行4KBit EEPROM(5128 Bit)。它有助于簡化應(yīng)用系統(tǒng)的設(shè)計,減少印刷線路板的占用面積,提高可靠性。 圖4-13 X5045的引腳排列(pili) 上電及掉電檢測為CPU提供可靠的電源波動保護(hù);三種可選的看門狗溢出時間能夠適應(yīng)不同反應(yīng)速度的系統(tǒng),一旦設(shè)定,掉電后依然有效。共五十九頁(二)操作過程1) 上電復(fù)位 當(dāng)器件通電并超過VT
33、RIP時,X5045內(nèi)部的復(fù)位電路將會提供一個約為200mS的復(fù)位脈沖,讓微處理器能夠正常復(fù)位。2) 降壓檢測 工作過程中,X5045檢測VCC 端的電壓下降,并且在VCC 電壓跌落到 VTRIP以下時產(chǎn)生一個復(fù)位脈沖,這個復(fù)位脈沖一直有效,直到VCC 降到1V以下在此過程中保證MCU處于復(fù)位狀態(tài),避免出現(xiàn)不可預(yù)知的錯誤操作。如果VCC 在降落到VTRIP后上升,則在VCC 超過 VTRIP后延時約200ms,復(fù)位信號消失,使得微處理器可以繼續(xù)工作。3) 看門狗定時器 看門狗定時器電路監(jiān)測WDI的輸入來判斷微處理器是否正常工作,在設(shè)定的定時時間以內(nèi)微處理器必須在WDI引腳上產(chǎn)生一個由高至低的電
34、平變化,否則X5045將產(chǎn)生一個復(fù)位信號??赏ㄟ^狀態(tài)寄存器的控制位WD1、WD0設(shè)置看門狗定時器的溢出時間。4) SPI串行編程EEPROM 該芯片內(nèi)的串行EEPROM是具有Xicor公司的塊鎖保護(hù)CMOS串行4KBit EEPROM(5128 Bit), 其擦寫周期至少有1000000次,并且寫好的數(shù)據(jù)能夠保存100年。芯片控制的指令被組織成一個字節(jié)(8bit),它由一個由四線構(gòu)成的SPI總線方式進(jìn)行(jnxng)操作。共五十九頁引腳符號功能描述1CS/WDI作為片選,必須要有一個高變低的過程,操作結(jié)束后,在變?yōu)楦?。看門狗輸入:在看門狗定時器超時并產(chǎn)生復(fù)位之前,一個加在WDI引腳上的由高變低
35、的電平變化將復(fù)位看門狗定時器。2SO串行輸出:SO是一個推/拉串行數(shù)據(jù)引腳,在讀數(shù)據(jù)時,數(shù)據(jù)在SCK脈沖的下降沿由這個引腳送出。3WP為低的時候,禁止X25045中寫的操作;為高時,允許寫,為硬件寫允許控制端。4VSS電源地5SI串行輸入:SI是串行數(shù)據(jù)輸入端,指令碼、地址、數(shù)據(jù)都通過這個引腳進(jìn)行輸入,在SCK的上升沿進(jìn)行數(shù)據(jù)的輸入,并且高位MSB在前。6SCK串行時鐘:串行時鐘的上升沿通過SI引腳進(jìn)行數(shù)據(jù)的輸入,下降沿通過SO引腳進(jìn)行數(shù)據(jù)的輸出。7RESET復(fù)位輸出端,由于這是一個開漏型的輸出引腳,所以在使用時必須接上拉電阻。8VCC正電源,5V或者2.7V。表4-6 X5045引腳功能表共
36、五十九頁圖4-14 X5045與8051連接(linji)圖共五十九頁(三) X25045與單片機(jī)接口應(yīng)用 MCU(微處理器)監(jiān)控(jin kn)芯片X5045同AT89C51單片機(jī)接口的硬件電路連接方法如圖4-14所示。 因X5045的RESET端為開漏輸出,需通過10K的上拉電阻與AT89C51的RST端相連,以確保微處理器能夠正常復(fù)位。X25045的WP端通??山痈唠娖剑╒CC),為確保系統(tǒng)無誤操作,可將WP端與MCU的某一I/O口(如圖中P1.4)相連,僅在向X5045進(jìn)行寫操作時將WP端置“1”,否則均將WP置“0”。另外因?qū)5045的讀、寫操作不是同時進(jìn)行的,因此X5045的SI
37、、SO端可公用MCU的一個I/O口(如SI、SO均與P1.2相連接),這樣可節(jié)省MCU的一個I/O口。由于AT89C51的P1口為準(zhǔn)雙向口,因此,為了防止數(shù)據(jù)錯位,在向其P1口寫數(shù)據(jù)時,必須先將P1口置“1”。共五十九頁/x5045子程序:/在實(shí)際硬件設(shè)計中可以將ep_wip腳接高電平,可以將輸入與輸/出共用I/O/向5045中寫入數(shù)據(jù)函數(shù)void xinput(unsigned char v)unsigned char data v1; for(v1=0;v18;v1+) ep_sck=0;/拉低時鐘 ep_si=v&0 x80;/送出一位數(shù)據(jù) ep_sck=1;/拉高時鐘觸發(fā)移位(y wi
38、)寄存器 v=v1;/準(zhǔn)備輸出下一位 ep_si=1; /輸入置1,當(dāng)輸入與輸出公用I/O時為輸入做準(zhǔn)備.共五十九頁/數(shù)據(jù)的讀出函數(shù)/輔助函數(shù):從x5045輸入一個字節(jié)(z ji)8位數(shù)據(jù),首先輸出高位.unsigned char xout()unsigned char data v1,x,y; ep_sck=0;/拉低時鐘 for(v1=0;v18;v1+) ep_sck=1;/拉高時鐘x=x1;/輸出字節(jié)先左移 y=ep_so;/獲得一位輸出x=x|y;/組裝輸出結(jié)果 ep_sck=0; return x;共五十九頁/輔助函數(shù):寫結(jié)束(jish)測試void wip_poll() unsi
39、gned char data v;doep_cs=1;ep_cs=0;xinput(0 x05);/準(zhǔn)備讀狀態(tài)寄存器v=xout();ep_cs=1;v=v&0 x01; while(v=1); /測試寄存器低位,為零則寫結(jié)束共五十九頁/輔助函數(shù):打開寫開關(guān),所有寫操作前必須運(yùn)行本程序(chngx),命令字為06Hvoid wren() /ep_wip=1;/打開硬件寫開關(guān)ep_cs=1;ep_cs=0;xinput(0 x06);/發(fā)出打開開關(guān)命令ep_cs=1;/輔助函數(shù):關(guān)閉寫開關(guān),所有寫操作后必須運(yùn)行本程序,以防止誤寫,命令字為04Hvoid wrdi()ep_cs=1;ep_cs=0
40、;xinput(0 x04);ep_cs=1; /ep_wip=0;/關(guān)閉硬件寫控制I/O共五十九頁/說明:寫狀態(tài)寄存器,包含WREN_CMD命令./功能:改變塊鎖定(su dn)控制位BL1,BL0(D3,D2)及看門狗超時控制/位WD1,WD0(D5,D4)./ 狀態(tài)寄存器位 狀態(tài)寄存器位 看門狗超時周期/被鎖定的地址 / BL1 BL0 WD1 WD0 (典型值) / 0 0 無 0 0 1.4 秒 / 0 1 180H-1FFH 0 1 600毫秒 / 1 0 100H-1FFH 1 0 200毫秒 / 1 1 000H-1FFH 1 1 禁止 /共五十九頁/輔助函數(shù):寫狀態(tài)寄存器,包含WREN_CMD命令./功能:改變塊鎖定(su dn)控制位BL1,BL0(D3,D2)及看門狗超時控制位WD1,WD0(D5,D4)void
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年供水設(shè)施建設(shè)協(xié)議書
- 2025年緊急出口門采購合同
- 2025年午休時段兒童看護(hù)服務(wù)協(xié)議
- 兒童領(lǐng)養(yǎng)程序指導(dǎo)協(xié)議
- 2025年產(chǎn)品市場分隔協(xié)議范本
- 2025年防水建材項(xiàng)目立項(xiàng)申請報告模板
- 2025年公共場所消防設(shè)施供應(yīng)及維護(hù)合同
- 2025年同心同行策劃合作框架協(xié)議
- 2025年醫(yī)療用品分銷合作伙伴協(xié)議范例
- 2025年共同策劃長遠(yuǎn)發(fā)展協(xié)同計劃協(xié)議書標(biāo)準(zhǔn)樣式
- DL-T 2574-2022 混流式水輪機(jī)維護(hù)檢修規(guī)程
- 《鋼鐵是怎樣煉成的》讀書分享課件
- 思想旗領(lǐng)航向心得體會
- 計算機(jī)軟件確認(rèn)控制程序
- 造價員安全生產(chǎn)責(zé)任制
- 橋梁樁基專項(xiàng)施工方案-
- 高中生物競賽課件 【知識精研+拓展提升】 細(xì)胞生物學(xué)
- 農(nóng)產(chǎn)品食品檢驗(yàn)員二級技師職業(yè)技能鑒定考試題庫(含答案)
- 工廠車間劃線標(biāo)準(zhǔn)與標(biāo)識管理(共37張PPT)
- 完整版人教版PEP英語四年級下冊全冊課件ppt
- 水利工程建設(shè)管理概述課件
評論
0/150
提交評論