導航:首頁 > 操作系統 > 單片機的計數器論文

單片機的計數器論文

發布時間:2024-05-16 04:13:59

『壹』 單片機定時器與計數器的區別

在51單片機的學習過程中,我們經常會發現中斷、計數器/定時器、串口是學習單片機的難點,兩者的區別是什麼呢?下面就跟著我一起來看看吧。

單片機計數器與定時器的區別
計數器和定時器的本質是相同的,他們都是對單片機中產生的脈沖進行計數,只不過計數器是單片機外部觸發的脈沖,定時器是單片機內部在晶振的觸發下產生的脈沖。當他們的脈沖間隔相同的時候,計數器和定時器就是一個概念。

在定時器和計數器中都有一個溢出的概念,那什麼是溢出了。呵呵,我們可以從一個生活小常識得到答案,當一個碗放在水龍頭下接水的時候,過了一會兒,碗的水滿了,就發生溢出。同樣的道理,假設水龍頭的水是一滴滴的往碗里滴,那麼總有一滴水是導致碗中的水溢出的。在碗中溢出的水就浪費了,但是在單片機的定時計數器中溢出將導致一次中斷,至於什麼是中斷我們下次再講,這里只是初步的提下概念,中斷就是能夠打斷系統正常運行,而去運行中斷服務程序的過程,當服務程序運行完以後又自動回到被打斷的地方繼續運行。

在定時器計數器中,我們有個概念叫容量,就是最大計數量。方式0是2的13次方,方式1是2的13次方,方式2是2的8次方,方式3是2的8次方。把水滴比喻成脈沖,那麼導致碗中水溢出的最後一滴水的就是定時計數器的溢出的最後一個脈沖。

在各種單片機書本中,在介紹定時計數器時都講到一個計數初值,那什麼是計數初值呢?在這里我們還是假設水滴碗。假設第一百滴水能夠使碗中的水溢出,我們就知道這個碗的容量是100。問題1,我如何才能使碗接到10滴水就溢出呢?呵呵,我可以想像,如果拿一個空碗去接水,那麼還是得要100滴水才能溢出,但是如果我們拿一個已經裝有水的碗拿去接,那就不用100滴了。到此我們可以算出,要使10滴水讓碗中的水溢出,那麼碗中就先要裝90滴水。

在定時計數器中,這90滴水就是我們所謂的初始值。問題2,在一個車間我們如何利用單片機對100件產品進行計件,並進行自動包裝呢?

我們可以利用計數器計數100,在中斷中執行一個自動包裝的動作就可以了。

在這里計數初值有3個,假設有方式0:計數初值=8912(2的13次方)—100=8812。方式1:計數初值=65536(2的16次方)—100=65436。方式0:計數初值=256(2的8次方)—100=156。

根據所得的初始值,再將其轉換為16進制或者2進制,就可以進行計數或者定時了。當然要讓程序完全的運行起來還需要相應的寄存器進行設置。這些可以從各種單片機教程中找到。
單片機中定時器與計數器的區別
定時器實際上也是計數器,只是計數的是固定周期的脈沖

定時/計數器很容易理解的啊

定時器實際上也是工作在計數方式下,只是計數的是固定周期的脈沖,由於脈沖周期固定,由計數值可以計算時間,有定時功能

定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。

單片機里的寄存器可以看成一個個電子開關,用來切換不同的功能、信號。

51里通過TMOD里的T/C 位切換計數信號的來源

當T/C工作在定時器時,對振盪源12分頻的脈沖計數,即每個機器周期計數值加1,計數頻率為1/12fosc,當晶振頻率6MHZ時,計數頻率為500KHz,每2us計數值加1;晶振12MHZ就是每1us加1 了。

當T/C工作在計數器是,計數脈沖來自外部脈沖輸入管腳T0(P3.4)或T1(P3.5),當T0或T1腳上負跳變時計數值加1 ,識別管腳負跳變需要2個機器周期,即24個振盪周期。所以T0或T1腳輸入的可計數的外部脈沖的最高頻率為1/24fosc,當晶振12MHZ時,最高計數頻率為500KHz,高於此頻率將計數出錯。

