哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

第5章 定時器與數(shù)碼管基礎(chǔ)(5.1 5.2)

137933yu ? 來源:137933yu ? 作者:137933yu ? 2025-11-20 17:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著學(xué)習(xí)內(nèi)容越來越多,個別細節(jié)可能會感覺略有吃力。但是不要擔(dān)心,這個跟小孩學(xué)走路一樣,剛開始走得不太穩(wěn),沒關(guān)系,多走幾步多練練。看教材的時候要注意專心,一遍看不懂,思考一下,再回頭看第二遍和第三遍,沒準(zhǔn)一下就明白了。如果三遍還看不明白,那就把不懂的問題放一放,繼續(xù)往下學(xué)兩課然后再回頭看一次,也可以與他人討論一下,可能就會茅塞頓開了。
5.1邏輯電路與邏輯運算
數(shù)字電路經(jīng)常會遇到邏輯電路,而在C語言中則經(jīng)常用到邏輯運算。二者在原理上是相互關(guān)聯(lián)的,在這里就先簡單介紹一下。
首先,在“邏輯”這個概念范疇內(nèi),存在真和假這兩個邏輯值,而將其對應(yīng)到數(shù)字電路或C語言中,就變成了“非0值”和“0值”這兩個值,即邏輯上的“假”就是數(shù)字電路或C語言中的“0”這個值,而邏輯“真”就是其它一切“非0值”。
來具體學(xué)習(xí)一下幾個主要的邏輯運算符。假定有2個字節(jié)變量:A和B,二者進行某種邏輯運算后的結(jié)果為F。
以下邏輯運算符都是按照變量整體值進行運算的,通常就叫做邏輯運算符:
&& 邏輯與。F = A && B,當(dāng)A、B的值都為真(即非0值,下同)時,其運算結(jié)果F為真(具體數(shù)值為1,下同);當(dāng)A、B值任意一個為假(即0,下同)時,結(jié)果F為假(具體數(shù)值為0,下同)。
|| 邏輯或。F = A || B,當(dāng)A、B值任意一個為真時,其運算結(jié)果F為真;當(dāng)A、B值都為假時,結(jié)果F為假。
! 邏輯非,F(xiàn) = !A,當(dāng)A值為假時,其運算結(jié)果F為真;當(dāng)A值為真時,結(jié)果F為假。
以下邏輯運算符都是按照變量內(nèi)的每一個位來進行運算的,通常就叫做位運算符:
& 按位與,F(xiàn) = A & B,將A、B兩個字節(jié)中的每一位都進行與運算,再將得到的每一位結(jié)果組合為總結(jié)果F,例如A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b11000000。
| 按位或,F(xiàn) = A | B,將A、B兩個字節(jié)中的每一位都進行或運算,再將得到的每一位結(jié)果組合為總結(jié)果F,例如A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b11111100。
~ 按位取反,F(xiàn) = ~A,將A字節(jié)內(nèi)的每一位進行非運算(就是取反),再將得到的每一位結(jié)果組合為總結(jié)果F,例如A = 0b11001100,則結(jié)果F就等于0b00110011;這個運算符流水燈實驗里已經(jīng)用過了,現(xiàn)在再回頭看一眼,是不是清楚多了。
^ 按位異或,異或的意思是,如果運算雙方的值不同(即相異)則結(jié)果為真,雙方值相同則結(jié)果為假。在C語言里沒有按變量整體值進行的異或運算,所以僅以按位異或為例,F(xiàn) = A ^ B,A = 0b11001100,B = 0b11110000,則結(jié)果F就等于0b00111100。
今后看資料或芯片手冊的時候,會經(jīng)常遇到一些電路符號,圖5-1所示就是數(shù)字電路中的常用符號,知道這些符號有利于理解器件的邏輯結(jié)構(gòu),尤其重點認(rèn)識圖5-1中的國外流行圖形符號。在這里先簡單看一下,日后遇到了可以到這里來查閱。

wKgZO2ke4GSAG7aOAADcbRSntzY513.png


