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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機DS1302時鐘 求時鐘秒點閃爍思路

  [復制鏈接]
跳轉到指定樓層
樓主
ID:1144680 發(fā)表于 2025-6-6 14:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
DS1302時鐘,如何讓秒點閃爍?不想用定時器,秒點亮時“秒”正好進位。按說可以判斷秒進位,但如何讓它熄滅0.5秒?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1109793 發(fā)表于 2025-6-6 15:32 | 只看該作者
不用定時器用循環(huán)?
回復

使用道具 舉報

板凳
ID:1109793 發(fā)表于 2025-6-6 15:41 | 只看該作者
顯示秒的情況下,秒點一直顯示著就行吧。不顯示秒的話,無所謂進位同步了
回復

使用道具 舉報

地板
ID:108361 發(fā)表于 2025-6-6 15:59 | 只看該作者
1302有沒有秒中斷輸出?PCF8563是有秒中斷輸出引腳的
回復

使用道具 舉報

5#
ID:69038 發(fā)表于 2025-6-6 16:04 | 只看該作者
直接更新顯示秒讀數就行了,何必多浪費2個秒點在那閃啊閃的?
如果沒有顯示秒讀數,開個定時器,差個不多500ms就換個姿態(tài),不就是秒點了?
回復

使用道具 舉報

6#
ID:1133081 發(fā)表于 2025-6-6 16:05 | 只看該作者
這個示例里有你想要的秒點閃爍 4位數碼管DS1302單鍵調時時鐘 DS18B20程序 仿真.rar (153.83 KB, 下載次數: 0)
回復

使用道具 舉報

7#
ID:1144680 發(fā)表于 2025-6-7 20:14 | 只看該作者
xiaobendan001 發(fā)表于 2025-6-6 15:32
不用定時器用循環(huán)?

用定時器不能與“秒”準確同步。
回復

使用道具 舉報

8#
ID:1144680 發(fā)表于 2025-6-7 20:15 | 只看該作者
powerdruy 發(fā)表于 2025-6-6 15:59
1302有沒有秒中斷輸出?PCF8563是有秒中斷輸出引腳的

謝謝提醒,有秒中斷的。沒想起來
回復

使用道具 舉報

9#
ID:1144680 發(fā)表于 2025-6-7 20:17 | 只看該作者
zhuls 發(fā)表于 2025-6-6 16:04
直接更新顯示秒讀數就行了,何必多浪費2個秒點在那閃啊閃的?
如果沒有顯示秒讀數,開個定時器,差個不多5 ...

沒有秒閃,萬一不走了都不知道。
用定時器不能與秒同步。
回復

使用道具 舉報

10#
ID:1144680 發(fā)表于 2025-6-7 20:17 | 只看該作者
WL0123 發(fā)表于 2025-6-6 16:05
這個示例里有你想要的秒點閃爍

謝謝,好好學習學習。
回復

使用道具 舉報

11#
ID:69038 發(fā)表于 2025-6-7 21:01 | 只看該作者
dcc60 發(fā)表于 2025-6-7 20:17
沒有秒閃,萬一不走了都不知道。
用定時器不能與秒同步。

