基于单片机的WIFI、语音、储存、时钟、闹钟、定位系统

所有仿真详情导航:

PROTEUS专栏说明-CSDN博客

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,采用DS1302时钟模块,通过LCD1602显示实时时间,也可以储存时间在AT2DC02中,下次开机读取闹钟时间
然后通过串口传输实时时间给电脑端,这个表示WIFI
到达闹钟后,蜂鸣器报警,LED闪烁一秒
语音通过串口设置闹钟,发送格式为@22-20-20#
采用按键表示定位模块,一个表示定位正确,一个表示定位错误,用两个LED灯表示状态。

二、硬件资源

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

三、主程序编程

#include"reg51.h"
#include"ds1302.h"
#include "lcd1602.h"
#include<intrins.h>
#include<stdio.h>
#include"i2c.h"

#define uchar unsigned char	//数据类型换名字
#define uint unsigned int
/**************接口定义***************/
sbit button=P3^2;//按钮
sbit beep=P2^3;//蜂鸣器
sbit led=P1^0;//LED
sbit key1 = P1^1;
sbit key2 = P1^2;
sbit led1 = P1^3;
sbit led2 = P1^4;
/**************变量定义*****************/
uchar shi_time=0x17,fen_time=0x56,miao_time=0X30;//闹钟
uchar alarm[]={"ALARM12-40-30OFF"};//闹钟缓存
uchar clock[]={"CLOCK12-40-30   "};//时钟缓存
uchar ON_OFF=0;//ON.OFF标志
uint tim=0;	  //计时
uint tim1 = 0;
uchar start=0;//闹钟开启

uchar recive=0;//接收标志
uchar start_shou=0;//接收开始
uchar buff[]={"12-40-30"};

void delay(uint i)//延时
{
	while(i--);
}


void UART_init()//串口初始化
{
	SCON=0X50;			//设置为工作方式1
	TMOD = 0x21;  	//T1工作模式2  8位自动重装	T0模式1
	TH1 = 0xfd;
	TL1 = 0xfd; 	//比特率9600
	TH0=0x3c;//定时50ms
	TL0=0xb0;
	ET0=1;//T0中断开启
	TR0=1;
	TR1 = 1;		//启动T1定时器
	REN = 1;		//串口允许接收
	EA  = 1;		//开总中断
	ES  = 1;		//串口中断打开
	TI=1;
}
//===================================================================
void main()//主函数
{	
	init_1602();
	delay(10000);
	write_string(1,0,clock);//显示
	write_string(2,0,alarm);

	Ds1302ReadTime();
	TIME[0]&=0x7f;
	Ds1302Init();

	shi_time=At24c02Read(0);//初始化闹钟
	//if((shi_time>0x23)||((shi_time>>4)>9)||((shi_time&0x0f)>9))
	//	shi_time=0x06;
	fen_time=At24c02Read(1);//初始化闹钟
	//if(fen_time>0x59||((fen_time>>4)>9)||((fen_time&0x0f)>9))
	//	fen_time=0x30;
	miao_time=At24c02Read(2);//初始化闹钟
	//if(miao_time>0x59||((miao_time>>4)>9)||((miao_time&0x0f)>9))
	//	miao_time=0x30;
	At24c02Write(0,shi_time);//保存到24C02
	delay(10000);
	At24c02Write(1,fen_time);
	delay(10000);
	At24c02Write(2,miao_time);
	delay(10000);
	alarm[5]=(shi_time>>4)+0x30;
	alarm[6]=(shi_time & 0x0f)+0x30;
	alarm[8]=(fen_time>>4)+0x30;
	alarm[9]=(fen_time & 0x0f)+0x30;
	alarm[11]=(miao_time>>4)+0x30;
	alarm[12]=(miao_time & 0x0f)+0x30;
	write_string(2,0,alarm);//显示闹钟
	UART_init(); //串口初始化
	while(1)//主循环
	{
		if(!key1)
		{
			led1 = 0;
			led2 = 1;
			while(!key1);
		}
		
			if(!key2)
		{
			led1 = 1;
			led2 = 0;
			while(!key1);
		}
		
	 if(!button)//检测按钮
	 {
//	 delay(100);//延时消抖
	 	  if(!button)
		  {
		  	if(start)	  //清除报警
			  	start=0;
			else		 //闹钟开关
			   ON_OFF=!ON_OFF;
			if(!ON_OFF)		   //调整闹钟显示
			{
				alarm[14]='F';
				alarm[15]='F';
				write_string(2,0,alarm);
			}
			else
			{
				alarm[14]='N';
				alarm[15]=' ';
				write_string(2,0,alarm);
			}
		  }
		  while(!button);//等待按钮松开
	 }
	}
//**************************
	
}
//===================================================================
void UART() interrupt 4	//串口中断
{
	uchar num=0,i;
	if(RI)
	{	
	
		num=SBUF;//保存数据
		RI=0;

		if(start_shou)
		{
			TR0=0;
			buff[recive]=num;//保存数据
			recive++;
			if(recive==8)//接收数据处理
				{	
					recive=0;
					
					shi_time=(buff[0]-0x30)<<4;					
					shi_time+=(buff[1]-0x30);
					fen_time=(buff[3]-0x30)<<4;
					fen_time+=(buff[4]-0x30);
					miao_time=(buff[6]-0x30)<<4;
					miao_time+=(buff[7]-0x30);
					for(i=0;i<8;i++)	  //保存到数组
					{
						alarm[i+5]=buff[i];
					}
					write_string(2,0,alarm);//显示闹钟
					At24c02Write(0,shi_time);//保存到24C02
					delay(10000);
					At24c02Write(1,fen_time);
					delay(10000);
					At24c02Write(2,miao_time);
					delay(10000);
					TR0=1;
				}			
		}
		if(num=='@') //开始
			{
				start_shou=1;
				recive=0;
			}
		if(num=='#') //结束
			{
				start_shou=0;
				recive=0;
			}
			TR0=1;
	}
}