圖5-1 邏輯電路符號
5.2定時器的學(xué)習(xí)
定時器是單片機系統(tǒng)的一個重點,但并不是難點,需要完全理解并且熟練掌握。
5.2.1定時器的初步認(rèn)識
1、時鐘周期
時鐘周期:時鐘周期T是時序中最小的時間單位,具體計算的方法是
時鐘周期 =1/時鐘源頻率
Kingst51單片機開發(fā)板上用的晶振是11.0592M,那么對于這個單片機系統(tǒng)來說,時鐘周期=1/11059200秒。
2、機器周期
單片機完成一個操作的最短時間。機器周期主要針對匯編語言而言,在匯編語言下程序的每一條語句執(zhí)行所使用的時間都是機器周期的整數(shù)倍,語句占用的時間是可以計算出來的,而C語言一條語句的時間是不確定的,受到諸多因素的影響。51單片機系列,在其標(biāo)準(zhǔn)架構(gòu)下一個機器周期是12個時鐘周期,也就是12/11059200秒。而一些增強型的51單片機,其速度都更快一些,有的1個機器周期等于4個時鐘周期,有的1個機器周期就等于1個時鐘周期,也就是說大體上其速度可以達到標(biāo)準(zhǔn)51架構(gòu)的3倍或12倍。Kingst51單片機采用的是標(biāo)準(zhǔn)的51單片機,所以后面的章節(jié)如果遇到機器周期這個概念,全部是指12個時鐘周期。
時鐘周期和機器周期兩個概念了解即可,下邊就來講講重頭戲,定時器和計數(shù)器。定時器和計數(shù)器是單片機內(nèi)部的同一個模塊,通過配置SFR(特殊功能寄存器)可以實現(xiàn)兩種不同的功能。大多數(shù)情況下是使用定時器功能,因此主要來講定時器功能,計數(shù)器功能可自學(xué)。
顧名思義,定時器就是用來進行定時的。定時器內(nèi)部有一個寄存器,讓它開始計數(shù)后,這個寄存器的值每經(jīng)過一個機器周期就會自動加1,因此,可以把機器周期理解為定時器的計數(shù)周期。就像鐘表每經(jīng)過一秒,數(shù)字自動加1一樣,定時器是每過一個機器周期的時間,也就是12/11059200秒,數(shù)字自動加1。還有一個特別注意的地方,就是鐘表是加到60后,秒就自動變成0了,這種情況在單片機或計算機里稱之為溢出。那定時器加到多少才會溢出呢?后面會講到定時器有多種工作模式,分別使用不同的位寬(指使用多少個二進制位),假如是16位的定時器,也就是2個字節(jié),最大值就是65535,那么加到65535后,再加1就算溢出,如果有其他位數(shù)的話,道理是一樣的,對于51單片機來說,溢出后,這個值會直接變成0。從某一個初始值開始,經(jīng)過確定的時間后溢出,這個過程就是定時的含義。
5.2.2定時器的寄存器
標(biāo)準(zhǔn)的51單片機內(nèi)部有T0和T1這兩個定時器,T就是Timer的縮寫,現(xiàn)在很多51系列單片機還會增加額外的定時器,在這里先講定時器0和1。對于單片機的每一個功能模塊,都是由它的SFR,也就是特殊功能寄存器來控制。與定時器有關(guān)的特殊功能寄存器,有以下幾個,不需要去記憶這些寄存器的名字和作用,只要大概知道就行,用的時候隨時可以查手冊,找到每個寄存器的名字和每個寄存器所起到的作用。
表5-1的寄存器是存儲定時器的計數(shù)值的。TH0/TL0用于T0,TH1/TL1用于T1。
表5-1 定時值存儲寄存器

wKgZO2ke4NWAW9wZAAATLsW1ir4450.png

表5-2是定時器控制寄存器TCON的位分配,表5-3是則是對每一位的具體含義的描述。

表5-2 TCON——定時器控制寄存器的位分配(地址0x88、可位尋址)

wKgZO2ke4R-Adu8dAAAJUON5h5w087.png

表5-3 TCON——定時器控制寄存器的位描述

wKgZO2ke4aOABXvMAAAnccVbELo989.png


請注意在表5-3中的描述中,只要寫到硬件置1或者清0的,就是指一旦符合條件,單片機將自動完成的動作,只要寫軟件置1或者清0的,是指必須用程序去完成這個動作,后續(xù)遇到此類描述就不再另做說明了。
對于TCON這個SFR,其中有TF1、TR1、TF0、TR0這4位需要理解清楚,它們分別對應(yīng)于T1和T0。以定時器1為例講解,那么定時器0同理。先看TR1,當(dāng)程序中寫TR1 = 1以后,定時器值就會每經(jīng)過一個機器周期自動加1,當(dāng)程序中寫TR1 = 0以后,定時器就會停止加1,其值會保持不變化。TF1,這個是一個標(biāo)志位,他的作用是通知用戶定時器溢出了。比如定時器設(shè)置成16位的模式,那么每經(jīng)過一個機器周期,TL1加1一次,當(dāng)TL1加到255后,再加1,TL1變成0,TH1會加1一次,如此一直加到TH1和TL1都是255(即TH1和TL1組成的16位整型數(shù)為65535)以后,再加1一次,就會溢出了,TH1和TL1同時都變?yōu)?,只要一溢出,TF1馬上自動變成1,通知用戶定時器溢出了,僅僅是提供給用戶一個信號,讓用戶知道定時器溢出了,它不會對定時器是否繼續(xù)運行產(chǎn)生任何影響。
本節(jié)開頭就提到了定時器有多種工作模式,工作模式的選擇就由TMOD來控制,TMOD的位分配和描述見表5-4到5-6所示,TMOD的位功能如表5-5所示。
表5-4 TMOD——定時器模式寄存器的位分配(地址0x89、不可位尋址)

