欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7679|回復: 13
收起左側

DS3231時鐘串口打印STM32程序源碼

  [復制鏈接]
ID:283453 發表于 2018-3-28 12:55 | 顯示全部樓層 |閱讀模式
DS3231時鐘串口 STM32單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "DS3231.h"

  6. //使用的時鐘模塊為DS3221, 采用模擬IIC驅動  
  7. //時鐘模塊引腳接線  SCL-> PB10
  8. //                 SDA-> PB11
  9. //32K和SQW引腳懸空,什么都不接。

  10. int main(void)
  11. {       


  12.         u8  t=0;       
  13.         delay_init();                     //延時函數初始化       
  14.         NVIC_Configuration();// 設置中斷優先級分組
  15.         uart_init(9600);         //串口初始化為9600
  16.         LED_Init();                           //初始化與LED連接的硬件接口
  17.          
  18.         DS3231_Init();
  19.          
  20. //        DS3231_Set(16,11,27,21,03,30);  首次設置時間,設置完成后注釋掉,重新下載一次程序即可掉電保存
  21.              //年,月,日,時,分,秒
  22.         while(1)
  23.         {
  24.                
  25.                                 get_show_time();

  26.                         if(t!=calendar.sec)
  27.                 {
  28.                         t=calendar.sec;
  29.                         printf("年月日:");
  30.                         printf("%ld,%d,%d\r\n",calendar.w_year+2000,calendar.w_month,calendar.w_date);
  31.                         printf("時分秒:");
  32.                         printf("%d,%d,%d\r\n",calendar.hour,calendar.min,calendar.sec);
  33.                         LED0=!LED0;
  34.                 }
  35.                
  36.         }         
  37. }


復制代碼
  1. #include "DS3231.h"
  2. #include "myiic.h"
  3. #include "delay.h"   
  4. #include "sys.h"  
  5.      
  6. _calendar_obj calendar;

  7. #define DS3231_WriteAddress 0xD0   
  8. #define DS3231_ReadAddress  0xD1

  9. u8 BCD2HEX(u8 val)
  10. {
  11.     u8 i;
  12.     i= val&0x0f;
  13.     val >>= 4;
  14.     val &= 0x0f;
  15.     val *= 10;
  16.     i += val;
  17.    
  18.     return i;
  19. }

  20. u16 B_BCD(u8 val)
  21. {
  22.   u8 i,j,k;
  23.   i=val/10;
  24.   j=val%10;
  25.   k=j+(i<<4);
  26.   return k;
  27. }


  28. void I2cByteWrite(u8 addr,u8 bytedata)
  29. {
  30.   IIC_Start();
  31.   delay_us(5);
  32.   IIC_Send_Byte(DS3231_WriteAddress);
  33.   IIC_Wait_Ack();
  34.   delay_us(5);
  35.   IIC_Send_Byte(addr);
  36.   IIC_Wait_Ack();
  37.   delay_us(5);
  38.   IIC_Send_Byte(bytedata);
  39.   IIC_Wait_Ack();
  40.   delay_us(5);
  41.   IIC_Stop();
  42. }       


  43. u8 I2cByteRead(u8 addr)
  44. {
  45.   u8 Dat=0;
  46.   
  47.   IIC_Start();
  48.   IIC_Send_Byte(DS3231_WriteAddress);
  49.   IIC_Wait_Ack();
  50.   delay_us(5);
  51.   IIC_Send_Byte(addr);
  52.   IIC_Wait_Ack();
  53.   delay_us(5);
  54.   IIC_Start();
  55.   IIC_Send_Byte(DS3231_ReadAddress);
  56.   IIC_Wait_Ack();
  57.   delay_us(5);
  58.   Dat=IIC_Read_Byte(1);
  59.   IIC_Stop();
  60.   return Dat;
  61. }



  62. void DS3231_Init(void)
  63. {
  64.         IIC_Init();
  65.         I2cByteWrite(0x0e,0);
  66.         delay_ms(2);
  67.     I2cByteWrite(0x0f,0x0);
  68.         delay_ms(2);
  69. }
  70. void DS3231_Get(void)
  71. {
  72.   calendar.w_year=I2cByteRead(0x06);  
  73.   calendar.w_month=I2cByteRead(0x05);  
  74.   calendar.w_date=I2cByteRead(0x04);
  75.   calendar.hour=I2cByteRead(0x02);  
  76.   calendar.min=I2cByteRead(0x01);
  77.   calendar.sec=I2cByteRead(0x00);
  78. }

  79. void DS3231_Set(u8 yea,u8 mon,u8 da,u8 hou,u8 min,u8 sec)
  80. {
  81.   u8 temp=0;
  82.   
  83.   temp=B_BCD(yea);
  84.   I2cByteWrite(0x06,temp);
  85.   
  86.   temp=B_BCD(mon);
  87.   I2cByteWrite(0x05,temp);
  88.    
  89.   temp=B_BCD(da);
  90.   I2cByteWrite(0x04,temp);
  91.   
  92.   temp=B_BCD(hou);
  93.   I2cByteWrite(0x02,temp);
  94.   
  95.   temp=B_BCD(min);
  96.   I2cByteWrite(0x01,temp);
  97.   
  98.   temp=B_BCD(sec);
  99.   I2cByteWrite(0x00,temp);
  100. }


  101. void get_show_time(void)
  102. {


  103. calendar.w_year=I2cByteRead(0x06);  
  104. calendar.w_year=BCD2HEX(calendar.w_year);


  105. calendar.w_month=I2cByteRead(0x05);
  106. calendar.w_month=BCD2HEX(calendar.w_month);


  107. calendar.w_date=I2cByteRead(0x04);  
  108. calendar.w_date=BCD2HEX(calendar.w_date);


  109. calendar.hour=I2cByteRead(0x02);
  110. calendar.hour&=0x3f;                  
  111. calendar.hour=BCD2HEX(calendar.hour);


  112. calendar.min=I2cByteRead(0x01);
  113. calendar.min=BCD2HEX(calendar.min);
  114.   
  115.   
  116. calendar.sec=I2cByteRead(0x00);
  117. calendar.sec=BCD2HEX(calendar.sec);
  118. }


