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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2506|回復: 23
收起左側

單片機+數碼管顯示溫度刷新率問題

[復制鏈接]
ID:322939 發表于 2021-11-1 20:48 | 顯示全部樓層 |閱讀模式
各位有沒有做過這類單片機項目,數碼管顯示溫度每隔5度就刷新一次顯示,包括在加熱和控溫狀態時都是這樣的刷新率時間,這種顯示方式的原理邏輯是什么呢?以我的理解如果在數據表里面隔5度就填一個數值,另外就刷新時間延長方式,但覺得始終行不通,有那位大神做過不?有勞指點一下。
回復

使用道具 舉報

ID:752974 發表于 2021-11-2 08:50 | 顯示全部樓層
這個要看你用的是動態掃描顯示電路還是靜態顯示電路,靜態顯示電路可以這么做。動態掃描顯示電路也分兩種情況,一是過去教科書的例子,用8255或8155組成顯示電路,這種電路每20ms左右就要刷新一次,如果使用如類似TM1640的顯示驅動芯片的顯示電路也可以按樓主的想法做。
回復

使用道具 舉報

ID:322939 發表于 2021-11-2 09:31 | 顯示全部樓層
我目前是用IO口直接動態驅動8位數碼管,不知這方式是怎樣做的?
回復

使用道具 舉報

ID:322939 發表于 2021-11-2 09:36 | 顯示全部樓層
如在5度范圍內數值就顯示不變,超出5度就變成10度,例如:從常溫加熱(25,30,35,40)這樣顯示,在達到目標溫度數值在5度范圍內數值顯示不變。
回復

使用道具 舉報

ID:752974 發表于 2021-11-2 09:54 | 顯示全部樓層
用IO口直接驅動的動態電路,如果是一個口驅動八個段,另一個口驅動八個位,這種電路需要20ms左右刷新一次,刷新時實時更新數據就可以了。
回復

使用道具 舉報

ID:161164 發表于 2021-11-2 10:17 | 顯示全部樓層
純粹一個if判斷就可以完成
if(New_Temp > (Old_Temp + 5) || Old_Temp > (New_Temp + 5)){
//更新顯示數組
Old_Temp = New_Temp;
}
回復

使用道具 舉報

ID:624769 發表于 2021-11-2 10:41 | 顯示全部樓層
這種顯示方式的原理邏輯是:

溫感精度不夠,又不想有些人鉆牛角尖抬杠, 那么這樣顯示, 你就沒活說了,因為,我是“故意”的。

以我的理解,這種顯示連數據表都不用,他計算出來的值就是一個 char型,帶符號的那種, *5 就是顯示溫度了。
回復

使用道具 舉報

ID:322939 發表于 2021-11-2 11:30 | 顯示全部樓層
多謝各位了,方式從復雜到簡便,佩服。
回復

使用道具 舉報

ID:322939 發表于 2021-11-2 11:46 | 顯示全部樓層
188610329 發表于 2021-11-2 10:41
這種顯示方式的原理邏輯是:

溫感精度不夠,又不想有些人鉆牛角尖抬杠, 那么這樣顯示, 你就沒活說了, ...

這位大佬,不知你那有沒這方面的相關資料,學習下
回復

使用道具 舉報

ID:322939 發表于 2021-11-6 19:06 | 顯示全部樓層
目前溫度可以5度刷新一次,但顯示方式又不對,因感溫信號在常溫下不是固定25度的,要求常溫固定在25度然后差不多同步感溫信號每5度加熱刷新顯示一次,不知道是如何做到同步的?我試過定義一個常量用定時器計3秒+5這樣顯示,但不知卻如何與感溫信號差不多同步?
回復

使用道具 舉報

ID:824490 發表于 2021-11-8 13:48 | 顯示全部樓層
本帖最后由 名字不是重點 于 2021-11-8 14:41 編輯

