久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4158|回復: 3
收起左側

STM32+DS1302數碼管顯示時鐘一直為F?

[復制鏈接]
ID:342197 發表于 2019-1-15 16:50 | 顯示全部樓層 |閱讀模式
各位大神,如題:本人使用STM32F103c8t6進行DS1302時鐘程序的編寫,用數碼管進行時鐘顯示;但是無論怎樣修改時序、程序,時間在數碼管顯示均為F,
說明:硬件電路接線正常。
具體結果如下圖所示。

DS1302數碼管顯示F

DS1302數碼管顯示F

請各位大神幫忙看看,十分感謝!下面為DS1302程序

程序源碼:
  1. #include "DS1302.h"
  2. u8 READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
  3. u8 WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
  4. u8 TIME[7] = {0x00, 0x15, 0x23, 0x01, 0x01, 0x02, 0x13};
  5. //使用PA引腳作為DS1302的控制引腳,控制引腳的初始化
  6. //PA12-DATA   PA13-RST   PA14-CLK
  7. void DS1302_Init(void)
  8. {
  9.          GPIO_InitTypeDef GPIO_InitStructure;
  10.                
  11.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);         //使能PA端口時鐘
  12.                
  13.          //配置PA12-13-14端口為推挽輸出 ,用于驅動DS1302
  14.          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;                                 
  15.          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  16.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度為50MHz
  17.         
  18.          GPIO_Init(GPIOA, &GPIO_InitStructure);                                
  19.         
  20.          GPIO_ResetBits(GPIOA,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);                        //輸出低

  21. }
  22. void DS1302_WriteCommand(u8 Add,u8 dat)
  23. {
  24.         u8 i=0;
  25.         
  26.         DS1302_RST=0;
  27.         delay_us(4); //延時
  28.         DS1302_CLK=0;
  29.         delay_us(2); //延時1us
  30.         
  31.         DS1302_RST=1; //設置為高電平,開啟寫數據
  32.         delay_us(4); //延時               
  33. //STM32向DS1302 寫入地址
  34.         for(i=0;i<8;i++)
  35.         {
  36.                
  37.                 DS1302_IO_OUT();
  38.                
  39.                 DS1302_DATA_OUT = Add & 0x01;
  40.                
  41.                 Add = Add >> 1;    //右移才對,由低位往高位移動
  42.                
  43.                 DS1302_CLK=1; //因為上升沿數據寫入,所以需要設置為高電平
  44.                 delay_us(2); //延時
  45.                         
  46.                 DS1302_CLK=0; //因為上升沿數據寫入,所以需要設置為低電平,為下一次上升沿寫入數據做準備
  47.                 delay_us(2); //延時
  48.                
  49.         }        
  50. //STM32向DS1302 寫入數據
  51.                 for(i=0;i<8;i++)
  52.         {
  53.                 DS1302_IO_OUT();
  54.                 DS1302_DATA_OUT = dat & 0x01;
  55.                 dat = dat >> 1;  
  56.                 DS1302_CLK=1;
  57.                 delay_us(2); //延時
  58.                         
  59.                 DS1302_CLK=0;
  60.                 delay_us(2); //延時
  61.                
  62.         }
  63.         DS1302_RST=0; //設置為低電平,結束數據的寫入
  64.         delay_us(4); //延時
  65.                
  66. }

  67. //MCU從DS1302 對應 地址 中讀取相應的 數據* **********************************************************************
  68. u8 DS1302_ReadByte(u8 Add)
  69. {
  70.         u8 dat=0,i=0,dat1=0;
  71.         DS1302_RST=0;
  72.         delay_us(4); //延時
  73.         DS1302_CLK=0;
  74.         delay_us(2); //延時
  75.         DS1302_RST=1; //設置為高電平,開啟寫數據
  76.         delay_us(4); //延時
  77.                
  78. //STM32向DS1302 寫入地址
  79.         for(i=0;i<8;i++)
  80.         {
  81.                 DS1302_IO_OUT();
  82.                
  83.                 DS1302_DATA_OUT = Add & 0x01;
  84.                
  85.                 Add = Add >> 1;  
  86.                
  87.                 DS1302_CLK=1;
  88.                 delay_us(2); //延時
  89.                         
  90.                 DS1302_CLK=0;
  91.                 delay_us(2); //延時
  92.         
  93.         }
  94.                
  95. //STM從DS1302讀取數據,下降沿有效
  96.         for(i=0;i<8;i++)
  97.         {
  98.                 DS1302_IO_IN();
  99.                
  100.                 dat = dat >> 1;
  101.                 dat1 = DS1302_DATA_IN ;  
  102.                 dat1 = dat1 << 7;
  103.                 dat = dat | dat1;
  104.                 DS1302_CLK=1; //
  105.                 delay_us(2); //延時
  106.                 DS1302_CLK=0; //
  107.                 delay_us(2); //延時
  108.         }
  109.         DS1302_RST=0; //設置為低電平,結束數據的寫入
  110.         delay_us(4);
  111.         DS1302_CLK=1;/
  112.         delay_us(2); //延時
  113.         DS1302_IO_OUT();
  114.         DS1302_DATA_OUT=0;
  115.         delay_us(1);
  116.         DS1302_DATA_OUT=1;
  117.         delay_us(1);
  118.         return dat;
  119. }
  120. void RTC_DS1302_Init(void)
  121. {
  122.         u8 n=0;
  123.         DS1302_WriteCommand(0x8e,0x00); // 取消寫保護
  124.         for(n=0;n<7;n++)
  125.         {
  126.                 DS1302_WriteCommand(WRITE_RTC_ADDR[n],TIME[n]);
  127.         }
  128.         DS1302_WriteCommand(0x8e,0x80);//寫保護生效
  129. }
  130. //實時更新DS1302時鐘***********************************************************************
  131. //秒分時日月周年
  132. void RTC_DS1302_Time(void)
  133. {
  134.         u8 i=0;
  135.         for(i=0;i<7;i++)
  136.         {
  137.                 TIME[i] = DS1302_ReadByte(READ_RTC_ADDR[i]);
  138.         }
  139. }