wKgZPGke4dyAMko5AAALiQ0WiQU017.png


表5-5 TMOD——定時器模式寄存器的位描述

wKgZPGke4mOAJTfvAAAnmW9eynM954.png


表5-6 TMOD——定時器模式寄存器M1/M0工作模式

wKgZPGke4mmATQepAAAZmM6QTIM017.png


請注意,表5-2的TCON最后標(biāo)注了“可位尋址”,而表5-4的TMOD標(biāo)注的是“不可位尋址”。意思就是說:比如TCON有一個位叫TR1,用戶可以在程序中直接進行TR1 = 1這樣的操作。但對TMOD里的位比如(T1)M1 = 1這樣的操作就是錯誤的。要操作就必須一次操作這整個字節(jié),也就是必須一次性對TMOD所有位操作,不能直接對其中某一位單獨進行操作,那么能不能只修改其中的一位而不影響其它位的值呢?當(dāng)然可以,在后續(xù)課程中就會學(xué)到方法的。
表5-6列出的就是定時器的4種工作模式,其中模式0是為了兼容老的8048系列單片機而設(shè)計的,現(xiàn)在的51幾乎不會用到這種模式,而模式3根據(jù)應(yīng)用經(jīng)驗,它的功能用模式2完全可以取代,所以基本上也是不用的,那么重點來學(xué)習(xí)模式1和模式2。
模式1,是THn和TLn組成了一個16位的定時器,計數(shù)范圍是0~65535,溢出后,只要不對THn和TLn重新賦值,則從0開始計數(shù)。模式2,是8位自動重裝載模式,只有TLn做加1計數(shù),計數(shù)范圍0~255,THn的值并不發(fā)生變化,而是保持原值,TLn溢出后,TFn就直接置1了,并且THn原先的值直接賦給TLn,然后TLn從新賦值的這個數(shù)字開始計數(shù)。這個功能可以用來產(chǎn)生串口的通信波特率,后面章節(jié)講串口的時候要用到。
5.2.3定時器的應(yīng)用
了解了定時器相關(guān)的寄存器,下面就來做一個定時器的程序,鞏固一下學(xué)到的內(nèi)容。這節(jié)課的程序先使用定時器0,在使用定時器的時候,需要以下幾個步驟:
第一步:設(shè)置特殊功能寄存器TMOD,配置好工作模式。
第二步:設(shè)置計數(shù)寄存器TH0和TL0的初值。
第三步:設(shè)置TCON,通過TR0置1來讓定時器開始計數(shù)。
第四步:判斷TCON寄存器的TF0位,監(jiān)測定時器溢出情況。
寫程序之前,要先來學(xué)會計算如何用定時器定時時間。Kingst51開發(fā)板單片機的晶振是11.0592M,時鐘周期就是1/11059200,機器周期是12/11059200,假如要定時20ms,就是0.02秒,要經(jīng)過x個機器周期得到0.02秒,來算一下x*12/11059200=0.02,得到x= 18432。16位定時器的溢出值是65536(因65535再加1才是溢出),于是就可以這樣操作,先給TH0和TL0一個初始值,讓它們經(jīng)過18432個機器周期后剛好達到65536,也就是溢出,溢出后可以通過檢測TF0的值得知,就剛好是0.02秒。那么初值y = 65536 - 18432 = 47104,轉(zhuǎn)成16進制就是0xB800,也就是TH0 = 0xB8,TL0 = 0x00。
細心的讀者會發(fā)現(xiàn),如果初值直接給一個0x0000,一直到65536溢出,定時器定時值最大也就是71ms左右,那么想定時更長時間怎么辦呢?用小學(xué)學(xué)過的邏輯,倍數(shù)關(guān)系就可以解決此問題。
下面就用程序來實現(xiàn)LED閃爍功能。
#include

sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
unsigned char cnt = 0; //定義一個計數(shù)變量,記錄T0溢出次數(shù)

