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

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

基于51单片机的语音播报酒精检测仪设计

7小时前
310
服务支持:
技术交流群

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

虚拟商品不可退

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

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

设计要求:

(1)数据采集系统以单片机为控制核心,外围电路带有LCD显示以及键盘响应电路,无需要其他计算机,用户就可以与之进行交互工作,完成数据的采集、存储、计算、分析等过程。

(2)系统具有低功耗、小型化、高性价比等特点。

(3)从便携式的角度出发,系统成功使用了液晶显示器以及小键盘。由单片机系统控制键盘和LCD显示来实现人机交互操作,界面友好。

include <reg52.h>
#include <intrins.h>
//显示函数
#include <display.h>
#include <4004.h>

//宏定义
#define uint unsigned int 
#define uchar unsigned char
#define Data_ADC0809 P1
 
//管脚声明
//sbit LED_R= P2^2; //红指示灯
//sbit LED_G= P2^0; //绿色指示灯
//sbit FENG = P2^5; //蜂鸣器
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^1;
sbit OE=P3^2;
//按键
sbit Key1=P2^5;	//设置按键
sbit Key2=P2^4; //加
sbit Key3=P2^3;	//减
sbit Key4=P2^2;

bit bdata flag;//指示灯和蜂鸣器闪烁报警标志位
uchar set;	  //设置标志位


//函数声明
extern uchar ADC0809();
extern void Key();

//酒精含量变量
uchar temp=0;

uchar WARNING=25; // 初始报警值

void delay_2S(void)   //4S
{
    uchar a;
	uchar b,c;
    for(c=90;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
//初始化函数
/*void init()	 
{
	TMOD=0x01; //定时器0方式1
 	TL0=0xb0;
 	TH0=0x3c;  //赋初值
 	EA=1;	//开总中断
	ET0=1;	//允许定时器0中断
 	TR0=1;	//定时器0开
}  */
 //主函数
void main()
{
	uchar p=0;
	uint sum;
	Init1602();	//1602初始化
//	init();	 //初始化函数
	while(1)//主循环
	{
		for(p=0;p<20;p++)
		{
			temp=ADC0809();	//读取酒精值
			sum=sum+temp;
		}
		temp=sum/20;
		sum=0;
		
		if(set==0) //如果没有按下设置(默认set是0,就是正常显示状态)
		Display_1602(temp,WARNING,Mode);	 //显示酒精值
		//开始语音播报
	if(set==0)
	{
			//现在浓度
			playbit=1;
			playcout=1;
			playsound();
			delay_2S();
			delay_2S();
			DDstop();	
			//第一位
			playbit=1;
			playcout=(temp/100)+2;
			playsound();
			delay_2S();
			DDstop();	
			//第二位
			playbit=1;
			playcout=(temp%100/10)+2;
			playsound();
			delay_2S();
			DDstop();	
			//第三位
			playbit=1;
			playcout=(temp%100%10)+2;
			playsound();
			delay_2S();
			DDstop();
/*			//米
			playbit=1;
			playcout=12;
			playsound();
			delay_2S();
			DDstop();	*/

		if(temp<WARNING&&set==0)	//如果实际的酒精值小于报警值且在正常显示状态下
		{
//			flag=0;	 //执行下面flag=0的(主要就是绿灯闪,关蜂鸣器和继电器)
			//浓度正常
			playbit=1;
			playcout=12;
			playsound();
			delay_2S();
			delay_2S();
			DDstop();
		}
		else if(temp>WARNING&&set==0)  //如果实际的酒精值大于报警值且在正常显示状态下
		{
//			flag=1;	//执行下面flag=1的(主要就是红灯闪,开蜂鸣器和继电器)
			//浓度超标
			playbit=1;
			playcout=13;
			playsound();
			delay_2S();
			delay_2S();
			DDstop();
		}
		delay_2S();	
		//录音键按下
		if(Key4==0)
		{
			Mode=1;
			while(Mode!=14)
			{
				//按键判断
				if(Key4==0)
				{
					Mode++;
					Display_1602(0,0,Mode);
					while(Key4==0);
					//开始录音
					playbit=0;
					recbit=1;
				//	playcout=Mode-1;
					

资料借鉴于此 纷传

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

相关推荐

电子产业图谱