資源簡介
1. 利用一臺PC臺式機和1塊MSP430F1xx實驗板,PC機稱主機,MSP430F1xx實驗板稱從機,主機和從機之間通過串口進行連接,主機負責下達命令,對從機進行監控;從機負責監控現場的信號,響應主機下達的命令,并傳送主機所要的數據;
2. 從機采集的數據為現場溫度(用可調的直流電壓代替),從機實時將采集到的溫度值通過1個數碼管和8發光二極管顯示出來;當從機檢測到現場的溫度超過一定值(如2.8v以上,實驗時通過調節可調電阻值達到),并持續2秒以上,則發出通過蜂鳴器發出報警聲,同時將LED1點亮,表示現場的制冷設備處于投入狀態;蜂鳴報警聲可由現場人員通過按下Key1鍵消除,也可以響到5秒后自動停止;當溫度回到正常值(如2.5v以下,實驗時通過調節可調電阻值達到),熄滅LED1,表示制冷設備處于關閉狀態。要求將報警次數通過數碼管顯示出來。操作Key7鍵可切換數碼管和發光二極管顯示的內容,如果當前顯示報警次數和制冷設備工作狀態,按下Key7鍵,顯示溫度值,再按一下key7鍵,則顯示是報警次數和制冷設備工作狀態。按下Key3鍵可將報警次數清零。
3. 主機向從機下達的命令有: 1)獲取現場當前的溫度值; 2)獲取現場的報警次數;3)清除報警次數。從機對主機發出的命令作出響應。
代碼片段和文件信息
#include?“io430.h“
#include?“intrinsics.h“
/*全局變量聲明*/
char?warn;//用于記錄報警次數
char?count1;//用于延時2S
int?show;//用于記錄按下KEY7情況,show=1,顯示報警;show=0,顯示溫度
unsigned?int?tem;//用于實時記錄溫度值
float?tem_show;//用于顯示溫度值
char?string[16]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x71};//用于數碼管顯示
char?highlowlow1low2Lab;//用于溫度顯示
char?*p;//用于溫度顯示的指針
/*函數聲明*/
//初始化子程聲明
void?PORT_Init();//管腳初始化(LED,數碼管,蜂鳴器,按鍵中斷)
void?ADC_Init();//數模轉換初始化
//void?Sys_Init();//時鐘初始化
void?USART1_Init();//串口0初始化
//功能子程
void?delay();//用于延時,延時0.25S
int?input(char?Lab);//用于數碼管輸入
void?show_w();//用于顯示報警
void?show_t();//用于顯示溫度
void?temperature();//用于溫度采樣監測?
/*主程序*/
int?main(?void?)
{
??//?Stop?watchdog?timer?to?prevent?time?out?reset
??WDTCTL?=?WDTPW?+?WDTHOLD;
??//變量初始化
??warn=0;
??count1=0;
??show=0;//先顯示溫度
??//端口初始化
??__disable_interrupt();
???USART1_Init();???????????????????//串口初始化
???ADC_Init();??????????????????????//數模轉換初始化
???PORT_Init();?????????????????????//管腳初始化
??__enable_interrupt();
??
??//循環測溫,
??for(;;)
??{
????if(show==0)
????{
??????show_t();
????}
????else
????{
??????show_w();
????}
????
????temperature();//0.25S測一次
????
????if?(tem>0xD93)
????{
??????if?(count1<8)
??????????count1++;
??????//else?if(count1==8)
??????????//warn++;
????}
????else?if?(tem<0x9B2)
????{
??????count1=0;
??????if?(show==1)
??????{
????????P2OUT_bit.P2OUT_0=1;//LED1關
??????};
????}
????else?
????{
??????count1=0;
????}
????
????if?(count1==8)//2S以上都大于2.8V
????{
??????warn++;
??????if(show==1)
??????{
????????P2OUT_bit.P2OUT_0=0;//LED1亮
??????};
??????P6OUT_bit.P6OUT_5=0;//蜂鳴器響
??????unsigned?int?i;
??????for(i=0;i<21;i++)
??????{
????????if(P6OUT_bit.P6OUT_5==0)
??????????delay();
??????};
??????P6OUT_bit.P6OUT_5=1;
????}
??};
}
/*按鍵中斷*/
#pragma?vector=PORT1_VECTOR?????????
__interrupt?void?port_int()
{
????if?(P1IFG_bit.P1IFG_0==1)//?按下?key1
????{
??????P6OUT_bit.P6OUT_5=1;//BUZZ停止響
??????P1IFG_bit.P1IFG_0=0;
????}
????if?(P1IFG_bit.P1IFG_2==1)//?按下?key3
????{
??????warn=0;
??????P1IFG_bit.P1IFG_2=0;
????}
????if?(P1IFG_bit.P1IFG_6==1)//?按下?key7??????
????{
??????if(show==0)
??????{
????????show=1;
??????}
??????else
??????{
????????show=0;
??????}
??????P1IFG_bit.P1IFG_6=0;
????}
}
/*串口中斷*/
#pragma?vector=USART1RX_VECTOR?????
__interrupt?void?U1RX_isr()
{
??char?Rx;
??Rx=U1RXBUF;
??if?(Rx==‘W‘)?//將相關參數傳給電腦:現場報警次數
????{
????????while?(!IFG2_bit.UTXIFG1);
????????U1TXBUF=warn+‘0‘;
????}
??else?if?(Rx==‘T‘)//將相關參數傳給電腦:當前溫度值
????{
????????while?(!IFG2_bit.UTX
- 上一篇:南京理工大學模式識別與圖像分析考博試題
- 下一篇:編譯原理__語義分析_實驗報告
評論
共有 條評論