至於賦初值就是杯子原理了,由於51隻能加計數,且只能在杯子剛剛滿的那一刻發出中斷,觸發中斷程序,所以我們就往杯子里先放好一定的豆子,再來相應數量的豆子就滿了,然後中斷程序就自動工作了。

注意:

定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。

假設我們要定時一定時間(100個機器周期),我們就置初值為(溢出值-100)就行了,假設我們要計件100個,實際上也是置初值為(溢出值-100),然後將輸入脈沖設為外部輸入就可以了

所以說:定時和計數只是觸發來源不同(時鍾信號和外部脈沖)其他方面是一樣的。

在中斷里置初值是為下一個循環作準備,沒什麼好說的,看需要定了。

由於定時計數器的值也可以隨時讀出來,所以我們也可以從0開始計數,從而計算一段時間或一定脈沖的數量哦,這是照樣可以打開中斷,中斷時就說明已經又計數了(定時器溢出值)個脈沖哦,在中斷里進行溢出處理,就可以計算出遠遠大於(定時器溢出值)的數字了

此時也要注意一點:51讀數時除了T/C2的捕捉功能,直接讀TH和TL可是不斷變化的哦,具體的還是看書。當你理解了定時計數器後,我們甚至還可以將計數值置為(溢出值-1),從而實現自動單步(定時模式)或作為外部中斷(計數模式)用哦,仔細想想吧,呵呵;-)

至於中斷中的需要保護現場的原因,是為了防止不小心修改了別的程序的參數,從而影響別的程序的運行,所以要且只要保護中斷程序自己動過的數據,將動過的那些存儲器在退出中斷時恢復到進入時的狀態,就不會影響被中斷的程序了。

匯編需要自己保存現場,反正程序就是自己編的嘛,一切盡在掌握中;

C的話編譯器會自動進行覆蓋分析,自動保存需要保存的變數,一般應用時盡可放心,當然,如果你很了解編譯器做了什麼,也可以嵌入匯編天馬行空自由發揮啊,但新手可不建議這樣哦,還是交給編譯器吧。

其實這些可以說都是基礎知識啊,如果不明白肯定是你的書看的不夠仔細哦.

猜你喜歡

1. 單片機的硬體結構是什麼

2. 10秒定時器電路設計

3. 單片機技術論文

4. 單片機的發聲原理

5. 單片機開題報告範文

6. 電子實習報告單片機

7. 單片機實訓報告範文3篇

『貳』 單片機定時器 計數器的工作原理,及如何實現定時 計數功能

原理: 16位的定時器/計數器實質上就是一個加1計數器,其控制電路受軟體控制、切換。 當定時器/計數器為定時工作方式時,計數器的加1信號由振盪器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。

顯然,定時器的定時時間與系統的振盪頻率有關。因一個機器周期等於12個振盪周期,所以計數頻率fcount=1/12osc。

兩個位元組最大數據為65536(十進制),或者0FFFFH(十六進制)

高位元組為TH0=(65536-X)/256,就是除以256後的整數部分;

低位元組為TL0=(65536-X)%256,減去高位元組後餘下的部分;

定時/計數器

定時/計數器T0和T1分別是由兩個8位的專用寄存器組成,即定時/計數器T0由TH0和TL0組成,T1由TH1和TL1組成。此外,其內部還有2個8位的特殊功能寄存器TMOD和TCON,TMOD負責控制和確定T0和T1的功能和工作模式,TCON用來控制T0和T1啟動或停止計數,同時包含定時/計數器的狀態。

以上內容參考:網路-定時器中斷

『叄』 基於單片機的光電感測器的計數器設計

