久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9276|回復: 28
收起左側

89C51單片機能否控制兩個四位數碼管

  [復制鏈接]
ID:279940 發表于 2018-3-12 19:05 | 顯示全部樓層 |閱讀模式
請教大家一個問題,最近做了兩個單片機小玩意兒(硬件和程序都是網上購的哈),一個是單片機接DS18B20測溫,通過四位數碼管顯示溫度,功能大概如下:
1)通過四位數碼管顯示溫度
2)設置報警溫度值,超范圍報警。接有蜂鳴器。
3)接有紅外遙控,可通過遙控更改報警設置。

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

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

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

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

評分

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

查看全部評分

回復

使用道具 舉報

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

這只是一種思路吧,當然還有很多別的方法

評分

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

查看全部評分

回復

使用道具 舉報

ID:290752 發表于 2018-3-12 20:17 | 顯示全部樓層
89C51有多種封裝形式,一般有40腳和44腳,應該40腳的夠用了。

評分

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

查看全部評分

回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:111634 發表于 2018-3-12 21:53 | 顯示全部樓層
兩個任務,夠用!但取決于你巧妙編程。

評分

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

查看全部評分

回復

使用道具 舉報

ID:291034 發表于 2018-3-12 22:31 | 顯示全部樓層
要看看你原來的電路空余的IO口有多少?一般情況下,IO口夠用的話,你這兩個應用都可以在一個IC上實現

評分

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

查看全部評分

回復

使用道具 舉報

ID:237354 發表于 2018-3-12 23:58 | 顯示全部樓層
當然可以,8個IO控制字段,8個IO控制數碼管位

評分

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

查看全部評分

回復

使用道具 舉報

ID:283686 發表于 2018-3-13 08:09 | 顯示全部樓層
只要刷新時間允許 應該不是問題
回復

使用道具 舉報

ID:291092 發表于 2018-3-13 08:46 | 顯示全部樓層
可以的,用8個IO控制數碼管段選,再用IO控制數碼管位選就可以了,如果IO口不夠,還可以用個譯碼器什么的
回復

使用道具 舉報

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:279940 發表于 2018-3-13 10:49 | 顯示全部樓層
各位,IO口夠用,分別編兩個程序,分別控制,沒有問題。
問題就是把兩個程序合并起來,同時控制,編程時發現原來每個程序都要用到TH0, TL0和TH1, TL1.
所以,需要考慮這個情況下怎么編程了。還需要多學習。
謝謝大家。

評分

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

查看全部評分

回復

使用道具 舉報

ID:279940 發表于 2018-3-13 10:51 | 顯示全部樓層
zl2168 發表于 2018-3-12 21:53
兩個任務,夠用!但取決于你巧妙編程。

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

使用道具 舉報

ID:279940 發表于 2018-3-13 10:52 | 顯示全部樓層
安心1x2 發表于 2018-3-12 21:36
如果你的定時器是用來延時的,兩功能又要同時完成,可以設個全局變量t,定時器中斷里給它加1,溢出了沒關系 ...

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

使用道具 舉報

ID:279940 發表于 2018-3-13 11:16 | 顯示全部樓層
xrfxrfxrf008 發表于 2018-3-13 08:09
只要刷新時間允許 應該不是問題

請教一下,刷新時間怎么設置呢,謝謝!
回復

使用道具 舉報

ID:279940 發表于 2018-3-13 11:21 | 顯示全部樓層
安心1x2 發表于 2018-3-12 21:36
如果你的定時器是用來延時的,兩功能又要同時完成,可以設個全局變量t,定時器中斷里給它加1,溢出了沒關系 ...

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

使用道具 舉報

ID:279940 發表于 2018-3-13 12:50 | 顯示全部樓層
QWER01234 發表于 2018-3-13 10:33
一般來說一個ds18b20的測溫程序使用3位數碼管(顯示的溫度帶一位小數,小數點位于第二位數碼管上),超聲波 ...

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

謝謝啦!
回復

使用道具 舉報

