找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9287|回復(fù): 28
打印 上一主題 下一主題
收起左側(cè)

89C51單片機(jī)能否控制兩個四位數(shù)碼管

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:279940 發(fā)表于 2018-3-12 19:05 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
請教大家一個問題,最近做了兩個單片機(jī)小玩意兒(硬件和程序都是網(wǎng)上購的哈),一個是單片機(jī)接DS18B20測溫,通過四位數(shù)碼管顯示溫度,功能大概如下:
1)通過四位數(shù)碼管顯示溫度
2)設(shè)置報(bào)警溫度值,超范圍報(bào)警。接有蜂鳴器。
3)接有紅外遙控,可通過遙控更改報(bào)警設(shè)置。

另外一個是超聲波測距,接有SR04測距模塊,同樣通過四位數(shù)碼管顯示距離,超范圍報(bào)警。

這兩個實(shí)驗(yàn)本身都是單獨(dú)的。都有自己的單片機(jī)芯片。
我的目的是,我想用同一個單片機(jī)89C51RC來控制這兩大功能。
目前我將超聲測距的外圍電路已經(jīng)接到測溫的板子上,用測溫的單片機(jī),和修改后的測距程序,實(shí)現(xiàn)測距。當(dāng)然這個程序不包括測溫的 功能。

那么我的問題是,要修改程序同時(shí)實(shí)現(xiàn)測溫和測距兩個功能。初步看了一下原始程序,發(fā)現(xiàn)都用到定時(shí)和中斷,也就是說TH1,TL1和TH0,TL0在兩個原始程序中都用到。這樣的話,我還能同時(shí)實(shí)現(xiàn)顯示溫度和距離(兩個四位數(shù)碼管分別顯示),并超范圍報(bào)警嗎?

請各位大神幫忙看一下。這是不是屬于多任務(wù)?定時(shí)器是否不夠用?
謝謝大家啦!

評分

參與人數(shù) 1黑幣 +2 收起 理由
ndyerbi + 2 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

來自 2#
ID:195836 發(fā)表于 2018-3-14 01:00 | 只看該作者
首先,第一點(diǎn),不建議用數(shù)碼管,這種東西可以換成液晶屏來做,顯示的內(nèi)容更豐富,管腳也不會很多(甚至可以用串口來控制,那么還會減少占用的管腳)
然后,如果要用數(shù)碼管的話,38譯碼器啊,地址鎖存器啊什么用起來問題也不大吧(雖然你目前的成品不一定有??)
最重要的是,你的意思是執(zhí)行兩個功能,都占用了定時(shí)器是吧。這里可以考慮一個問題,你真的需要幾乎全部的時(shí)間都用來測溫度或者距離嗎?應(yīng)該不會吧。
一般12位的ds18b20的響應(yīng)時(shí)間是750ms,精度是0.0625度,你完全可以降低分辨率同時(shí)提高響應(yīng)速度,比如10位,大概180+ms就響應(yīng)啦,分辨率0.25度也還好吧。然后相當(dāng)于說檢測一次溫度大概耗時(shí)200ms
另外超聲波測距一次的時(shí)間呢?比如我們測距范圍是10m,那么時(shí)間大概是10*2/340不到100ms吧
那么我覺得可以這樣,每500ms為一個工作周期,先測溫度,更新相應(yīng)的數(shù)碼管,再測距離,再更新相應(yīng)的數(shù)碼管;蛘呦葴y量后統(tǒng)一更新數(shù)碼管。這樣一次周期的時(shí)間基本可以把握在500ms內(nèi)。數(shù)碼管每500ms跳一次,其實(shí)能夠接受吧,再加快更新頻率其實(shí)實(shí)際作用也不大。
嗯,或者就用12位的溫度傳感器,每1s更新一次,也沒毛病。

這只是一種思路吧,當(dāng)然還有很多別的方法

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

板凳
ID:290752 發(fā)表于 2018-3-12 20:17 | 只看該作者
89C51有多種封裝形式,一般有40腳和44腳,應(yīng)該40腳的夠用了。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

地板
ID:258226 發(fā)表于 2018-3-12 21:36 | 只看該作者
如果你的定時(shí)器是用來延時(shí)的,兩功能又要同時(shí)完成,可以設(shè)個全局變量t,定時(shí)器中斷里給它加1,溢出了沒關(guān)系從0再循環(huán)的。然后在每個你要執(zhí)行程序部分前加if(t%num==0),num可決定你執(zhí)行間隔的時(shí)間,0也可以換成小于num的任何正整數(shù),一定程度上決定執(zhí)行的先后次序。相當(dāng)于用定時(shí)器設(shè)定了一個系統(tǒng)時(shí)鐘或者心跳,大家按著系統(tǒng)時(shí)鐘來執(zhí)行程序,如果兩次執(zhí)行程序間隔夠長,就可以插入另外的任務(wù),注意保證在時(shí)間間隔內(nèi)執(zhí)行完,就可以實(shí)現(xiàn)有時(shí)序地執(zhí)行你的多任務(wù)了。又或者說兩個定時(shí)器都不可獲缺,試試分時(shí)復(fù)用吧,比如測溫用完重新配置一下給測距用,然后再互換。你看你數(shù)碼管也是共用的,不好同時(shí)顯示,也不需要同步吧,先測溫,再測距沒多大影響的。

