《MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計》課件第6章_第1頁
《MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計》課件第6章_第2頁
《MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計》課件第6章_第3頁
《MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計》課件第6章_第4頁
《MSP430系列超低功耗單片機原理與系統(tǒng)設(shè)計》課件第6章_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章MSP430系列單片機的應(yīng)用

6.1MSP430系列單片機常用接口設(shè)計

6.2MSP430系列單片機應(yīng)用設(shè)計舉例

習題

6.1MSP430系列單片機常用接口設(shè)計

6.1.1鍵盤接口設(shè)計

1.獨立按鍵式鍵盤獨立按鍵式鍵盤是指使用按鍵與單片機的I/O口線直接連接的方法構(gòu)成的單個按鍵電路,如圖6-1所示,3個獨立按鍵直接與3條口線相連形成3按鍵獨立式鍵盤。當某一按鍵KEYn(n=1~3)閉合時,P1.n輸入為低電平,釋放時P1.n輸入為高電平。由于機械按鍵的彈簧片存在著輕微的彈跳現(xiàn)象,當再按下一次KEYn時,P1.n的輸入波形如圖6-2所示。

圖6-1獨立式鍵盤連接示例

圖6-2按鍵抖動波形

圖6-2中t1和t3分別為鍵閉合和釋放過程的抖動期,呈現(xiàn)一串抖動脈沖波,其時間長短與按鍵的機械特性有關(guān),一般在5~10ms之間。在鍵閉合的穩(wěn)定期t2期間,P1.n為低電平,其時間由操作員按鍵的動作所確定,一般為幾百毫秒至幾秒。t0和t4為按鍵釋放期。為了確保CPU對按鍵的一次閉合僅作一次處理,必須去除抖動,常用的清除抖動的方法有3種:

(1)R-S觸發(fā)器構(gòu)成的去抖動電路;

(2)使用電阻和電容構(gòu)成積分器;

(3)使用軟件延時。

一般的按鍵采用軟件延時方法,鍵盤程序主要有如下3個步驟:

(1)消除按鍵抖動(若使用硬件,則可略);

(2)判斷是哪個按鍵按下,識別鍵碼;

(3)等到按鍵松開。

鍵盤掃描控制有定時查詢法和中斷控制法兩種。因為MSP430的P0,P1,P2等3個8位端口都有中斷能力,建議讀者使用中斷方式,在主程序中須設(shè)置P1口中斷使能。圖6-1的鍵盤連接的示例中斷服務(wù)程序如下:

#include<msp430x44x.h>

unsignedcharkeybuf; //鍵值緩存器

unsignedcharP1key(void) //判鍵子程序

{unsignedcharx;

x=(P1IN&0x0e); //P1.3~P1.1接有按鍵

return(x); //有按鍵返回

}unsignedcharkeycode()//找哪個按鍵被按下,查鍵值子程序

{

unsignedcharx=0x0e;

if((P1IN&0x0e)==0x0c) //是否第一個按鍵被按下

x=1;

//給出鍵帽值1

else

if((P1IN&0x0e)==0x0a)//是否第二個按鍵被按下

x=2;

//給出鍵帽值2

else

if((P1IN&0x0e)==0x06) //是否第三個按鍵被按下

x=3;

//給出鍵帽值3

return(x);

}#pragmavector=PORT1_VECTOR //端口1的中斷服務(wù)程序

_interruptvoidport1_vector(void)

{unsignedinti;

while(P1key()!=0x0e)

{

for(i=0;i<100;i++); //延時消除抖動

}

while(P1key()!=0x0e)

{

keybuf=keycode();//確信有鍵被按下,找按鍵得鍵值

}

while(P1key()==0x0e) //等待按鍵松開

P1IFG=0x00; //消除中斷標志

}

main()

{ WDTCTL=WDTPW+WDTHOLD; //停止看門狗

P1IES|=BIT1+BIT2+BIT3;//對應(yīng)引腳下降沿使相應(yīng)標志置位

P1IE|=BIT1+BIT2+BIT3; //允許對應(yīng)位中斷

_EINT(); //開中斷

P5DIR|=BIT1;

P5OUT&=~BIT1;

while(1)

{//keycode();

switch(keycode())

{case0x0e:break;

case1:_______ //鍵1的處理

case2:_______ //鍵2的處理

case3:_______ //鍵3的處理

}

}

2.矩陣式鍵盤

獨立式按鍵一般都只能應(yīng)用在按鍵用量較少的簡單場合,當系統(tǒng)功能較多,用鍵量較大時就要采用矩陣式鍵盤結(jié)構(gòu)(行列掃描式鍵盤),這樣可使用較少的I/O口線連接較多的按鍵。圖6-3所示為通過MSP430的P1口接的12(3×4=12)個按鍵(編號為1~9、a~c)構(gòu)成的行列掃描式鍵盤示例。下面分析如何在行列掃描式鍵盤上實現(xiàn)鍵盤的3個步驟:判鍵消抖動、鍵碼識別、等待按鍵的松開。

圖6-3矩陣按鍵接口

1)判斷有無按鍵按下

在上圖6-3中,P1口的7條I/O口線被分成三條行線P1.3~P1.1,4條列線P1.7~P1.4,其中列線分別由電阻上拉到電源。按鍵的兩端分別接在行線和列線上,行線與列線的每一個交界處均有一個按鍵。如果有按鍵按下,則與之相連的行線和列線被接通。要想檢測是否有按鍵按下,先使3條行線輸出低電平,讀列線P1.7~P1.4。因所有的列線經(jīng)上拉電阻接至VCC,所以如果有按鍵按下,則讀進來的高4位不是F,與按下按鍵相接的列線讀得的是0;如果沒有按鍵按下,讀進來的高4位是F,由此即可以判斷是否有按鍵被按下。相應(yīng)程序如下:

unsignedcharP1key(void) //判鍵子程序

{unsignedcharx;

x=(P1IN&0xf0);//P1.7~P1.4接有按鍵,另一端接VCC

return(x); //有按鍵返回

}

當使用軟件延時,當檢測到有按鍵按下之后,等待10ms再檢測是否有按鍵被按下。

2)鍵碼識別

對于行列式矩陣鍵盤,常采用掃描的辦法識別鍵碼。通過3條行線輸出低電平,讀列線P1.7~P1.4的辦法來得知是否有按鍵被按下。可以用同樣的方法來確認究竟是哪一個按鍵被按下。

由圖6-3可知,如果3條行線沒有輸出低電平,則盡管有按鍵被按下,從列線讀到高電平。利用這一原理進行分時掃描,在行線上分別掃描輸出低電平,當在某一條列線上讀取到不是“1”時,根據(jù)輸出“0”電平的行線和讀到“0”的列線就可以確定是哪一按鍵被按下了,由此可識別出所按之鍵的鍵位,鍵碼也可以由此得到。

3)等待按鍵松開

與獨立式按鍵一樣,反復調(diào)用鍵號掃描子程序,直到判斷結(jié)果為沒有按鍵按下為止。圖6-3所示矩陣按鍵連接圖的完整的鍵盤掃描子程序如下(供參考):

#include<msp430x44x.h>

unsignedcharkeybuf;

//鍵值緩存器

unsignedcharP1key(void) //鍵掃描子程序

{unsignedcharx;

x=(P1IN&0xf0);

return(x); //有按鍵返回

}

unsignedcharkeycode() //判斷是否有按鍵按下,查鍵掃描子程序

