朋友圈

400-850-8622

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:影視設(shè)計(jì)培訓(xùn)資訊 > 動(dòng)畫設(shè)計(jì)培訓(xùn)資訊 > 定時(shí)/計(jì)數(shù)器軟件編程范例

定時(shí)/計(jì)數(shù)器軟件編程范例

日期:2009-12-23 12:05:20     瀏覽:264    來(lái)源:東莞電工培訓(xùn)網(wǎng)
 我們以一個(gè)實(shí)際的時(shí)鐘電路來(lái)說(shuō)明定時(shí)器的軟件編程方法,時(shí)鐘就是我們最為常見(jiàn)的顯示時(shí)、分、秒為單位的計(jì)時(shí)工具,它是典型的應(yīng)用代表。

    時(shí)鐘的最小計(jì)時(shí)單位是秒,但使用單片機(jī)定時(shí)器來(lái)進(jìn)行計(jì)時(shí),若使用6.0MHz的晶振,即使按工作方式1工作,*的計(jì)時(shí)時(shí)間也只能到131ms,所以我們可把每個(gè)定時(shí)時(shí)間取125ms,這樣定時(shí)器溢出8次(125ms╳8=1000ms)就得到最小的計(jì)時(shí)單位秒。而要實(shí)現(xiàn)8次計(jì)數(shù)用軟件方法實(shí)現(xiàn)是輕而易舉的。

    我們使用定時(shí)器1,以工作方式1工作,定時(shí)器進(jìn)行125ms定時(shí)。采用中斷方法進(jìn)行溢出次數(shù)的累計(jì),當(dāng)計(jì)滿8次即得到1秒的計(jì)時(shí)。

    一個(gè)時(shí)鐘的計(jì)時(shí)累加,要實(shí)現(xiàn)分、時(shí)的進(jìn)位,要用到多種進(jìn)制,秒、分、時(shí)中的進(jìn)位是十進(jìn)制,秒向分進(jìn)位和分想時(shí)進(jìn)位卻是六十進(jìn)制,而每天又有十二小時(shí)制或二十四小時(shí)制,它們分別又是十二進(jìn)制和二十四進(jìn)制。從秒到分和從分到小時(shí)可以通過(guò)軟件累加和數(shù)值比較方法實(shí)現(xiàn)。

    在單片機(jī)的內(nèi)部RAM中,需要設(shè)置顯示緩沖區(qū),顯示的時(shí)、分、秒值是從顯示緩沖區(qū)中取出的,在RAM中設(shè)置四個(gè)單元作為顯示緩沖區(qū),分別是7AH、7BH、7CH。為使電路和原理敘述方便,我們這里不顯示秒值,秒的進(jìn)位我們通過(guò)閃爍分值實(shí)現(xiàn)。這樣我們一共有四位LED分別顯示時(shí)和分值。同時(shí)時(shí)鐘都需要校準(zhǔn)的。在程序中還需設(shè)置顯示碼表,要顯示的數(shù)值通過(guò)查表指令將顯示用的真正碼值送到LED上。我們用單片機(jī)AT89C2051的PP3.4和P3.5兩個(gè)I/O口外接微動(dòng)開(kāi)關(guān)來(lái)實(shí)現(xiàn)時(shí)和分的校正,每按一次小時(shí)或分值加1,連續(xù)按下數(shù)值累計(jì)下去,實(shí)現(xiàn)時(shí)鐘的校準(zhǔn)。

    在電路中我們還設(shè)置了一個(gè)蜂鳴器,用作簡(jiǎn)單報(bào)時(shí)用,如可設(shè)早上7:30分起床,中午1點(diǎn)30分再有起床報(bào)時(shí),每次響時(shí)1分鐘,響1秒,停2秒的方式,而不是連續(xù)響鈴。這個(gè)程序我們采用12小時(shí)制,為此,要在程序中設(shè)置相應(yīng)的標(biāo)志,以利于主程序識(shí)別。同樣計(jì)時(shí)程序中還會(huì)有幾個(gè)相關(guān)的標(biāo)志,主要是控制程序流的轉(zhuǎn)向。程序中我們都作了較詳細(xì)的注釋,這里不再贅述。

    硬件電路,我們還是以低價(jià)的AT89C2051單片機(jī)為微處理單元,這個(gè)芯片兼容C51指令系統(tǒng),在C51上編寫的程序,無(wú)需任何修改即可方便地移植到這個(gè)芯片上來(lái)。我們以P0口作為L(zhǎng)ED的字段位驅(qū)動(dòng)輸出,秒的“進(jìn)位”采用分值閃爍提示,亮0.5秒,熄0.5秒。,P3.1—P3.3用于位驅(qū)動(dòng),使用動(dòng)態(tài)掃描方式顯示,每位LED的顯示時(shí)間10—25ms之間均可,掃描頻率不能太高,否則每位LED顯示的時(shí)間過(guò)短,亮度太低,不易于觀看,以肉眼不感覺(jué)到LED閃爍為宜。為了直觀,我們的驅(qū)動(dòng)輸出沒(méi)有采用集成電路,而是使用了分立元件—三極管,但工作原理卻是一致的。
    這個(gè)電路結(jié)構(gòu)決定LED采用共陽(yáng)極的數(shù)碼管,可以采用LQ5101BS普通的發(fā)光二極管,驅(qū)動(dòng)三極管可采用易得的2SA1015和2SC1815等型號(hào),當(dāng)然也可使用象S9012,S9013,S9014,2N5401,2N5555等小功率三極管,其它器件沒(méi)有特殊要求。為便于實(shí)驗(yàn),單片機(jī)AT89C2051可采用DIP20P插座,程序編制好后,調(diào)試無(wú)錯(cuò),即可燒寫到AT89C2051中,值得一提的是,AT89C2051是Flash程序存儲(chǔ)器,程序可反復(fù)擦寫,對(duì)于做實(shí)驗(yàn)是非常方便的
如果本頁(yè)不是您要找的課程,您也可以百度查找一下: