找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)數(shù)碼管閃爍怎么解決 附程序電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:992677 發(fā)表于 2022-12-13 17:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

2.png (196.83 KB, 下載次數(shù): 117)

數(shù)碼管閃爍

數(shù)碼管閃爍

1.png (462.1 KB, 下載次數(shù): 116)

兩個(gè)這種類(lèi)型的顯示函數(shù)

兩個(gè)這種類(lèi)型的顯示函數(shù)

0.png (268.87 KB, 下載次數(shù): 126)

主函數(shù)

主函數(shù)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:992677 發(fā)表于 2022-12-13 18:02 | 只看該作者
程序仿真后顯示兩個(gè)DS18B20的溫度,一直在切換,該怎么保持一段時(shí)間后再顯示下一個(gè)?主函數(shù)那里用了延時(shí)函數(shù)也沒(méi)用
回復(fù)

使用道具 舉報(bào)

板凳
ID:992677 發(fā)表于 2022-12-13 18:06 | 只看該作者
就是這樣

1670925090421.gif (335.93 KB, 下載次數(shù): 113)

1670925090421.gif
回復(fù)

使用道具 舉報(bào)

地板
ID:161164 發(fā)表于 2022-12-13 23:15 | 只看該作者

回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2022-12-14 09:53 | 只看該作者
動(dòng)態(tài)掃描數(shù)碼管顯示發(fā)生閃爍現(xiàn)象是因?yàn)閽呙桀l率過(guò)低,掃描頻率過(guò)低的原因是讀取DS18B20數(shù)據(jù)耗時(shí)過(guò)長(zhǎng)和顯示函數(shù)編寫(xiě)缺陷所致。4位數(shù)碼管掃描周期不得大于20ms。使用長(zhǎng)時(shí)間的阻滯型延時(shí)會(huì)大大降低CPU工作效率。給你一個(gè)示例參考。 4位數(shù)碼管時(shí)鐘溫度表仿真.rar (332.16 KB, 下載次數(shù): 24)

回復(fù)

使用道具 舉報(bào)

6#
ID:68189 發(fā)表于 2022-12-14 10:16 | 只看該作者
這個(gè)方法試一下::
雙擊數(shù)碼管,打開(kāi)數(shù)碼管的屬性,把觸發(fā)時(shí)間改一下.


回復(fù)

使用道具 舉報(bào)

7#
ID:77589 發(fā)表于 2022-12-14 11:35 | 只看該作者
動(dòng)態(tài)掃描應(yīng)該調(diào)快一點(diǎn)。
回復(fù)

使用道具 舉報(bào)

8#
ID:77589 發(fā)表于 2022-12-14 11:36 | 只看該作者
畢竟這是仿真,PC機(jī)的性能也會(huì)影響的。還是以實(shí)物為準(zhǔn)。
回復(fù)

使用道具 舉報(bào)

9#
ID:992677 發(fā)表于 2022-12-14 15:15 | 只看該作者

我是在主函數(shù)加for循環(huán),也解決了
回復(fù)

使用道具 舉報(bào)

10#
ID:992677 發(fā)表于 2022-12-14 15:21 | 只看該作者
解決了,我是在主函數(shù)加了個(gè)for循環(huán)

NRW`Y$P@57VH_S1I7{8Z$2M.png (332.99 KB, 下載次數(shù): 47)

NRW`Y$P@57VH_S1I7{8Z$2M.png

51hei錄屏20221214151953.gif (358.5 KB, 下載次數(shù): 115)

51hei錄屏20221214151953.gif
回復(fù)

使用道具 舉報(bào)

11#
ID:158391 發(fā)表于 2022-12-17 03:31 | 只看該作者
wulin 發(fā)表于 2022-12-14 09:53
動(dòng)態(tài)掃描數(shù)碼管顯示發(fā)生閃爍現(xiàn)象是因?yàn)閽呙桀l率過(guò)低,掃描頻率過(guò)低的原因是讀取DS18B20數(shù)據(jù)耗時(shí)過(guò)長(zhǎng)和顯示 ...

大佬,下來(lái)后解壓不了呢,能重新發(fā)一下嗎
回復(fù)

使用道具 舉報(bào)

12#
ID:513507 發(fā)表于 2022-12-27 18:15 | 只看該作者
顯示和功能處理分開(kāi),不要混淆一起,這樣比較好處理問(wèn)題
回復(fù)

使用道具 舉報(bào)

13#
ID:1003276 發(fā)表于 2023-1-1 18:30 | 只看該作者
調(diào)整一下顯示時(shí)間,顯示與數(shù)據(jù)運(yùn)行區(qū)分開(kāi)來(lái)
                                                   
回復(fù)

使用道具 舉報(bào)

14#
ID:992677 發(fā)表于 2023-2-24 15:42 | 只看該作者

大佬,為什么我用了你這個(gè)會(huì)報(bào)錯(cuò)?DS18B20.C(51): error C183: unmodifiable lvalue
  1. void Delay(int count)
  2. {
  3.         int i;
  4.         for(i=1;i<=count;i++);
  5. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

15#
ID:161164 發(fā)表于 2023-2-24 20:56 | 只看該作者
小灰灰、 發(fā)表于 2023-2-24 15:42
大佬,為什么我用了你這個(gè)會(huì)報(bào)錯(cuò)?DS18B20.C(51): error C183: unmodifiable lvalue

完全不一樣好不好
回復(fù)

使用道具 舉報(bào)

16#
ID:1061331 發(fā)表于 2023-2-24 22:22 | 只看該作者
控制好程序執(zhí)行每一步的時(shí)間,一步步調(diào)DELAY也行,調(diào)到時(shí)序?qū)Φ臅r(shí)候一般就行
回復(fù)

使用道具 舉報(bào)

17#
ID:992677 發(fā)表于 2023-2-25 20:26 | 只看該作者

這是 全部程序仿,就 照著大佬  你發(fā)的圖片修的  ,哪不對(duì) 了  ?

多路溫度報(bào)警 (2).zip

107.49 KB, 下載次數(shù): 5

回復(fù)

使用道具 舉報(bào)

18#
ID:161164 發(fā)表于 2023-2-26 11:04 | 只看該作者
小灰灰、 發(fā)表于 2023-2-25 20:26
這是 全部程序仿,就 照著大佬  你發(fā)的圖片修的  ,哪不對(duì) 了  ?

你的"Delay"是函數(shù)
我的"Delay"是變量
當(dāng)然不一樣
回復(fù)

使用道具 舉報(bào)

19#
ID:992677 發(fā)表于 2023-2-26 11:40 | 只看該作者
lkc8210 發(fā)表于 2023-2-26 11:04
你的"Delay"是函數(shù)
我的"Delay"是變量
當(dāng)然不一樣

那我該怎么寫(xiě)?請(qǐng)大佬教教我
回復(fù)

使用道具 舉報(bào)

20#
ID:155507 發(fā)表于 2023-2-26 11:56 | 只看該作者
小灰灰、 發(fā)表于 2023-2-26 11:40
那我該怎么寫(xiě)?請(qǐng)大佬教教我

給你改了

  1. /********************************************************************
  2. * 程序名;  基于DS18B20的測(cè)溫系統(tǒng)
  3. * 功  能: 實(shí)時(shí)測(cè)量溫度,超過(guò)上下限報(bào)警,報(bào)警溫度可手動(dòng)調(diào)整。K1是用來(lái)
  4. * 進(jìn)入上下限調(diào)節(jié)模式的,當(dāng)按一下K1進(jìn)入上限調(diào)節(jié)模式,再按一下進(jìn)入下限
  5. * 調(diào)節(jié)模式。在正常模式下,按一下K2進(jìn)入查看上限溫度模式,顯示1s左右自動(dòng)
  6. * 退出;按一下K3進(jìn)入查看下限溫度模式,顯示1s左右自動(dòng)退出;按一下K4消除
  7. * 按鍵音,再按一下啟動(dòng)按鍵音。在調(diào)節(jié)上下限溫度模式下,K2是實(shí)現(xiàn)加1功能,
  8. * K1是實(shí)現(xiàn)減1功能,K3是用來(lái)設(shè)定上下限溫度正負(fù)的。         
  9.                   
  10. *********************************************************************/
  11. #include<reg52.h>                                   //將AT89X52.h頭文件包含到主程序
  12. #include<intrins.h>                                   //將intrins.h頭文件包含到主程序(調(diào)用其中的_nop_()空操作函數(shù)延時(shí))
  13. #define uint unsigned int                      //變量類(lèi)型宏定義,用uint表示無(wú)符號(hào)整形(16位)
  14. #define uchar unsigned char                   //變量類(lèi)型宏定義,用uchar表示無(wú)符號(hào)字符型(8位)

  15. uchar max=0x00,min=0x00;                   //max是上限報(bào)警溫度,min是下限報(bào)警溫度

  16. bit   s=0;                                                   //s是調(diào)整上下限溫度時(shí)溫度閃爍的標(biāo)志位,s=0不顯示200ms,s=1顯示1s左右
  17. bit   s1=0;                                                   //s1標(biāo)志位用于上下限查看時(shí)的顯示
  18. void display1(uint z);                            //聲明display1()函數(shù)(display.h頭文件中的函數(shù),ds18b20.h要用應(yīng)先聲明)
  19. #include"ds18b20.h"                                   //將ds18b20.h頭文件包含到主程序
  20. #include"keyscan.h"                                   //將keyscan.h頭文件包含到主程序
  21. #include"display.h"                                   //將display.h頭文件包含到主程序


  22. /***********************主函數(shù)************************/
  23. void main()
  24. {
  25.          unsigned char z;
  26.          unsigned int Delay=0;
  27.          beer=1;                                           //關(guān)閉蜂鳴器
  28.          led=1;                                                   //關(guān)閉LED燈
  29.          timer1_init(0);                           //初始化定時(shí)器1(未啟動(dòng)定時(shí)器1)
  30.          get_temperature(1);                    //首次啟動(dòng)DS18B20獲取溫度(DS18B20上點(diǎn)后自動(dòng)將EEPROM中的上下限溫度復(fù)制到TH和TL寄存器)
  31.          get_temperature_1(1);
  32.          while(1)                                           //主循環(huán)
  33.          {         
  34.                                     //按鍵掃面函數(shù)
  35.                  
  36.                  keyscan();                                   //按鍵掃面函數(shù)
  37.                  if(Delay==0)
  38.                  {
  39.                  get_temperature(0);            //獲取溫度函數(shù)
  40.                  alarm();       
  41.                  }
  42.                  if(Delay==1000)
  43.                  {
  44.                  get_temperature_1(0);
  45.                  alarm_1();       
  46.                  }                  
  47.                  
  48.                  if(Delay++>=2000)Delay=0;
  49.                    display(temp,temp_d*0.625);//顯示函數(shù)
  50.          }
  51. }   
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

21#
ID:992677 發(fā)表于 2023-2-26 20:27 | 只看該作者

您好,我照您這樣改了之后確實(shí)可以連續(xù)報(bào)警了,但是一旦報(bào)警就停不下來(lái)了,溫度降下來(lái)了也還在報(bào)警是怎么回事?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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