void timer0() interrupt 1//T0中断
{ 
	uchar i=0,j=0;
		if(start)//响铃
			beep=0;
		else
			beep=1;//关闭蜂鸣器
	//***************************
	if(tim<10)//0.5s
		tim++;
	else
		{
		tim=0;
		if(start)	 //闪灯
			led=!led;
		else
			led=1;	 //关灯
		Ds1302ReadTime();//读取时间
		clock[5]=(TIME[2]>>4)+0x30;//转换成ascall
		clock[6]=(TIME[2]&0x0f)+0x30;
		clock[8]=(TIME[1]>>4)+0x30;//转换成ascall
		clock[9]=(TIME[1]&0x0f)+0x30;
		clock[11]=(TIME[0]>>4)+0x30;//转换成ascall
		clock[12]=(TIME[0]&0x0f)+0x30;
		write_string(1,0,clock);//显示	
		//*************************
	i=0;
	if(miao_time==TIME[0])//闹钟检测
	{
		i++;
	}
if(ON_OFF==1)
{				
	if(shi_time==TIME[2])
	{
		i++;
	}
	if(fen_time==TIME[1])
	{
		i++;
	}
	if(i==3)
	{	 
		start=1;//开启闹铃
		i=0;
	}
	if(fen_time+1==TIME[1])
	{
		i++;
	}
	if(i==3)
	{	 
		start=0;//关闭闹铃
		i=0;
	}
}
		}
		if(tim1<20)
		{
			tim1++;
		}
		else
		{
			tim1 = 0;
			printf("%s \r\n",clock);	
		}
	TH0=0x3c;//定时50ms
	TL0=0xb0;
}

四、实现现象

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

基于单片机的WIFI、语音、储存、时钟、闹钟、定位系统_哔哩哔哩_bilibili

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/927764.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是GAN?

一、基本概念 生成对抗网络&#xff08;Generative Adversarial Network&#xff0c;GAN&#xff09;是一种由两个神经网络共同组成深度学习模型&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;。这两个网络通过对抗的方式…

RNN And CNN通识

CNN And RNN RNN And CNN通识一、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1. 诞生背景2. 核心思想和原理&#xff08;1&#xff09;基本结构&#xff1a;&#xff08;2&#xff09;核心公式&#xff1a;&#xff08;3&#xff09;关…

【数据事务】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

南昌大学(NCU)羽毛球场地预约脚本

在冬天进行羽毛球运动是一个很好的选择&#xff0c;它能帮助你保持身体活力&#xff0c;增强心肺功能&#xff0c;并促进血液循环。但是室友和师弟师妹反应&#xff0c;学校的羽毛球场地有限&#xff0c;手速慢的根本预约不到场地。 中午12&#xff1a;00准时开放预约&#xff…

三种方式(oss、本地、minio)图片的上传下载

一、OSS 1、前期准备 1.1 注册阿里云账号&#xff0c;开启对象存储oss功能&#xff0c;创建一个bucket&#xff08;百度教程多的是&#xff0c;跟着创建一个就行&#xff0c;创建时注意存储类型是标准存储&#xff0c;读写权限是公共读&#xff09; 有的在创建桶时读写属性是…

关于Nginx前后端分离部署spring boot和vue工程以及反向代理的配置说明

最近项目中用到关于Nginx前后端分离部署spring boot和vue工程以及反向代理的配置&#xff0c;总结了一下说明&#xff1a; 1、后端是spring boot工程&#xff0c;端口8000&#xff0c;通过 jar命令启动 nohup java -jar xxx-jsonflow-biz.jar > /usr/local/nohup.out 2>…

debian 11 虚拟机环境搭建过坑记录

