单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》 ...


引言

本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期、时间的校准。具有走时精确,功耗低,显示直观,调整简单方便等优点。

能描述

基本显示:

第一行为日期,依次为:年-月-日-星期

      第二行为时间,依次为:时:分:秒

说明:

每月的天数,闰年的天数可自动调整

蓝牙校准日期:

命令d+年月日星期+#,如设置2016年12月8日星期四,手机发送命令:d16120804

蓝牙校准时间:

命令t+时分秒+#,如设置15:11:46,手机发送命令:t151146#

 

硬件电路设计

 

硬件概述:

AT89S52单片机介绍:AT89S52_百度百科

DS1302时钟芯片介绍:DS1302_百度百科

LCD1602液晶模块介绍:LCD1602_百度百科

HC-05嵌入式蓝牙串口通讯模块介绍:HC-05

蓝牙通信原理:

 

硬件电路图:

 

 

 

程序设计:

主程序:main.c

 1 #include <reg52.h>
 2 #include <LCD1602.c>
 3 #include <DS1302.c>
 4 #include <bluetooth.c>
 5 void serial_initial()            
 6 {
 7     EA = 1;                //开总中断
 8     ES = 1;                //开串口中断
 9     TMOD = 0x20;        //定时器1,方式2,8位自动重装,作波特率发生器
10     TH1 = 0xfa;            //波特率9600
11     TL1 = 0xfa;
12     TR1 = 1;
13     SCON = 0x50;        //串口工作方式1,允许接收
14     PCON = 0x80;        //SMOD=1,bps倍增9600
15 }
16 void clock_initial()
17 {    
18     lcd_initial();                 //1602初始化
19     serial_initial();            //中断初始化
20     Set_DS1302_Time(0x80);        //先写入寄存器起始地址设置时钟日历初值
21     dis_string(0x80,"Date:11-11-11-11");
22     dis_string(0xc0,"Time: 11:11:11  ");
23     flag_date = 0;
24     flag_time = 0;
25     bt_flag = 0;
26 }
27 
28 void main()
29 {
30     clock_initial();
31     while(1)
32     {
33         if(flag_date == 1&&cmd_end==1)
34             date_set();
35         if(flag_time == 1&&cmd_end==1)
36             time_set();
37         Read_DS1302_Time(0x81); 
38         dis_twonum (5, 0, TimeData[6]); //
39         dis_twonum (8, 0, TimeData[4]); //
40         dis_twonum (11, 0, TimeData[3]); //
41         dis_twonum (14, 0, TimeData[5]); //星期
42         dis_twonum (6, 1, TimeData[2]); //
43         dis_twonum (9, 1, TimeData[1]); //
44         dis_twonum (12, 1, TimeData[0]); //
45         Delay_Ms(1000);                     //
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值