#include<reg51.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
unsigned char flag=0; //紧急报警标示位
unsigned char flag1=0; //传感器检测报警标示位
sbit CS=P1^0; //将CS位定义为P3.4引脚
sbit CLK=P1^1; //将CLK位定义为P1.0引脚
sbit DIO=P1^2; //将DIO位定义为P1.1引脚
sbit K1=P2^4;
sbit LED1=P2^0; //警情指示灯
sbit LED2=P2^1; //正常指示灯
sbit BEEP=P2^2;
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:按键控制子程序
******************************************************/
void key()
{
if(K1==0)
{
delaynms(5);
if(K1==0)
{
while(!K1);
flag++;
if(flag==2)
flag=0;
}
}
}
/*****************************************************
函数功能:报警子程序
*****************************************************/
void baojing()
{
if(flag==1||flag1==1)
{
LED2=1;
LED1=0;
BEEP=0;
delaynms(100);
BEEP=1;
delaynms(100);
}
if(flag==0&&flag1==0)
{
LED2=0;
LED1=1;
BEEP=1;
}
}
/*****************************************************
函数功能:将模拟信号转换成数字信号
***************************************************/
unsigned int A_D()
{
unsigned char i,dat;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲作准备
CS=0; //CS置0,片选有效
DIO=1; //DIO置1,规定的起始信号
CLK=1; //第一个脉冲
CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
DIO=1; //DIO置1, 通道选择信号
CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿
DIO=0; //DI置0,选择通道0
CLK=1; //第三个脉冲
CLK=0; //第三个脉冲下降沿
DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1
CLK=1; //第四个脉冲
for(i=0;i<8;i++) //高位在前
{
CLK=1; //第四个脉冲
CLK=0;
dat<<=1; //将下面储存的低位数据向右移
dat|=(unsigned char)DIO; //将输出数据DIO通过或运算储存在dat最低位
}
CS=1; //片选无效
return dat; //将读书的数据返回
}
/*****************************************************
函数功能:警情检测子程序
*****************************************************/
void jq()
{
unsigned int AD_val; //储存A/D转换后的值
AD_val=A_D(); //进行A/D转换
if(AD_val>=100)
flag1=1;
else
flag1=0;
}
/*****************************************************
函数功能:主函数
***************************************************/
main(void)
{
LED2=1;
LED1=1;
BEEP=1;
while(1)
{
jq();
key();
baojing();
}
}
>行者<
- 粉丝: 257
- 资源: 135
最新资源
- python PyQt5创建一个基本的学生管理系统教程
- 基于机器学习+深度学习+bert方法的虚假新闻检测项目源码+文档说明
- TI mmWave SDK的MSS和DSS函数调用关系图
- C语言-校园一卡通系统(大学生期末作业.zip
- (cuda12.4)selective-scan-cuda-core.cp310-win-amd64.pyd
- DSP2833x基于模型的电机控制设计 Simulik自动生成代码 DSP2833x基于模型的电机控制设计 MATLAb Simulik自动生成代码 基于dsp2833x 底层驱动库的自动代码生成
- 大屏抽奖软件Python 编写,excel方便更新内容
- 运营商大数据备考题库及答案
- (cuda12.4)selective-scan-cuda-oflex.cp310-win-amd64.pyd
- 黑苹果四叶草Clover-5146-X64.iso.7z
- 电压型同步发电机(VSG)离网仿真模型 有参考文献,帮助快速入门 包含电压电流双闭环,有功无功外环控制 细节:有PQ计算的仿真模型搭建,锁相环的模 型搭建,abc到dq坐标系的仿真模型搭建
- 基于Unet++ 实现的医学图像分割完整代码
- 基于深度学习的图像识别系统-卷积神经网络(CNN)的设计与实现及其多领域应用前景
- (cuda12.4)selective-scan-0.0.2-cp310-cp310-win-amd64.whl
- 拉丝机程序7+1,使用三菱FX3U系列PLC和昆仑通态触摸屏,已在设备上正常使用,包含PLC程序和触摸屏程序
- 大学计算机专业毕业设计开题报告书写参考模板
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