{unsignedcharx=0xff;

P1OUT=0XF7;

if((P1IN&0XF0)==0X70)

//是否第一個按鍵被按下

x=1;

//給出鍵號#1

else

if((P1IN&0XF0)==0XB0)//是否第二個按鍵被按下

x=2; //給出鍵號#2

else

if((P1IN&0XF0)==0XD0)

x=3;

else

if((P1IN&0XF0)==0XE0)

x=0x0a;

else

{P1OUT=0XFB;

if((P1IN&0XF0)==0X70)

x=4;

else

if((P1IN&0XF0)==0XB0)

x=5;

else

if((P1IN&0XF0)==0XD0)

x=6;

else

if((P1IN&0XF0)==0XE0)

x=0x0b;

else

{P1OUT=0XFD;

if((P1IN&0XF0)==0X70)

x=7;

else if((P1IN&0XF0)==0XB0)

x=8;

else

if((P1IN&0XF0)==0XD0)

x=9;

else

if((P1IN&0XF0)==0XE0)

x=0x0c;elsex=0xff;

}

}

return(x);

}

#pragmavector=PORT1_VECTOR

//P1的中斷服務(wù)程序

__interruptvoidport1_vector(void)

{unsignedinti;6.1.2數(shù)字顯示系統(tǒng)設(shè)計

單片機應(yīng)用系統(tǒng)中,使用的顯示器件主要有LED數(shù)碼管(發(fā)光二極管)、LCD液晶顯示器和CRT顯示器。前兩種顯示器成本低廉,配置靈活,與單片機連接方便。本節(jié)主要介紹LED和LCD顯示接口的設(shè)計方法。

1.LED數(shù)碼管顯示接口

LED顯示塊是利用發(fā)光二極管顯示字段的顯示器件。LED顯示塊具有亮度高、結(jié)構(gòu)簡單、全天候的特點,因此在單片機應(yīng)用系統(tǒng)中應(yīng)用最廣。

1)

LED顯示器結(jié)構(gòu)與原理

單片機應(yīng)用系統(tǒng)中通常使用的是七段LED,通常的七段LED顯示塊中有七個發(fā)光二極管構(gòu)成七筆字形“日”與一個發(fā)光二極管為圓點形狀構(gòu)成小數(shù)點組成。這種顯示器有共陰極和共陽極兩種。將發(fā)光二極管的所有正極并接后組成公共端,8個發(fā)光二極管的負極則各自獨立引出,稱為共陽顯示器,如圖6-4(c)所示。當某個字段的負極加低電平時,對應(yīng)的字段就點亮。將8個發(fā)光二極管的負極全部連接在一起組成公共端,8個發(fā)光二極管的正極則各自獨立引出,稱為共陰顯示器,如圖6-4(d)所示。當某個字段的陽極加高電平時,對應(yīng)的字段就點亮。無論何種形式的LED顯示器,它們排列成“日”字形的各個筆畫段和名稱都是相同的,如圖6-4所示,分別為a、b、c、d、e、f、g、h,這些筆畫段的引腳排列也是統(tǒng)一的。

圖6-4LED數(shù)碼顯示器

2)?LED顯示器的顯示方式

在單片機應(yīng)用系統(tǒng)中使用LED顯示塊可以構(gòu)成N位LED顯示器。N位LED顯示器有N根位選線和8?×?N根段選線。根據(jù)顯示方式不同,位選線與段選線的連接方法也不同。段選線控制字符選擇,位選線控制顯示位的亮、暗。

LED顯示器有靜態(tài)和動態(tài)兩種方法。所謂靜態(tài)顯示(如圖6-5所示),是指共陰極或共陽極連接在一起接地或接+5V,每位的段選線(a~dp)與一個8位并行口相連,每一位可獨立顯示,只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。如果要在數(shù)碼管上顯示“1”、“2”、“3”、“4”,則只需要在P1口輸出。

圖6-5靜態(tài)顯示連接

在靜態(tài)顯示中,每一顯示位都需要一個8位的輸出口控制,占用硬件較多,一般僅用于顯示器位數(shù)較少的場合。

動態(tài)顯示(如圖6-6所示)就是一位一位地輪流點亮各位顯示器。在多位LED顯示時,為了簡化電路和降低成本,可將所有位的段選線并聯(lián)在一起,由一個8位I/O口控制,而共陰極點或共陽極點分別由相應(yīng)的I/O口線控制。要想每位顯示不同的字符,必須采用掃描顯示方式。即在每一瞬間只使某一位顯示相應(yīng)字符。顯示位的亮度既跟導通電流有關(guān),也和點亮時間與間隔時間的比例有關(guān)。動態(tài)顯示器因其硬件成本較低,常被使用。

圖6-6動態(tài)顯示連接

3)

LED顯示器接口實例

LED顯示器接口電路實例如圖6-7所示,其中,LED為共陰極數(shù)碼管,P3.0~P3.7既為LED的段選線,又為LED的位選線,通過373鎖存與P4.1、P4.2的選擇來實現(xiàn)。其工作方式為:當P4.1為低電平時,P3.0~P3.7為LED的段選線,依次對應(yīng)LED的a、f、b、g、c、h、d、e;當P4.0為低電平時,P3.0~P3.5為LED的位選線,依次對應(yīng)D5、D4、D3、D2、D1、D0。

圖6-7LED顯示器接口電路

voidDisplay(intx)

{

P3OUT=Digit[x];

P4OUT=0X02;

P4OUT=0X00;

P3OUT=LED3;

P4OUT=0x01;

P4OUT=0X00;

Delay(500);

}

voidmain(void)

{WDTCTL=WDTHOLD+WDTPW;

while(1)

{

P4DIR=0X03;

P3DIR=0XFF;

P3OUT=0X00; //clearalltheledsdisplay

P4OUT=0X02; //dataselectchoose

P4OUT=0X00;

Display(8); //要顯的數(shù)據(jù)

}

}

2.點陣式液晶顯示接口

液晶是一種具有規(guī)則性分子排列的有機化合物。液晶顯示是一種極低功耗的顯示器件,有段式液晶顯示器和點陣液晶顯示器兩種。段式液晶顯示由段型液晶顯示器件和專用集成電路組成,只能顯示數(shù)字和一些標識符號。有些MSP430系列單片機本身就含有段式液晶驅(qū)動模塊,使用起來非常方便,本節(jié)不作介紹。點陣式液晶能以點陣或圖形方式顯示出各種信息,因此在電子設(shè)計中得到了廣泛應(yīng)用。但是,對它的接口設(shè)計必須遵循一定的硬件和時序規(guī)范,不同的液晶顯示驅(qū)動器,可能需要采用不同的接口方式和控制指令才能夠?qū)崿F(xiàn)所需信息的顯示。

點陣式液晶顯示有字符點陣式液晶和圖形全點陣式液晶顯示兩種。典型的字符點陣式液晶顯示器由控制器、驅(qū)動器、字符發(fā)生器ROM、字符發(fā)生器RAM和液晶屏組成。字符由5×7點陣或5×10點陣組成。但是在一些高端應(yīng)用或有圖形顯示要求的系統(tǒng)中,段式液晶顯示屏或字符點陣式液晶顯示器就不再適用了,因為這兩種屏幕只能顯示數(shù)字或一些西文字母,要想顯示中文字或圖形信息,可以采用全點陣圖形液晶顯示器。

