监测控制系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验课程名称:监测控制系统应用实验七

实验项目名称:监测控制系统的设计与实现实验成绩:实验者:专业班级:电信130 班同组者:实验日期:周四3~4节一.实验目的

1.通过本次实验形成系统设计的概念

2.掌握单片机应用系统的设计方法和流程

3.学会合理分配资源

4.提高综合运用知识的能力

二.实验要求

1.综合前面的实验,实现一监测控制系统,监测一模拟量(0-5V的交流电)输入并显示。

2.当该模拟量在正常的1-3V范围内时,系统执行正常的顺序控制,这时8个LED 灯依次亮2s并循环(代表正常的工序)。

3.当模拟量超出1-3V范围时,则8个LED灯间隔一个灯依次亮2s并循环(代表特殊的工序)。

4.用一个按键模拟故障,当该按键按一下时,发出报警声,LED全灭(代表工作暂停),当该按键再按一下时,表示故障解除,停报警声,恢复正常工作。

三.探究内容

1.当系统有较多外设时,如何为外设分配I/O口,是否要扩展I/O口?

2.当系统有较多任务时,分析任务的实时性和所占资源,考虑那些任务放主程序执行,哪些放中断执行?(中断资源、定时器资源的合理分配)

3.本任务中的定时2s任务是由定时器定时实现还是通过软件延时实现好?(定时器资源、实时性综合考虑,只要满足要求即可,没有固定的安排模式)

四.流程图

系统流程图定时中断流程图

外部中断流程图

五.实验连线图

PCF 芯片的 CLK接P1.0;CS接P1.1 ;D1接P1.2;D0接P1.3;

蜂鸣器接在P3.6接一个开关在P3.2(外部中断),P1.5接整数位显示数码管的位选,P1.6接第一位显示数码管的位选,P1.7接第二位数码管的位选。

查看LED灯状态时,LED灯接 P2口;

查看数码管状态时,数码管段选接在P0口。

六.实验结果及分析

1. 实验结果

2.结果分析:

有实验知,输入电压在1~3V之间时,LED依次滚动显示,相邻显示间隔2s,电压小于1V或者大于3V时,LED灯隔一个显示,每次显示2s。有外部中断触发时,蜂鸣器响,LED灯全灭,外部中断再次触发时,根据外部输入电压值正常显示。

七.附录

实验程序

/*******************************初始化*******************************/

#ifndef__XPT2046_H_

#define __XPT2046_H_

//---包含头文件---//

#include

#include

//---重定义关键词---//

#ifndef uchar

#define uchar unsigned char

#endif

#ifndef uint

#define uint unsigned int

#endif

#ifndef ulong

#define ulong unsigned long

#endif

//---定义使用的IO口---//

sbit CLK = P1^0;//时钟

sbit CS = P1^1;//片选

sbit DIN = P1^2;//输入

sbit DOUT = P1^3;//输出

uint Read_AD_Data(uchar cmd);

uint SPI_Read(void);

void SPI_Write(uchar dat);

#endif

/*******************总线初始化及AD/DA转换函数初始化********************/ #include"XPT2046.h"

/***************************************************************************

*函数名:TSPI_Start

*输入:无

*输出:无

*功能:初始化触摸SPI

*************************************************************************** */

void SPI_Start(void)

{

CLK = 0;

CS = 1;

DIN = 1;

CLK = 1;

CS = 0;

}

/*************************************************************************** *

*函数名:SPI_Write

*输入:dat:写入数据

*输出:无

*功能:使用SPI写入数据

*************************************************************************** */

void SPI_Write(uchar dat)

{

uchar i;

CLK = 0;

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

{

DIN = dat >> 7; //放置最高位

dat <<= 1;

CLK = 0;//上升沿放置数据

CLK = 1;

}

}

/***************************************************************************

相关文档
最新文档