都顯示“23:59:32”了,中間兩組“:”閃不閃有什么意義?
如果是顯示“23:59”,那可以閃的。
開個定時器計數器會不?
你的定時器開個1ms,計滿500就改變“:”的狀態(tài),不需要太準,前500“;”亮起,500后“;”滅,會不?
同時你肯定還會在大循環(huán)中時不時去讀RTC的秒計數,當讀到的秒計數是新內容時,不管這個500ms增量到什么值,直接清0,同時“;”亮起,這樣算不算“同步”?至于500ms后就由它去,多幾10個計數都無所謂,因為是滅了。。當下一個秒讀數更新時,又清0了,重頭來過。。
不完整代碼給你參考:
定時器計數:
  1. //tim0中斷
  2. void tim0_Isr() interrupt 1           //
  3. {
  4.         tms++;    //這個計滿500就滅秒點
復制代碼

更新秒點狀態(tài):
  1. //顯示秒點         
  2.         if (tms<=500)      //上半秒?
  3.         {
  4.          //秒點亮
  5.         }
  6.         else  
  7.         {
  8.           //秒點滅
  9.         }
復制代碼

所謂的同步:
  1.           if(oldsec!=sec) //秒讀數有變
  2.           {
  3.             tms=0;
  4.             oldsec=sec;
復制代碼
回復

使用道具 舉報

12#
ID:88256 發(fā)表于 2025-6-7 22:22 | 只看該作者
dcc60 發(fā)表于 2025-6-7 20:14
用定時器不能與“秒”準確同步。

你這腦子不行啊,當1302秒中斷時,顯示秒500ms,然后熄滅,這個熄滅不計時,管它是400ms還是700ms,等到下一次秒中斷繼續(xù)顯示,你會揪著這一點冒號顯示的誤差嗎?
回復

使用道具 舉報

13#
ID:654797 發(fā)表于 2025-6-8 06:02 | 只看該作者
dcc60 發(fā)表于 2025-6-7 20:14
用定時器不能與“秒”準確同步。

1302沒有秒輸出,要做到秒同步不太可能吧
回復

使用道具 舉報

14#
ID:584814 發(fā)表于 2025-6-8 12:08 | 只看該作者
dcc60 發(fā)表于 2025-6-7 20:15
謝謝提醒,有秒中斷的。沒想起來

秒中斷每秒發(fā)生一次,還是得結合用系統(tǒng)中斷才能做到半秒亮半秒滅的閃。
回復

使用道具 舉報

15#
ID:584814 發(fā)表于 2025-6-8 12:13 | 只看該作者
vscos 發(fā)表于 2025-6-8 06:02
1302沒有秒輸出,要做到秒同步不太可能吧

完全精準同步沒必要,畢竟是給肉眼看的。
用1個1MS中斷計數,當秒位數字發(fā)生變化時清零,計數大于500時關秒點顯示否則開。
調整這個數值可以調整肉眼的觀看效果,且對系統(tǒng)運行無影響。
在數碼管的兩個秒點可分開控制的,還可以做到上午閃上點下午閃下點。
回復

使用道具 舉報

16#
ID:619259 發(fā)表于 2025-6-8 16:17 | 只看該作者
WL0123 發(fā)表于 2025-6-6 16:05
這個示例里有你想要的秒點閃爍

你的答案不符合樓主的要求,樓主的秒點閃爍是亮0.5秒,滅0.5秒。你提供的案例是亮1秒,滅1秒。
回復

使用道具 舉報

17#
ID:1144680 發(fā)表于 2025-6-8 19:28 | 只看該作者
zhuls 發(fā)表于 2025-6-7 21:01
都顯示“23:59:32”了,中間兩組“:”閃不閃有什么意義?
如果是顯示“23:59”,那可以閃的。
開個定 ...

很好的思路。
實驗階段,有6位、有4位的,6位的自然不用閃,4位的要搞一下。之前已經用定時器“閃”了,想更準確一點。
回復

使用道具 舉報

18#
ID:1144680 發(fā)表于 2025-6-8 19:29 | 只看該作者
hhdsdy 發(fā)表于 2025-6-7 22:22
你這腦子不行啊,當1302秒中斷時,顯示秒500ms,然后熄滅,這個熄滅不計時,管它是400ms還是700ms ...

有道理。。
回復

使用道具 舉報

19#
ID:1144680 發(fā)表于 2025-6-8 19:31 | 只看該作者
vscos 發(fā)表于 2025-6-8 06:02
1302沒有秒輸出,要做到秒同步不太可能吧

是這樣的,目前看來只能精確到1秒內亮滅一次,500ms有點困難。
回復

使用道具 舉報

20#
ID:1144680 發(fā)表于 2025-6-8 19:33 | 只看該作者
man1234567 發(fā)表于 2025-6-8 12:08
秒中斷每秒發(fā)生一次,還是得結合用系統(tǒng)中斷才能做到半秒亮半秒滅的閃。

目前用定時器延時大概0.5秒。
回復

使用道具 舉報

21#
ID:1144680 發(fā)表于 2025-6-8 19:37 | 只看該作者
man1234567 發(fā)表于 2025-6-8 12:13
完全精準同步沒必要,畢竟是給肉眼看的。
用1個1MS中斷計數,當秒位數字發(fā)生變化時清零,計數大于500時 ...

目前用定時器作秒閃。
很久以前,秒點是做成上下跳動閃爍的。
回復

使用道具 舉報

22#
ID:1133081 發(fā)表于 2025-6-8 20:14 | 只看該作者
cy009 發(fā)表于 2025-6-8 16:17
你的答案不符合樓主的要求,樓主的秒點閃爍是亮0.5秒,滅0.5秒。你提供的案例是亮1秒,滅1秒。

是你沒有看懂
回復

使用道具 舉報

23#
ID:69038 發(fā)表于 2025-6-8 21:21 | 只看該作者
dcc60 發(fā)表于 2025-6-8 19:28
很好的思路。
實驗階段,有6位、有4位的,6位的自然不用閃,4位的要搞一下。之前已經用定時器“閃”了, ...

想要“更準確”,就用測周期的方法:
在系統(tǒng)上電初始化后,先單任務方式測一下前后兩次秒讀數更新之間的計數差,就是完整的1秒內要有多少個計數?然后這個計數再對半開,就是你想要有“更準確”的亮滅秒點的時間,即500ms了 。
回復

使用道具 舉報

24#
ID:619259 發(fā)表于 2025-6-9 08:37 | 只看該作者
本帖最后由 cy009 于 2025-6-9 18:45 編輯
同步的問題依然有誤差
回復

使用道具 舉報

25#
ID:332444 發(fā)表于 2025-6-9 09:13 | 只看該作者
嚇我一跳,還以為1302真的有秒引腳!如果有秒引腳之前我就寫錯了,冒汗!更新顯示時,可以比較秒值,不同時點亮,并設法半秒熄滅,簡單延時亦可,定時器計數亦可,當然定時器可設法精準。
回復

使用道具 舉報

26#
ID:1144680 發(fā)表于 2025-6-9 09:58 | 只看該作者
zhuls 發(fā)表于 2025-6-8 21:21
想要“更準確”,就用測周期的方法:
在系統(tǒng)上電初始化后,先單任務方式測一下前后兩次秒讀數更新之間的 ...

想到一塊了。
我的想法是上電后一定時間(等待系統(tǒng)穩(wěn)定)然后用計數方法取半作為計時器的亮滅值。
回復

使用道具 舉報

27#
ID:76044 發(fā)表于 2025-6-9 10:50 | 只看該作者
這個問題我在制作時鐘時也是苦惱過,我處理方式是有二,一是改定時器的參數,改到同步為止,二是60秒讀一次DS1302時間,這樣秒數和閃點是同步的,我現在的制作好的時鐘看著很滿意
回復

使用道具 舉報

28#
ID:996773 發(fā)表于 2025-6-9 13:15 | 只看該作者
這個和主程序結構有關系的,我的是這樣設計的,主程序一直在查按鍵,查1302的秒數據是否有變化,
按鍵和秒都沒變化就會往固定的寄存器加1,如果秒和按鍵都沒有變化數據滿200就會滅掉秒點,這個
時間段半秒不到,接下來的半秒多時間就是熄滅狀態(tài),等到1302秒數據變化了就去處理顯示和寄存器
歸零,反正我用的是計數器方法,沒有用中斷和定時這些資源
回復

使用道具 舉報

29#
ID:1144680 發(fā)表于 2025-6-9 20:01 | 只看該作者
xianfajushi 發(fā)表于 2025-6-9 09:13
嚇我一跳,還以為1302真的有秒引腳!如果有秒引腳之前我就寫錯了,冒汗!更新顯示時,可以比較秒值,不同時 ...

定時器有累積誤差,只能是個大概。
回復

使用道具 舉報

30#
ID:1144680 發(fā)表于 2025-6-9 20:03 | 只看該作者
lxm41577 發(fā)表于 2025-6-9 10:50
這個問題我在制作時鐘時也是苦惱過,我處理方式是有二,一是改定時器的參數,改到同步為止,二是60秒讀一次 ...

定時器有累積誤差。
60秒讀一次是什么意思?
回復

使用道具 舉報

31#
ID:1144680 發(fā)表于 2025-6-9 20:06 | 只看該作者
hi等你 發(fā)表于 2025-6-9 13:15
這個和主程序結構有關系的,我的是這樣設計的,主程序一直在查按鍵,查1302的秒數據是否有變化,
按鍵和秒 ...

目前能想到最精確的就是秒變化時“:”亮,然后熄滅大概0.5秒。
回復

使用道具 舉報

32#
ID:619259 發(fā)表于 2025-6-9 22:04 | 只看該作者
完美解決秒點同步的問題:
1.定義兩個變量,存儲相鄰兩次讀取秒的值。unsigned char sec_temp1,sec_temp2;
2.定義定時器計數變量。unsigned int cnt;
3.定時器定時5ms,計數200次即1秒,取一半值(0.5秒)顯示秒點,另一半不顯示。
4.秒點同步:判斷相鄰兩次讀取秒的值,若不相等即為秒有進位,執(zhí)行cnt=0。
回復

使用道具 舉報

33#
ID:332444 發(fā)表于 2025-6-10 10:30 | 只看該作者
dcc60 發(fā)表于 2025-6-9 20:01
定時器有累積誤差,只能是個大概。

理解差了,每秒同步是較精準的。
回復

使用道具 舉報

34#
ID:1144680 發(fā)表于 2025-6-10 20:50 | 只看該作者
cy009 發(fā)表于 2025-6-9 22:04
完美解決秒點同步的問題:
1.定義兩個變量,存儲相鄰兩次讀取秒的值。unsigned char sec_temp1,sec_temp2; ...

抽時間試試。感謝支持。
回復

使用道具 舉報

35#
ID:1144680 發(fā)表于 2025-6-10 20:51 | 只看該作者
xianfajushi 發(fā)表于 2025-6-10 10:30
理解差了,每秒同步是較精準的。

可否把相關代碼發(fā)出來學習學習?
回復

使用道具 舉報

36#
ID:401564 發(fā)表于 2025-6-11 13:06 | 只看該作者
定義一個全局變量,定時器10mS中斷,在中斷中執(zhí)行 time_sys++;
這個time_sys就是基準時間,根據這個基準時間來讀取DS1302,閃燈操作,這樣的話,整體閃燈和秒時間有10mS的誤差,但這種影響可以忽略不計的例如
   void read_time(void)     
{
       static u8 ren  = 0;
        if(ren == time_sys) return;
        ren = time_sys;

       讀取一次DS1302秒時間,這個秒時間可以是返回值,也可以是全局變量
}

閃燈程序
   void led_mode(void)     
{
       static u8 ren  = 0;
        if(ren != time_sys)
       {
          ren = time_sys;

         flash_crc = (flash_crc + 1) % 100;
         if(flash_crc < 50)
               {
                 亮燈;
               }
              eles
                  {
                     滅燈;
                  }
       }
}


你自己再寫一個flash_crc 根據秒來進行歸零的代碼,思考一下
回復

使用道具 舉報

37#
ID:1144680 發(fā)表于 2025-6-12 10:02 | 只看該作者
Y_G_G 發(fā)表于 2025-6-11 13:06
定義一個全局變量,定時器10mS中斷,在中斷中執(zhí)行 time_sys++;
這個time_sys就是基準時間,根據這個基準時間 ...

謝謝!好好研究研究。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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