全點陣圖形液晶顯示器一般由控制器、驅(qū)動器和全點陣液晶顯示屏組成。對于全點陣圖形液晶顯示器,可以把它看做一張位圖畫布,對于單色屏幕,其上的每一個點,都用一個bit來表示,“1”表示點亮,“0”表示熄滅;對于灰度或彩色屏幕,則一個點用若干bit來表示。下面以香港信利的MSC-G12864DGEB-7N點陣液晶為例,介紹點陣圖形液晶顯示器的設(shè)計。

1)?MSC-G12864DGEB-7N全點陣式液晶顯示芯片簡介

MSC-G12864DGEB-7N是一個帶有LCD驅(qū)動器和控制器的全點陣式液晶顯示芯片,其分辨率是128?×?64,屏幕共64行,分為8頁,每頁8行,每行128列。其內(nèi)部結(jié)構(gòu)如圖6-8所示,該顯示芯片主要由液晶屏陣列驅(qū)動電路KS0108B、點陣式顯示控制器KS0107B、LCD顯示器和LED背光燈等4部分組成。其中KS0107B是公共動芯片,KS0108B是通過它產(chǎn)生的時序控制的。兩片KS0108B是列驅(qū)動及控制芯片,分別控制顯示屏的兩部分。MSC-G12864DGEB-7N共有20個引腳,引腳及其定義如表6-1所示。

表6-1MSC-G12864-7N的引腳說明

圖6-8MSC-G12864DGEB-7N內(nèi)部結(jié)構(gòu)圖

2)?MSC-G12864DGEB-7N工作原理

MSC-G12864DGEB-7N的顯示RAM保存著被顯示內(nèi)容的點陣信息。顯示RAM的每一位對應(yīng)顯示屏上的一個點,總共可以存儲128×64點的信息。通過選擇對應(yīng)的RAM頁地址和列地址,微控制器可以訪問其中的任何一個點。微控制器對MSC-G12864DGEB-7N的顯示RAM的讀/寫操作通過MSC-G12864DGEB-7N的I/O緩沖器進行,并且該讀操作和液晶顯示屏驅(qū)動信號的讀取操作是獨立的,因此,當顯示內(nèi)存的數(shù)據(jù)同時被雙方訪問時,不會出現(xiàn)顯示信息的抖動等現(xiàn)象。CS1和CS2是芯片的片選信號,只有CS1或者CS2選通時,才能實現(xiàn)數(shù)據(jù)的輸入或者輸出,或者指令的執(zhí)行。一旦復位信號有效,則除了讀狀態(tài)其它指令都不能執(zhí)行。當KS0108B正在進行內(nèi)部操作時,忙標志為高。此時KS0108B不再接收任何外部指令和數(shù)據(jù)。反之,當忙標志為低時,KS0108B能夠接收外部指令和數(shù)據(jù)。MSC-G12864DGEB-7N顯示芯片共有7個寄存器,下面依次進行介紹。

(1)輸入寄存器。輸入寄存器用來存儲寫入顯示數(shù)據(jù)前RAM的臨時數(shù)據(jù)。當CS1或者CS2有效時,R/W和RS選擇輸入寄存器,數(shù)據(jù)從微處理器寫入到輸入寄存器,接著寫入到顯示數(shù)據(jù)存儲器。當使能端E下跳沿到來時,數(shù)據(jù)自動鎖存到顯示數(shù)據(jù)存儲器。

(2)輸出寄存器。輸出寄存器存儲的是來自顯示數(shù)據(jù)RAM的臨時數(shù)據(jù)。當片選有效,R/W有效,且D/I為高時,在顯示數(shù)據(jù)RAM中存儲的數(shù)據(jù)被鎖存到輸出寄存器;當片選有效,R/W為高,且D/I為低時,可以讀出存儲的數(shù)據(jù)。要讀顯示數(shù)據(jù)RAM的內(nèi)容,需要兩次讀指令,第一次訪問,顯示數(shù)據(jù)RAM中的數(shù)據(jù)被鎖存到了輸出寄存器中;第二次訪問,微處理器才可以讀到已鎖存的數(shù)據(jù)。其功能表6-2所示。

表6-2輸出寄存器的功能

(3)顯示控制觸發(fā)器。顯示控制觸發(fā)器用于屏幕顯示的開關(guān)控制。當觸發(fā)器復位(邏輯低電平)時,顯示打開,允許段輸出;當觸發(fā)器置位(邏輯高電平)時,顯示關(guān)閉。

顯示控制觸發(fā)器可以通過指令改變狀態(tài),當復位信號有效時,所有端的顯示數(shù)據(jù)都消失,觸發(fā)器的狀態(tài)通過讀指令輸出到DB5。

①X頁寄存器。X頁寄存器用于指定內(nèi)部顯示數(shù)據(jù)RAM頁,它沒有計數(shù)功能,只能通過指令來設(shè)置地址。

②Y地址計數(shù)器。Y地址計數(shù)器用來指定內(nèi)部顯示數(shù)據(jù)RAM的地址,可以通過指令來設(shè)置,也可以通過讀或者寫顯示數(shù)據(jù)來自動進行增1計數(shù)。

③顯示數(shù)據(jù)RAM。顯示數(shù)據(jù)RAM用來存儲液晶顯示器要顯示的數(shù)據(jù)。顯示為“1”,關(guān)閉為“0”。

顯示起始行寄存器。顯示起始行寄存器用來說明顯示數(shù)據(jù)RAM到液晶顯示器的顯示頂行的地址。顯示開始行的數(shù)據(jù)位(DB0~DB5)的設(shè)置指令是由顯示起始行寄存器鎖存的,它用來滾動液晶顯示屏。

3)

MSC-G12864DGEB-7N顯示控制指令

顯示控制指令用來控制KS0108B內(nèi)在的狀態(tài),微處理器發(fā)出的顯示控制指令用來完成KS0108B的顯示控制。

(1)顯示開關(guān)控制(DisplayON/OFF)。顯示開關(guān)設(shè)置如下:

Display:控制顯示的開或者關(guān),不影響內(nèi)部狀態(tài)和顯示RAM的狀態(tài)。

0關(guān)閉顯示;

1打開顯示。

(2)設(shè)置Y地址(SetAddress)。地址設(shè)置如下:

該指令是將(DB5~DB0)送入Y地址寄存器,作為Y地址指針。在對顯示數(shù)據(jù)RAM進行讀/寫操作后,Y地址自動加1,指向下一個顯示數(shù)據(jù)RAM單元。

(3)設(shè)置頁地址(X地址)(SetPage)。頁地址(X地址)設(shè)置如下:

所謂頁地址,也就是顯示數(shù)據(jù)的行地址,8行為一頁,所以64行共8頁。D2~D0表示0~7頁。該指令用來設(shè)置X地址到X地址寄存器。

(4)設(shè)置起始地址(DisplayStartLine)。起始地址設(shè)置如下:

將DB5~DB0送入起始地址寄存器,起始行可以是0~63的任意一行。

(5)讀狀態(tài)(StatusRead)。讀狀態(tài)時各位定義如下:

BUSY:表示顯示器當前的忙閑狀態(tài)。

0準備狀態(tài);

1忙,工作中。ON/OFF:表示顯示器的開閉狀態(tài)。

0開顯示;

1關(guān)顯示。RESET:表示顯示器當前的工作狀態(tài)。

0正常工作;

