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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4126|回復: 3
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
各位大神,如題:本人使用STM32F103c8t6進行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. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91久久国产综合久久91精品网站 | 蜜臀av日日欢夜夜爽一区 | av在线黄 | 精品一区二区三区免费视频 | 欧美日本一区 | 日韩最新网址 | 成人在线免费电影 | 成人精品一区二区三区中文字幕 | 久久久91精品国产一区二区三区 | 亚洲av毛片成人精品 | 欧美xxxx色视频在线观看免费 | 亚洲精品成人av久久 | 国产精品久久在线观看 | 九九视频在线观看视频6 | 亚洲成人观看 | 欧亚av在线| 欧美一级黄视频 | 激情毛片 | 一区二区精品 | 亚洲精品乱码久久久久久蜜桃91 | 久久久久久亚洲 | 日韩免费看视频 | 久久久久无码国产精品一区 | 福利精品在线观看 | 神马福利 | 一本色道久久综合亚洲精品高清 | 草比av| 97国产一区二区精品久久呦 | 亚洲精品www | 日日干日日操 | 国产精品日韩一区二区 | 一级黄色片美国 | 亚洲午夜在线 | 在线观看免费毛片 | 男女免费在线观看视频 | 亚洲综合国产 | 国产日韩欧美中文 | 欧美a区 | 日韩一三区 | 免费一级毛片 | 国产精品一区二区在线播放 |