基于单片机的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;			//设置为工作方式1TMOD = 0x21;  	//T1工作模式2  8位自动重装	T0模式1TH1 = 0xfd;TL1 = 0xfd; 	//比特率9600TH0=0x3c;//定时50msTL0=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);//保存到24C02delay(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);//保存到24C02delay(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;elsebeep=1;//关闭蜂鸣器//***************************if(tim<10)//0.5stim++;else{tim=0;if(start)	 //闪灯led=!led;elseled=1;	 //关灯Ds1302ReadTime();//读取时间clock[5]=(TIME[2]>>4)+0x30;//转换成ascallclock[6]=(TIME[2]&0x0f)+0x30;clock[8]=(TIME[1]>>4)+0x30;//转换成ascallclock[9]=(TIME[1]&0x0f)+0x30;clock[11]=(TIME[0]>>4)+0x30;//转换成ascallclock[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;//定时50msTL0=0xb0;
}

四、实现现象

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法专题(四)

目录 1. 单调递增的数字 1.1 算法原理 1.2 算法代码 2. 坏了的计算器 2.1 算法原理 2.2 算法代码 3. 合并区间 3.1 算法原理 3.2 算法代码 4. 无重叠区间 4.1 算法原理 4.2 算法代码 5. 用最少数量的箭引爆气球 5.1 算法原理 ​5.2 算法代码 1. 单调递增的数字…

Creating Server TCP listening socket *:6379: bind: No error

启动redis报错&#xff1a;Creating Server TCP listening socket *:6379: bind: No error 解决方案&#xff1a; 1、直接在命令行中输入 redis-cli.exe 2、输入shutdown&#xff0c;关闭 3、输exit&#xff0c;退出 4、重新输入 redis-server.exe redis.windows.conf&…

【HM-React】02. React基础-下