計數顯示電路可完成對上述脈沖信號的計數和顯示。圖3是由單片機構成的計數系統框圖。 計數系統以MCS-51系列單片機的8031為核心,8013單片機的外圍擴展了程序存儲器27C256和數據存儲器WM0016DRH,此外,用8255擴展了I/O口,同時具有時鍾單元、掉電保護、看門狗單元、通信單元以及LED(發光二極體)顯示器、鍵盤等。 1)8031單片機及存儲器 8031內含4kb EEPROM程序存儲器,具有功耗低、抗干擾能力強的特點,可安置於監測現場,數據存儲器WM0016DRH是一種多功能非易失性SRAM,特點如下:高速高抗干擾自保持,不怕掉電,上下電百萬次數據無丟失,斷電保護10年有效,既可高速連續讀寫,也可任意地址單位元組操作,無需拼湊頁面,隨機讀寫不需等待,立即有效,輸入輸出TTL/CMOS兼容,上電復位輸出,掉電保護,內置看門狗,電源監測,不用外加電路和電池,且引腳與標准SRAM兼容。 2)計數及顯示 多車道車流量數對應的脈沖通過光電隔離耦合並行輸入至8031單片機的P1口,通過軟體控制和鍵盤設定計數值並用LED加以顯示,可自動循環顯示或定點顯示兩種方式,且兩者相互間可任意切換[4]。 當熱釋電感測器安裝位置固定後,輸入脈沖的脈寬和占空比均取決於高速公路上車輛的車速和車距(脈寬對應車輛感測器有效監視方位內的時間,車速和車距有限定),占空比q小於50%,為了准確拾取車流量信息,通過軟體可實現單片機對每一路並行輸入數據的讀取周期小於脈寬,且將每路各自相鄰的兩讀取周期讀取的數據進行運算(暫存前一個周期讀取的數據),若兩數據為01,則自動計1,否則計0。其中0為前一個周期的讀取數據,此時脈沖為低電平,1為後一個周期的讀取數據,此時脈沖為高電平,從而避免了對脈沖的漏計和重復計數,再把4路的讀數每一周期進行一次加運算,累加後的和就是總的車流量。 將8031單片機內的定時器/計數器設定為工作方式1,構成16位二進制計數器[5],採用動態掃描方式直接驅動5位十進制計數器[5]。採用動態掃描方式直接驅動5位十進制LED顯示,最大計數值達到65536,可記錄4車輛的車流量並顯示一個月內的日流量,累計4車道一個月內的日流量總和,計數器內數據保護時間可達一個月之久。當計數器達到設定值時,聲光報警,可存儲數據,並手動復位。 3)時鍾單元 採用DS12C887實時時鍾晶元,具有顯示具體時間信息的功能,若設計調整和設置按鍵,可方便地對時間進行調整和設置,從而為車流量的統計提供准確的時間數據。 4)串列通信單元 由於單片機系統的數據存儲能力和數據處理能力有限,以及現場實時性要求較高,故單片機現場只能暫時存儲採集到的數據和對數據進行簡單處理,至於大量的數據存儲和後續復雜的數據處理可交給上位機完成,由於大型機具有RS-232標准串列口,所以通過8031單片機TTL電平全雙工串列口,附加RS-232電平轉換電路MAX3232可與上位機實現數據通信。 3 軟體設計 計數系統的程序主要包括系統自檢程序、系統初始化程序、鍵盤掃描程序、按鍵處理程序、顯示程序以及數據採集處理程序等,圖4所示為主程序流程。 4 安裝與調試

『肆』 球一份關於單片機或c語言的論文!2000字左右的

一·基於MSP430 單片機的電源監控管理系統(單片機論文)

引言
大功率直流開關電源由PFC 和DC-DC 變換器組成,為了提高可靠性,並能夠對其進行離線或遠程監控管理,在開關電源模塊內設置監控管理系統。該系統對電源故障類進行監控,對電源輸出的電壓電流進行自動設定和調節,通過串列通信介面,與遠程中心監控站進行遠程監控和管理,這一功能在通信系統基站供電系統中尤為重要。本文提出了一種基於MSP430單片機的電源監控管理系統的設計和實現。

1 系統結構和硬體電路設計
系統的整體設計結構如圖1所示。本系統採用的核心晶元為TI公司推出16位系列單片機MSP430。MSP430具有集成度高,外圍設備豐富,超低功耗等優點。單片集成了多通道12bit的A/D轉換、片內精密比較器、多個具有PWM功能的定時器、片內USART、看門狗定時器、片內數控振盪器(DCO)、大量的I/O埠以及大容量的片內存儲器,採用串列在線編程方法,單片可以滿足絕大多數的應用需要。 MSP430的這種高集成度使應用人員不必在介面、外接I/O及存儲器上花太多的精力,而可以方便的設計真正意義上的單片系統,在許多領域得到了廣泛的應用。下面介紹該系統可以實現的功能和基於MSP430F149的電控系統的設計。

