OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2323|回复: 0

jlx12864G300带字库液晶屏+stm32f103c8t6+ds1302z

[复制链接]

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-7
在线时间
17 小时
发表于 2019-11-30 12:03:51 | 显示全部楼层 |阅读模式
和DS1302Z的三根连线就看实际情况,

#include "TIME.h"
u8 time_buf[7] = {0x19,0x11,0x29,0x10,0x21,0x00,0x00};
u8 Date[10] = {0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
u8 Time[9] = {0,0,0x3a,0,0,0x3a,0,0,0};

//引脚初始化
void Time_Init()
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  GPIO_InitStructure.GPIO_Pin = TIME_CLK|TIME_IO|TIME_RST;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  TIME_RST_Reset;
  TIME_CLK_Set;
  TIME_IO_Reset;

//  Send(Control_Write, 0x00); //解除写保护
//  Send(Sec_Write, 0x80); //暂停时钟
//  
//  Send(Year_Write, time_buf[0]); //年
//  Send(Month_Write, time_buf[1]); //月
//  Send(Date_Write, time_buf[2]); //日
//  Send(Hr_Write, time_buf[3]); //时
//  Send(Min_Write, time_buf[4]); //分
//  Send(Sec_Write, time_buf[5]); //秒
//  //Send(Day_Write, time_buf[6]); //星期
//  
//  Send(Control_Write, 0x80);//写保护
}

//设置IO数据脚为输入
void IO_In()
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  GPIO_InitStructure.GPIO_Pin = TIME_IO;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//设置IO数据脚为输出
void IO_Out()
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  GPIO_InitStructure.GPIO_Pin = TIME_IO;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
}

//发送命令和数据
void Send(u8 cmd, u8 data)
{
  u8 i;
  IO_Out();
  TIME_RST_Set;
  Delay_nus(2);
  for(i=0; i<8; i++)
  {
     if(cmd & 0x01)
       TIME_IO_Set;
     else
       TIME_IO_Reset;
     TIME_CLK_Set;
     //Delay_nus(2);
     TIME_CLK_Reset;
     //Delay_nus(2);
     cmd >>= 1;
  }

  for(i=0; i<8; i++)
  {
     if(data & 0x01)
       TIME_IO_Set;
     else
       TIME_IO_Reset;
     TIME_CLK_Set;
     //Delay_nus(2);
     TIME_CLK_Reset;
     //Delay_nus(2);
     data >>= 1;
  }
  TIME_RST_Reset;
}

//接收数据
u8 Receive(u8 cmd)
{
  u8 i;
  u8 data = 0;
  TIME_RST_Set;
  Delay_nus(2);
  for(i=0; i<8; i++)
  {
     if(cmd & 0x01)
       TIME_IO_Set;
     else
       TIME_IO_Reset;
     TIME_CLK_Set;
     //Delay_nus(2);
     TIME_CLK_Reset;
     //Delay_nus(2);
     cmd >>= 1;
  }

  IO_In();
  Delay_nus(2);
  for(i=0; i<8; i++)
  {
    TIME_CLK_Set;
    //Delay_nus(2);
    data >>= 1;
    if(TIME_IO_Read)
      data |= 0x80;
    else
      data &= 0x7f;
    TIME_CLK_Reset;
    //Delay_nus(2);
  }
  IO_Out();
  TIME_RST_Reset;
  TIME_IO_Reset;
  Delay_nus(2);
  return data;
}


//读出数据
void Read_Time()
{
  time_buf[0] = Receive(Year_Read);                   //年
  time_buf[1] = Receive(Month_Read);           //月
  time_buf[2] = Receive(Date_Read);                   //日
  time_buf[3] = (Receive(Hr_Read))&0x7f;   //时
  time_buf[4] = Receive(Min_Read);                   //分
  time_buf[5] = (Receive(Sec_Read))&0x7f;  //秒,屏蔽秒的第7位,避免超出59
  //time_buf[6] = Receive(Day_Read);                   //周        
}

//显示时间
void Get_Time()
{
  Read_Time();

  Date[2]=(time_buf[0]/16)+0x30;   //年
  Date[3]=(time_buf[0]%16)+0x30;

  Date[5]=(time_buf[1]/16)+0x30;   //月  
  Date[6]=(time_buf[1]%16)+0x30;

  Date[8]=(time_buf[2]/16)+0x30;   //日   
  Date[9]=(time_buf[2]%16)+0x30;

  //Date[11]=((time_buf[6])%16)+0x30; //周

  Time[0]=(time_buf[3]/16)+0x30;   //时   
  Time[1]=(time_buf[3]%16)+0x30;   

  Time[3]=(time_buf[4]/16)+0x30;  //分   
  Time[4]=(time_buf[4]%16)+0x30;   

  Time[6]=(time_buf[5]/16)+0x30;  //秒
  Time[7]=(time_buf[5]%16)+0x30;

  Lcd_DisString16(3,24,Date);
  Lcd_DisString16(5,32,Time);
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 22:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表