React表单控制 受控绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 function App(){const [value, setValue] useState()return (<input type"text" value{value} onChange{e > setValue(e.target.value)}/>) …

基于python的汽车数据爬取数据分析与可视化

一、研究背景 基于提供的代码片段和讨论&#xff0c;我们可以得出一个与网络抓取、数据处理和数据可视化相关的研究背景&#xff0c;该背景涉及到汽车行业。以下是研究背景的陈述&#xff1a; "在迅速发展的汽车行业中&#xff0c;准确和及时的数据对各方利益相关者至关…

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比 目录 BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测&#xff0c;含优化前后对比预测效果基本介绍模型描述程序设计…

使用 Monaco Editor 实现 ECharts 变量使用功能

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【深度学习】四大图像分类网络之AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever&#xff08;均为Hinton的学生&#xff09;和Geoffrey Hinton&#xff08;被誉为”人工智能教父“&#xff0c;首先将反向传播用于多层神经网络&#xff09;在2012年ImageNet图像分类竞赛中提出的一种经典的卷积神经网络。AlexNet在…

网络安全(三):网路安全协议

网络安全协议设计的要求是实现协议过程中的认证性、机密性与不可否认性。网络安全协议涉及网络层、传输层与应用层。 1、网络层安全与IPSec协议、IPSec VPN 1.1、IPSec安全体系结构 IP协议本质上是不安全的额&#xff0c;伪造一个IP分组、篡改IP分组的内容、窥探传输中的IP分…

AWS账号提额

Lightsail提额 控制台右上角&#xff0c;用户名点开&#xff0c;选择Service Quotas 在导航栏中AWS服务中找到lightsail点进去 在搜索框搜索instance找到相应的实例类型申请配额 4.根据自己的需求选择要提额的地区 5.根据需求来提升配额数量,提升小额配额等大约1小时生效 Ligh…

LCD与lvgl

LCD与lvgl 目录 LCD与lvgl 回顾 LCD 的驱动层讲解 1、LCD 的常见接口 2、我们的 LCD 的参数 3、LCD 的设备树说明 4、LCD 的设备树说明 5、如何移植 LCD 的驱动(重点) LCD 的应用层开发 1&#xff1a;LCD 应用开发->界面开发的方法 2&#xff1a;LVGL 模拟器安装…

Linux -初识 与基础指令2

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【Linux】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4da; 前言&#x1f511; 概念一&#x1f511; 概念二 &#x1f4d6; man&#x1f4ac; echo&#x1f4c1; cp&#x1f4c2; mv&#x1f511; 概念三&am…

HCIE IGP双栈综合实验

实验拓扑 实验需求及解法 本实验模拟ISP网络结构&#xff0c;R1/2组成国家骨干网&#xff0c;R3/4组成省级网络&#xff0c;R5/6/7组成数据中 心网络。 配置所有ipv4地址&#xff0c;请自行测试直连。 R1 sysname R1 interface GigabitEthernet0/0/0ip address 12.1.1.1 255.…

大模型微调论文阅读 LoRA:LOW-RANK ADAPTION OF LARGE LANGUAGE MODELS 大型语言模型的低秩自适应

论文link&#xff1a;https://arxiv.org/pdf/2106.09685 code&#xff1a;https://github.com/microsoft/LoRA LoRA&#xff1a;Low-Rank Adaptation of Large Language Models Abstract 自然语言处理的一个重要范例是对通用领域数据进行大规模预训练&#xff0c;并适应特定任…

Ubuntu24.04配置DINO-Tracker

一、引言 记录 Ubuntu 配置的第一个代码过程 二、更改conda虚拟环境的默认安装路径 鉴于不久前由于磁盘空间不足引发的重装系统的惨痛经历&#xff0c;在新系统装好后当然要先更改虚拟环境的默认安装路径。 输入指令&#xff1a; conda info可能因为我原本就没有把 Anacod…

Python 深度学习框架之Keras库详解

文章目录 Python 深度学习框架之Keras库详解一、引言二、Keras的特点和优势1、用户友好2、多网络支持3、跨平台运行 三、Keras的安装和环境配置1、软硬件环境2、Python虚拟环境 四、使用示例1、MNIST手写数字识别 五、总结 Python 深度学习框架之Keras库详解 一、引言 Keras是…

电机参数辨识算法(3)——基于三角波电流注入的SPMSM全参数辨识策略

1.引言 电机参数辨识对提高电机控制性能具有重要意义。在之前的参数辨识专题中&#xff0c;介绍了基于无差拍预测电流控制的高频正弦电流注入参数辨识。高频正弦电流注入的话需要你控制器的带宽比较高&#xff0c;因此这种方法不适用于传统PI控制的电流环&#xff0c;还是得用…

Vulnhub靶场 Matrix-Breakout: 2 Morpheus 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 文件上传2. 提权 0x04 总结 0x00 准备 下载连接&#xff1a;https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 介绍&#xff1a; This is the second in the Matrix-Br…

HTML5动漫主题网站——天空之城 10页 html+css+设计报告成品项目模版

&#x1f4c2;文章目录 一、&#x1f4d4;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站演示 五、⚙️网站代码 &#x1f9f1;HTML结构代码 &#x1f492;CSS样式代码 六、&#x1f527;完整源码下载 七、&#x1f4e3;更多 一、&#…

SpringMVC:入门案例

从此开始&#xff0c;我们步入SpringMVC的学习。 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 先来看一下web程序是如何工作的&#xff1a; 因为是异步调用&#xff0c;所以后端不需要返回view视图&#xff0c;将其去除前端如果通过异步调用的方式进行交互&#xff0…

【Windows 11专业版】使用问题集合

博文将不断学习补充 I、设置WIN R打开应用默认使用管理员启动 1、WIN R输入 secpol.msc 进入“本地安全策略”。 2、按照如下路径&#xff0c;找到条目&#xff1a; “安全设置”—“本地策略”—“安全选项”—“用户账户控制&#xff1a;以管理员批准模式运行所有管理员” …