1復位。

(6)寫顯示數(shù)據(jù)(WriteDisplayData)。寫指令將數(shù)據(jù)(DB7~DB0)寫到顯示數(shù)據(jù)RAM,

Y地址指針自動加1。

(7)讀顯示數(shù)據(jù)(ReadDisplayData)。從顯示數(shù)據(jù)RAM中將數(shù)據(jù)(DB7~DB0)讀到數(shù)據(jù)總線上。

4)?MSC-G12864DGEB-7N液晶顯示屏模塊與MSP430系列單片機的接口

MSC-G12864DGEB-7N可以通過8位雙向數(shù)據(jù)總線(并行模式下)接收來自微控制器的數(shù)據(jù),MSC-G12864DGEB-7N的片選信號端、讀/寫信號端以及控制信號端(D/I)和數(shù)據(jù)線(DB0~DB7)都應(yīng)該同微控制器的對應(yīng)端口進行連接。此時MSC-G12864DGEB-7N內(nèi)部顯示RAM的數(shù)據(jù)以刷新液晶顯示的內(nèi)容,也可以通過數(shù)據(jù)總線讀取顯示內(nèi)存的內(nèi)容。

MSC-G12864DGEB-7N液晶顯示屏模塊與MSP430系列單片機的一般連接方式如圖6-9所示。MSP430的I/O口都是復用端口,因此必須根據(jù)需要設(shè)置引腳的狀態(tài)。其中P3.0和P3.1與

LCD的片選信號CS1、CS2相連,P4.0~

P4.3與LCD的RES、E、R/W和D/I相連,作為LCD的控制線;P2口與DB0~DB7相連,作為LCD的數(shù)據(jù)線。

圖6-9MSP430F149與MSC-G12864-DGEB-7N接口

6.1.3實時時鐘芯片DS1302的接口設(shè)計

1.DS1302的工作原理

DS1302時鐘芯片是一個帶秒、時、分、日、日期、月、年的串行時鐘保持芯片,該芯片具有低功耗工作方式,并能夠進行每月天數(shù)以及閏年的自動調(diào)節(jié)。

DS1302的性能特性如下:

工作電壓:2.0~5.5V。

最大輸入串行時鐘:2.0V時,500Hz;5.0V時,2MHz。

工作電流:2.0V時,小于300nA;5.0V時,至少為1μA。

與TTL電平兼容。

串行I/O口傳送,簡單的3線接口。

兩種數(shù)據(jù)傳送方式:單字節(jié)傳送、多字節(jié)傳送(字符組方式)。

所有寄存器都以BCD碼格式存儲。

DS1302時鐘的運行可以采用24h或帶AM(上午)/PM(下午)的12h格式,只需要3根線與CPU進行同步通信。DS1302的引腳如圖6-10所示,該芯片只有8個管腳,具體功能如下:

X1、X2:外接32kHz晶體的管腳。

GND:接地管腳。

RES:復位/片選線。

I/O:數(shù)據(jù)輸入/輸出管腳。

SCLK:串行時鐘輸入管腳。

VCC1、VCC2:電源管腳,其中VCC1為備用電源管腳。

圖6-10DS1302芯片管腳圖

DS1302有主電源/后備電源雙電源引腳:VCC1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運行方式中,VCC1連接到備份電,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者提供。當VCC2大于VCC1+0.2V時,VCC2給DS1302供電;當VCC2小于VCC1時,VCC1給DS1302供電。

DS1302的控制字如下:

R/W:為1時讀,為0時寫。

A0~A4:指示操作單元地址。

RAM/CK:為1表示存取RAM數(shù)據(jù),為0則表示存取日歷時鐘數(shù)據(jù)。

最高位必須為邏輯1,如果為0,數(shù)據(jù)則寫不進DS1302。

控制字節(jié)總是從最低位開始輸入/輸出。

當命令字節(jié)為1001XXX1時,DS1302設(shè)置在測試模式,這種模式僅為半導體公司測試時使用。

DS1302數(shù)據(jù)讀/寫時序如圖6-11所示,DS1302在任何數(shù)據(jù)輸送時都必須先初始化,即在開始傳送數(shù)據(jù)之前,先把置高。發(fā)送一個帶地址和命令信息的8位命令字,緊跟命令之后,時鐘/日歷數(shù)據(jù)傳至相應(yīng)的寄存器或從相應(yīng)的寄存器傳出(讀)。所有數(shù)據(jù)的輸入在SCLK的上升沿有效,輸出在SCLK的下降沿有效。數(shù)據(jù)傳送有單字節(jié)和多字節(jié)兩種方式。單字節(jié)傳送需要16個SCLK時鐘脈沖,多字節(jié)需要72個SCLK時鐘脈沖,數(shù)據(jù)的輸入/輸出都是從0位開始。如果在數(shù)據(jù)傳送過程中置引腳低電平,則終止本次數(shù)據(jù)傳送,且I/O引腳呈高阻態(tài)。只有在SCLK為低電平時,才能將RST置高電平。

圖6-11DS1302數(shù)據(jù)讀/寫時序

該器件還包括兩個附加位:時鐘停止位(CH)和寫保護位(WP)。這兩位用于控制振蕩器的工作和數(shù)據(jù)能否寫入寄存器。當把寄存器的第7位(時鐘停止位)設(shè)置為1時,時鐘振蕩器停止,DS1302進入低功耗方式;當該位寫入0時,啟動時鐘開始。寄存器的地址和數(shù)據(jù)格式如表6-3所示。

表6-3內(nèi)部寄存器地址和內(nèi)容

CH:時鐘停止位。

CH=0振蕩器工作允許;

CH=1振蕩器停止。

WP:寫保護位。

WP=0寄存器數(shù)據(jù)能夠?qū)懭耄?/p>

WP=1寄存器數(shù)據(jù)不能寫入。

寄存器2的第7位:12/24小時模式轉(zhuǎn)換位。

bit7=024小時模式;

bit7=112小時模式。

寄存器2的第5位:AM/PM定義。

AP=0上午模式;

AP=1下午模式。

2.DS1302接口設(shè)計

DS1302應(yīng)該選用32.768kHz的晶振,電容推薦為6pF。因為振蕩頻率較低,也可以不接電容,對計時精度影響不大。DS1302的外圍電路如圖6-12所示。VCC1管腳在需要使用時,可以外接電池或者充電電容。DS1302工作的時候,在VCC2和VCC1兩個管腳中,選擇電壓高的那個管腳的電源作為工作電源。

圖6-12DS1302的接口電路

需要通過軟件設(shè)計完成對時鐘芯片

DS1302日歷數(shù)據(jù)的獲取。DS1302內(nèi)部有“年、月、日、時、分、秒”等寄存器,也有

RAM。由于DS1302的“年、月、日、時、分、秒”寄存器里面的內(nèi)容是按

BCD編碼進行存儲的,所以在寫程序時需要注意。對DS1302的操作分為單字節(jié)和多字節(jié)操作。單字節(jié)操作時,需要發(fā)送一個命令,再進行一個字節(jié)讀/寫。為了提高處理的效率,可采用連續(xù)讀/寫的多字節(jié)操作,比如連續(xù)讀出“年、月、日、時、分、秒”內(nèi)容,單字節(jié)操作和多字節(jié)操作區(qū)別在于命令不同,并且一次操作的數(shù)據(jù)個數(shù)不同。下面給出圖6-12接口電路的模塊功能程序?qū)嵗?/p>

6.2MSP430系列單片機應(yīng)用設(shè)計舉例

6.2.1單片機應(yīng)用系統(tǒng)方案設(shè)計單片機應(yīng)用系統(tǒng)設(shè)計內(nèi)容與步驟包括總體設(shè)計、功能設(shè)計、可靠性設(shè)計和系統(tǒng)調(diào)試,如圖6-13所示。

圖6-13單片機應(yīng)用系統(tǒng)設(shè)計內(nèi)容與步驟示意圖

1.總體設(shè)計

合理的總體設(shè)計來自于對系統(tǒng)要求的全面分析和實現(xiàn)方法的正確選擇。在對系統(tǒng)要求進行全面分析之后,確定單片機應(yīng)用系統(tǒng)的總體方案,畫出系統(tǒng)的硬件結(jié)構(gòu)框圖和應(yīng)用程序結(jié)構(gòu)框圖。

(1)制定設(shè)計任務(wù)書。設(shè)計者首先應(yīng)對系統(tǒng)的任務(wù)、控制對象、硬件資料和工作環(huán)境作出詳盡而周密的調(diào)查研究,明確各項設(shè)計任務(wù)。在此基礎(chǔ)上對設(shè)計目標、系統(tǒng)功能、處理方案、控制精度、輸入/輸出速度、地址分配、存儲容量、I/O接口和出錯處理等給出明確的定義,制定出完整的設(shè)計任務(wù)書。

(2)建立數(shù)學模型。設(shè)計者在制定好任務(wù)書后,要對測控對象的物理過程和計算任務(wù)進行全面分析,從中抽象出數(shù)學模型,真實客觀地描述測控過程。

(3)總體方案設(shè)計。在設(shè)計任務(wù)書和數(shù)學模型的基礎(chǔ)上,確定系統(tǒng)總體方案,劃分硬件和軟件的任務(wù),完成系統(tǒng)結(jié)構(gòu)設(shè)計。

2.系統(tǒng)功能設(shè)計

1)系統(tǒng)資源的配置

系統(tǒng)資源的配置包括芯片硬件資源的配置和RAM資源的分配。

芯片硬件資源的配置主要包括對端口引腳、中斷源、定時器/計數(shù)器和其它功能部件(如串行口、A/D、PWM、比較器和看門狗等)進行合理配置與設(shè)計。

RAM資源的分配。片內(nèi)RAM用來存放各種變量、標志、堆棧和數(shù)據(jù)處理中的臨時結(jié)果等,片外RAM主要用來存放數(shù)據(jù)塊。如果采用匯編語言編制程序,需要對RAM資源進行有效分配。但是,如果采用高級語言,如C語言編寫程序,則該步驟可省略。

2)系統(tǒng)軟件結(jié)構(gòu)分析與模塊設(shè)計

單片機應(yīng)用系統(tǒng)的軟件設(shè)計,首先應(yīng)能滿足系統(tǒng)的測試、控制要求,其次應(yīng)考慮程序設(shè)計的具體方法和超低功耗設(shè)計的要求。一般為了便于編程和調(diào)試,應(yīng)先進行軟件結(jié)構(gòu)設(shè)計。

軟件結(jié)構(gòu)設(shè)計是進行模塊化編程的準備階段,可以直接根據(jù)功能要求畫出流程圖,或?qū)傮w方案適當分塊,然后再確定各塊的功能,并畫出相應(yīng)的流程圖。流程圖是設(shè)計者對用戶要求和生產(chǎn)工藝過程的表達,應(yīng)該做到結(jié)構(gòu)清晰、嚴謹,既便于編程,也便于閱讀,還可用圖形和文字來對流程圖進行描述和說明。

編寫源程序有效的辦法是以各模塊之間連接關(guān)系最簡為原則,明確各模塊應(yīng)完成的功能,劃分程序模塊,采用模塊化程序設(shè)計。在編程過程中,應(yīng)充分利用單片機指令系統(tǒng)功能強、尋址方式多的優(yōu)點編制出層次清楚、運行速度快、所占內(nèi)存單元少的源程序,并盡量引用成熟的子程序或模塊,這樣會給編程及調(diào)試都帶來很多便利。系統(tǒng)軟件一般包含以下模塊:

(1)自檢模塊,通常安排在主程序中系統(tǒng)上電后執(zhí)行,一般包括:

程序代碼自檢。判斷程序代碼是否改變,如執(zhí)行校驗算法;

數(shù)據(jù)存儲器自檢。進行非破壞性讀/寫校驗,判斷是否正常;

I/O口狀態(tài)自檢。檢查I/O口在待機狀態(tài)下的狀態(tài)是否正常;

其它自檢。檢查A/D通道、D/A通道、顯示器和蜂鳴器等,看是否工作正常。

(2)初始化模塊,通常安排在主程序中系統(tǒng)上電后執(zhí)行,一般包括:

外部硬件初始化。對各種外部芯片設(shè)定明確初始化狀態(tài);

功能部件初始化。對片內(nèi)功能部件設(shè)定明確的初始狀態(tài);

堆棧初始化。設(shè)置堆棧空間,初始化堆棧指針;

變量初始化。為各種變量和指針設(shè)置初始值、默認值;

其它初始化。數(shù)據(jù)區(qū)初始化、時鐘初始化、軟件標志初始化等。

(3)監(jiān)控模塊,其實質(zhì)是保證系統(tǒng)在運行過程中的當前狀態(tài)、各項操作和狀態(tài)的變化是否符合設(shè)計要求,一般可安排在主程序中,也可安排在中斷子程序中。監(jiān)控模塊的任務(wù)有:獲取外部輸入控制的信息,并作相應(yīng)的解釋,如常用的鍵盤操作信息,調(diào)度執(zhí)行相應(yīng)模塊完成預定任務(wù)。遙控操作也可以合并到監(jiān)控模塊中進行解釋執(zhí)行。

(4)顯示模塊,通常可安排在主程序中,也可安排在中斷子程序中,一般包括:

顯示輸出集中處理:將系統(tǒng)所有的顯示輸出全部集中到本模塊中。

顯示數(shù)據(jù)的獲取:通過查詢系統(tǒng)的狀態(tài)信息(狀態(tài)編碼和各種狀態(tài)標志)判斷出應(yīng)該顯示的數(shù)據(jù),在預定的位置找到這些數(shù)據(jù),并將其轉(zhuǎn)換成顯示所需要的格式。

顯示內(nèi)容的刷新:當某顯示內(nèi)容發(fā)生變化時,應(yīng)該定時刷新。

(5)信息采集模塊,通常可安排在主程序中,也可安排在中斷子程序中,一般包括數(shù)字信號的采集、模擬信號的采集、多路信號的采集以及隨機信號的采樣。其中,隨機信號的采樣一般是指由隨機信號產(chǎn)生外部中斷,在該中斷子程序中進行采集。

(6)數(shù)據(jù)處理模塊,通常可安排在主程序中,也可安排在中斷子程序中,一般包括由數(shù)據(jù)的變化范圍和分辨率確定的數(shù)據(jù)格式的選擇、數(shù)據(jù)格式的轉(zhuǎn)換和數(shù)據(jù)的處理過程。

(7)控制決策模塊,通常可安排在主程序中,也可安排在中斷子程序中,在信息采集模塊和數(shù)據(jù)處理模塊之后,信號輸出之前,一般包括:

控制決策模塊的選擇??梢愿鶕?jù)控制對象的特性和系統(tǒng)控制指標的要求來選擇。常用的算法有PID算法和模糊控制算法等。

控制決策模塊的輸出:用來對對象進行邏輯控制(通斷控制、起??刂频?的決策,結(jié)果一般用軟件標志來表示;用來對對象進行程度控制(如溫度控制、流量控制等)的決策,結(jié)果應(yīng)轉(zhuǎn)換成D/A器件對應(yīng)的整形數(shù)據(jù)。

(8)信號輸出模塊,一般包括輸出信號的緩沖、異步?jīng)Q策同步捆綁輸出和按狀態(tài)輸出。

(9)通信模塊,一般包括:

波特率的設(shè)置,與信道質(zhì)量有關(guān),通信雙方共同約定。

通信協(xié)議(結(jié)構(gòu))的設(shè)計,由通信內(nèi)容來決定,一般包括地址碼、幀長、命令碼和數(shù)據(jù)校驗位。

通信緩沖區(qū),其長度應(yīng)該能夠存放下最長幀。工作時和一個指針進行配合,完成一幀數(shù)據(jù)的收發(fā)。

通信過程,如果采用查詢模式,可一次接收或發(fā)送完一幀內(nèi)容。為提高系統(tǒng)效率,最好采用中斷模式,一次中斷只接收或發(fā)送一個字節(jié)。

通信命令的執(zhí)行,最好在監(jiān)控模塊中執(zhí)行。

3.系統(tǒng)可靠性設(shè)計

可靠性是單片機應(yīng)用系統(tǒng)的重要性能指標,由多種因素決定。單片機應(yīng)用系統(tǒng)所在現(xiàn)場的各種干擾是影響可靠性的主要因素。形成干擾的基本要素有三個:

(1)干擾源,指產(chǎn)生干擾的元件、設(shè)備或信號,如雷電、繼電器、電機、高頻時鐘等。

(2)傳播路徑,指干擾從干擾源傳播到敏感器件的通路或媒介。典型的干擾傳播路徑是通過導線的傳導和空間的輻射。

(3)敏感器件,指容易被干擾的對象。如A/D變換器、D/A變換器、單片機、數(shù)字IC、弱信號放大器等。

一般的抗干擾設(shè)計的基本原則有下述五個方面。

1)抑制干擾源

這是抗干擾設(shè)計中應(yīng)該最優(yōu)先考慮和最重要的原則。通常包括:

(1)減小干擾源的du/dt,可通過在干擾源兩端并聯(lián)電容來實現(xiàn)。

(2)減小干擾源的di/dt,可在干擾源回路串聯(lián)電感或電阻以及增加續(xù)流二極管來實現(xiàn)。僅加續(xù)流二極管會使繼電器的斷開時間滯后,增加穩(wěn)壓二極管后繼電器在單位時間內(nèi)可動作更多的次數(shù)。

2)切斷干擾傳播途徑

干擾按傳播途徑可分為傳導干擾和輻射干擾兩類。所謂傳導干擾,是指通過導線傳播到敏感器件的干擾;輻射干擾是指通過空間輻射傳播到敏感器件的干擾。

(1)可以通過在導線上增加濾波器和加隔離光耦來切斷高頻干擾。

(2)增加干擾源與敏感器件的距離,用地線把它們隔離并在敏感器件上加屏蔽罩。

(3)給單片機電源加濾波電路或穩(wěn)壓器,以減小電源噪聲對單片機的干擾。

(4)當單片機的I/O口用來控制電機等噪聲器件時,在I/O口與噪聲源之間應(yīng)加隔離(增加π形濾波電路)。

(5)晶振與單片機引腳盡量靠近,用地線把時鐘區(qū)隔離起來,晶振外殼接地并固定。

(6)數(shù)字地與模擬地要分離,最后在一點接于電源地。

(7)單片機和大功率器件的地線要單獨接地,以減小相互干擾。大功率器件盡可能放在電路板邊緣等。

3)提高敏感器件的抗干擾性能

提高敏感器件的抗干擾性能可以從敏感器件方面考慮,盡量減少對干擾噪聲的拾取,以及從不正常狀態(tài)下盡快恢復。

(1)布線時盡量減少回路環(huán)的面積,以降低感應(yīng)噪聲。

(2)盡可能縮短高頻元器件之間的連線,設(shè)法減少它們的分布參數(shù)和相互間的電磁干擾。易受干擾的元器件不能相互挨得太近,輸入和輸出元件應(yīng)盡量遠離。

(3)布線時,電源線和地線要盡量粗,減少環(huán)路電阻。除減少壓降外,更重要的是降低耦合噪聲,同時,使電源線、地線的走向和數(shù)據(jù)傳遞的方向一致,這樣有助于增強抗噪聲能力。布線時避免90°折線,減少高頻噪聲發(fā)射。

(4)對于單片機閑置的I/O接口,不要懸空,要接地或接電源。其它IC的閑置端在不改變系統(tǒng)邏輯的情況下接地或接電源。

(5)對單片機使用電源監(jiān)控及看門狗電路,可大幅度提高整個電路的抗干擾性能。

(6)在速度能滿足要求的前提下,盡量降低單片機的晶振和選用低速數(shù)字電路。

(7)?IC器件盡量直接焊在電路板上,少用IC插座。

4)采用軟件抗干擾措施

(1)多用查詢代替中斷,把中斷源減到最少。中斷信號線的長度應(yīng)不大于0.1米,以防止誤觸發(fā)感應(yīng)觸發(fā)。

(2)A/D轉(zhuǎn)換采用數(shù)字濾波,如平均法、比較平均法等,以防止突發(fā)性干擾。

(3)在單片機空單元寫上00H,最后放跳轉(zhuǎn)指令到ORG0000H。因干擾程序走飛,可能跳轉(zhuǎn)回去。

(4)開機自檢自診斷,RAM中重要內(nèi)容要分區(qū)存放,經(jīng)常進行比較檢查。

(5)表格參數(shù)放在EPROM中,檢驗和存于最后單元,以防止EPROM內(nèi)容被修改。

(6)加看門狗,軟件走飛可從頭開始。

(7)開關(guān)信號延時去抖動。

(8)通信應(yīng)加奇偶校驗或查詢表決比較等措施,防止通信出錯。

5)利用其它抗干擾措施

(1)變壓器雙隔離措施。變壓器初級輸入端串接電容,初、次級線圈間屏蔽層與初級間電容中心接點接大地,次級外屏蔽層接印制板地,這是硬件抗干擾的關(guān)鍵手段。次級加低通濾波器吸收變壓器產(chǎn)生的浪涌電壓。

(2)通信線用雙絞線,以排除平行互感。

(3)防雷電用光纖隔離最為有效。

(4)A/D轉(zhuǎn)換用隔離放大器或采用現(xiàn)場轉(zhuǎn)換,以減少誤差。

(5)外殼接大地,可解決人身安全及防外界電磁場干擾。

(6)加復位電壓檢測電路,以防止復位不充分CPU就工作,如對E2PROM的器件復位不充分會改變E2PROM的內(nèi)容。

4.系統(tǒng)調(diào)試