溫度變化達到5度才刷新顯示?
這個也太粗糙了吧?
按人體溫度來說,36.5正常,持續40度就要進急診了。相差不過3.5度!
當然你這個的應用場景或許沒這么精細,但做成產品就不應該了。。

正確的做法是:定時采集溫度(比如5秒一次),顯示。一定時間內(5分鐘)高低溫差超5度則啟動修正處理或聲光報警。。
回復

使用道具 舉報

ID:624769 發表于 2021-11-8 14:42 | 顯示全部樓層
加熱器沒有工作的時候,你就固定顯示25,不要去解析溫感數據。
加熱器開始工作后,只要在工作,你就讓溫度顯示只進不退,即:溫度升高到28度+ 你顯示30之后,即使溫感識別問題變成解析成27,甚至25,你都依然顯示30,直到溫感解析出能顯示35的閥值,你再更新顯示信息。
加熱器停止工作后,你的溫度顯示,同理,只退不進,直到顯示25為止,進入到常溫模式,永遠顯示25,就好了。
溫度顯示5度步進,本來就是“忽悠”一下看的人,不用去捉摸如果提高準確率,只要琢磨怎么能“忽悠”,能看起來舒服就可以了。
回復

使用道具 舉報

ID:322939 發表于 2021-11-9 10:47 | 顯示全部樓層
名字不是重點 發表于 2021-11-8 13:48
溫度變化達到5度才刷新顯示?
這個也太粗糙了吧?
按人體溫度來說,36.5正常,持續40度就要進急診了。相 ...

這位大佬,我是用來做發熱工具檢測的,不是用來檢測人體的
回復

使用道具 舉報

ID:322939 發表于 2021-11-9 10:58 | 顯示全部樓層
188610329 發表于 2021-11-8 14:42
加熱器沒有工作的時候,你就固定顯示25,不要去解析溫感數據。
加熱器開始工作后,只要在工作,你就讓溫度 ...

多謝這位大佬解答,如果當溫度加熱到如150度,突然關機溫度會下降,再開機時溫度下降到122度,卻不是顯示125度或120度,那又怎樣去判斷它呢?能讓它以5度的進率顯示啊?
回復

使用道具 舉報

ID:322939 發表于 2021-11-9 11:52 | 顯示全部樓層
能不能這樣方式做?如下:
做一個數組uchar code Tabo[]={35,40,45,50,55,60,65,70,75,80,.............150...........200};
uint code T_vuel[]={1,2,3,4,5.............................................................400};//熱電偶數據表
uint Temp=0;//AD采樣值
uint  Num=25;//固定初始溫度
Temp=T_vuel[Temp-1];//熱電偶查表
if(Temp>=(Num+5)||Num>=(Temp+5));//加熱,5度進率更新一次
{
   if(Temp>=35)
{
  Num=Temp;//更新一次
}
else//不更新還是25度
{
  Num=Num;
}
}
當溫度在150度時,突然關機停止加熱,溫度下降
再開機加熱時,怎樣識別感溫剛好在‘5’的進率顯示?
回復

使用道具 舉報

ID:624769 發表于 2021-11-9 12:59 | 顯示全部樓層
假定,你熱電偶返回值  128~ 230  為 25度~150 度 (非線性)
其中 128~ 145 為25~30度      146~ 155 為30~35度 那么 你可以返回值  -128 得到  0~102 這個值 作為基礎值做查詢表。 那么表的內容如下:
uint code T_vuel[]={25,25,25,25,25,25..............30,30,30...............................................150}
                 //對應:128 129 130 131 132 .........146,147,148..........................................230
           //表中位置:0,1,2,3,4,5..............18,19,20,..............................................102
回復

使用道具 舉報

ID:322939 發表于 2021-11-9 13:41 | 顯示全部樓層
188610329 發表于 2021-11-9 12:59
假定,你熱電偶返回值  128~ 230  為 25度~150 度 (非線性)
其中 128~ 145 為25~30度      146~ 155 為 ...

