加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于51单片机的酒驾报警【ADC0832,LCD1602】(仿真)

12小时前
191
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

酒驾报警:

1、通过AD芯片传感器检测酒精浓度

2、设置不同的报警值,喝酒检测和醉酒状态检测,LED指示不同的报警状态

3、检测到喝酒状态,报警;检测到醉酒状态,启动刹车

#include "ADC0832.h"
#include "intrins.h"
//读取AD值
unsigned int ADC0832(unsigned char channel)  //AD转换,返回结果
{
	unsigned char i = 0;
	unsigned char j;
	unsigned int dat = 0;
	unsigned char ndat = 0;

	if (channel == 0) channel = 2;//通道1
	if (channel == 1) channel = 3;//通道2
	ADDI = 1;//输入引脚拉高
	_nop_();//延时1us
	_nop_();//延时1us
	ADCS = 0;//片选
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	ADDI = channel & 0x1;
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	ADDI = (channel >> 1) & 0x1;
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	ADDI = 1;//输出1
	_nop_();//延时1us
	_nop_();//延时1us
	dat = 0; //存储清零
	ADDI =1;
	for (i = 0; i < 8; i++)	//循环8次
	{
		dat |= ADDI;//读取引脚
		ADCLK = 1; //拉高时钟
		_nop_();//延时1us
		_nop_();//延时1us
		ADCLK = 0;//拉低时钟
		_nop_();//延时1us
		_nop_();//延时1us
		dat <<= 1;//左移
		if (i == 7) dat |= ADDI;//读取引脚
	}
	for (i = 0; i < 8; i++)//循环8次
	{
		j = 0;
		j = j | ADDI; //读取引脚
		ADCLK = 1;	//拉高时钟
		_nop_();//延时1us
		_nop_();//延时1us
		ADCLK = 0;	//拉低时钟
		_nop_();//延时1us
		_nop_();//延时1us
		j = j << 7;	//左移7位
		ndat = ndat | j; //合并数据
		if (i < 7) ndat >>= 1;//去掉符号
	}
	ADCS = 1; //清除片选
	ADCLK = 0;//拉低时钟
	ADDI=1;
	dat <<= 8;//数据移位
	dat |= ndat;//合并数据
	return(ndat);
}

 

资料借鉴于此 纷传

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