復制代碼


所有資料51hei提供下載:
DS3231時鐘串口打印.rar (293.73 KB, 下載次數: 281)


評分

參與人數 1黑幣 +10 收起 理由
zb12138 + 10

查看全部評分

回復

使用道具 舉報

ID:310439 發表于 2018-5-15 10:38 | 顯示全部樓層
非常感謝,一直沒調通,試試這個。
回復

使用道具 舉報

ID:189601 發表于 2018-7-10 01:04 | 顯示全部樓層
好用,感謝
回復

使用道具 舉報

ID:430492 發表于 2018-12-26 16:26 | 顯示全部樓層
非常感謝,試試這個。
回復

使用道具 舉報

ID:430492 發表于 2018-12-26 16:27 | 顯示全部樓層
非常感謝,試試這個。
回復

使用道具 舉報

ID:470005 發表于 2019-1-18 09:55 | 顯示全部樓層
感謝樓主……
回復

使用道具 舉報

ID:333807 發表于 2019-4-4 10:24 | 顯示全部樓層

DS3231時鐘帶鬧鐘程序
回復

使用道具 舉報

ID:394770 發表于 2019-11-4 20:08 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:615301 發表于 2020-4-6 00:41 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:489687 發表于 2020-4-26 23:26 | 顯示全部樓層
謝謝分享謝謝分享哦
回復

使用道具 舉報

ID:422924 發表于 2021-5-23 20:48 | 顯示全部樓層
找了好久才找到這個,下載試試,感謝樓主
回復

使用道具 舉報

ID:702641 發表于 2021-8-3 15:31 | 顯示全部樓層
是模擬I2
回復

使用道具 舉報

ID:702641 發表于 2021-8-3 15:32 | 顯示全部樓層
是模擬I2C接口,沒有使用stm32的i2c接口,比較遺憾。
回復

使用道具 舉報

ID:1088106 發表于 2023-7-11 16:41 | 顯示全部樓層
非常感謝,試試這個。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表