評分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2018-3-12 21:53 | 只看該作者
兩個任務(wù),夠用!但取決于你巧妙編程。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

6#
ID:291034 發(fā)表于 2018-3-12 22:31 | 只看該作者
要看看你原來的電路空余的IO口有多少?一般情況下,IO口夠用的話,你這兩個應(yīng)用都可以在一個IC上實(shí)現(xiàn)

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

7#
ID:237354 發(fā)表于 2018-3-12 23:58 | 只看該作者
當(dāng)然可以,8個IO控制字段,8個IO控制數(shù)碼管位

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

8#
ID:283686 發(fā)表于 2018-3-13 08:09 | 只看該作者
只要刷新時(shí)間允許 應(yīng)該不是問題
回復(fù)

使用道具 舉報(bào)

9#
ID:291092 發(fā)表于 2018-3-13 08:46 | 只看該作者
可以的,用8個IO控制數(shù)碼管段選,再用IO控制數(shù)碼管位選就可以了,如果IO口不夠,還可以用個譯碼器什么的
回復(fù)

使用道具 舉報(bào)

10#
ID:212149 發(fā)表于 2018-3-13 10:33 | 只看該作者
一般來說一個ds18b20的測溫程序使用3位數(shù)碼管(顯示的溫度帶一位小數(shù),小數(shù)點(diǎn)位于第二位數(shù)碼管上),超聲波測距我記得沒錯的話極限距離是4m左右,使用三位數(shù)碼管表示單位是cm,一共使用了6位數(shù)碼管。一個八位數(shù)碼管的動態(tài)顯示只需要16個io口,超聲波占用兩個io,ds18b20占用一個io,基本上io是夠用的。然而定時(shí)器不需要占用兩個吧,根據(jù)樓主的描述只需要在超聲波測距中占用一個定時(shí)器用于測量超聲波返回的高電平時(shí)間,在測溫度的程序中應(yīng)該是不需要用到定時(shí)器的。外部中斷的使用就看樓主的程序是如何設(shè)計(jì)的了。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

11#
ID:279940 發(fā)表于 2018-3-13 10:49 | 只看該作者
各位,IO口夠用,分別編兩個程序,分別控制,沒有問題。
問題就是把兩個程序合并起來,同時(shí)控制,編程時(shí)發(fā)現(xiàn)原來每個程序都要用到TH0, TL0和TH1, TL1.
所以,需要考慮這個情況下怎么編程了。還需要多學(xué)習(xí)。
謝謝大家。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

12#
ID:279940 發(fā)表于 2018-3-13 10:51 | 只看該作者
zl2168 發(fā)表于 2018-3-12 21:53
兩個任務(wù),夠用!但取決于你巧妙編程。

對的,就是兩個任務(wù)。怎么巧妙編程就是個問題了。謝謝指點(diǎn)。如果能稍微指點(diǎn)下編程方向,就更感激了。謝謝版主!
回復(fù)

使用道具 舉報(bào)

13#
ID:279940 發(fā)表于 2018-3-13 10:52 | 只看該作者
安心1x2 發(fā)表于 2018-3-12 21:36
如果你的定時(shí)器是用來延時(shí)的,兩功能又要同時(shí)完成,可以設(shè)個全局變量t,定時(shí)器中斷里給它加1,溢出了沒關(guān)系 ...

謝謝親,你的回復(fù)具有很大的參考意義。我先消化下,有問題再請教。
回復(fù)

使用道具 舉報(bào)

14#
ID:279940 發(fā)表于 2018-3-13 11:16 | 只看該作者
xrfxrfxrf008 發(fā)表于 2018-3-13 08:09
只要刷新時(shí)間允許 應(yīng)該不是問題

請教一下,刷新時(shí)間怎么設(shè)置呢,謝謝!
回復(fù)

使用道具 舉報(bào)

15#
ID:279940 發(fā)表于 2018-3-13 11:21 | 只看該作者
安心1x2 發(fā)表于 2018-3-12 21:36
如果你的定時(shí)器是用來延時(shí)的,兩功能又要同時(shí)完成,可以設(shè)個全局變量t,定時(shí)器中斷里給它加1,溢出了沒關(guān)系 ...

我是兩個數(shù)碼管,分別給測溫和測距的。可以同時(shí)顯示嗎?~
回復(fù)

使用道具 舉報(bào)

