




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章MSP430系列單片機(jī)的應(yīng)用
6.1MSP430系列單片機(jī)常用接口設(shè)計(jì)
6.2MSP430系列單片機(jī)應(yīng)用設(shè)計(jì)舉例
習(xí)題
6.1MSP430系列單片機(jī)常用接口設(shè)計(jì)
6.1.1鍵盤接口設(shè)計(jì)
1.獨(dú)立按鍵式鍵盤獨(dú)立按鍵式鍵盤是指使用按鍵與單片機(jī)的I/O口線直接連接的方法構(gòu)成的單個(gè)按鍵電路,如圖6-1所示,3個(gè)獨(dú)立按鍵直接與3條口線相連形成3按鍵獨(dú)立式鍵盤。當(dāng)某一按鍵KEYn(n=1~3)閉合時(shí),P1.n輸入為低電平,釋放時(shí)P1.n輸入為高電平。由于機(jī)械按鍵的彈簧片存在著輕微的彈跳現(xiàn)象,當(dāng)再按下一次KEYn時(shí),P1.n的輸入波形如圖6-2所示。
圖6-1獨(dú)立式鍵盤連接示例
圖6-2按鍵抖動(dòng)波形
圖6-2中t1和t3分別為鍵閉合和釋放過(guò)程的抖動(dòng)期,呈現(xiàn)一串抖動(dòng)脈沖波,其時(shí)間長(zhǎng)短與按鍵的機(jī)械特性有關(guān),一般在5~10ms之間。在鍵閉合的穩(wěn)定期t2期間,P1.n為低電平,其時(shí)間由操作員按鍵的動(dòng)作所確定,一般為幾百毫秒至幾秒。t0和t4為按鍵釋放期。為了確保CPU對(duì)按鍵的一次閉合僅作一次處理,必須去除抖動(dòng),常用的清除抖動(dòng)的方法有3種:
(1)R-S觸發(fā)器構(gòu)成的去抖動(dòng)電路;
(2)使用電阻和電容構(gòu)成積分器;
(3)使用軟件延時(shí)。
一般的按鍵采用軟件延時(shí)方法,鍵盤程序主要有如下3個(gè)步驟:
(1)消除按鍵抖動(dòng)(若使用硬件,則可略);
(2)判斷是哪個(gè)按鍵按下,識(shí)別鍵碼;
(3)等到按鍵松開(kāi)。
鍵盤掃描控制有定時(shí)查詢法和中斷控制法兩種。因?yàn)镸SP430的P0,P1,P2等3個(gè)8位端口都有中斷能力,建議讀者使用中斷方式,在主程序中須設(shè)置P1口中斷使能。圖6-1的鍵盤連接的示例中斷服務(wù)程序如下:
#include<msp430x44x.h>
unsignedcharkeybuf; //鍵值緩存器
unsignedcharP1key(void) //判鍵子程序
{unsignedcharx;
x=(P1IN&0x0e); //P1.3~P1.1接有按鍵
return(x); //有按鍵返回
}unsignedcharkeycode()//找哪個(gè)按鍵被按下,查鍵值子程序
{
unsignedcharx=0x0e;
if((P1IN&0x0e)==0x0c) //是否第一個(gè)按鍵被按下
x=1;
//給出鍵帽值1
else
if((P1IN&0x0e)==0x0a)//是否第二個(gè)按鍵被按下
x=2;
//給出鍵帽值2
else
if((P1IN&0x0e)==0x06) //是否第三個(gè)按鍵被按下
x=3;
//給出鍵帽值3
return(x);
}#pragmavector=PORT1_VECTOR //端口1的中斷服務(wù)程序
_interruptvoidport1_vector(void)
{unsignedinti;
while(P1key()!=0x0e)
{
for(i=0;i<100;i++); //延時(shí)消除抖動(dòng)
}
while(P1key()!=0x0e)
{
keybuf=keycode();//確信有鍵被按下,找按鍵得鍵值
}
while(P1key()==0x0e) //等待按鍵松開(kāi)
P1IFG=0x00; //消除中斷標(biāo)志
}
main()
{ WDTCTL=WDTPW+WDTHOLD; //停止看門狗
P1IES|=BIT1+BIT2+BIT3;//對(duì)應(yīng)引腳下降沿使相應(yīng)標(biāo)志置位
P1IE|=BIT1+BIT2+BIT3; //允許對(duì)應(yīng)位中斷
_EINT(); //開(kāi)中斷
P5DIR|=BIT1;
P5OUT&=~BIT1;
while(1)
{//keycode();
switch(keycode())
{case0x0e:break;
case1:_______ //鍵1的處理
case2:_______ //鍵2的處理
case3:_______ //鍵3的處理
}
}
2.矩陣式鍵盤
獨(dú)立式按鍵一般都只能應(yīng)用在按鍵用量較少的簡(jiǎn)單場(chǎng)合,當(dāng)系統(tǒng)功能較多,用鍵量較大時(shí)就要采用矩陣式鍵盤結(jié)構(gòu)(行列掃描式鍵盤),這樣可使用較少的I/O口線連接較多的按鍵。圖6-3所示為通過(guò)MSP430的P1口接的12(3×4=12)個(gè)按鍵(編號(hào)為1~9、a~c)構(gòu)成的行列掃描式鍵盤示例。下面分析如何在行列掃描式鍵盤上實(shí)現(xiàn)鍵盤的3個(gè)步驟:判鍵消抖動(dòng)、鍵碼識(shí)別、等待按鍵的松開(kāi)。
圖6-3矩陣按鍵接口
1)判斷有無(wú)按鍵按下
在上圖6-3中,P1口的7條I/O口線被分成三條行線P1.3~P1.1,4條列線P1.7~P1.4,其中列線分別由電阻上拉到電源。按鍵的兩端分別接在行線和列線上,行線與列線的每一個(gè)交界處均有一個(gè)按鍵。如果有按鍵按下,則與之相連的行線和列線被接通。要想檢測(cè)是否有按鍵按下,先使3條行線輸出低電平,讀列線P1.7~P1.4。因所有的列線經(jīng)上拉電阻接至VCC,所以如果有按鍵按下,則讀進(jìn)來(lái)的高4位不是F,與按下按鍵相接的列線讀得的是0;如果沒(méi)有按鍵按下,讀進(jìn)來(lái)的高4位是F,由此即可以判斷是否有按鍵被按下。相應(yīng)程序如下:
unsignedcharP1key(void) //判鍵子程序
{unsignedcharx;
x=(P1IN&0xf0);//P1.7~P1.4接有按鍵,另一端接VCC
return(x); //有按鍵返回
}
當(dāng)使用軟件延時(shí),當(dāng)檢測(cè)到有按鍵按下之后,等待10ms再檢測(cè)是否有按鍵被按下。
2)鍵碼識(shí)別
對(duì)于行列式矩陣鍵盤,常采用掃描的辦法識(shí)別鍵碼。通過(guò)3條行線輸出低電平,讀列線P1.7~P1.4的辦法來(lái)得知是否有按鍵被按下??梢杂猛瑯拥姆椒▉?lái)確認(rèn)究竟是哪一個(gè)按鍵被按下。
由圖6-3可知,如果3條行線沒(méi)有輸出低電平,則盡管有按鍵被按下,從列線讀到高電平。利用這一原理進(jìn)行分時(shí)掃描,在行線上分別掃描輸出低電平,當(dāng)在某一條列線上讀取到不是“1”時(shí),根據(jù)輸出“0”電平的行線和讀到“0”的列線就可以確定是哪一按鍵被按下了,由此可識(shí)別出所按之鍵的鍵位,鍵碼也可以由此得到。
3)等待按鍵松開(kāi)
與獨(dú)立式按鍵一樣,反復(fù)調(diào)用鍵號(hào)掃描子程序,直到判斷結(jié)果為沒(méi)有按鍵按下為止。圖6-3所示矩陣按鍵連接圖的完整的鍵盤掃描子程序如下(供參考):
#include<msp430x44x.h>
unsignedcharkeybuf;
//鍵值緩存器
unsignedcharP1key(void) //鍵掃描子程序
{unsignedcharx;
x=(P1IN&0xf0);
return(x); //有按鍵返回
}
unsignedcharkeycode() //判斷是否有按鍵按下,查鍵掃描子程序
{unsignedcharx=0xff;
P1OUT=0XF7;
if((P1IN&0XF0)==0X70)
//是否第一個(gè)按鍵被按下
x=1;
//給出鍵號(hào)#1
else
if((P1IN&0XF0)==0XB0)//是否第二個(gè)按鍵被按下
x=2; //給出鍵號(hào)#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è)計(jì)
單片機(jī)應(yīng)用系統(tǒng)中,使用的顯示器件主要有LED數(shù)碼管(發(fā)光二極管)、LCD液晶顯示器和CRT顯示器。前兩種顯示器成本低廉,配置靈活,與單片機(jī)連接方便。本節(jié)主要介紹LED和LCD顯示接口的設(shè)計(jì)方法。
1.LED數(shù)碼管顯示接口
LED顯示塊是利用發(fā)光二極管顯示字段的顯示器件。LED顯示塊具有亮度高、結(jié)構(gòu)簡(jiǎn)單、全天候的特點(diǎn),因此在單片機(jī)應(yīng)用系統(tǒng)中應(yīng)用最廣。
1)
LED顯示器結(jié)構(gòu)與原理
單片機(jī)應(yīng)用系統(tǒng)中通常使用的是七段LED,通常的七段LED顯示塊中有七個(gè)發(fā)光二極管構(gòu)成七筆字形“日”與一個(gè)發(fā)光二極管為圓點(diǎn)形狀構(gòu)成小數(shù)點(diǎn)組成。這種顯示器有共陰極和共陽(yáng)極兩種。將發(fā)光二極管的所有正極并接后組成公共端,8個(gè)發(fā)光二極管的負(fù)極則各自獨(dú)立引出,稱為共陽(yáng)顯示器,如圖6-4(c)所示。當(dāng)某個(gè)字段的負(fù)極加低電平時(shí),對(duì)應(yīng)的字段就點(diǎn)亮。將8個(gè)發(fā)光二極管的負(fù)極全部連接在一起組成公共端,8個(gè)發(fā)光二極管的正極則各自獨(dú)立引出,稱為共陰顯示器,如圖6-4(d)所示。當(dāng)某個(gè)字段的陽(yáng)極加高電平時(shí),對(duì)應(yīng)的字段就點(diǎn)亮。無(wú)論何種形式的LED顯示器,它們排列成“日”字形的各個(gè)筆畫(huà)段和名稱都是相同的,如圖6-4所示,分別為a、b、c、d、e、f、g、h,這些筆畫(huà)段的引腳排列也是統(tǒng)一的。
圖6-4LED數(shù)碼顯示器
2)?LED顯示器的顯示方式
在單片機(jī)應(yīng)用系統(tǒng)中使用LED顯示塊可以構(gòu)成N位LED顯示器。N位LED顯示器有N根位選線和8?×?N根段選線。根據(jù)顯示方式不同,位選線與段選線的連接方法也不同。段選線控制字符選擇,位選線控制顯示位的亮、暗。
LED顯示器有靜態(tài)和動(dòng)態(tài)兩種方法。所謂靜態(tài)顯示(如圖6-5所示),是指共陰極或共陽(yáng)極連接在一起接地或接+5V,每位的段選線(a~dp)與一個(gè)8位并行口相連,每一位可獨(dú)立顯示,只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。如果要在數(shù)碼管上顯示“1”、“2”、“3”、“4”,則只需要在P1口輸出。
圖6-5靜態(tài)顯示連接
在靜態(tài)顯示中,每一顯示位都需要一個(gè)8位的輸出口控制,占用硬件較多,一般僅用于顯示器位數(shù)較少的場(chǎng)合。
動(dòng)態(tài)顯示(如圖6-6所示)就是一位一位地輪流點(diǎn)亮各位顯示器。在多位LED顯示時(shí),為了簡(jiǎn)化電路和降低成本,可將所有位的段選線并聯(lián)在一起,由一個(gè)8位I/O口控制,而共陰極點(diǎn)或共陽(yáng)極點(diǎn)分別由相應(yīng)的I/O口線控制。要想每位顯示不同的字符,必須采用掃描顯示方式。即在每一瞬間只使某一位顯示相應(yīng)字符。顯示位的亮度既跟導(dǎo)通電流有關(guān),也和點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。動(dòng)態(tài)顯示器因其硬件成本較低,常被使用。
圖6-6動(dòng)態(tài)顯示連接
3)
LED顯示器接口實(shí)例
LED顯示器接口電路實(shí)例如圖6-7所示,其中,LED為共陰極數(shù)碼管,P3.0~P3.7既為L(zhǎng)ED的段選線,又為L(zhǎng)ED的位選線,通過(guò)373鎖存與P4.1、P4.2的選擇來(lái)實(shí)現(xiàn)。其工作方式為:當(dāng)P4.1為低電平時(shí),P3.0~P3.7為L(zhǎng)ED的段選線,依次對(duì)應(yīng)LED的a、f、b、g、c、h、d、e;當(dāng)P4.0為低電平時(shí),P3.0~P3.5為L(zhǎng)ED的位選線,依次對(duì)應(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.點(diǎn)陣式液晶顯示接口
液晶是一種具有規(guī)則性分子排列的有機(jī)化合物。液晶顯示是一種極低功耗的顯示器件,有段式液晶顯示器和點(diǎn)陣液晶顯示器兩種。段式液晶顯示由段型液晶顯示器件和專用集成電路組成,只能顯示數(shù)字和一些標(biāo)識(shí)符號(hào)。有些MSP430系列單片機(jī)本身就含有段式液晶驅(qū)動(dòng)模塊,使用起來(lái)非常方便,本節(jié)不作介紹。點(diǎn)陣式液晶能以點(diǎn)陣或圖形方式顯示出各種信息,因此在電子設(shè)計(jì)中得到了廣泛應(yīng)用。但是,對(duì)它的接口設(shè)計(jì)必須遵循一定的硬件和時(shí)序規(guī)范,不同的液晶顯示驅(qū)動(dòng)器,可能需要采用不同的接口方式和控制指令才能夠?qū)崿F(xiàn)所需信息的顯示。
點(diǎn)陣式液晶顯示有字符點(diǎn)陣式液晶和圖形全點(diǎn)陣式液晶顯示兩種。典型的字符點(diǎn)陣式液晶顯示器由控制器、驅(qū)動(dòng)器、字符發(fā)生器ROM、字符發(fā)生器RAM和液晶屏組成。字符由5×7點(diǎn)陣或5×10點(diǎn)陣組成。但是在一些高端應(yīng)用或有圖形顯示要求的系統(tǒng)中,段式液晶顯示屏或字符點(diǎn)陣式液晶顯示器就不再適用了,因?yàn)檫@兩種屏幕只能顯示數(shù)字或一些西文字母,要想顯示中文字或圖形信息,可以采用全點(diǎn)陣圖形液晶顯示器。
全點(diǎn)陣圖形液晶顯示器一般由控制器、驅(qū)動(dòng)器和全點(diǎn)陣液晶顯示屏組成。對(duì)于全點(diǎn)陣圖形液晶顯示器,可以把它看做一張位圖畫(huà)布,對(duì)于單色屏幕,其上的每一個(gè)點(diǎn),都用一個(gè)bit來(lái)表示,“1”表示點(diǎn)亮,“0”表示熄滅;對(duì)于灰度或彩色屏幕,則一個(gè)點(diǎn)用若干bit來(lái)表示。下面以香港信利的MSC-G12864DGEB-7N點(diǎn)陣液晶為例,介紹點(diǎn)陣圖形液晶顯示器的設(shè)計(jì)。
1)?MSC-G12864DGEB-7N全點(diǎn)陣式液晶顯示芯片簡(jiǎn)介
MSC-G12864DGEB-7N是一個(gè)帶有LCD驅(qū)動(dòng)器和控制器的全點(diǎn)陣式液晶顯示芯片,其分辨率是128?×?64,屏幕共64行,分為8頁(yè),每頁(yè)8行,每行128列。其內(nèi)部結(jié)構(gòu)如圖6-8所示,該顯示芯片主要由液晶屏陣列驅(qū)動(dòng)電路KS0108B、點(diǎn)陣式顯示控制器KS0107B、LCD顯示器和LED背光燈等4部分組成。其中KS0107B是公共動(dòng)芯片,KS0108B是通過(guò)它產(chǎn)生的時(shí)序控制的。兩片KS0108B是列驅(qū)動(dòng)及控制芯片,分別控制顯示屏的兩部分。MSC-G12864DGEB-7N共有20個(gè)引腳,引腳及其定義如表6-1所示。
表6-1MSC-G12864-7N的引腳說(shuō)明
圖6-8MSC-G12864DGEB-7N內(nèi)部結(jié)構(gòu)圖
2)?MSC-G12864DGEB-7N工作原理
MSC-G12864DGEB-7N的顯示RAM保存著被顯示內(nèi)容的點(diǎn)陣信息。顯示RAM的每一位對(duì)應(yīng)顯示屏上的一個(gè)點(diǎn),總共可以存儲(chǔ)128×64點(diǎn)的信息。通過(guò)選擇對(duì)應(yīng)的RAM頁(yè)地址和列地址,微控制器可以訪問(wèn)其中的任何一個(gè)點(diǎn)。微控制器對(duì)MSC-G12864DGEB-7N的顯示RAM的讀/寫操作通過(guò)MSC-G12864DGEB-7N的I/O緩沖器進(jìn)行,并且該讀操作和液晶顯示屏驅(qū)動(dòng)信號(hào)的讀取操作是獨(dú)立的,因此,當(dāng)顯示內(nèi)存的數(shù)據(jù)同時(shí)被雙方訪問(wèn)時(shí),不會(huì)出現(xiàn)顯示信息的抖動(dòng)等現(xiàn)象。CS1和CS2是芯片的片選信號(hào),只有CS1或者CS2選通時(shí),才能實(shí)現(xiàn)數(shù)據(jù)的輸入或者輸出,或者指令的執(zhí)行。一旦復(fù)位信號(hào)有效,則除了讀狀態(tài)其它指令都不能執(zhí)行。當(dāng)KS0108B正在進(jìn)行內(nèi)部操作時(shí),忙標(biāo)志為高。此時(shí)KS0108B不再接收任何外部指令和數(shù)據(jù)。反之,當(dāng)忙標(biāo)志為低時(shí),KS0108B能夠接收外部指令和數(shù)據(jù)。MSC-G12864DGEB-7N顯示芯片共有7個(gè)寄存器,下面依次進(jìn)行介紹。
(1)輸入寄存器。輸入寄存器用來(lái)存儲(chǔ)寫入顯示數(shù)據(jù)前RAM的臨時(shí)數(shù)據(jù)。當(dāng)CS1或者CS2有效時(shí),R/W和RS選擇輸入寄存器,數(shù)據(jù)從微處理器寫入到輸入寄存器,接著寫入到顯示數(shù)據(jù)存儲(chǔ)器。當(dāng)使能端E下跳沿到來(lái)時(shí),數(shù)據(jù)自動(dòng)鎖存到顯示數(shù)據(jù)存儲(chǔ)器。
(2)輸出寄存器。輸出寄存器存儲(chǔ)的是來(lái)自顯示數(shù)據(jù)RAM的臨時(shí)數(shù)據(jù)。當(dāng)片選有效,R/W有效,且D/I為高時(shí),在顯示數(shù)據(jù)RAM中存儲(chǔ)的數(shù)據(jù)被鎖存到輸出寄存器;當(dāng)片選有效,R/W為高,且D/I為低時(shí),可以讀出存儲(chǔ)的數(shù)據(jù)。要讀顯示數(shù)據(jù)RAM的內(nèi)容,需要兩次讀指令,第一次訪問(wèn),顯示數(shù)據(jù)RAM中的數(shù)據(jù)被鎖存到了輸出寄存器中;第二次訪問(wèn),微處理器才可以讀到已鎖存的數(shù)據(jù)。其功能表6-2所示。
表6-2輸出寄存器的功能
(3)顯示控制觸發(fā)器。顯示控制觸發(fā)器用于屏幕顯示的開(kāi)關(guān)控制。當(dāng)觸發(fā)器復(fù)位(邏輯低電平)時(shí),顯示打開(kāi),允許段輸出;當(dāng)觸發(fā)器置位(邏輯高電平)時(shí),顯示關(guān)閉。
顯示控制觸發(fā)器可以通過(guò)指令改變狀態(tài),當(dāng)復(fù)位信號(hào)有效時(shí),所有端的顯示數(shù)據(jù)都消失,觸發(fā)器的狀態(tài)通過(guò)讀指令輸出到DB5。
①X頁(yè)寄存器。X頁(yè)寄存器用于指定內(nèi)部顯示數(shù)據(jù)RAM頁(yè),它沒(méi)有計(jì)數(shù)功能,只能通過(guò)指令來(lái)設(shè)置地址。
②Y地址計(jì)數(shù)器。Y地址計(jì)數(shù)器用來(lái)指定內(nèi)部顯示數(shù)據(jù)RAM的地址,可以通過(guò)指令來(lái)設(shè)置,也可以通過(guò)讀或者寫顯示數(shù)據(jù)來(lái)自動(dòng)進(jìn)行增1計(jì)數(shù)。
③顯示數(shù)據(jù)RAM。顯示數(shù)據(jù)RAM用來(lái)存儲(chǔ)液晶顯示器要顯示的數(shù)據(jù)。顯示為“1”,關(guān)閉為“0”。
④
顯示起始行寄存器。顯示起始行寄存器用來(lái)說(shuō)明顯示數(shù)據(jù)RAM到液晶顯示器的顯示頂行的地址。顯示開(kāi)始行的數(shù)據(jù)位(DB0~DB5)的設(shè)置指令是由顯示起始行寄存器鎖存的,它用來(lái)滾動(dòng)液晶顯示屏。
3)
MSC-G12864DGEB-7N顯示控制指令
顯示控制指令用來(lái)控制KS0108B內(nèi)在的狀態(tài),微處理器發(fā)出的顯示控制指令用來(lái)完成KS0108B的顯示控制。
(1)顯示開(kāi)關(guān)控制(DisplayON/OFF)。顯示開(kāi)關(guān)設(shè)置如下:
Display:控制顯示的開(kāi)或者關(guān),不影響內(nèi)部狀態(tài)和顯示RAM的狀態(tài)。
0關(guān)閉顯示;
1打開(kāi)顯示。
(2)設(shè)置Y地址(SetAddress)。地址設(shè)置如下:
該指令是將(DB5~DB0)送入Y地址寄存器,作為Y地址指針。在對(duì)顯示數(shù)據(jù)RAM進(jìn)行讀/寫操作后,Y地址自動(dòng)加1,指向下一個(gè)顯示數(shù)據(jù)RAM單元。
(3)設(shè)置頁(yè)地址(X地址)(SetPage)。頁(yè)地址(X地址)設(shè)置如下:
所謂頁(yè)地址,也就是顯示數(shù)據(jù)的行地址,8行為一頁(yè),所以64行共8頁(yè)。D2~D0表示0~7頁(yè)。該指令用來(lái)設(shè)置X地址到X地址寄存器。
(4)設(shè)置起始地址(DisplayStartLine)。起始地址設(shè)置如下:
將DB5~DB0送入起始地址寄存器,起始行可以是0~63的任意一行。
(5)讀狀態(tài)(StatusRead)。讀狀態(tài)時(shí)各位定義如下:
BUSY:表示顯示器當(dāng)前的忙閑狀態(tài)。
0準(zhǔn)備狀態(tài);
1忙,工作中。ON/OFF:表示顯示器的開(kāi)閉狀態(tài)。
0開(kāi)顯示;
1關(guān)顯示。RESET:表示顯示器當(dāng)前的工作狀態(tài)。
0正常工作;
1復(fù)位。
(6)寫顯示數(shù)據(jù)(WriteDisplayData)。寫指令將數(shù)據(jù)(DB7~DB0)寫到顯示數(shù)據(jù)RAM,
Y地址指針自動(dòng)加1。
(7)讀顯示數(shù)據(jù)(ReadDisplayData)。從顯示數(shù)據(jù)RAM中將數(shù)據(jù)(DB7~DB0)讀到數(shù)據(jù)總線上。
4)?MSC-G12864DGEB-7N液晶顯示屏模塊與MSP430系列單片機(jī)的接口
MSC-G12864DGEB-7N可以通過(guò)8位雙向數(shù)據(jù)總線(并行模式下)接收來(lái)自微控制器的數(shù)據(jù),MSC-G12864DGEB-7N的片選信號(hào)端、讀/寫信號(hào)端以及控制信號(hào)端(D/I)和數(shù)據(jù)線(DB0~DB7)都應(yīng)該同微控制器的對(duì)應(yīng)端口進(jìn)行連接。此時(shí)MSC-G12864DGEB-7N內(nèi)部顯示RAM的數(shù)據(jù)以刷新液晶顯示的內(nèi)容,也可以通過(guò)數(shù)據(jù)總線讀取顯示內(nèi)存的內(nèi)容。
MSC-G12864DGEB-7N液晶顯示屏模塊與MSP430系列單片機(jī)的一般連接方式如圖6-9所示。MSP430的I/O口都是復(fù)用端口,因此必須根據(jù)需要設(shè)置引腳的狀態(tài)。其中P3.0和P3.1與
LCD的片選信號(hào)CS1、CS2相連,P4.0~
P4.3與LCD的RES、E、R/W和D/I相連,作為L(zhǎng)CD的控制線;P2口與DB0~DB7相連,作為L(zhǎng)CD的數(shù)據(jù)線。
圖6-9MSP430F149與MSC-G12864-DGEB-7N接口
6.1.3實(shí)時(shí)時(shí)鐘芯片DS1302的接口設(shè)計(jì)
1.DS1302的工作原理
DS1302時(shí)鐘芯片是一個(gè)帶秒、時(shí)、分、日、日期、月、年的串行時(shí)鐘保持芯片,該芯片具有低功耗工作方式,并能夠進(jìn)行每月天數(shù)以及閏年的自動(dòng)調(diào)節(jié)。
DS1302的性能特性如下:
工作電壓:2.0~5.5V。
最大輸入串行時(shí)鐘:2.0V時(shí),500Hz;5.0V時(shí),2MHz。
工作電流:2.0V時(shí),小于300nA;5.0V時(shí),至少為1μA。
與TTL電平兼容。
串行I/O口傳送,簡(jiǎn)單的3線接口。
兩種數(shù)據(jù)傳送方式:?jiǎn)巫止?jié)傳送、多字節(jié)傳送(字符組方式)。
所有寄存器都以BCD碼格式存儲(chǔ)。
DS1302時(shí)鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式,只需要3根線與CPU進(jìn)行同步通信。DS1302的引腳如圖6-10所示,該芯片只有8個(gè)管腳,具體功能如下:
X1、X2:外接32kHz晶體的管腳。
GND:接地管腳。
RES:復(fù)位/片選線。
I/O:數(shù)據(jù)輸入/輸出管腳。
SCLK:串行時(shí)鐘輸入管腳。
VCC1、VCC2:電源管腳,其中VCC1為備用電源管腳。
圖6-10DS1302芯片管腳圖
DS1302有主電源/后備電源雙電源引腳:VCC1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)行方式中,VCC1連接到備份電,以便在沒(méi)有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者提供。當(dāng)VCC2大于VCC1+0.2V時(shí),VCC2給DS1302供電;當(dāng)VCC2小于VCC1時(shí),VCC1給DS1302供電。
DS1302的控制字如下:
R/W:為1時(shí)讀,為0時(shí)寫。
A0~A4:指示操作單元地址。
RAM/CK:為1表示存取RAM數(shù)據(jù),為0則表示存取日歷時(shí)鐘數(shù)據(jù)。
最高位必須為邏輯1,如果為0,數(shù)據(jù)則寫不進(jìn)DS1302。
控制字節(jié)總是從最低位開(kāi)始輸入/輸出。
當(dāng)命令字節(jié)為1001XXX1時(shí),DS1302設(shè)置在測(cè)試模式,這種模式僅為半導(dǎo)體公司測(cè)試時(shí)使用。
DS1302數(shù)據(jù)讀/寫時(shí)序如圖6-11所示,DS1302在任何數(shù)據(jù)輸送時(shí)都必須先初始化,即在開(kāi)始傳送數(shù)據(jù)之前,先把置高。發(fā)送一個(gè)帶地址和命令信息的8位命令字,緊跟命令之后,時(shí)鐘/日歷數(shù)據(jù)傳至相應(yīng)的寄存器或從相應(yīng)的寄存器傳出(讀)。所有數(shù)據(jù)的輸入在SCLK的上升沿有效,輸出在SCLK的下降沿有效。數(shù)據(jù)傳送有單字節(jié)和多字節(jié)兩種方式。單字節(jié)傳送需要16個(gè)SCLK時(shí)鐘脈沖,多字節(jié)需要72個(gè)SCLK時(shí)鐘脈沖,數(shù)據(jù)的輸入/輸出都是從0位開(kāi)始。如果在數(shù)據(jù)傳送過(guò)程中置引腳低電平,則終止本次數(shù)據(jù)傳送,且I/O引腳呈高阻態(tài)。只有在SCLK為低電平時(shí),才能將RST置高電平。
圖6-11DS1302數(shù)據(jù)讀/寫時(shí)序
該器件還包括兩個(gè)附加位:時(shí)鐘停止位(CH)和寫保護(hù)位(WP)。這兩位用于控制振蕩器的工作和數(shù)據(jù)能否寫入寄存器。當(dāng)把寄存器的第7位(時(shí)鐘停止位)設(shè)置為1時(shí),時(shí)鐘振蕩器停止,DS1302進(jìn)入低功耗方式;當(dāng)該位寫入0時(shí),啟動(dòng)時(shí)鐘開(kāi)始。寄存器的地址和數(shù)據(jù)格式如表6-3所示。
表6-3內(nèi)部寄存器地址和內(nèi)容
CH:時(shí)鐘停止位。
CH=0振蕩器工作允許;
CH=1振蕩器停止。
WP:寫保護(hù)位。
WP=0寄存器數(shù)據(jù)能夠?qū)懭耄?/p>
WP=1寄存器數(shù)據(jù)不能寫入。
寄存器2的第7位:12/24小時(shí)模式轉(zhuǎn)換位。
bit7=024小時(shí)模式;
bit7=112小時(shí)模式。
寄存器2的第5位:AM/PM定義。
AP=0上午模式;
AP=1下午模式。
2.DS1302接口設(shè)計(jì)
DS1302應(yīng)該選用32.768kHz的晶振,電容推薦為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。DS1302的外圍電路如圖6-12所示。VCC1管腳在需要使用時(shí),可以外接電池或者充電電容。DS1302工作的時(shí)候,在VCC2和VCC1兩個(gè)管腳中,選擇電壓高的那個(gè)管腳的電源作為工作電源。
圖6-12DS1302的接口電路
需要通過(guò)軟件設(shè)計(jì)完成對(duì)時(shí)鐘芯片
DS1302日歷數(shù)據(jù)的獲取。DS1302內(nèi)部有“年、月、日、時(shí)、分、秒”等寄存器,也有
RAM。由于DS1302的“年、月、日、時(shí)、分、秒”寄存器里面的內(nèi)容是按
BCD編碼進(jìn)行存儲(chǔ)的,所以在寫程序時(shí)需要注意。對(duì)DS1302的操作分為單字節(jié)和多字節(jié)操作。單字節(jié)操作時(shí),需要發(fā)送一個(gè)命令,再進(jìn)行一個(gè)字節(jié)讀/寫。為了提高處理的效率,可采用連續(xù)讀/寫的多字節(jié)操作,比如連續(xù)讀出“年、月、日、時(shí)、分、秒”內(nèi)容,單字節(jié)操作和多字節(jié)操作區(qū)別在于命令不同,并且一次操作的數(shù)據(jù)個(gè)數(shù)不同。下面給出圖6-12接口電路的模塊功能程序?qū)嵗?/p>
6.2MSP430系列單片機(jī)應(yīng)用設(shè)計(jì)舉例
6.2.1單片機(jī)應(yīng)用系統(tǒng)方案設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)內(nèi)容與步驟包括總體設(shè)計(jì)、功能設(shè)計(jì)、可靠性設(shè)計(jì)和系統(tǒng)調(diào)試,如圖6-13所示。
圖6-13單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)內(nèi)容與步驟示意圖
1.總體設(shè)計(jì)
合理的總體設(shè)計(jì)來(lái)自于對(duì)系統(tǒng)要求的全面分析和實(shí)現(xiàn)方法的正確選擇。在對(duì)系統(tǒng)要求進(jìn)行全面分析之后,確定單片機(jī)應(yīng)用系統(tǒng)的總體方案,畫(huà)出系統(tǒng)的硬件結(jié)構(gòu)框圖和應(yīng)用程序結(jié)構(gòu)框圖。
(1)制定設(shè)計(jì)任務(wù)書(shū)。設(shè)計(jì)者首先應(yīng)對(duì)系統(tǒng)的任務(wù)、控制對(duì)象、硬件資料和工作環(huán)境作出詳盡而周密的調(diào)查研究,明確各項(xiàng)設(shè)計(jì)任務(wù)。在此基礎(chǔ)上對(duì)設(shè)計(jì)目標(biāo)、系統(tǒng)功能、處理方案、控制精度、輸入/輸出速度、地址分配、存儲(chǔ)容量、I/O接口和出錯(cuò)處理等給出明確的定義,制定出完整的設(shè)計(jì)任務(wù)書(shū)。
(2)建立數(shù)學(xué)模型。設(shè)計(jì)者在制定好任務(wù)書(shū)后,要對(duì)測(cè)控對(duì)象的物理過(guò)程和計(jì)算任務(wù)進(jìn)行全面分析,從中抽象出數(shù)學(xué)模型,真實(shí)客觀地描述測(cè)控過(guò)程。
(3)總體方案設(shè)計(jì)。在設(shè)計(jì)任務(wù)書(shū)和數(shù)學(xué)模型的基礎(chǔ)上,確定系統(tǒng)總體方案,劃分硬件和軟件的任務(wù),完成系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。
2.系統(tǒng)功能設(shè)計(jì)
1)系統(tǒng)資源的配置
系統(tǒng)資源的配置包括芯片硬件資源的配置和RAM資源的分配。
芯片硬件資源的配置主要包括對(duì)端口引腳、中斷源、定時(shí)器/計(jì)數(shù)器和其它功能部件(如串行口、A/D、PWM、比較器和看門狗等)進(jìn)行合理配置與設(shè)計(jì)。
RAM資源的分配。片內(nèi)RAM用來(lái)存放各種變量、標(biāo)志、堆棧和數(shù)據(jù)處理中的臨時(shí)結(jié)果等,片外RAM主要用來(lái)存放數(shù)據(jù)塊。如果采用匯編語(yǔ)言編制程序,需要對(duì)RAM資源進(jìn)行有效分配。但是,如果采用高級(jí)語(yǔ)言,如C語(yǔ)言編寫程序,則該步驟可省略。
2)系統(tǒng)軟件結(jié)構(gòu)分析與模塊設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的軟件設(shè)計(jì),首先應(yīng)能滿足系統(tǒng)的測(cè)試、控制要求,其次應(yīng)考慮程序設(shè)計(jì)的具體方法和超低功耗設(shè)計(jì)的要求。一般為了便于編程和調(diào)試,應(yīng)先進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。
軟件結(jié)構(gòu)設(shè)計(jì)是進(jìn)行模塊化編程的準(zhǔn)備階段,可以直接根據(jù)功能要求畫(huà)出流程圖,或?qū)傮w方案適當(dāng)分塊,然后再確定各塊的功能,并畫(huà)出相應(yīng)的流程圖。流程圖是設(shè)計(jì)者對(duì)用戶要求和生產(chǎn)工藝過(guò)程的表達(dá),應(yīng)該做到結(jié)構(gòu)清晰、嚴(yán)謹(jǐn),既便于編程,也便于閱讀,還可用圖形和文字來(lái)對(duì)流程圖進(jìn)行描述和說(shuō)明。
編寫源程序有效的辦法是以各模塊之間連接關(guān)系最簡(jiǎn)為原則,明確各模塊應(yīng)完成的功能,劃分程序模塊,采用模塊化程序設(shè)計(jì)。在編程過(guò)程中,應(yīng)充分利用單片機(jī)指令系統(tǒng)功能強(qiáng)、尋址方式多的優(yōu)點(diǎn)編制出層次清楚、運(yùn)行速度快、所占內(nèi)存單元少的源程序,并盡量引用成熟的子程序或模塊,這樣會(huì)給編程及調(diào)試都帶來(lái)很多便利。系統(tǒng)軟件一般包含以下模塊:
(1)自檢模塊,通常安排在主程序中系統(tǒng)上電后執(zhí)行,一般包括:
程序代碼自檢。判斷程序代碼是否改變,如執(zhí)行校驗(yàn)算法;
數(shù)據(jù)存儲(chǔ)器自檢。進(jìn)行非破壞性讀/寫校驗(yàn),判斷是否正常;
I/O口狀態(tài)自檢。檢查I/O口在待機(jī)狀態(tài)下的狀態(tài)是否正常;
其它自檢。檢查A/D通道、D/A通道、顯示器和蜂鳴器等,看是否工作正常。
(2)初始化模塊,通常安排在主程序中系統(tǒng)上電后執(zhí)行,一般包括:
外部硬件初始化。對(duì)各種外部芯片設(shè)定明確初始化狀態(tài);
功能部件初始化。對(duì)片內(nèi)功能部件設(shè)定明確的初始狀態(tài);
堆棧初始化。設(shè)置堆??臻g,初始化堆棧指針;
變量初始化。為各種變量和指針設(shè)置初始值、默認(rèn)值;
其它初始化。數(shù)據(jù)區(qū)初始化、時(shí)鐘初始化、軟件標(biāo)志初始化等。
(3)監(jiān)控模塊,其實(shí)質(zhì)是保證系統(tǒng)在運(yùn)行過(guò)程中的當(dāng)前狀態(tài)、各項(xiàng)操作和狀態(tài)的變化是否符合設(shè)計(jì)要求,一般可安排在主程序中,也可安排在中斷子程序中。監(jiān)控模塊的任務(wù)有:獲取外部輸入控制的信息,并作相應(yīng)的解釋,如常用的鍵盤操作信息,調(diào)度執(zhí)行相應(yīng)模塊完成預(yù)定任務(wù)。遙控操作也可以合并到監(jiān)控模塊中進(jìn)行解釋執(zhí)行。
(4)顯示模塊,通常可安排在主程序中,也可安排在中斷子程序中,一般包括:
顯示輸出集中處理:將系統(tǒng)所有的顯示輸出全部集中到本模塊中。
顯示數(shù)據(jù)的獲?。和ㄟ^(guò)查詢系統(tǒng)的狀態(tài)信息(狀態(tài)編碼和各種狀態(tài)標(biāo)志)判斷出應(yīng)該顯示的數(shù)據(jù),在預(yù)定的位置找到這些數(shù)據(jù),并將其轉(zhuǎn)換成顯示所需要的格式。
顯示內(nèi)容的刷新:當(dāng)某顯示內(nèi)容發(fā)生變化時(shí),應(yīng)該定時(shí)刷新。
(5)信息采集模塊,通??砂才旁谥鞒绦蛑?,也可安排在中斷子程序中,一般包括數(shù)字信號(hào)的采集、模擬信號(hào)的采集、多路信號(hào)的采集以及隨機(jī)信號(hào)的采樣。其中,隨機(jī)信號(hào)的采樣一般是指由隨機(jī)信號(hào)產(chǎn)生外部中斷,在該中斷子程序中進(jìn)行采集。
(6)數(shù)據(jù)處理模塊,通??砂才旁谥鞒绦蛑?,也可安排在中斷子程序中,一般包括由數(shù)據(jù)的變化范圍和分辨率確定的數(shù)據(jù)格式的選擇、數(shù)據(jù)格式的轉(zhuǎn)換和數(shù)據(jù)的處理過(guò)程。
(7)控制決策模塊,通常可安排在主程序中,也可安排在中斷子程序中,在信息采集模塊和數(shù)據(jù)處理模塊之后,信號(hào)輸出之前,一般包括:
控制決策模塊的選擇??梢愿鶕?jù)控制對(duì)象的特性和系統(tǒng)控制指標(biāo)的要求來(lái)選擇。常用的算法有PID算法和模糊控制算法等。
控制決策模塊的輸出:用來(lái)對(duì)對(duì)象進(jìn)行邏輯控制(通斷控制、起??刂频?的決策,結(jié)果一般用軟件標(biāo)志來(lái)表示;用來(lái)對(duì)對(duì)象進(jìn)行程度控制(如溫度控制、流量控制等)的決策,結(jié)果應(yīng)轉(zhuǎn)換成D/A器件對(duì)應(yīng)的整形數(shù)據(jù)。
(8)信號(hào)輸出模塊,一般包括輸出信號(hào)的緩沖、異步?jīng)Q策同步捆綁輸出和按狀態(tài)輸出。
(9)通信模塊,一般包括:
波特率的設(shè)置,與信道質(zhì)量有關(guān),通信雙方共同約定。
通信協(xié)議(結(jié)構(gòu))的設(shè)計(jì),由通信內(nèi)容來(lái)決定,一般包括地址碼、幀長(zhǎng)、命令碼和數(shù)據(jù)校驗(yàn)位。
通信緩沖區(qū),其長(zhǎng)度應(yīng)該能夠存放下最長(zhǎng)幀。工作時(shí)和一個(gè)指針進(jìn)行配合,完成一幀數(shù)據(jù)的收發(fā)。
通信過(guò)程,如果采用查詢模式,可一次接收或發(fā)送完一幀內(nèi)容。為提高系統(tǒng)效率,最好采用中斷模式,一次中斷只接收或發(fā)送一個(gè)字節(jié)。
通信命令的執(zhí)行,最好在監(jiān)控模塊中執(zhí)行。
3.系統(tǒng)可靠性設(shè)計(jì)
可靠性是單片機(jī)應(yīng)用系統(tǒng)的重要性能指標(biāo),由多種因素決定。單片機(jī)應(yīng)用系統(tǒng)所在現(xiàn)場(chǎng)的各種干擾是影響可靠性的主要因素。形成干擾的基本要素有三個(gè):
(1)干擾源,指產(chǎn)生干擾的元件、設(shè)備或信號(hào),如雷電、繼電器、電機(jī)、高頻時(shí)鐘等。
(2)傳播路徑,指干擾從干擾源傳播到敏感器件的通路或媒介。典型的干擾傳播路徑是通過(guò)導(dǎo)線的傳導(dǎo)和空間的輻射。
(3)敏感器件,指容易被干擾的對(duì)象。如A/D變換器、D/A變換器、單片機(jī)、數(shù)字IC、弱信號(hào)放大器等。
一般的抗干擾設(shè)計(jì)的基本原則有下述五個(gè)方面。
1)抑制干擾源
這是抗干擾設(shè)計(jì)中應(yīng)該最優(yōu)先考慮和最重要的原則。通常包括:
(1)減小干擾源的du/dt,可通過(guò)在干擾源兩端并聯(lián)電容來(lái)實(shí)現(xiàn)。
(2)減小干擾源的di/dt,可在干擾源回路串聯(lián)電感或電阻以及增加續(xù)流二極管來(lái)實(shí)現(xiàn)。僅加續(xù)流二極管會(huì)使繼電器的斷開(kāi)時(shí)間滯后,增加穩(wěn)壓二極管后繼電器在單位時(shí)間內(nèi)可動(dòng)作更多的次數(shù)。
2)切斷干擾傳播途徑
干擾按傳播途徑可分為傳導(dǎo)干擾和輻射干擾兩類。所謂傳導(dǎo)干擾,是指通過(guò)導(dǎo)線傳播到敏感器件的干擾;輻射干擾是指通過(guò)空間輻射傳播到敏感器件的干擾。
(1)可以通過(guò)在導(dǎo)線上增加濾波器和加隔離光耦來(lái)切斷高頻干擾。
(2)增加干擾源與敏感器件的距離,用地線把它們隔離并在敏感器件上加屏蔽罩。
(3)給單片機(jī)電源加濾波電路或穩(wěn)壓器,以減小電源噪聲對(duì)單片機(jī)的干擾。
(4)當(dāng)單片機(jī)的I/O口用來(lái)控制電機(jī)等噪聲器件時(shí),在I/O口與噪聲源之間應(yīng)加隔離(增加π形濾波電路)。
(5)晶振與單片機(jī)引腳盡量靠近,用地線把時(shí)鐘區(qū)隔離起來(lái),晶振外殼接地并固定。
(6)數(shù)字地與模擬地要分離,最后在一點(diǎn)接于電源地。
(7)單片機(jī)和大功率器件的地線要單獨(dú)接地,以減小相互干擾。大功率器件盡可能放在電路板邊緣等。
3)提高敏感器件的抗干擾性能
提高敏感器件的抗干擾性能可以從敏感器件方面考慮,盡量減少對(duì)干擾噪聲的拾取,以及從不正常狀態(tài)下盡快恢復(fù)。
(1)布線時(shí)盡量減少回路環(huán)的面積,以降低感應(yīng)噪聲。
(2)盡可能縮短高頻元器件之間的連線,設(shè)法減少它們的分布參數(shù)和相互間的電磁干擾。易受干擾的元器件不能相互挨得太近,輸入和輸出元件應(yīng)盡量遠(yuǎn)離。
(3)布線時(shí),電源線和地線要盡量粗,減少環(huán)路電阻。除減少壓降外,更重要的是降低耦合噪聲,同時(shí),使電源線、地線的走向和數(shù)據(jù)傳遞的方向一致,這樣有助于增強(qiáng)抗噪聲能力。布線時(shí)避免90°折線,減少高頻噪聲發(fā)射。
(4)對(duì)于單片機(jī)閑置的I/O接口,不要懸空,要接地或接電源。其它IC的閑置端在不改變系統(tǒng)邏輯的情況下接地或接電源。
(5)對(duì)單片機(jī)使用電源監(jiān)控及看門狗電路,可大幅度提高整個(gè)電路的抗干擾性能。
(6)在速度能滿足要求的前提下,盡量降低單片機(jī)的晶振和選用低速數(shù)字電路。
(7)?IC器件盡量直接焊在電路板上,少用IC插座。
4)采用軟件抗干擾措施
(1)多用查詢代替中斷,把中斷源減到最少。中斷信號(hào)線的長(zhǎng)度應(yīng)不大于0.1米,以防止誤觸發(fā)感應(yīng)觸發(fā)。
(2)A/D轉(zhuǎn)換采用數(shù)字濾波,如平均法、比較平均法等,以防止突發(fā)性干擾。
(3)在單片機(jī)空單元寫上00H,最后放跳轉(zhuǎn)指令到ORG0000H。因干擾程序走飛,可能跳轉(zhuǎn)回去。
(4)開(kāi)機(jī)自檢自診斷,RAM中重要內(nèi)容要分區(qū)存放,經(jīng)常進(jìn)行比較檢查。
(5)表格參數(shù)放在EPROM中,檢驗(yàn)和存于最后單元,以防止EPROM內(nèi)容被修改。
(6)加看門狗,軟件走飛可從頭開(kāi)始。
(7)開(kāi)關(guān)信號(hào)延時(shí)去抖動(dòng)。
(8)通信應(yīng)加奇偶校驗(yàn)或查詢表決比較等措施,防止通信出錯(cuò)。
5)利用其它抗干擾措施
(1)變壓器雙隔離措施。變壓器初級(jí)輸入端串接電容,初、次級(jí)線圈間屏蔽層與初級(jí)間電容中心接點(diǎn)接大地,次級(jí)外屏蔽層接印制板地,這是硬件抗干擾的關(guān)鍵手段。次級(jí)加低通濾波器吸收變壓器產(chǎn)生的浪涌電壓。
(2)通信線用雙絞線,以排除平行互感。
(3)防雷電用光纖隔離最為有效。
(4)A/D轉(zhuǎn)換用隔離放大器或采用現(xiàn)場(chǎng)轉(zhuǎn)換,以減少誤差。
(5)外殼接大地,可解決人身安全及防外界電磁場(chǎng)干擾。
(6)加復(fù)位電壓檢測(cè)電路,以防止復(fù)位不充分CPU就工作,如對(duì)E2PROM的器件復(fù)位不充分會(huì)改變E2PROM的內(nèi)容。
4.系統(tǒng)調(diào)試
單片機(jī)應(yīng)用系統(tǒng)需要先進(jìn)行調(diào)試,然后才能驗(yàn)證所設(shè)計(jì)的硬件和軟件的正確性。調(diào)試時(shí),應(yīng)將硬件和軟件分成幾部分,逐一調(diào)試,各部分均調(diào)試通過(guò)后再進(jìn)行聯(lián)調(diào)。調(diào)試完成后,應(yīng)在實(shí)驗(yàn)室模擬現(xiàn)場(chǎng)條件,對(duì)所設(shè)計(jì)的硬件、軟件進(jìn)行性能測(cè)定?,F(xiàn)場(chǎng)試用時(shí),要對(duì)使用情況做詳細(xì)記錄,在各種可能的情況下都要做實(shí)驗(yàn),寫出詳細(xì)的試用報(bào)告。
6.2.2
數(shù)字溫度測(cè)試儀
1.系統(tǒng)總體方案設(shè)計(jì)
數(shù)字溫度測(cè)試儀的主要功能為檢測(cè)并顯示環(huán)境溫度,當(dāng)溫度超過(guò)設(shè)定的警戒值時(shí)予以報(bào)警。系統(tǒng)性能指標(biāo)如下:
測(cè)溫范圍:-50~110℃。
精度誤差:0.1℃以內(nèi)。
溫度報(bào)警設(shè)置:可設(shè)置溫度的上下限報(bào)警值,超過(guò)最高溫度值和低于最低溫度值引起報(bào)警。
該數(shù)字溫度測(cè)試儀的實(shí)現(xiàn)主要包括5個(gè)關(guān)鍵環(huán)節(jié):主控制器、溫度檢測(cè)部分、顯示部分、電源、鍵盤和報(bào)警電路,如圖6-14所示。
圖6-14數(shù)字溫度測(cè)試系統(tǒng)方框圖
1)主控制器
MSP430單片機(jī)系列具有多種型號(hào),本系統(tǒng)可以采用MSP430F4270單片機(jī)為主控制器。MSP430F4270具有供電電壓低和體積小的特點(diǎn),其中包括32KBFLASH,256字節(jié)RAM,32個(gè)I/O口,56段LCD,SD16位ADC(具有內(nèi)部參考電壓),12位DAC,1個(gè)16位Timer_A(3個(gè)捕獲/比較寄存器),并具有電源檢測(cè)功能,適合便攜手持式產(chǎn)品的設(shè)計(jì)使用。其內(nèi)置的LCD驅(qū)動(dòng)模塊可以直接驅(qū)動(dòng)LCD段式液晶顯示器的顯示。
2)溫度檢測(cè)電路
本系統(tǒng)采用美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感芯片DS18B20作為檢測(cè)元件,DS18B20的測(cè)溫范圍為-55~+125℃,精度為9~12位(與數(shù)據(jù)位數(shù)的設(shè)定有關(guān)),缺省值為12位。如果溫度低于0℃,需取反加1,再乘以0.0625才能求出實(shí)際溫度。DS18B20與單片機(jī)以串行方式通信。傳輸協(xié)議要求對(duì)DS18B20進(jìn)行一次操作,包括復(fù)位、發(fā)一條ROM指令、發(fā)一條RAM指令三步。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)值讀數(shù)方式,可以分別在93.75μs和750μs內(nèi)完成9位和12位的數(shù)字量。溫度變換功率來(lái)源于數(shù)據(jù)總線,因而使用DS18B20溫度芯片可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單。
DS18B20溫度傳感器只有三個(gè)引腳,其中,引腳1和引腳3分別是GND和VDD,引腳2是DQ端,作為數(shù)據(jù)的輸入/輸出引腳。當(dāng)給DS18B20加電后,單片機(jī)可以通過(guò)DQ寫入命令,并可讀出含有溫度信息的數(shù)字量。DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2PRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,頭2字節(jié)包含測(cè)得的溫度信息,第3和第4是TH和TL的拷貝,是易失性的,每次上電復(fù)位時(shí)被刷新。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值(見(jiàn)表6-4)。
表6-4DS18B20分辨率的設(shè)置
設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間之間權(quán)衡考慮。
DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則該器件內(nèi)的報(bào)警標(biāo)值位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。
在使用DS18B20時(shí),主機(jī)應(yīng)先向DS18B20發(fā)送復(fù)位信號(hào),主機(jī)將數(shù)據(jù)線拉低并保持480~960μs,然后再釋放數(shù)據(jù)線,由上拉電阻拉高15~60μs,最后由DS18B20發(fā)出低電平60~240μs,這樣就完成了復(fù)位操作。
在主機(jī)對(duì)DS18B20寫數(shù)據(jù)時(shí),應(yīng)先將數(shù)據(jù)線拉低1μs以上,再寫入數(shù)據(jù)。待主機(jī)寫入的數(shù)據(jù)變化15~60μs后,DS18B20將對(duì)數(shù)據(jù)線采樣,要求主機(jī)寫入數(shù)據(jù)到DS18B20的保持時(shí)間應(yīng)為60~120μs。2次寫數(shù)據(jù)操作的間隙應(yīng)大于1μs。
3)顯示與報(bào)警電路
顯示電路采用MSP430F4270單片機(jī)內(nèi)置的LCD驅(qū)動(dòng)模塊驅(qū)動(dòng)外部LCD段碼顯示。LCD的4種驅(qū)動(dòng)方式中可選用4MUX方式,這樣可以節(jié)省口線以備它用。
由于采用MSP430F4270內(nèi)部集成的LCD顯示驅(qū)動(dòng)模塊,故LCD顯示非常簡(jiǎn)單,只需在軟件中設(shè)置相應(yīng)的控制寄存器,把顯示代碼送入相應(yīng)的LCD緩存寄存器即可。
報(bào)警電路可采用簡(jiǎn)單的LED發(fā)光二極管報(bào)警,通過(guò)控制P口的輸出電平,可實(shí)現(xiàn)上下限報(bào)警功能。
4)鍵盤接口
根據(jù)該系統(tǒng)功能,可以設(shè)置4個(gè)按鍵。鍵盤可以通過(guò)具有中斷的I/O直接和單片機(jī)連接,并通過(guò)680kΩ的上拉電阻和3.3V電源相連。利用該I/O口的中斷功能,只有有鍵按下時(shí),P1口相應(yīng)的中斷標(biāo)志位才置1,并向CPU申請(qǐng)中斷,這時(shí)CPU才會(huì)在中斷子程序中對(duì)按鍵進(jìn)行處理。
2.系統(tǒng)功能設(shè)計(jì)
1)系統(tǒng)資源配置
MSP430F4570內(nèi)部有32KBFLASH程序存儲(chǔ)器,256個(gè)SRAM和32個(gè)I/O口。可采用C語(yǔ)言編寫程序,無(wú)須對(duì)RAM分配。I/O口分配情況如下:
P1可用于鍵盤接口、DS18B20的接口和上下限報(bào)警控制線;
P5口和P2口與S端口復(fù)用,作為L(zhǎng)CD的段驅(qū)動(dòng)。
2)系統(tǒng)軟件結(jié)構(gòu)分析與模塊設(shè)計(jì)
(1)系統(tǒng)主程序的主要功能:
初始化堆棧、DS18B20、看門狗等;
檢測(cè)鍵盤鍵入溫度上下限值;
溫度的采集與處理;
溫度的顯示;
報(bào)警控制。
主程序流程圖如圖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); //跳過(guò)ROM
write_byte(0x44); //開(kāi)始轉(zhuǎn)換
delay(5); //延遲(255);
_NOP();
ow_reset();
_NOP();
write_byte(0xcc); //跳過(guò)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) //寫一個(gè)字節(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)//讀一個(gè)字節(jié)子程序
{
unsignedchari;
unsignedcharvalue=0;
for(i=0;i<8;i++)
{
if(read_bit()!=0)value|=0x01<<i;
delay(6);
}
return(value);
}6.2.3
智能瓦斯測(cè)試儀
1.系統(tǒng)總體設(shè)計(jì)
智能瓦斯測(cè)試儀主要實(shí)現(xiàn)可燃?xì)怏wCH4濃度的檢測(cè)與顯示,當(dāng)可燃?xì)怏w濃度超過(guò)所規(guī)定的標(biāo)準(zhǔn)時(shí),能夠報(bào)警提示,并且將采集的信息傳送給總系統(tǒng)監(jiān)控平臺(tái)。該測(cè)試儀實(shí)際上是一個(gè)典型的數(shù)據(jù)采集系統(tǒng),其性能指標(biāo)如下:
甲烷測(cè)量范圍:0~100%(百分比濃度);
甲烷測(cè)量分辨率:1%;
甲烷測(cè)量精度:0.2%;
響應(yīng)時(shí)間:15s。
該測(cè)試儀可以由電源管理控制、數(shù)據(jù)采集、數(shù)據(jù)處理、信息存儲(chǔ)、結(jié)果顯示和報(bào)警控制等部分組成。數(shù)據(jù)采集的對(duì)象是甲烷氣體的濃度,故選用甲烷傳感器進(jìn)行物理量的測(cè)量,同時(shí)選用溫度傳感器采集的現(xiàn)場(chǎng)溫度對(duì)該測(cè)量值進(jìn)行補(bǔ)償。該測(cè)試儀的系統(tǒng)框圖如圖6-16所示。
圖6-16硬件結(jié)構(gòu)框圖
由氣泵吸入的甲烷氣體的濃度信息通過(guò)甲烷傳感器部分的采集,經(jīng)過(guò)信號(hào)調(diào)理電路對(duì)微弱的傳感信號(hào)進(jìn)行調(diào)理放大,送到主控制器進(jìn)行處理。主控制器主要實(shí)現(xiàn)將檢測(cè)到的模擬量通過(guò)A/D轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字量,經(jīng)過(guò)數(shù)字處理之后,送入液晶顯示器進(jìn)行顯示、報(bào)警等一系列操作的控制。溫度傳感器主要完成對(duì)環(huán)境溫度的檢測(cè),用于對(duì)甲烷氣體濃度的補(bǔ)償。顯示部分可以完成甲烷氣體濃度的顯示、環(huán)境溫度的顯示以及時(shí)間的顯示。鍵盤部分完成對(duì)一些功能的設(shè)置,如報(bào)警的上下限、時(shí)間的設(shè)置等。
2.硬件系統(tǒng)設(shè)計(jì)
根據(jù)前述總體方案,系統(tǒng)主機(jī)可采用MSP430F149單片機(jī),甲烷傳感器可采用邯鄲平安機(jī)電研究所生產(chǎn)的JZY4-13礦用型催化燃燒式傳感器。溫度的檢測(cè)可采用常用的DS18B20。因?yàn)椴粌H顯示當(dāng)前的時(shí)間,而且還要顯示當(dāng)前的濃度,所以顯示部分可采用點(diǎn)陣液晶顯示進(jìn)行濃度顯示。報(bào)警裝置可以選用簡(jiǎn)單的蜂鳴器和發(fā)光二極管進(jìn)行濃度超限聲光報(bào)警。鍵盤部分可以設(shè)置4個(gè)按鍵,分別用作功能選擇與確定,設(shè)置上行、下行顯示和控制電源開(kāi)關(guān)。
1)主控制器
本系統(tǒng)采用TI公司的MSP430F149單片機(jī),其內(nèi)部資源豐富,存儲(chǔ)容量大,有60KB+256B的閃速存儲(chǔ)器以及2KB的RAM,共64個(gè)引腳,采用方形扁平封裝(QFP)。MSP430F149單片機(jī)片內(nèi)自帶12位A/D轉(zhuǎn)換器,轉(zhuǎn)換精度高,噪聲小,轉(zhuǎn)換速度快,這樣就可以避免增加額外的A/D轉(zhuǎn)換芯片,即避免使用過(guò)多的I/O口,以達(dá)到降低成本,縮小體積的目的。單片機(jī)片內(nèi)的12位A/D轉(zhuǎn)換器在2.5V滿量程狀態(tài)下,最小分辨電壓U=2.5V/4096=0.6mV,若使用內(nèi)部時(shí)鐘,轉(zhuǎn)化時(shí)間最大為3.51μs,而使用外部時(shí)鐘轉(zhuǎn)換時(shí)間
=?13?×?分頻系數(shù)
×?外部時(shí)鐘周期。單片機(jī)將A/D轉(zhuǎn)換的數(shù)據(jù)經(jīng)過(guò)數(shù)字濾波后,一方面送入存儲(chǔ)器,另一方面送到液晶屏顯示。
MSP430單片機(jī)片內(nèi)A/D基準(zhǔn)有片內(nèi)基準(zhǔn)和片外基準(zhǔn)兩種選擇。雖然選用片內(nèi)基準(zhǔn)就可以不外接基準(zhǔn),減小電路的復(fù)雜程度,但因?yàn)樗璧霓D(zhuǎn)換精度較高,而片內(nèi)基準(zhǔn)的溫度系數(shù)較大(100ppm/℃),且大于12位A/D的分辨率,所以可以選用精度比較高的片外基準(zhǔn)電壓源MC1403。它的輸入電壓VIN在4.5~40V之間,輸出電壓VOUT=2.5V,最大溫度系數(shù)為40ppm/℃,典型值為10ppm/℃,可達(dá)到設(shè)計(jì)要求。
甲烷氣體的濃度經(jīng)過(guò)傳感器采集之后,通過(guò)信號(hào)調(diào)理轉(zhuǎn)換為0~2.5V的電壓,可直接送入MSP430F149單片機(jī)的A/D輸入通道P6口MSP430F149單片機(jī)的A/D轉(zhuǎn)換模塊將輸入的模擬量轉(zhuǎn)化為相應(yīng)的數(shù)字量,通過(guò)采集到的溫度信息,經(jīng)補(bǔ)償修正處理之后,可以控制液晶顯示器顯示濃度值。同時(shí),單片機(jī)還采集時(shí)間信息,對(duì)當(dāng)前濃度對(duì)應(yīng)的時(shí)間信息進(jìn)行同時(shí)顯示,并可通過(guò)報(bào)警裝置實(shí)現(xiàn)超濃度報(bào)警。
2)傳感器電路
系統(tǒng)可采用邯鄲平安機(jī)電研究所生產(chǎn)的JZY4-13礦用型催化燃燒式傳感器。該傳感器由兩個(gè)相同的鉑絲電阻構(gòu)成一端作測(cè)量用,另一端密封用作溫度濕度補(bǔ)償,電路采用橋式連接,有效地提高了測(cè)量的線性度。該型號(hào)傳感器具有高精度高線性度特點(diǎn),其輸出經(jīng)過(guò)儀器調(diào)理電路可產(chǎn)生0~2.5V的標(biāo)準(zhǔn)信號(hào),可滿足MSP430自帶12位ADC的需要。外界氣體濃度與輸出電壓之間基本呈線性關(guān)系,只需簡(jiǎn)單補(bǔ)償,同時(shí)在氣體標(biāo)定時(shí)較好地解決了精度與量程之間的矛盾。
儀器調(diào)理電路部分可采用電源電壓為3.3V的ICL27L2和ICL27L4低功耗運(yùn)放,以便能與整個(gè)系統(tǒng)的低功耗特性相匹配。橋式變送電路如圖6-17所示。
圖6-17橋式變送電路
3)溫度檢測(cè)電路
由于溫度檢測(cè)主要用于對(duì)測(cè)量結(jié)果進(jìn)行修正,對(duì)于提高氣體檢測(cè)精度具有十分重要的意義,因此,可以選用具有功耗低、性能穩(wěn)定、轉(zhuǎn)換精度高、外接電路簡(jiǎn)單等優(yōu)點(diǎn)的集成溫度傳感器DS18B20對(duì)
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 投標(biāo)報(bào)價(jià)記錄表
- 質(zhì)量保證體系
- 宏觀研究-宏觀經(jīng)濟(jì)研究:為什么要轉(zhuǎn)型為消費(fèi)驅(qū)動(dòng)型社會(huì)
- 基于隨機(jī)采樣的可靠機(jī)器學(xué)習(xí)建模及評(píng)價(jià)方法研究
- 浙江省溫州新力量聯(lián)盟2022-2023學(xué)年高二下學(xué)期期末檢測(cè)化學(xué)試題(含答案)
- 汽車傳感器與檢測(cè)技術(shù)電子教案:發(fā)動(dòng)機(jī)轉(zhuǎn)速傳感器
- 寧德天湖山現(xiàn)代農(nóng)業(yè)種殖養(yǎng)殖示范基地建設(shè)項(xiàng)目可研報(bào)告
- 土建現(xiàn)場(chǎng)工人管理制度
- 介紹對(duì)象活動(dòng)方案
- 介紹課間活動(dòng)方案
- 員工住廠外免責(zé)協(xié)議書(shū)(2篇)
- 2024年淮南市第一人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 兒童運(yùn)動(dòng)康復(fù)治療
- 2025年三峽集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2024-2030年中國(guó)橋梁管理與養(yǎng)護(hù)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 產(chǎn)后陪護(hù)服務(wù)質(zhì)量管理制度
- 計(jì)量經(jīng)濟(jì)學(xué)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋安徽農(nóng)業(yè)大學(xué)
- 某啤酒促銷員工作管理手冊(cè)
- 河南科技大學(xué)《固體物理A》2021-2022學(xué)年第一學(xué)期期末試卷
- TCUWA40055-2023排水管道工程自密實(shí)回填材料應(yīng)用技術(shù)規(guī)程
- 六年級(jí)語(yǔ)文下冊(cè) 期末復(fù)習(xí)非連續(xù)性文本閱讀專項(xiàng)訓(xùn)練(二)(含答案)(部編版)
評(píng)論
0/150
提交評(píng)論