找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1926|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

單片機倒計時程序 求指導(dǎo)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1080717 發(fā)表于 2023-5-29 20:24 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
1. 倒計時秒表
    系統(tǒng)接1個按鍵用于啟動,1個蜂鳴器用于提示計時時間到,兩個數(shù)碼管用于顯示時間。
    功能:系統(tǒng)上電數(shù)碼管顯示60;當(dāng)按鍵按下時,系統(tǒng)開始倒計時,同時數(shù)碼管顯示當(dāng)前時間;當(dāng)計時為0時,蜂鳴器響。
如果用中斷函數(shù)具體該怎么弄呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:789121 發(fā)表于 2023-6-13 16:30 | 只看該作者
畫電路圖了么?主要使用定時器中斷計時和外中斷相應(yīng)按鍵
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2023-6-13 22:21 | 只看該作者
本帖最后由 lkc8210 于 2023-6-14 09:46 編輯
  1. #include "reg51.h"

  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. //-----------------------------------------------

  5. /* define constants */
  6. #define FOSC 11059200L

  7. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  8. /* define SFR */
  9. sbit TEST_LED = P1^0;               //work LED, flash once per second

  10. /* define variables */
  11. u16 count;                         //1000 times counter

  12. //-----------------------------------------------

  13. /* Timer0 interrupt routine */
  14. void tm0_isr() interrupt 1
  15. {
  16.     TL0 = T1MS;                     //reload timer0 low u8
  17.     TH0 = T1MS >> 8;                //reload timer0 high u8
  18.     if (count-- == 0)               //1ms * 1000 -> 1s
  19.     {
  20.         count = 1000;               //reset counter
  21.         TEST_LED = ! TEST_LED;      //work LED flash
  22.     }
  23. }

  24. //-----------------------------------------------

  25. /* main program */
  26. void main()
  27. {
  28.     TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  29.     TL0 = T1MS;                     //initial timer0 low u8
  30.     TH0 = T1MS >> 8;                //initial timer0 high u8
  31.     TR0 = 1;                        //timer0 start running
  32.     ET0 = 1;                        //enable timer0 interrupt
  33.     EA = 1;                         //open global interrupt switch
  34.     count = 0;                      //initial counter

  35.     while (1);                      //loop
  36. }

復(fù)制代碼

回復(fù)

使用道具 舉報

地板
ID:116103 發(fā)表于 2023-6-14 05:43 | 只看該作者
按鍵后,TR0=1,啟動定時器,在中斷中每一秒送減初值,到0時,在中斷中TR0=0, 蜂鳴=1.
回復(fù)

使用道具 舉報

5#
ID:332444 發(fā)表于 2023-6-14 14:31 | 只看該作者
首先寫好數(shù)碼管驅(qū)動,設(shè)置定時器時間,其他都好辦,無論是正計時還是倒計時都一樣一個算法而已

1.jpg (3.84 KB, 下載次數(shù): 24)

1.jpg
回復(fù)

使用道具 舉報

6#
ID:332444 發(fā)表于 2023-6-14 22:59 | 只看該作者
學(xué)習(xí)單片機首先就要學(xué)好寫顯示驅(qū)動:數(shù)碼管/LCD/點陣的驅(qū)動,這是人機交互的窗口,顯示寫好后其它都借助顯示都容易了。
回復(fù)

使用道具 舉報

7#
ID:332444 發(fā)表于 2023-6-15 09:06 | 只看該作者
像這種沒有電路圖的提問只能講個大概而已,須知道硬件和軟件結(jié)合的單片機必須是硬件和代碼嚴(yán)格對應(yīng)的,否則都是空談。
回復(fù)

使用道具 舉報

8#
ID:77589 發(fā)表于 2023-6-16 15:55 | 只看該作者
這個應(yīng)該不難,看看資料就會了!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表