1051-基于51单片机的报警器1(模拟量,上下限,数码管,次数,ADC0832)原理图、流程图、物料清单、仿真图、源代码
功能介绍:
环境监测,单一物理量的上下限报警器
1、通过AD芯片测量待测物理量(有害气体等)
2、设置上下限报警值,测量值超过阀值报警
3、记录报警次数
有哪些资料:
1、仿真工程文件
2、源代码工程文件
3、原理图工程文件
4、流程图
5、功能介绍
6、元件清单
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit CLK= P1^0;//时钟,初始状态为0
sbit DI= P1^1;//数据输入
sbit DO= P1^2; // 数据输出
sbit CS= P1^3;
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
sbit smg9=P1^5;
sbit smg10=P1^6;
sbit smg11=P1^7;
sbit k1=P3^2;//按钮
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
sbit k5=P3^0;
sbit k6=P3^1;
sbit beep=P3^7;//蜂鸣器
sbit out=P3^6;
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0;//定时
uchar cishu=0;//报警次数
uint set1=100,set2=300;//阀值
uint gas=0;//浓度
uchar flag=0;
/*********************************************
读取ADC
**********************************************/
uchar ADC(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//开始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//选择通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3个上升沿DI=0
_nop_();
DI=1;
//********通道选择结束开始读取转换后的二进制数****
//下降沿读数,一下进行判断和处理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS=1;
return temp0;
}
//延时
void delay(uint i)
{
while(i--);
}
//主函数