1.1 系統功能:
a.開機控制。上電後,單片機開始工作,按下電源鍵,點亮指示燈後,將電網220V接入PFC,開關電源啟動工作,然後接於負載。
b.電壓設定和調節。用單片機A/D口採集開關電源的輸出電壓值,並顯示於液晶屏上,通過單片機控制數字電位計調節輸出電壓值,實現自動調節;或者通過鍵盤的左右鍵選出電壓調節頁面,用上下鍵進行手動調節;也可以通過通信介面實現遠程調節。

c.電流調節。多台開關電源並聯使用時,要求各台電源的負載電壓相等。單片機A/D口採集轉換成電壓值的負載電流值,通過通信口得到各台電流值,取電流平均值,控制數字電位計調節輸出電壓,使輸出負載電流達到平均值;或者通過鍵盤的左右鍵選出電流調節頁面,用上下鍵進行手動調節。

d.故障報警。單片機通過光電耦合器檢測到各項輸入輸出故障時,揚聲器產生蜂鳴,相應的報警燈閃爍,並在液晶屏上顯示故障類型及處理方法。

e.監測。單片機A/D口對電網電壓,輸出電壓,輸出電流進行採集測量,當出現超限時進行報警。

f.通信。包括單片機與各台開關電源間的通信和單片機與中心監控站的通信。

1.2 電壓調節電路
電壓調節電路由單片機、數字電位計X9313和可調分流基準晶元TL431組成,其電路原理圖如圖2所示。Xicor9313是固態非易失性電位器,可用作數字控制的微調電位器。TL431是TI生產的一個有良好的熱穩定性能的三端可調分流基準源,它的輸出電壓用兩個電阻就可以任意地設置到從VREF(2.5V)到36V范圍內的任何值。工作時,單片機的一個IO控制INC計數輸入腳,為其提供計數脈沖,此輸入端為下降沿觸發。另一個IO控制U/D升降輸入端,當U/D為高電平時,X9313內部計數器進行加法計數,VW端的輸出電壓上升,由於VW接地,使VH端電壓降低,而TL431的REF輸出端電壓為恆定的2.5V,從而使Vcc處輸出電壓升高;同理當U/D為低電平時,Vcc處輸出電壓降低,這樣就實現了電壓輸出調節。

1.3 模擬數據採集
MSP430F149內嵌入一個高精度的,具有采樣與保持功能的12位ADC轉換模塊,內部提供各種采樣與保持時鍾源。MSP430有8個外部輸入通道可選, 最高采樣速度可達200KHZ,並且還內置溫度感測器,可以測量晶元內的溫度,如果測量溫度高於或低於預設的溫度是,可以通過外接部件顯示告警信息,同時具有6種可編程選擇的內部參考電壓。該轉換模塊為一些需要模擬量採集的場合提供了便利。我們選擇的參考電壓是0~2.5V,這樣MSP430F149的AD解析度就是2.5/4096 = 0.61V左右。由於輸入的模擬電壓量較高,不能直接與單片機的ADC采樣埠相連,因此用串聯一個滑動變阻器的方法進行了降壓處理,成功解決了上述問題。

1.4 人機對話設計
系統的人機操作界面由液晶顯示屏、指示燈和鍵盤組成。液晶選用的是基於T6963C 的液晶模塊YM12864。鍵盤採用的是3×3 的陣列接法,系統採用了圖形用戶界面,操作簡單易行,顯示實用美觀。工作時,液晶屏可以實時顯示採集到的電網電壓、輸出電壓、輸出電流及各種報警信息,操作相應鍵盤可以進行顯示頁面的切換,對輸出電壓,輸出電流進行自動、手動及遠程式控制制調節。當有報警信息產生時,相應得指示燈會閃爍警示,同時與單片機連接的揚聲器會產生報警蜂鳴聲,以提醒操作人員做出相應的處理。

2 系統軟體設計
430 支持匯編語言和C 語言兩種語言編程,因此可以在一個工程文件中同時用兩種語言,使用匯編語言,便於在調試時尋找邏輯和指令的聯系及地址的定位正確與否。使用C 語言進行編程大大減少了工作量,編好後的程序可讀性好,易於修改和維護。開發工具使用IARSystems 公司的IAR Embedded Workbench,它集成了編輯、編譯、鏈接、下載與在線調試(Debug)等多種功能,使用方便,並具備高效的C 語言編譯能力。