ID:291258 發表于 2018-3-13 14:08 | 顯示全部樓層
可疑的,看你怎么寫程序了
回復

使用道具 舉報

ID:291372 發表于 2018-3-13 16:56 | 顯示全部樓層
可以,沒問題的
回復

使用道具 舉報

ID:291401 發表于 2018-3-13 17:31 | 顯示全部樓層
可以的,認真 就可以了的
回復

使用道具 舉報

ID:291411 發表于 2018-3-13 22:15 來自手機 | 顯示全部樓層
可以用兩個鎖存器控制數碼管可以節省IO口的

評分

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

查看全部評分

回復

使用道具 舉報

ID:291422 發表于 2018-3-13 23:17 | 顯示全部樓層
絕對夠用了,根據設計的電路來進行編程
回復

使用道具 舉報

ID:275484 發表于 2018-3-14 00:35 | 顯示全部樓層
可以控制,P0口IO口作為并行數據  把兩個四位數碼管 A B C D E F G H 并聯一起,再把兩個四位數碼管位選信號線共8根給P1口 1 2 3 4 5 6 7 8 。就這樣連接。軟件方面能節省定時器的就節省。

評分

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

查看全部評分

回復

使用道具 舉報

ID:158375 發表于 2018-3-14 11:01 | 顯示全部樓層
這點功能,完全可以
回復

使用道具 舉報

ID:291712 發表于 2018-3-14 11:13 | 顯示全部樓層
可以啊,你可以把紅外的那個用外部中斷啊,其他的就做成那種定時掃描,stc的51可以跑30多兆的
回復

使用道具 舉報

ID:289247 發表于 2018-3-14 11:26 | 顯示全部樓層
可以,現在的單片機一般都有兩個以上的定時器
回復

使用道具 舉報

ID:279940 發表于 2018-3-14 12:42 | 顯示全部樓層
奎爾塞拉 發表于 2018-3-14 01:00
首先,第一點,不建議用數碼管,這種東西可以換成液晶屏來做,顯示的內容更豐富,管腳也不會很多(甚至可以 ...

謝謝你的建議,你給出了很明確的方向,雖然我還不是很明白 :)
因為有很多細節還沒有接觸到,沒有學習過。我會去學習這個工作周期的設置,然后看看有沒有方向。

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

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

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

使用道具 舉報

ID:245053 發表于 2018-3-14 13:43 | 顯示全部樓層
加上HC164或HC594之類的IC,可以實現多個LED顯示的。。。
回復

使用道具 舉報

ID:291778 發表于 2018-3-14 14:00 | 顯示全部樓層
串行可以的
回復

使用道具 舉報

ID:291802 發表于 2018-3-14 14:40 來自手機 | 顯示全部樓層
完全可以用,狀態機編程沒有問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人网址在线观看 | 国产精品中文在线 | 美国黄色毛片 | 国产一区免费视频 | 日日操夜夜操天天操 | 国产精品久久久久久一区二区三区 | 久久久www成人免费无遮挡大片 | 欧美精品免费观看二区 | 伦理午夜电影免费观看 | 四虎永久影院 | 91佛爷在线观看 | 国产精品美女一区二区三区 | 成人免费网站视频 | 一区二区欧美在线 | 99精品欧美一区二区蜜桃免费 | 日韩中文字幕在线观看 | 国产精品自拍一区 | 久久综合99 | 精久久久 | 亚洲欧美aⅴ| 不卡av电影在线播放 | 久久精品国产免费看久久精品 | 久久久精品一区二区 | 九九免费视频 | 一区二区三区影院 | 亚州午夜精品 | 日韩在线观看一区二区三区 | 91www在线观看 | 91精品久久久 | 无毛av| 国产欧美精品在线观看 | 国产精品免费视频一区 | 2021狠狠干| 在线男人天堂 | av一区二区在线观看 | 羞羞在线观看视频 | 天天操天天操 | 亚洲色图在线观看 | 亚洲黄色高清视频 | 日韩国产精品一区二区三区 | 古装人性做爰av网站 |