單片機應(yīng)用系統(tǒng)需要先進行調(diào)試,然后才能驗證所設(shè)計的硬件和軟件的正確性。調(diào)試時,應(yīng)將硬件和軟件分成幾部分,逐一調(diào)試,各部分均調(diào)試通過后再進行聯(lián)調(diào)。調(diào)試完成后,應(yīng)在實驗室模擬現(xiàn)場條件,對所設(shè)計的硬件、軟件進行性能測定。現(xiàn)場試用時,要對使用情況做詳細記錄,在各種可能的情況下都要做實驗,寫出詳細的試用報告。

6.2.2

數(shù)字溫度測試儀

1.系統(tǒng)總體方案設(shè)計

數(shù)字溫度測試儀的主要功能為檢測并顯示環(huán)境溫度,當溫度超過設(shè)定的警戒值時予以報警。系統(tǒng)性能指標如下:

測溫范圍:-50~110℃。

精度誤差:0.1℃以內(nèi)。

溫度報警設(shè)置:可設(shè)置溫度的上下限報警值,超過最高溫度值和低于最低溫度值引起報警。

該數(shù)字溫度測試儀的實現(xiàn)主要包括5個關(guān)鍵環(huán)節(jié):主控制器、溫度檢測部分、顯示部分、電源、鍵盤和報警電路,如圖6-14所示。

圖6-14數(shù)字溫度測試系統(tǒng)方框圖

1)主控制器

MSP430單片機系列具有多種型號,本系統(tǒng)可以采用MSP430F4270單片機為主控制器。MSP430F4270具有供電電壓低和體積小的特點,其中包括32KBFLASH,256字節(jié)RAM,32個I/O口,56段LCD,SD16位ADC(具有內(nèi)部參考電壓),12位DAC,1個16位Timer_A(3個捕獲/比較寄存器),并具有電源檢測功能,適合便攜手持式產(chǎn)品的設(shè)計使用。其內(nèi)置的LCD驅(qū)動模塊可以直接驅(qū)動LCD段式液晶顯示器的顯示。

2)溫度檢測電路

本系統(tǒng)采用美國DALLAS半導體公司繼DS1820之后最新推出的一種改進型智能溫度傳感芯片DS18B20作為檢測元件,DS18B20的測溫范圍為-55~+125℃,精度為9~12位(與數(shù)據(jù)位數(shù)的設(shè)定有關(guān)),缺省值為12位。如果溫度低于0℃,需取反加1,再乘以0.0625才能求出實際溫度。DS18B20與單片機以串行方式通信。傳輸協(xié)議要求對DS18B20進行一次操作,包括復位、發(fā)一條ROM指令、發(fā)一條RAM指令三步。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)值讀數(shù)方式,可以分別在93.75μs和750μs內(nèi)完成9位和12位的數(shù)字量。溫度變換功率來源于數(shù)據(jù)總線,因而使用DS18B20溫度芯片可使系統(tǒng)結(jié)構(gòu)更趨簡單。

DS18B20溫度傳感器只有三個引腳,其中,引腳1和引腳3分別是GND和VDD,引腳2是DQ端,作為數(shù)據(jù)的輸入/輸出引腳。當給DS18B20加電后,單片機可以通過DQ寫入命令,并可讀出含有溫度信息的數(shù)字量。DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2PRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,頭2字節(jié)包含測得的溫度信息,第3和第4是TH和TL的拷貝,是易失性的,每次上電復位時被刷新。而配置寄存器為高速暫存器中的第5個字節(jié),它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值(見表6-4)。

表6-4DS18B20分辨率的設(shè)置

設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間就越長。因此,在實際應(yīng)用中要在分辨率和轉(zhuǎn)換時間之間權(quán)衡考慮。

DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則該器件內(nèi)的報警標值位置位,并對主機發(fā)出的報警搜索命令作出響應(yīng)。因此可用多只DS18B20同時測量溫度并進行報警搜索。

在使用DS18B20時,主機應(yīng)先向DS18B20發(fā)送復位信號,主機將數(shù)據(jù)線拉低并保持480~960μs,然后再釋放數(shù)據(jù)線,由上拉電阻拉高15~60μs,最后由DS18B20發(fā)出低電平60~240μs,這樣就完成了復位操作。

在主機對DS18B20寫數(shù)據(jù)時,應(yīng)先將數(shù)據(jù)線拉低1μs以上,再寫入數(shù)據(jù)。待主機寫入的數(shù)據(jù)變化15~60μs后,DS18B20將對數(shù)據(jù)線采樣,要求主機寫入數(shù)據(jù)到DS18B20的保持時間應(yīng)為60~120μs。2次寫數(shù)據(jù)操作的間隙應(yīng)大于1μs。

3)顯示與報警電路

顯示電路采用MSP430F4270單片機內(nèi)置的LCD驅(qū)動模塊驅(qū)動外部LCD段碼顯示。LCD的4種驅(qū)動方式中可選用4MUX方式,這樣可以節(jié)省口線以備它用。

由于采用MSP430F4270內(nèi)部集成的LCD顯示驅(qū)動模塊,故LCD顯示非常簡單,只需在軟件中設(shè)置相應(yīng)的控制寄存器,把顯示代碼送入相應(yīng)的LCD緩存寄存器即可。

報警電路可采用簡單的LED發(fā)光二極管報警,通過控制P口的輸出電平,可實現(xiàn)上下限報警功能。

4)鍵盤接口

根據(jù)該系統(tǒng)功能,可以設(shè)置4個按鍵。鍵盤可以通過具有中斷的I/O直接和單片機連接,并通過680kΩ的上拉電阻和3.3V電源相連。利用該I/O口的中斷功能,只有有鍵按下時,P1口相應(yīng)的中斷標志位才置1,并向CPU申請中斷,這時CPU才會在中斷子程序中對按鍵進行處理。

2.系統(tǒng)功能設(shè)計

1)系統(tǒng)資源配置

MSP430F4570內(nèi)部有32KBFLASH程序存儲器,256個SRAM和32個I/O口??刹捎肅語言編寫程序,無須對RAM分配。I/O口分配情況如下:

P1可用于鍵盤接口、DS18B20的接口和上下限報警控制線;

P5口和P2口與S端口復用,作為LCD的段驅(qū)動。

2)系統(tǒng)軟件結(jié)構(gòu)分析與模塊設(shè)計

(1)系統(tǒng)主程序的主要功能:

初始化堆棧、DS18B20、看門狗等;

檢測鍵盤鍵入溫度上下限值;

溫度的采集與處理;

溫度的顯示;

報警控制。

主程序流程圖如圖6-15所示。

圖6-15主程序流程圖

3)部分子程序清單

系統(tǒng)程序主要包括主程序、數(shù)據(jù)處理子程序、顯示子程序、鍵盤子程序等。本例中只給出了有關(guān)溫度部分的程序。

//有關(guān)溫度子程序

voidInit_1820(void)

{

//BEEP_IN;

DS18B20_PORT_OUT&=~DQ;

//Open_Close_18b20(1);

}

intRead_Temp_1820(void)

//讀溫度子程序

{

unsignedchartempL,tempH;

inttemp;

signedchardata;

ow_reset();

write_byte(0xcc); //跳過ROM

write_byte(0x44); //開始轉(zhuǎn)換

delay(5); //延遲(255);

_NOP();

ow_reset();

_NOP();

write_byte(0xcc); //跳過ROM

_NOP();

write_byte(0xbe); //發(fā)出讀命令

tempL=read_byte();

tempH=read_byte();

temp=tempH*256+tempL;

temp=temp*0.625;

data=temp/10;

return(temp);

}