考慮到軟體開發效率及可維護性,系統軟體設計遵循模塊化的編程思想,將系統功能劃分為幾個相對獨立的功能模塊。它們包括:液晶顯示模塊、AD 轉換模塊、按鍵監測響應模塊、報警監測響應模塊、電壓電流調節模塊、數據處理模塊、通信模塊。每個模塊都要進行獨立的測試,最後結合到一起。整個系統的軟體流程圖如圖3 所示。

按鍵監測模塊是其中的重要組成部分,它控制著AD轉換的啟動,顯示頁面的切換,及電壓電流的自動調節,手動調節,遠程調節的啟動和切換。報警監測模塊對開關電源的保護起著至關重要的作用,它實時的監測著開關電源是否出現故障,當發生輸入電壓過壓,輸入電壓欠壓,PFC故障時應切斷總電源,當發生輸出電壓過壓,輸出電壓欠壓,模塊過熱,及IPM保護故障時應關斷DC-DC變換器。
在對各模塊進行整合時,要注意各中斷之間的沖突。由於在MSP430 的中斷優先順序中,ADC12 采樣轉換中斷優先順序高於TIMERA 中斷,因此當在響應TIMERA 中斷的過程中會執行ADC12 采樣轉換中斷,或者TIMERA 的中斷響應被迫延遲,這樣就會影響在TIMERA中斷中執行的報警監測響應程序,不能達到對開關電源故障類的實時檢測。在本系統中,利用按鍵控制ADC12 采樣轉換中斷的啟動和關閉,從而解決中斷沖突。

3 結論
本文在基於MSP430F149電源監控管理系統的設計和實現的基礎上對MSP430的系統設計做了討論,提出並解決了在設計中出現的問題。本文作者的創新點:利用MSP430的系統結構簡單,外圍電路少,效率高的特點,設計實現了簡潔直觀、使用方便、操作全程漢字提示、監控能力強、運行穩定、安全可靠的電源監控管理系統,大大降低了成本,取得了相當可觀的經濟效益,滿足實際需求。

二·C語言論文:

嵌入式以門檻高,入門難的方式攔截了無數的學者。然而單片機作為嵌入式的入門課,如何以一種正確的方法學習單片機將關繫到是否能學習好嵌入式。
縱所周知,學習嵌入式先玩ptotel,再做單片機。Protel簡單的來說就是一個做PCB板的純英文的軟體。學習ptotel前必需具備一定的電路基礎和英語能力,電路基礎我想大部分同學都是有的,而英語這一塊卻是許多人所頭疼的。這對英語基礎差的同學是一種打擊,再者如果毅力不強,我想你是自學不下去的。毅力是學任何東西所必需的一種能力、素質,是一種遇挫折而不言敗的決心。
不管學的是protel還是單片機,首先要找一個能夠指導你的人。何謂指導,指導並不是說他要一步一步地教你去做,而是一個在關鍵時刻能夠為你指出一條道路的人。
我認為學習嵌入式方法最重要,在學protel和單片機之前應該想辦法了解關於學習它們的方法。比如說protel吧,許多人理科的學生都是以一種純理解的角度去學的,畫一個導線、元件問一下為什麼要這樣畫,生成網路表也追根溯源地問個網路表的由來。其實許多東西只是懂用就行,理論的東西懂得再多不懂用也是枉然的。
所以學習protel有地方不懂你就問你的指導員,有許多的東西是規定死了的,不是你想半天一夜就可以為你而改變的。這不同於軟體設計,軟體設計在你的苦思之下也許可以找到另一種更好的方法。

單片機嘛,不得不承認中國沒一本單片機好書。我學習單片機的時候看過的單片機書有七本,大多數都是不盡人意的。在這里我冒昧地說:中國人寫書確實缺乏一點「讀者至上」的原則。我所看過的單片機書我想有很多都是以他的角度去寫的,沒有幾個人是站穩在讀者的角度上寫的。書上的章節注釋極不清楚,許多重要的地方都是沒有說明的,說句不好聽的話,作者似乎以為讀者的水平也像他一樣高。而外國人的書呢,同樣的書,同樣的知識點,有同樣的中國人的書的兩三倍那麼厚,這是為什麼。這是因為外國人的書點點滴滴都是面向著讀者的。注釋、說明、總結應有盡有。所以,我在這里發表一個也許同胞會扔雞蛋到我身上的觀點,那就是:不管學什麼,優先選擇外文翻譯書,或是純英文書。得到一本好書對我們的影響極為巨大。這一部分我用一句話來總結就是:中國人的書適合教學,而外國人的書不僅適合教學還適合自學。

中國人的單片機書往往都是先介紹單片機的內部結構、中斷,定時器,然後再到I/O口。一開始就讓我們學習單片機內部結構,中斷、定時器的內部結構和原理,把我們弄得一塌糊塗的時候再和我們講例子,怎樣去操作實驗板。如果自學的話我想許多同學是學不下去的,幹嘛要把非得把單片機的內部結構像解剖學一樣弄個徹底才實踐去應用它呢?即使你把單片機全解剖清楚了還是不會用你手中的這塊實驗板的。我覺得如果在學單片機之前沒有學過匯編語言就直接用C語言學的話,即使學完了單片機,對單片機的內部結構和單片機的工作原理也是不清楚的。學了匯編之後再學單片機的話效果將會好得多,所以不要心急,有些東西是急不來的。
所以我認為學習單片機要在實踐中學習,先實踐再去了解它的結構和原理,如果你實在不能了解它的結構和原理那也無所謂的,只要你懂得用就可以了!(沒學過匯編的只能這么說了)
我們可以先從 I/O口學習,看一些例子燒錄些程序,再看一下現象,之後再嘗試了解一下所要用到的單片機的內部結構,最後在這個現象的知識基礎上,編一個自己想要的程序、現象出來。這樣學習的話既不無聊,成就感也有了。為什麼有些人可以把學習當一種快樂,而許多人在唉聲嘆氣,我想有一部分是出自這個原因。
不同的實驗板有不同的PCB圖,所以I/O的操作也是有所不同的。不過操作的原理都是一樣的,有些同學可能會抱怨教程里的實驗板和自己手中的實驗板不同,這是大可不必多慮的。I/O這一步在調試中看現象的理念很重要,比如改變一個語句會產生何種現象,為什麼會產生,這些都是要在調試中掌握的。
中斷的學習方法也是類似的,先實踐發現有陌生的地方就去查看相應的寄存器,等實現了自己想要的現實再慢慢地解剖一下單片機的寄存器,這樣學起來會更有意義,記得更牢。中斷也沒復雜的東西的,只不過學幾個中斷函數,優先順序之類的。有一定C語言基礎的同學在優先順序這一塊可以聯系C語言中運算符的優先順序,我相信有了C語言基礎定義一兩個中斷函數也不是什麼問題了的。
我學過的單片機的內容在我文檔的實例之中,實例的數量不多,但這些都是直接點擊單片機知識點的。隨著我的學習漸漸地深入後我再把我實現過的東西寫入實例之中吧。

希望對你有所幫助,祝成功!

閱讀全文

與單片機的計數器論文相關的資料

熱點內容
華為通話加密電話 瀏覽:58
什麼伺服器可以代替計算機 瀏覽:960
伺服器當電腦用怎麼安裝顯卡 瀏覽:519
回女友消息神器python 瀏覽:50
App分類框怎麼添加 瀏覽:543
海爾帥王子冰箱壓縮機啟動跳閘 瀏覽:479
cadfill命令什麼意思 瀏覽:334
中公專項題庫pdf 瀏覽:931
拼多多緩存在哪個文件夾 瀏覽:640
安卓無卡汽車導航怎麼升級 瀏覽:48
cs管理員命令是什麼 瀏覽:126
華為v10模擬加密門禁卡 瀏覽:725
android修改app名稱 瀏覽:640
輻射3夥伴命令 瀏覽:247
蘋果電腦pdf轉換成word 瀏覽:921
純小數運演算法則 瀏覽:385
php什麼是事務 瀏覽:859
怎麼添加網名文件夾 瀏覽:769
啊哈演算法語言 瀏覽:677
馬來西亞加密貨幣政策 瀏覽:233