多謝了,我先測試做個數據表,遇到不懂的再向你們請教。
回復

使用道具 舉報

ID:322939 發表于 2021-11-10 14:51 | 顯示全部樓層

以下為做好的表,但顯示不正常,加熱時數值不會動;
u16  Tepmi=0;//AD采樣值
u16   Tempera=0;//得出溫度值
16 code T_value[195]={
              //1  2  3   4   5
             //25 25 25 25 25  溫度
               29,30,31,32,33,//AD值
              //6  7  8  9  10    索引標志
             //30 30 30 30 30   溫度
               34,35,36,37,38,
             //11 12 13 14 15
            //35 35 35 35 35
               39,40,41,42,43,
            //16 17 18 19 20
          //35 35 35 35 35 35
            44,45,46,47,48,49,
        ...............................
        ...............................
        //201 202 203 201 205  位置
        //205 205 205 205 205  溫度
        //201 202 203 204 205};
void  Tems_otk(void)
{
static bit Lock_Flag=0;
u16 L,H,k,M;
  u8 i;

L=0;
H=195;
for(i=0;i<5;i++)//對分查表
  {
   M=(L+H)/2;
   if(Tepmi<=T_value[M])
    L=M-1;
   else
    H=M+1;
  }
  if(Tepmi==T_value[L])
  {
   Tempera=L-5;  //索引值
    }
  else
   if(Tepmi==T_value[H])
  {
   Tempera=H-5;//索引值
  }
  else
  {
   while(L<=H)
   {
    L++;
   if(Tepmi<=T_value[L]&&Tepmi>T_value[L+1])
   {
    Tempera=L-5;//索引值
    break;
   }
  }
  }
}
void main()
{
init();
ADinit();
while(1)
{
display(Tempera);
}
}
回復

使用道具 舉報

ID:624769 發表于 2021-11-10 21:34 | 顯示全部樓層
你告訴我,你AD取高8位, 25度的時候是多少讀數?150度的時候多少讀數?
回復

使用道具 舉報

ID:322939 發表于 2021-11-11 09:24 | 顯示全部樓層
188610329 發表于 2021-11-10 21:34
你告訴我,你AD取高8位, 25度的時候是多少讀數?150度的時候多少讀數?

我是取10位的,25度時,AD讀34,150度時AD讀158
回復

使用道具 舉報

ID:213173 發表于 2021-11-11 09:48 | 顯示全部樓層
LAW1100 發表于 2021-11-10 14:51
以下為做好的表,但顯示不正常,加熱時數值不會動;
u16  Tepmi=0;//AD采樣值
u16   Tempera=0;//得出溫 ...

你這個簡單查表根本用不著對分,直接for循環,滿足條件即跳出。此表是150K NTC溫敏電阻與27K電阻分壓,10位ADC取樣值,僅做參考。溫度值小于25還是等于25。
u16  Tepmi=0;//AD采樣值
u8   Tempera=0;//得出溫度值
u16 code T_value[26]={
868 ,//        25
832 ,//        30
792 ,//        35
748 ,//        40
700 ,//        45
650 ,//        50
598 ,//        55
547 ,//        60
496 ,//        65
447 ,//        70
400 ,//        75
357 ,//        80
317 ,//        85
281 ,//        90
248 ,//        95
218 ,//        100
192 ,//        105
169 ,//        110
149 ,//        115
131 ,//        120
116 ,//        125
102 ,//        130
90 ,//        135
80 ,//        140
71 ,//        145
63 },//        150

void  Tems_otk(void)
{
        u8 i;
        for(i=0;i<25;i++)
        {
                if(Tepmi>=T_value)
                {
                        Tempera=i*5+25;
                        break;//跳出當前循環
                }
        }
}
回復

使用道具 舉報

ID:322939 發表于 2021-11-11 11:34 | 顯示全部樓層
wulin 發表于 2021-11-11 09:48
你這個簡單查表根本用不著對分,直接for循環,滿足條件即跳出。此表是150K NTC溫敏電阻與27K電阻分壓,10 ...

這位大佬,這樣查表數值會有偏差,這句:if(Tepmi>=T_value[????])有問題
回復

使用道具 舉報

ID:213173 發表于 2021-11-11 12:36 | 顯示全部樓層
LAW1100 發表于 2021-11-11 11:34
這位大佬,這樣查表數值會有偏差,這句:if(Tepmi>=T_value[????])有問題

直接發代碼,中括號被吞了。這個方法本身沒有問題,數值偏差完全在于制表。這個數組的數值只是表達意圖,不可以直接引用。就算是用對分法查表,最后還得用比較和插補,你這5度進階已經無精度可言。代碼補充完整如下:
  1. u16  Tepmi=0;//AD采樣值
  2. u8   Tempera=0;//得出溫度值
  3. u16 code T_value[27]={
  4. 868 ,//        25
  5. 832 ,//        30
  6. 792 ,//        35
  7. 748 ,//        40
  8. 700 ,//        45
  9. 650 ,//        50
  10. 598 ,//        55
  11. 547 ,//        60
  12. 496 ,//        65
  13. 447 ,//        70
  14. 400 ,//        75
  15. 357 ,//        80
  16. 317 ,//        85
  17. 281 ,//        90
  18. 248 ,//        95
  19. 218 ,//        100
  20. 192 ,//        105
  21. 169 ,//        110
  22. 149 ,//        115
  23. 131 ,//        120
  24. 116 ,//        125
  25. 102 ,//        130
  26. 90 ,//        135
  27. 80 ,//        140
  28. 71 ,//        145
  29. 63 ,//        150
  30. 51 };

  31. void  Tems_otk(void)
  32. {
  33.         u8 i;
  34.         for(i=0;i<25;i++)
  35.         {
  36.                 if(Tepmi>=T_value[0])
  37.                 {
  38.                         Tempera=25;
  39.                         break;//跳出當前循環
  40.                 }
  41.                 else if(Tepmi<=T_value[i] && Tepmi>=T_value[i+1])
  42.                 {
  43.                         Tempera=i*5+25;
  44.                         break;//跳出當前循環
  45.                 }
  46.         }
  47. }
復制代碼
回復

使用道具 舉報

ID:322939 發表于 2021-11-11 14:13 | 顯示全部樓層
wulin 發表于 2021-11-11 12:36
直接發代碼,中括號被吞了。這個方法本身沒有問題,數值偏差完全在于制表。這個數組的數值只是表達意圖, ...

多謝了,我研究下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品2 | 欧美h视频 | 久久国产三级 | 精品一区二区三 | 亚洲精品免费视频 | 97人人干| h视频在线观看免费 | 日本不卡一区二区三区在线观看 | 欧州一区二区三区 | 国产91观看 | 欧美a在线| 日日射影院 | 国产成人免费网站 | 亚洲精品久久久久久久久久久久久 | 日本精品久久 | 黄色一级大片在线观看 | 国产精品福利在线观看 | 亚洲一区有码 | 国产小视频自拍 | 欧美日韩国产精品一区二区 | 国产一区二区三区色淫影院 | 久久久久久久久久久久久九 | 久久久久久高潮国产精品视 | 中文字幕日韩欧美一区二区三区 | 99精品久久99久久久久 | 三级黄色片在线播放 | 超碰91在线 | 欧美一区日韩一区 | 色综合久久天天综合网 | 久久久女女女女999久久 | 一区二区视频 | 爱操av| 欧美精品日韩 | 午夜日韩 | 国产精品久久一区二区三区 | 亚洲欧美在线免费观看 | 欧美在线a | 成人av高清| 狠狠入ady亚洲精品经典电影 | 国产xxxx搡xxxxx搡麻豆 | 日本在线视频不卡 |