关注分享主机优惠活动
国内外VPS云服务器

华南理工大学第二制作——蓝牙电子钟(如何在蓝牙电子钟上设置时间)

总结:如果小于,则电源写入读取数据的一个字节的上升沿置为高电平,下降沿置为低电平。 当总线控制器将数据线从高电平拉至低电平时,读取序列开始。 数据线必须至少保持到总线被释放为止(见图)。 因此,在读取序列开始读取引脚状态后,总线控制器必须停止将引脚驱动为低电平。

目录

1.简介

2.整体设计思路

(1) 装备使用

(2) 准备软件

(3) 制作流程简述

3.团队分工

4.相关模块原理及代码

(1) 微控制器模块

(2)仿真电路及电路模块

(3)闹钟日历逻辑模块

(4) 移动应用模块

(5) 取模模块

6. 个人总结及感想

1. 简介

我们课题组是华南大学自动化学院的成员我参加了基金会组织的第二轮,可以说,制造蓝牙电子时钟的创新项目让我创造了这个记录。 希望这对想学习微控制器、蓝牙串口通信、如何编写简单手机相关软件的人有用。

这份设计参考资料(顺便安利一下) ):

1.CSDN - CSDN【k4】专业开发者社区(有用的内容很多,就不一一详细讲解了,有兴趣的请查看)

2. bilibili51单片机入门教程 - 51单片机入门教程【k4】2020版程序手动完成 启动bilibili bilibili

并创建蓝牙APP - 创建蓝牙APP(由app发明者)开发APP和AT。命令配置蓝牙模块)bilibili bilibili

3、简书(同CSDN,if) 如果您有兴趣,可以亲自查看一下)

2、总体设计思路(一)设备使用

本蓝牙电子表使用的设备包:DS1302时钟芯片、STC89C52RC、LCD1602、OLED显示屏、HC-06蓝牙模块、DS18B20温度 传感器、5V无源蜂鸣器、三极管Q9012、纽扣电池及其插座、11.0592Hz晶振、37.768kHz晶振、杜邦线、10k、2.2k、1k电阻等。

(2) 前期软件准备

STC-ISP - 负责编写程序和简单的数据发送/接收,以及简单的延迟功能和Get功能。

keil uVsion4 - 主微控制器编程器。

Proteus——仿真电路图的制作。

PCtoLCD2002——汉字和数字OLED显示。

VS Studio 2019 - 创建一些内部程序并运行它们来测试其真实效果。

App Inventor - 使用最简单的可视化编程方法创建移动应用程序。

(三)制作流程简述

首先,学习所有相关知识,购买两套设备(提供一套),用一块最小的开发板实现各自的功能。

接下来,我们开发应用程序(稍后对接)并进行电路仿真操作,设计并确定电路图,并进行焊接。

此后,各种功能将逐步分发和实现,例如精确时间显示、蓝牙通信、蜂鸣器闹钟、日历和汉字模块、时间更改、应用对接等。

最后,我们将调试错误并改进外部显示功能。

3.团队分工A组和B组将学习单片机的相关知识,学习创建手机软件,了解单片机,学习设计闹钟和日常生活的仿真电路图。体验设计,学习OLED并设计基本功能模块,学习LED,创建基本程序,了解B组成员创建的基本程序并完成电路,对接和焊接为您的电路准备应用程序,完成基本硬件设置,并按照应用程序操作、蓝牙串口通信和微控制器来调试和修复电路中出现的实际问题并排除软件问题,集成程序以完成外部图像优化。 四、相关模块原理及代码 (一)单片机模块

1.DS1302时钟芯片

(1)概念及优点

DS1302配备涓流实时时钟芯片时钟电路。 充电功能由 DALLAS 制造。 使用串行数据传输,它可以通过断电的电池提供可编程充电功能。 ,采用独特的32.768K晶振,具有强大的时钟功能。 配备RAM的高性能、低功耗实时时钟电路。 您可以监控年、月、日、周、小时和分钟。 ,计时秒级,有闰年修正功能,工作电压2.5V至5.5V。 DS1302内部有31字节的静态RAM寄存器,用于临时存储数据。

(2) DS1302引脚功能

(3) DS1302内部结构图

(4) 工作原理

>

从上图中可以看出,只有三个连接。 DS1302 和微控制器之间,即 SCL(7)、I/O(6) 和 RST(5)。 连接到 CON2 的备用电池通过 DS1302 的引脚 8 为 DS1302 提供低功耗电池备用。 VCC2 为双电源系统提供主电源。 这会将 VCC1 连接到备用电源。 即使系统与主电源断开,时间信息和数据也可以保存而不会丢失。 DS1302 由 VCC1 或 VCC2 中较大者供电。 如果VCC2大于VCC1 0.2V,VCC2为DS1302供电。 如果VCC2小于VCC1,DS130由2VCC1供电

DS1302数据读取操作序列

单字节写入

上升沿置高电平,下降沿置低电平。

时序图显示DS1302是串行驱动的。 首先通过I/O端口写入控制字,并且还必须读取相应寄存器中的数据。 每次操作 1302 时,都必须对其进行初始化。 RST 必须置高才能将 8 位地址和命令信息加载到移位寄存器中。 数据在 SCLK 的上升沿输入。 前 8 位指定访问地址命令。 在下一个时钟周期中,在读操作期间输出数据,在写操作期间输入数据。 单字节模式下的时钟脉冲数为8个地址和8位数据。

DS1302 数据写入时序行为

数据在 SCLK 的上升沿输入。 指定第一个8位访问地址命令,下一个时钟周期读操作时输出数据,写操作时输入数据。 单字节模式下的时钟脉冲数为8个地址和8位数据。

日历和时钟寄存器设置

BCD 码和十进制转换

DS1302输出8421编码。 这就是我们常说的BCD码。 因此,在读写时使用BCD码代替十进制数。

最常用的BCD编码是用“0”到“9”10个值的二进制码来表示。 相应的代码如下。 十进制 BCD 码 0=0001; 3=0011; 5=0110; 8=1001;是 BCD 码和十进制数之间转换的示例。

十进制数转换为BCD码:32/10 = 3*16= 48(十进制) = 30(十六进制) 32%10 = 2 30+2 = 32 * 16 + 32 % 10 = 32(BCD 代码)

将 BCD 代码转换为十进制:51 / 16 = 5 * 10(十六进制)= 50(十进制) 51 % 16 = 1 50 + 1 = 51 / 16 + 51 % 16 = 51(十进制)

部分代码为:

#include sbit DS1302_SCLK = P1^ 0;sbit DS1302_IO = P1 ^1;sbit DS1302_CE = P1^2;#define DS1302_SECOND 0X80 //定义寄存器位置#define DS1302_MINUTE 0X82#define DS1302_HOUR 0X84#define DS1302_DATE 0X86#define DS1302_MONTH 0X88#define DS1302_DAY 0X8A#define DS1302_YEAR 0X8C#define DS1302_WP 0X8E unsigned char DS1302_Time[]={21,11,21,9,26,20,7}; //定义一个数组来存储时间 void DS1302_Init(void ) //初始化 { DS1302_CE=0 ; =0;}无效 DS1302_writebyte(无符号字符命令,Data) //写入数据和指令到1302 { unsigned char i; DS1302_CE=1;

未经允许不得转载:主机频道 » 华南理工大学第二制作——蓝牙电子钟(如何在蓝牙电子钟上设置时间)

评论 抢沙发

评论前必须登录!