目录 安装过程系统配置修改 sudoers 文件网络配置换源安装桌面mount nfs 挂载安装复制功能tab 无法补全其他安装 软件配置eclipse 配置git 配置老虚拟机硬盘挂载 参考 原来去 debian 官网下载了一个最新的 debian 12&#xff0c;安装后出现包依赖问题&#xff0c;搞了半天&…

Android:生成Excel表格并保存到本地

提醒 本文实例是使用Kotlin进行开发演示的。 一、技术方案 org.apache.poi:poiorg.apache.poi:poi-ooxml 二、添加依赖 [versions]poi "5.2.3" log4j "2.24.2"[libraries]#https://mvnrepository.com/artifact/org.apache.poi/poi apache-poi { module…

RK3576技术笔记之一 RK3576单板介绍

第二篇嘛&#xff0c;亮亮我们做出来的板子&#xff0c;3576这个片子的基本功能接口单板都做了&#xff0c;接口数量肯定是比不上3588&#xff08;PS&#xff1a;这个我们也在做&#xff0c;后续都完成后会发文章&#xff09;&#xff0c;但是比起3568来说还是升级了&#xff0…

SQL进阶技巧:如何寻找同一批用户 | 断点分组应用【最新面试题】

目录 0 问题描述 1 数据准备 2 问题分析 ​编辑 3 小结 0 问题描述 用户登录时间不超过10分钟的视为同一批用户,找出以下用户哪些属于同一批用户(SQL实现) 例如: user_name time a 2024-10-01 09:55 b 2024-10-01 09:57 c 2024-10-01…

数字图像处理(11):RGB转YUV

&#xff08;1&#xff09;RGB颜色空间 RGB颜色空间&#xff0c;是一种基于红色、绿色、蓝色三种基本颜色进行混合的颜色空间&#xff0c;通过这三种颜色的叠加&#xff0c;可以产生丰富而广泛的颜色。RGB颜色空间在计算机图像处理、显示器显示、摄影和影视制作等领域具有广泛应…

利用Ubuntu批量下载modis图像(New)

由于最近modis原来批量下载的代码不再直接给出&#xff0c;因此&#xff0c;再次梳理如何利用Ubuntu下载modis数据。 之前的下载代码为十分长&#xff0c;现在只给出一部分&#xff0c;需要自己再补充另一部分。之前的为&#xff1a; 感谢郭师兄的指导&#xff08;https://blo…

HTTP 长连接(HTTP Persistent Connection)简介

HTTP长连接怎么看&#xff1f; HTTP 长连接&#xff08;HTTP Persistent Connection&#xff09;简介 HTTP 长连接&#xff08;Persistent Connection&#xff09;是 HTTP/1.1 的一个重要特性&#xff0c;它允许在一个 TCP 连接上发送多个 HTTP 请求和响应&#xff0c;而无需为…

淘宝商品详情主图SKU图价格|品牌监控|电商API接口

淘宝/天猫获得淘宝商品详情 API 返回值说明 item_get-获得淘宝商品详情 taobao.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&a…

单片机学习笔记 17. 串口通信-发送汉字

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

五层网络协议(封装和分用)

目录 七层网络协议五层网络协议封装1.应用层2.传输层3.网络层4.数据链路层5.物理层 分用1. 物理层2.数据链路层3.网络层 IP 协议4.传输层 UDP 协议5.应用层 七层网络协议 网络通信过程中&#xff0c;需要涉及到的细节&#xff0c;其实是非常非常多的&#xff0c;如果要有一个协…

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

【实战】Oracle基础之控制文件内容的5种查询方法

关于Jady&#xff1a; ★工作经验&#xff1a;近20年IT技术服务经验&#xff0c;熟悉业务又深耕技术&#xff0c;为业务加持左能进行IT技术规划&#xff0c;右能处理综合性故障与疑难杂症&#xff1b; ★成长历程&#xff1a;网络运维、主机/存储运维、程序/数据库开发、大数…

蓝桥杯第 23 场 小白入门赛

一、前言 好久没打蓝桥杯官网上的比赛了&#xff0c;回来感受一下&#xff0c;这难度区分度还是挺大的 二、题目总览 三、具体题目 3.1 1. 三体时间【算法赛】 思路 额...签到题 我的代码 // Problem: 1. 三体时间【算法赛】 // Contest: Lanqiao - 第 23 场 小白入门赛 …

使用 Pytorch 构建 Vanilla GAN

文章目录 一、说明二、什么是 GAN&#xff1f;三、使用 PyTorch 的简单 GAN&#xff08;完整解释的代码示例&#xff09;3.1 配置变量3.2 、PyTorch 加速3.3 构建生成器3.4 构建鉴别器 四、准备数据集五、初始化函数六、前向和后向传递七、执行训练步骤八、结果 一、说明 使用…