軟件思路和具體實現
發布時間:2012/6/12 19:35:22 訪問次數:1043
說起單片機測速,最簡單也TMP68301AF16最容易實現的方法之一就是使用其內部的定時器:一個定時器作計數功能,用來對測速探頭送來的脈>中信號計數,另一個定時器則作定時功能,定時時間為1秒,每次將用作圖5里程表電路原理098無線電己Oll計數的定時器打開1秒,1秒到則關閉。但這種方式需要兩個定時器,而前文已提到用于測速的定時器只剩一個,另一個已用作串口通信的波特率發生器,要測速就必須要給單片機提供一個秒信號,而這個矛盾剛好可由PCF8563來解決,其第7腳為可編程時鐘輸出,所輸出的頻率范圍剛好就有秒信號,因此單片機復位后,程序開始運行時第一件事就是對PCF8563作相應設置,使其輸出秒信號作為單片機的外中斷1的中斷信號,用來測量速度。而里程的計量則在外中斷O中進行,這里將利用PCF8563的第3腳,輸出1024kHz的脈>中,讓2051的外中斷o每秒中斷1024次,用于計量行駛里程,這樣一來就解決了里程表基本功能實觀的問題,從而實現了對它的充分利用。至于額外的時間顯示功能,PCF8563本身就是用作實時時鐘的,所以問題自然也就迎刃而解了。
行駛里程數存儲于AT24C01中,要注意一點的就是,AT24C01的讀寫次數一般是大干1萬次,因而程序中就要注意向其寫入數據的次數問題。假如我們每天上班騎行一個來回是40公里,每行駛一公里寫一次里程數,則每天要寫40次,一年下來就要擦寫14600次,這個頻率肯定會讓AT24C01提早報廢。解決辦法是在按鍵程序中用按鍵來定義存儲功能,到達目的地后,用按鍵來存儲數據,這樣一來,每天的擦寫次數就變為兩次了,AT24C01的使用年限將達十年的樣子。
本文所提供的程序相對較大,有九百多行,全部使用匯編語言,采用模塊化編程,因而源碼雖然較多,但還是很容易理解,里面包括軟件模擬I2C通信的子程序和雙字節的乘法子程序,都很實用,大家可以將之移植到自己其他的程序中去。當然所提供的程序仍有很多能改進的地方,讀者可以在源碼基礎上作更多的優化,使之更合理,效率更高。
行駛里程數存儲于AT24C01中,要注意一點的就是,AT24C01的讀寫次數一般是大干1萬次,因而程序中就要注意向其寫入數據的次數問題。假如我們每天上班騎行一個來回是40公里,每行駛一公里寫一次里程數,則每天要寫40次,一年下來就要擦寫14600次,這個頻率肯定會讓AT24C01提早報廢。解決辦法是在按鍵程序中用按鍵來定義存儲功能,到達目的地后,用按鍵來存儲數據,這樣一來,每天的擦寫次數就變為兩次了,AT24C01的使用年限將達十年的樣子。
本文所提供的程序相對較大,有九百多行,全部使用匯編語言,采用模塊化編程,因而源碼雖然較多,但還是很容易理解,里面包括軟件模擬I2C通信的子程序和雙字節的乘法子程序,都很實用,大家可以將之移植到自己其他的程序中去。當然所提供的程序仍有很多能改進的地方,讀者可以在源碼基礎上作更多的優化,使之更合理,效率更高。
說起單片機測速,最簡單也TMP68301AF16最容易實現的方法之一就是使用其內部的定時器:一個定時器作計數功能,用來對測速探頭送來的脈>中信號計數,另一個定時器則作定時功能,定時時間為1秒,每次將用作圖5里程表電路原理098無線電己Oll計數的定時器打開1秒,1秒到則關閉。但這種方式需要兩個定時器,而前文已提到用于測速的定時器只剩一個,另一個已用作串口通信的波特率發生器,要測速就必須要給單片機提供一個秒信號,而這個矛盾剛好可由PCF8563來解決,其第7腳為可編程時鐘輸出,所輸出的頻率范圍剛好就有秒信號,因此單片機復位后,程序開始運行時第一件事就是對PCF8563作相應設置,使其輸出秒信號作為單片機的外中斷1的中斷信號,用來測量速度。而里程的計量則在外中斷O中進行,這里將利用PCF8563的第3腳,輸出1024kHz的脈>中,讓2051的外中斷o每秒中斷1024次,用于計量行駛里程,這樣一來就解決了里程表基本功能實觀的問題,從而實現了對它的充分利用。至于額外的時間顯示功能,PCF8563本身就是用作實時時鐘的,所以問題自然也就迎刃而解了。
行駛里程數存儲于AT24C01中,要注意一點的就是,AT24C01的讀寫次數一般是大干1萬次,因而程序中就要注意向其寫入數據的次數問題。假如我們每天上班騎行一個來回是40公里,每行駛一公里寫一次里程數,則每天要寫40次,一年下來就要擦寫14600次,這個頻率肯定會讓AT24C01提早報廢。解決辦法是在按鍵程序中用按鍵來定義存儲功能,到達目的地后,用按鍵來存儲數據,這樣一來,每天的擦寫次數就變為兩次了,AT24C01的使用年限將達十年的樣子。
本文所提供的程序相對較大,有九百多行,全部使用匯編語言,采用模塊化編程,因而源碼雖然較多,但還是很容易理解,里面包括軟件模擬I2C通信的子程序和雙字節的乘法子程序,都很實用,大家可以將之移植到自己其他的程序中去。當然所提供的程序仍有很多能改進的地方,讀者可以在源碼基礎上作更多的優化,使之更合理,效率更高。
行駛里程數存儲于AT24C01中,要注意一點的就是,AT24C01的讀寫次數一般是大干1萬次,因而程序中就要注意向其寫入數據的次數問題。假如我們每天上班騎行一個來回是40公里,每行駛一公里寫一次里程數,則每天要寫40次,一年下來就要擦寫14600次,這個頻率肯定會讓AT24C01提早報廢。解決辦法是在按鍵程序中用按鍵來定義存儲功能,到達目的地后,用按鍵來存儲數據,這樣一來,每天的擦寫次數就變為兩次了,AT24C01的使用年限將達十年的樣子。
本文所提供的程序相對較大,有九百多行,全部使用匯編語言,采用模塊化編程,因而源碼雖然較多,但還是很容易理解,里面包括軟件模擬I2C通信的子程序和雙字節的乘法子程序,都很實用,大家可以將之移植到自己其他的程序中去。當然所提供的程序仍有很多能改進的地方,讀者可以在源碼基礎上作更多的優化,使之更合理,效率更高。
熱門點擊