目 录
摘 要 I
Abstract II
一、 设计意义 1
二、 硬件设计 1
1、设计框图 1
2、乙醇信号检测及调理电路 2
3、单片机电路 5
4、显示电路 6
5、供电及程序下载电路 7
三、 Protel硬件开发软件 8
1.Protel软件组成 8
2.PCB板设计 9
四、 软件编程 12
1、软件流程图 12
2、主程序 12
五、 下载与调试 21
1、 USB转串口驱动安装 21
2、 下载程序 21
参考文献 24
程序附录 25
本研究设计的酒精浓度测试仪是一款实用性强、安全可靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC89C52对检测信号进行A/D转换和处理,最后通过液晶屏显示输出。本研究设计的酒精浓度测试仪还具有醉酒阈值设定功能,可以根据法律法规或用户需要设定修改醉酒阈值,并进行保存。
三、Protel硬件开发软件
Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个实用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基础上Protel 99SE又增加了一些新的功能,用户使用更加方便灵活。Protel的功能十分强大,在电子电路设计领域占有极其重要的地位。它以其强大功能和实用性,逐渐获得广大硬件设计人员的青睐,是目前众多EDA设计软件中用户最多的产品之一。
1.Protel软件组成
Protel软件主要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有强大的功能,可以很好的实现电路设计与分析。
(1) 原理图设计模块(Schematic模块)
电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完成的。Schematic模块具有如下功能:丰富而灵活的编辑功能、在线库编辑及完善的库管理功能、强大的设计自动化功能、支持层次化设计功能等。
(2) 印制电路板设计模块(PCB设计模块)
印制电路板(PCB)制板图是由电路原理图到制作电路板的桥梁。设计了电路原理图后,需要根据原理图生设计成印制电路板的制板图,然后在根据制板图制作具体的电路板。印制电路板设计模块具有如下主要功能和特点:可完成复杂印制电路板(PCB)的设计;方便而又灵活的编辑功能;本文转载自http://www.biyezuopin.vip/onews.asp?id=13412强大的设计自动化功能;在线式库编辑及完善的库管理;完备的输出系统等。
(3) 电路信号仿真模块
电路信号仿真模块是一个功能强大的数字/模拟混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。它运行在Protel的EDA/Client集成环境下,与Protel Advanced Schematic原理图输入程序协同工作,作为Advanced Schematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。
在Protel中进行仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上激励源,然后单击防真按钮即可自动开始。

#include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535

#include <intrins.h>
//#include "lcd1602.h"

sbit CS=P2^4;		//CS定义为P2口的第4位脚,连接ADC0832CS脚
sbit SCL=P2^3;		//SCL定义为P2口的第3位脚,连接ADC0832SCL脚
sbit DO=P2^2;		//DO定义为P2口的第4位脚,连接ADC0832DO脚

sbit beep = P3^2;   //蜂鸣器IO口定义
long dengji,s_dengji = 50;     //酒精等级


bit flag_300ms ;
uchar key_can;		 //按键值的变量
uchar menu_1;        //菜单设计的变量
uchar flag_clock;
#include "eeprom52.h"

#include "lcd1602.h"



/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<120;j++);
}


/******************把数据保存到单片机内部eeprom中******************/
void write_eeprom()
{
	SectorErase(0x2000);
//	byte_write(0x2000, s_dengji);
	byte_write(0x2001, s_dengji);
	byte_write(0x2060, a_a);	
}

/******************把数据从单片机内部eeprom中读出来*****************/
void read_eeprom()
{
//	s_dengji   = byte_read(0x2000);
	s_dengji = byte_read(0x2001);
	a_a      = byte_read(0x2060);
}

/**************开机自检eeprom初始化*****************/
void init_eeprom()
{
	read_eeprom();		//先读
	if(a_a != 2)		//新的单片机初始单片机内问eeprom
	{
		s_dengji = 80;
		a_a = 2;
		write_eeprom();
	}	
}

/***********读数模转换数据********************************************************/	
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
						//  1  0  0 通道
						//  1  1  1 通道 
unsigned char ad0832read(bit SGL,bit ODD)
{
	unsigned char i=0,value=0,value1=0;		
		SCL=0;
		DO=1;
		CS=0;		//开始
		SCL=1;		//第一个上升沿	
		SCL=0;
		DO=SGL;
		SCL=1;  	//第二个上升沿
		SCL=0;
		DO=ODD;
		SCL=1;	    //第三个上升沿
		SCL=0;	    //第三个下降沿
		DO=1;
		for(i=0;i<8;i++)
		{
			SCL=1;

知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_程序


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_单片机_02


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_程序_03


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_程序_04


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_单片机_05


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_程序_06


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_嵌入式硬件_07


知识蒸馏目标检测算法需要说明显卡 蒸馏测定仪_单片机_08