资源简介
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
- 上一篇:南京理工大学模式识别与图像分析考博试题
- 下一篇:编译原理__语义分析_实验报告
相关资源
- 基于DS18B20设计温度报警器
- 基于MSP430的多路火灾报警系统
- LabView的温度报警和跑马灯程序
- MSP430单片机DS18B20测温、LCD1602显示、报
- 1602 18B20温度报警器.
- labview 利用用户事件温度报警
- 基于MSP430单片机温湿度控制器
- proteus 下pt100温度报警器
- 温度报警器 Multisim
- 51单片机温度报警程序
- 利用MSP430处理器实现音频频谱分析仪
- 基于51单片机的温度警报器的设计
- MSP430音乐播放器
- 51单片机温度报警器设计程序及prote
- 18B20+1602温度报警完整
- 51单片机和1602显示18b20温度报警系统
- 基于51开发板的温度报警闹钟按键控制
- 基于51单片机的温度报警系统
- Arduino温度报警器
- 基于51单片机的温度报警
- PID算法之msp430单片机实现
- MSP430G2553的时钟系统初始化及PWM的呼吸
- OLED(SSD1306)驱动
- msp430中ADC模块设计的程序及原理图
- ADS1118的MSP430F5529驱动程序
- MSP430与L298控制直流电机
- MSP430 AD库
- MSP430单片机通过proteus仿真DS18B20程序
- MSP430g2553单片机实现的输出三路PWM,
- MSP430F147中文手册
评论
共有 条评论