voidwrite_bit(charbitval) //寫一位子程序

{

DQ_OUTPUT;

if(bitval==1)DQ_INPUT;

delay(5);

DQ_INPUT;

}

voidwrite_byte(charval) //寫一個字節(jié)子程序

{

unsignedchari,temp;

for(i=0;i<8;i++)

{

temp=val>>i;

temp&=0x01;

write_bit(temp);

}

delay(5);

}

unsignedcharread_bit(void) //讀一位子程序

{

unsignedshortinti;

unsignedcharh;

DQ_OUTPUT;

DQ_INPUT;

for(i=0;i<1;i++)

_NOP();

_NOP();

h=DS18B20_PORT_IN;

h&=DQ;

return(h);

}

unsignedcharread_byte(void)//讀一個字節(jié)子程序

{

unsignedchari;

unsignedcharvalue=0;

for(i=0;i<8;i++)

{

if(read_bit()!=0)value|=0x01<<i;

delay(6);

}

return(value);

}6.2.3

智能瓦斯測試儀

1.系統(tǒng)總體設(shè)計

智能瓦斯測試儀主要實現(xiàn)可燃氣體CH4濃度的檢測與顯示,當可燃氣體濃度超過所規(guī)定的標準時,能夠報警提示,并且將采集的信息傳送給總系統(tǒng)監(jiān)控平臺。該測試儀實際上是一個典型的數(shù)據(jù)采集系統(tǒng),其性能指標如下:

甲烷測量范圍:0~100%(百分比濃度);

甲烷測量分辨率:1%;

甲烷測量精度:0.2%;

響應(yīng)時間:15s。

該測試儀可以由電源管理控制、數(shù)據(jù)采集、數(shù)據(jù)處理、信息存儲、結(jié)果顯示和報警控制等部分組成。數(shù)據(jù)采集的對象是甲烷氣體的濃度,故選用甲烷傳感器進行物理量的測量,同時選用溫度傳感器采集的現(xiàn)場溫度對該測量值進行補償。該測試儀的系統(tǒng)框圖如圖6-16所示。

圖6-16硬件結(jié)構(gòu)框圖

由氣泵吸入的甲烷氣體的濃度信息通過甲烷傳感器部分的采集,經(jīng)過信號調(diào)理電路對微弱的傳感信號進行調(diào)理放大,送到主控制器進行處理。主控制器主要實現(xiàn)將檢測到的模擬量通過A/D轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字量,經(jīng)過數(shù)字處理之后,送入液晶顯示器進行顯示、報警等一系列操作的控制。溫度傳感器主要完成對環(huán)境溫度的檢測,用于對甲烷氣體濃度的補償。顯示部分可以完成甲烷氣體濃度的顯示、環(huán)境溫度的顯示以及時間的顯示。鍵盤部分完成對一些功能的設(shè)置,如報警的上下限、時間的設(shè)置等。

2.硬件系統(tǒng)設(shè)計

根據(jù)前述總體方案,系統(tǒng)主機可采用MSP430F149單片機,甲烷傳感器可采用邯鄲平安機電研究所生產(chǎn)的JZY4-13礦用型催化燃燒式傳感器。溫度的檢測可采用常用的DS18B20。因為不僅顯示當前的時間,而且還要顯示當前的濃度,所以顯示部分可采用點陣液晶顯示進行濃度顯示。報警裝置可以選用簡單的蜂鳴器和發(fā)光二極管進行濃度超限聲光報警。鍵盤部分可以設(shè)置4個按鍵,分別用作功能選擇與確定,設(shè)置上行、下行顯示和控制電源開關(guān)。

1)主控制器

本系統(tǒng)采用TI公司的MSP430F149單片機,其內(nèi)部資源豐富,存儲容量大,有60KB+256B的閃速存儲器以及2KB的RAM,共64個引腳,采用方形扁平封裝(QFP)。MSP430F149單片機片內(nèi)自帶12位A/D轉(zhuǎn)換器,轉(zhuǎn)換精度高,噪聲小,轉(zhuǎn)換速度快,這樣就可以避免增加額外的A/D轉(zhuǎn)換芯片,即避免使用過多的I/O口,以達到降低成本,縮小體積的目的。單片機片內(nèi)的12位A/D轉(zhuǎn)換器在2.5V滿量程狀態(tài)下,最小分辨電壓U=2.5V/4096=0.6mV,若使用內(nèi)部時鐘,轉(zhuǎn)化時間最大為3.51μs,而使用外部時鐘轉(zhuǎn)換時間

=?13?×?分頻系數(shù)

×?外部時鐘周期。單片機將A/D轉(zhuǎn)換的數(shù)據(jù)經(jīng)過數(shù)字濾波后,一方面送入存儲器,另一方面送到液晶屏顯示。

MSP430單片機片內(nèi)A/D基準有片內(nèi)基準和片外基準兩種選擇。雖然選用片內(nèi)基準就可以不外接基準,減小電路的復雜程度,但因為所需的轉(zhuǎn)換精度較高,而片內(nèi)基準的溫度系數(shù)較大(100ppm/℃),且大于12位A/D的分辨率,所以可以選用精度比較高的片外基準電壓源MC1403。它的輸入電壓VIN在4.5~40V之間,輸出電壓VOUT=2.5V,最大溫度系數(shù)為40ppm/℃,典型值為10ppm/℃,可達到設(shè)計要求。

甲烷氣體的濃度經(jīng)過傳感器采集之后,通過信號調(diào)理轉(zhuǎn)換為0~2.5V的電壓,可直接送入MSP430F149單片機的A/D輸入通道P6口MSP430F149單片機的A/D轉(zhuǎn)換模塊將輸入的模擬量轉(zhuǎn)化為相應(yīng)的數(shù)字量,通過采集到的溫度信息,經(jīng)補償修正處理之后,可以控制液晶顯示器顯示濃度值。同時,單片機還采集時間信息,對當前濃度對應(yīng)的時間信息進行同時顯示,并可通過報警裝置實現(xiàn)超濃度報警。

2)傳感器電路

系統(tǒng)可采用邯鄲平安機電研究所生產(chǎn)的JZY4-13礦用型催化燃燒式傳感器。該傳感器由兩個相同的鉑絲電阻構(gòu)成一端作測量用,另一端密封用作溫度濕度補償,電路采用橋式連接,有效地提高了測量的線性度。該型號傳感器具有高精度高線性度特點,其輸出經(jīng)過儀器調(diào)理電路可產(chǎn)生0~2.5V的標準信號,可滿足MSP430自帶12位ADC的需要。外界氣體濃度與輸出電壓之間基本呈線性關(guān)系,只需簡單補償,同時在氣體標定時較好地解決了精度與量程之間的矛盾。

儀器調(diào)理電路部分可采用電源電壓為3.3V的ICL27L2和ICL27L4低功耗運放,以便能與整個系統(tǒng)的低功耗特性相匹配。橋式變送電路如圖6-17所示。

圖6-17橋式變送電路

3)溫度檢測電路

由于溫度檢測主要用于對測量結(jié)果進行修正,對于提高氣體檢測精度具有十分重要的意義,因此,可以選用具有功耗低、性能穩(wěn)定、轉(zhuǎn)換精度高、外接電路簡單等優(yōu)點的集成溫度傳感器DS18B20對

溫馨提示

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

評論

0/150

提交評論