每天資訊自學微控制器第六十四篇:綜合應用製作秒錶

菜單

自學微控制器第六十四篇:綜合應用製作秒錶

秒錶,這是一個比較有實用價值的應用,相比於之前的,我們本次編寫的秒錶,將採用中斷程式來進行,定時器比起之前的延時要來的精確的多,而且可以在後臺執行,不影響主程式。

不知道大家是否還記得我們使用中斷的步驟?

接著先來回顧並計算一下:

1,本次使用的晶振是11。0592M。(不是說其他的不好用,而是我手裡目前只有這個晶振,如果大家要製作秒錶,可以使用計時晶片,比我們這個要準的多,當然也可以使用計時用的晶振32。768KHz,具體看大家的了)

2,一個機器週期時間是1。085069444微秒,選用晶振的頻率,就決定了每個週期的時間誤差的大小。使用12M的晶振時,計算出的機器週期時間是1微秒。相比之下要規整些。

3,定時最小分度我選擇為5毫秒。為什麼選擇5毫秒,自己決定吧,我只是想著計算上節省。而且便於調整。

4,所需的初始值是:

5毫秒=5000微秒。週期數=5000/1。085069444=4608次,假設計時週期數是4608。

初始值就是:65536-4608=60928。

5,計算出對應初始值的十六位十六進位制數是:0xEE 00

6,得出TH0=0xEE,TL0=0x00。

7,工作模式是定時器,工作方式是16位定時。TMOD=0x01。

8,開啟T0定時器開關,ET0=1;TR0=1;

9,開啟中斷總開關,EA=1;

10,設定中斷響應函式。void T0_ZDuan() interrupt 1{}

這是定時器的設定,當然這些東西要嵌入到程式中使用,而不是光是用一個定時器就解決了。我們需要用一個按鍵去控制計時的啟動和復位,然後需要一個按鍵去選擇需要哪個定時模式,還要有顯示程式,來呈現我們的定時時間。

那麼接下來就開始寫。

自學微控制器第六十四篇:綜合應用製作秒錶

就參照這個秒錶。左側按鍵是:分圈/復位。右側按鍵是:啟動/停止。中間按鍵時:模式。

首先說下功能:具備計時,年月日時分秒時鐘,可以檢視儲存的5組資料,可以刪除已儲存的資料。

時間有限,就寫了一部分功能,主要是實現秒錶功能。

硬體介面如下:

自學微控制器第六十四篇:綜合應用製作秒錶

使用了兩個四位數碼管,三個按鈕,一個開關,微控制器還是89C52RC。

程式的編寫,分為幾個大塊。

1,變數定義

2,按鍵功能設定

3,資料處理

4,時鐘計時

5,顯示重新整理

6,跑表定時

1,變數定義:

自學微控制器第六十四篇:綜合應用製作秒錶

自學微控制器第六十四篇:綜合應用製作秒錶

自學微控制器第六十四篇:綜合應用製作秒錶

2,微控制器基本配置

自學微控制器第六十四篇:綜合應用製作秒錶

T0使用了2ms重新整理一次,因為是用來重新整理數碼管顯示的,所以無所謂精確不精確。T1使用了5ms重新整理一次,測試後,發現存在較大誤差,於是將計數值進行了減小,相當於縮短了定時器的定時時間,用這個縮短的時間去彌補程式計時的誤差。原本是EE00(4608),修改為了EE12(4590)。定時器模式都選擇的是16位定時器。所以TMOD=0x11。

3,按鍵功能設定

自學微控制器第六十四篇:綜合應用製作秒錶

模式分為5個,模式1時鐘顯示。模式2是對已經計時的時鐘進行ms級別的呈現。目前是為了測試時觀察時鐘的準確性。方便調整定時器 引數。

自學微控制器第六十四篇:綜合應用製作秒錶

在模式3中,當按下啟停按鍵,跑表控制變數,將會被取反,原來是1,現在就是0。為後邊的程式中,跑表的計數停止做一個控制開關作用。

自學微控制器第六十四篇:綜合應用製作秒錶

在模式3中,當復位按鍵按下,就會將當前的跑表數值儲存起來,總共可以保持五個時間值。如果復位按鍵按下後的0。6秒內啟停按鍵被按下,此時會對跑表的計數進行清零,同時關閉跑表功能。

自學微控制器第六十四篇:綜合應用製作秒錶

在模式4中,按下復位按鍵,會顯示此前跑表儲存的資料,總共有5個。每按下一次,顯示一個。迴圈顯示。

自學微控制器第六十四篇:綜合應用製作秒錶

在模式5中,按下復位按鍵,會將儲存的資料全部清空。

4,資料處理

自學微控制器第六十四篇:綜合應用製作秒錶

將時鐘資料送到顯示快取陣列中,為了便於識別,每隔兩位設定了一個小數點,分割時分秒。

自學微控制器第六十四篇:綜合應用製作秒錶

自學微控制器第六十四篇:綜合應用製作秒錶

自學微控制器第六十四篇:綜合應用製作秒錶

自學微控制器第六十四篇:綜合應用製作秒錶

資料清除前,顯示0,清除時顯示clr——-。

5,時鐘計時

自學微控制器第六十四篇:綜合應用製作秒錶

將基礎的時間資料按照時分秒的規則,分別進行遞增賦值,然後再把資料送到時鐘快取中。

6,顯示重新整理

自學微控制器第六十四篇:綜合應用製作秒錶

7,跑表定時

自學微控制器第六十四篇:綜合應用製作秒錶

只說明一個,就是毫秒時間為何等於119988000之後就要清空,這是因為,8為數碼管最多顯示到9999 9999,所以就只能毫秒計數到119988000。

程式的大致編寫就這些。

下篇會對程式設計進行簡單的分析。