復制代碼


回復

使用道具 舉報

ID:123289 發表于 2019-1-16 08:28 | 顯示全部樓層
1、先搞清楚LED顯示的原理。
2、再單步運行調試,驗證顯示是不是按照顯示原理執行的。
回復

使用道具 舉報

ID:158375 發表于 2019-1-16 08:45 | 顯示全部樓層
數碼管先直接顯示數字(別管DS1302),顯示正確嗎?
回復

使用道具 舉報

ID:342197 發表于 2019-1-16 15:30 | 顯示全部樓層
笨笨兔 發表于 2019-1-16 08:45
數碼管先直接顯示數字(別管DS1302),顯示正確嗎?

數碼管顯示沒有問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美在线视频一区 | 一区二区在线 | 一级毛片在线播放 | 精品久久久久久久久久久久久久久久久 | 日韩精品成人av | 91动漫在线观看 | 九九久久在线看 | 国产精品一二三区 | 七七婷婷婷婷精品国产 | 日韩欧美网 | 欧美成人自拍 | 国产精品久久久久久久久久久久冷 | 91精品一区二区三区久久久久久 | 中文字幕日韩一区 | 拍真实国产伦偷精品 | 久久国 | 国产成人99久久亚洲综合精品 | 久久精品久久精品 | 99热视 | 国产99久久精品一区二区永久免费 | 亚洲午夜一区二区 | 日韩在线一区二区三区 | 国产精品18久久久久久久 | 另类一区 | 久久久久久91香蕉国产 | jizz亚洲人| 免费麻豆视频 | 成人a视频 | 欧美片网站免费 | 欧美日韩在线免费 | 久久久久国产一区二区三区 | 久久无毛| 久久久精品日本 | 欧美一区二区三区的 | 成人在线精品视频 | 国产一区二区三区 | 国产欧美日韩久久久 | 成人精品国产免费网站 | 亚洲精品免费视频 | 欧美日韩一区二区视频在线观看 | 亚洲成av人片在线观看 |