基于单片机的四位数码管检测有毒气体

发布于:2024-12-07 ⋅ 阅读:(113) ⋅ 点赞:(0)

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,通过滑动变阻器连接ADC0832数模转换器模拟有毒气体浓度检测,通过数码管实时显示,如果超过阈值,则蜂鸣器报警,灯光亮起。按键调整阈值

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include <REGX52.H>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned  int
typedef unsigned char u8;
typedef unsigned int  u16;
#define dula P0		//段选信号的锁存器控制

sbit wei1=P3^0;//位选定义
sbit wei2=P3^1;
sbit wei3=P3^2;
sbit wei4=P3^3;
sbit CS=P1^0;                 //adc0832引脚
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit key1 = P1^4;
sbit key2 = P1^5;
sbit beep = P1^6;
sbit led = P1^3;

static int nd[4];
static int ndyz=100;
 
unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴极段码表
int u;

void Nixie();//数码管显示函数

void delay(uint count)      //delay
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}


uchar get_AD_Res()            //ADC0832启动读取函数
{
	uchar i, data1=0, data2=0;
	CS=0;
	
	CLK=0;DIO=1;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	CLK=1;_nop_();
	
	CLK=0;DIO=0;_nop_();
	CLK=1;_nop_();
	
	CLK=0;DIO=1;_nop_(); 
	
	for(i=0; i<8; i++)
	{
		CLK=1;_nop_();
		CLK=0;_nop_();
		data1=(data1<<1)|(uchar)DIO; 
	}
	
	for(i=0; i<8; i++)
	{
		data2=data2|(uchar)DIO<<i;
		CLK=1;_nop_();
		CLK=0;_nop_();
	}
	CS=1;
	
	return(data1 == data2)?data1:0;
}

void main()
{
	beep = 1;
	led = 0;
	while(1)
	{	
		u = get_AD_Res();
		nd[0]=u/100;
		nd[1]=u/10%10;
		nd[2]=u%10;
		Nixie();
		if(!key1)
		{
			ndyz++;
			while(!key1);
		}
		if(!key2)
		{
			ndyz--;
			while(!key2);
		}
		if(u > ndyz)
		{
			beep = 0;
			led = 1;
		}
		else
		{
			beep = 1;
			led = 0;
		}
	}		
}
void Nixie()
{

	
	 wei1=0;		//显示千位
   wei2=1;
   wei3=1;
   wei4=1;
   P0=table[nd[0]];
   delay(2);

   wei1=1;		//显示百位
   wei2=0;
   wei3=1;
   wei4=1;
   P0=table[nd[1]];
   delay(2);

   wei1=1;		//显示十位
   wei2=1;
   wei3=0;
   wei4=1;
   P0=table[nd[2]];
   delay(2);
   P0=0x00;
}
 

四、实现现象

具体动态效果看B站演示视频:

基于单片机的四位数码管检测有毒气体_哔哩哔哩_bilibili

全部资料(源程序、仿真文件、安装包、演示视频):
链接: https://pan.baidu.com/s/1aO8Y-MuUOl5ZEZHYbRA8PA?pwd=e1cc 提取码: e1cc 
--来自百度网盘超级会员v4的分享