16#
ID:279940 發(fā)表于 2018-3-13 12:50 | 只看該作者
QWER01234 發(fā)表于 2018-3-13 10:33
一般來說一個ds18b20的測溫程序使用3位數(shù)碼管(顯示的溫度帶一位小數(shù),小數(shù)點(diǎn)位于第二位數(shù)碼管上),超聲波 ...

多謝回復(fù)。
程序的東西我要多看多學(xué)習(xí)。兄弟明確給出了定時(shí)器最少用量,讓我也多少有了信心。
我要嘗試自己寫下程序,看看能不能用其他方式實(shí)現(xiàn)延時(shí)或者中斷。

謝謝啦!
回復(fù)

使用道具 舉報(bào)

17#
ID:291258 發(fā)表于 2018-3-13 14:08 | 只看該作者
可疑的,看你怎么寫程序了
回復(fù)

使用道具 舉報(bào)

18#
ID:291372 發(fā)表于 2018-3-13 16:56 | 只看該作者
可以,沒問題的
回復(fù)

使用道具 舉報(bào)

19#
ID:291401 發(fā)表于 2018-3-13 17:31 | 只看該作者
可以的,認(rèn)真 就可以了的
回復(fù)

使用道具 舉報(bào)

20#
ID:291411 發(fā)表于 2018-3-13 22:15 來自手機(jī) | 只看該作者
可以用兩個鎖存器控制數(shù)碼管可以節(jié)省IO口的

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

21#
ID:291422 發(fā)表于 2018-3-13 23:17 | 只看該作者
絕對夠用了,根據(jù)設(shè)計(jì)的電路來進(jìn)行編程
回復(fù)

使用道具 舉報(bào)

22#
ID:275484 發(fā)表于 2018-3-14 00:35 | 只看該作者
可以控制,P0口IO口作為并行數(shù)據(jù)  把兩個四位數(shù)碼管 A B C D E F G H 并聯(lián)一起,再把兩個四位數(shù)碼管位選信號線共8根給P1口 1 2 3 4 5 6 7 8 。就這樣連接。軟件方面能節(jié)省定時(shí)器的就節(jié)省。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

23#
ID:158375 發(fā)表于 2018-3-14 11:01 | 只看該作者
這點(diǎn)功能,完全可以
回復(fù)

使用道具 舉報(bào)

24#
ID:291712 發(fā)表于 2018-3-14 11:13 | 只看該作者
可以啊,你可以把紅外的那個用外部中斷啊,其他的就做成那種定時(shí)掃描,stc的51可以跑30多兆的
回復(fù)

使用道具 舉報(bào)

25#
ID:289247 發(fā)表于 2018-3-14 11:26 | 只看該作者
可以,現(xiàn)在的單片機(jī)一般都有兩個以上的定時(shí)器
回復(fù)

使用道具 舉報(bào)

26#
ID:279940 發(fā)表于 2018-3-14 12:42 | 只看該作者
奎爾塞拉 發(fā)表于 2018-3-14 01:00
首先,第一點(diǎn),不建議用數(shù)碼管,這種東西可以換成液晶屏來做,顯示的內(nèi)容更豐富,管腳也不會很多(甚至可以 ...

謝謝你的建議,你給出了很明確的方向,雖然我還不是很明白 :)
因?yàn)橛泻芏嗉?xì)節(jié)還沒有接觸到,沒有學(xué)習(xí)過。我會去學(xué)習(xí)這個工作周期的設(shè)置,然后看看有沒有方向。

我目前的水平還特別低,是這樣的,年初開始我在某寶買一些套件,比如紅綠燈、溫度控制、電子琴,廣告屏、測距等散件,自己焊接,單片機(jī)程序賣家都已經(jīng)寫入了。我焊接成功之后,只是嘗試簡單的去修改一下程序。之前照著《手把手教你學(xué)單片機(jī)》配合學(xué)習(xí)板,學(xué)過前半部分,后面的還沒有學(xué)習(xí)。

這個設(shè)計(jì)其實(shí)是自己給自己的任務(wù),就是將網(wǎng)上買的溫控和測距兩套東西合并到一起去,也是想通過這個過程看看能不能接觸到新的東西,沒想到困難真的還很多哈。因?yàn)橘I的時(shí)候就是用的數(shù)碼管,所以,一些硬件部分暫時(shí)不改了,就照著數(shù)碼管用吧。

程序方面和原理方面,我要學(xué)的東西還很多。太感謝回復(fù)了!
回復(fù)

使用道具 舉報(bào)

27#
ID:245053 發(fā)表于 2018-3-14 13:43 | 只看該作者
加上HC164或HC594之類的IC,可以實(shí)現(xiàn)多個LED顯示的。。。
回復(fù)

使用道具 舉報(bào)

28#
ID:291778 發(fā)表于 2018-3-14 14:00 | 只看該作者
串行可以的
回復(fù)

使用道具 舉報(bào)

29#
ID:291802 發(fā)表于 2018-3-14 14:40 來自手機(jī) | 只看該作者
完全可以用,狀態(tài)機(jī)編程沒有問題
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表