ENLED = 0; //使能U3,選擇獨立LED
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
TMOD = 0x01; //設(shè)置T0為模式1
TH0 = 0xB8; //為T0賦初值0xB800
TL0 = 0x00;
TR0 = 1; //啟動T0

while (1)
{
if (TF0 == 1) //判斷T0是否溢出
{
TF0 = 0; //T0溢出后,清零中斷標(biāo)志
TH0 = 0xB8; //并重新賦初值
TL0 = 0x00;
cnt++; //計數(shù)值自加1
if (cnt >= 50) //判斷T0溢出是否達到50次
{
cnt = 0; //達到50次后計數(shù)值清零
LED = ~LED; //LED取反:0-->1、1-->0
}
}
}
}
程序中都寫了注釋,結(jié)合前幾章學(xué)的內(nèi)容,不難理解。本程序?qū)崿F(xiàn)的結(jié)果是開發(fā)板上最右邊的小燈點亮一秒,熄滅一秒,也就是以0.5Hz的頻率進行閃爍。


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1894

    瀏覽量

    94377
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3370

    瀏覽量

    124368
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    深入解析 LM555 定時器:特性、應(yīng)用與設(shè)計要點

    深入解析 LM555 定時器:特性、應(yīng)用與設(shè)計要點 一、引言 在電子工程師的工具箱中,定時器芯片是常用的基礎(chǔ)元件之一。而 TI 公司的 LM555 定時器,以其高穩(wěn)定性、多種工作模式和廣泛的應(yīng)用范圍
    的頭像 發(fā)表于 02-10 15:35 ?477次閱讀

    LAT1173高精度定時器的同步功能應(yīng)用筆記

    STM32G474 所含的高精度定時器(HRTIMER)其實包含了多個定時器,多個定時器之間可以單獨工作,也可以進行同步,且高精度定時器還能與片上的其他
    發(fā)表于 01-11 17:32 ?0次下載

    數(shù)碼管 選型手冊2025年最新版

    數(shù)碼管具有高亮度、多種顏色、寬視角、簡單驅(qū)動、長壽命、抗震抗沖擊、節(jié)能環(huán)保和成本低等特點。適用于電子設(shè)備、工業(yè)控制和家用電器等領(lǐng)域的數(shù)字顯示,提供清晰、均勻的顯示效果,易于集成和控制。
    發(fā)表于 12-30 11:34 ?0次下載

    【EASY EAI Nano-TB(RV1126B)開發(fā)板試用】+串行數(shù)碼管的顯示驅(qū)動

    連接狀態(tài) 為驅(qū)動串行數(shù)碼管顯示模塊,可通過VI編輯進行腳本程序的編輯和保存,其程序內(nèi)容為: 腳本程序的運行方法如圖4所示,其運行效果見圖5所示。 圖4 運行方法 圖5 運行
    發(fā)表于 12-24 19:03

    6 中斷與數(shù)碼管動態(tài)顯示(6.1 6.2)

    系統(tǒng)來完成實用的數(shù)碼管顯示程序。 6.1C語言的數(shù)組 6.1.1數(shù)組的基本概念 4已經(jīng)學(xué)過變量的基本類型,比如char、int等等。這種類型描述的都是單個具有特定意義的數(shù)據(jù),當(dāng)要處理擁有同類意義但是卻包含很多個數(shù)據(jù)的時候,就
    的頭像 發(fā)表于 12-08 17:03 ?781次閱讀

    5 定時器數(shù)碼管基礎(chǔ)(5.3)

    5-2所示。 圖5-2 數(shù)碼管原理圖 這是比較常見的數(shù)碼管的原理圖,Kingst51開發(fā)板子上一共有6個數(shù)碼管。前邊有了LED小燈的學(xué)習(xí),
    的頭像 發(fā)表于 12-02 15:57 ?1010次閱讀
    <b class='flag-5'>第</b><b class='flag-5'>5</b><b class='flag-5'>章</b> <b class='flag-5'>定時器</b>與<b class='flag-5'>數(shù)碼管</b>基礎(chǔ)(5.3)

    原廠 FZH114C  一款LED(發(fā)光二極、數(shù)碼管、點陣屏)驅(qū)動控制專用芯片

    :驅(qū)動6位數(shù)碼管,每位數(shù)碼管7段(a-g)。8段×5位:驅(qū)動5數(shù)碼管,每位數(shù)碼管8段(含小數(shù)點
    發(fā)表于 11-19 14:43

    FZH114  LED(發(fā)光二極、數(shù)碼管、點陣屏)驅(qū)動控制專用芯片,集成數(shù)字通訊電路、 解碼電路、數(shù)據(jù)鎖存、震蕩

    )FZH114 是一款LED(發(fā)光二極數(shù)碼管、點陣屏)驅(qū)動控制專用芯片,內(nèi)部集成了數(shù)字通訊電路、解碼電路、數(shù)據(jù)鎖存、震蕩、LED驅(qū)動電路。通訊方式采用異步串口通信(UART)協(xié)
    發(fā)表于 11-19 11:13

    PWM、定時器、SysTick 區(qū)別及應(yīng)用場景

    在單片機和嵌入式開發(fā)中,經(jīng)常會遇到PWM(脈寬調(diào)制)、定時器、SysTick(系統(tǒng)滴答定時器)這幾個詞。很多初學(xué)者容易把它們混為一談,以為都是“定時相關(guān)的東西”。其實,它們在本質(zhì)和應(yīng)用上有明顯差別
    的頭像 發(fā)表于 11-17 10:53 ?655次閱讀
    PWM、<b class='flag-5'>定時器</b>、SysTick 區(qū)別及應(yīng)用場景

    級聯(lián)動態(tài)掃描顯示數(shù)碼管問題

    GD32F103C8T6 硬件SPI連接移位寄存74HC595級聯(lián),動態(tài)掃描顯示五位數(shù)碼管 是否需要電平轉(zhuǎn)換芯片TXB0104 數(shù)碼管選擇共陰極和共陽極區(qū)別是什么 若使用TXB0104,TXB0104的OE腳在代碼書寫時是否需
    發(fā)表于 10-07 20:36

    SysTick系統(tǒng)滴答定時器簡介

    SysTick—系統(tǒng)定時器是屬于CM33內(nèi)核中的一個外設(shè),內(nèi)嵌在NVIC中。系統(tǒng)定時器是一個24bit的向下遞減的計數(shù),計數(shù)每計數(shù)一次的時間為 1/SYSCLK,一般我們設(shè)置系統(tǒng)時
    的頭像 發(fā)表于 09-23 09:50 ?1770次閱讀
    SysTick系統(tǒng)滴答<b class='flag-5'>定時器</b>簡介

    大彩講堂:VisualHMI-LUA教程-定時器的使用指南

    定時器的使用
    的頭像 發(fā)表于 08-31 16:59 ?1329次閱讀
    大彩講堂:VisualHMI-LUA教程-<b class='flag-5'>定時器</b>的使用指南

    【應(yīng)用】工業(yè)現(xiàn)場的“智能顯示管家”:億佰特EID051-1xx系列 Modbus數(shù)碼管解析

    數(shù)碼管。億佰特新推出的EID051-1xx系列Modbus數(shù)碼管,以多種核心優(yōu)勢,成為工業(yè)現(xiàn)場的一大助力。一.什么是Modbus數(shù)碼管?Modbus數(shù)碼管是一種通過R
    的頭像 發(fā)表于 07-17 19:34 ?772次閱讀
    【應(yīng)用】工業(yè)現(xiàn)場的“智能顯示管家”:億佰特EID051-1xx系列 Modbus<b class='flag-5'>數(shù)碼管</b>解析

    第十二 SysTick——系統(tǒng)定時器

    本章介紹了W55MH32的SysTick系統(tǒng)定時器,它是24位遞減計數(shù),含4個寄存,可配置定時、中斷,用于產(chǎn)生時基 等。
    的頭像 發(fā)表于 05-22 17:16 ?1204次閱讀
    第十二<b class='flag-5'>章</b> SysTick——系統(tǒng)<b class='flag-5'>定時器</b>

    MCU定時器/計數(shù)

    RISC-V核低功耗MCU通過靈活的定時器架構(gòu)、低功耗模式適配及硬件級中斷優(yōu)化,在工業(yè)控制、智能家居等場景中實現(xiàn)高精度計時與能耗控制的協(xié)同設(shè)計,滿足復(fù)雜任務(wù)調(diào)度與實時響應(yīng)的雙重需求?。 一、?硬件
    的頭像 發(fā)表于 04-27 13:54 ?886次閱讀
    桂林市| 甘泉县| 卢龙县| 石林| 来宾市| 老河口市| 长乐市| 壤塘县| 胶南市| 栾城县| 天柱县| 江源县| 阳朔县| 海兴县| 长葛市| 阜新| 成武县| 凤山市| 濮阳县| 陆良县| 丰镇市| 崇仁县| 青海省| 巴林右旗| 嘉峪关市| 伊金霍洛旗| 读书| 绩溪县| 东莞市| 张掖市| 固阳县| 虹口区| 鲁山县| 芦山县| 永寿县| 彭水| 鸡泽县| 庄河市| 五常市| 栖霞市| 崇阳县|