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

標(biāo)題: pt100+51單片機(jī)的溫控系統(tǒng)程序+仿真圖 還帶壓力顯示 [打印本頁(yè)]

作者: lqx861106    時(shí)間: 2017-9-10 20:06
標(biāo)題: pt100+51單片機(jī)的溫控系統(tǒng)程序+仿真圖 還帶壓力顯示
使用pt100測(cè)溫度,經(jīng)過(guò)放大器放大后的電壓值乘以236就是實(shí)際的溫度值0.42V對(duì)應(yīng)100度,0V對(duì)應(yīng)0度,經(jīng)過(guò)ad運(yùn)算顯示出來(lái),其他濾掉,就只顯示0-100度,0-100對(duì)應(yīng)輸出0-5v的電壓使用DA,功能,ad和da使用同個(gè)芯片,就是實(shí)現(xiàn)0-100顯示,溫度變化的同時(shí)da輸出0-5v。
第二個(gè)就是壓力傳感器輸出芯片ad輸入0-5v,對(duì)應(yīng)壓力6-8pad,顯示出來(lái)。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define NOP() _nop_()
  6. #define Delay5us() {_nop_();_nop_();_nop_();_nop_();_nop_();}

  7. #define LCD_LINE_ONE 1
  8. #define LCD_LINE_TWO 2

  9. sbit LCD_RS = P2^0 ;
  10. sbit LCD_RW = P2^1 ;
  11. sbit LCD_EN = P2^2 ;

  12. sbit SCL = P1^1;
  13. sbit SDA = P1^2;

  14. sbit BEEP = P1^0;   
  15. uchar temp = 40;
  16. uchar pres = 40;
  17. uint Voltage[]={'0','0','0'};                                                //AD的LCD顯示值
  18. unsigned char LCD_Line_1[] = {"TEMP:             "};//TEMP-是溫度值
  19. unsigned char LCD_Line_2[] = {"PRES:             "};//PRES-是壓力值

  20. extern void Convert_To_Voltage(uint val);                        //函數(shù)聲明
  21. uchar IIC_ERROR;                                                                        //IIC錯(cuò)誤標(biāo)志

  22. void Delay(uint ms)                                //延時(shí)函數(shù)
  23. {
  24.          uchar i;
  25.         while(ms--)
  26.         {
  27.                  for(i=0;i<120;i++);
  28.         }
  29. }
  30. bit LCD_Busy_Check()                        //檢測(cè)忙信號(hào)
  31. {
  32.          bit Result;
  33.         LCD_RS = 0;
  34.         LCD_RW = 1;
  35.         LCD_EN = 1;
  36.         Delay5us();
  37.         Result = (bit)(P0&0x80);
  38.         LCD_EN = 0;
  39.         return Result;
  40. }
  41. void LCD_Write_Command(uchar cmd)//LCD寫命令
  42. {
  43.          while(LCD_Busy_Check());
  44.         LCD_RS = 0;
  45.         LCD_RW = 0;
  46.         LCD_EN = 0;
  47.         _nop_();
  48.         _nop_();
  49.         P0 = cmd;
  50.         Delay5us();
  51.         LCD_EN = 1;
  52.         Delay5us();
  53.         LCD_EN = 0;
  54. }
  55. void LCD_Write_Data(uchar dat)//LCD寫數(shù)據(jù)
  56. {
  57.         while(LCD_Busy_Check());
  58.         LCD_RS = 1;
  59.         LCD_RW = 0;
  60.         LCD_EN = 0;
  61.         P0 = dat;
  62.         Delay5us();
  63.         LCD_EN = 1;
  64.         Delay5us();
  65.         LCD_EN = 0;         
  66. }

  67. void LCD_Set_Position(uchar pos)                                //LCD顯示位置設(shè)置
  68. {
  69.         if(pos == LCD_LINE_ONE)
  70.                 LCD_Write_Command(0x80);        
  71.         else
  72.                 LCD_Write_Command(0xc0);        
  73. }
  74. void LCD_Display_A_Line(uchar Line_Addr,uchar s[])//LCD顯示行
  75. {
  76.          uchar i;
  77.         LCD_Set_Position(Line_Addr);
  78.         for(i=0;i<16;i++)
  79.         {
  80.                  LCD_Write_Data(s[i]);
  81.         }
  82. }
  83. void LCD_Dispay(void)                                                        //LCD實(shí)時(shí)顯示
  84. {
  85.         Convert_To_Voltage(temp*5);
  86.         LCD_Line_1[6]= Voltage[2];
  87.         LCD_Line_1[7]= Voltage[1];
  88.         LCD_Line_1[8]= '.';
  89.         LCD_Line_1[9]= Voltage[0];
  90.         LCD_Line_1[11]= 'C';
  91.         LCD_Line_1[12]= 'e';
  92.         LCD_Line_1[13]= 'n';
  93.         LCD_Line_1[14]= 't';
  94.         LCD_Display_A_Line(LCD_LINE_ONE,LCD_Line_1);//溫度顯示
  95.         
  96.         Convert_To_Voltage(pres);
  97.         LCD_Line_2[6]= Voltage[2]+6;
  98.         LCD_Line_2[7]= '.';
  99.         LCD_Line_2[8]= Voltage[1];
  100.         LCD_Line_2[9]= Voltage[0];
  101.         LCD_Line_2[11]= 'p';
  102.         LCD_Line_2[12]= 'a';
  103.         LCD_Display_A_Line(LCD_LINE_TWO,LCD_Line_2);//壓力顯示
  104. }
  105. void LCD_Initialise()                                                        //LCD初始化
  106. {
  107.          LCD_Write_Command(0x38);Delay(5);
  108.         LCD_Write_Command(0x0c);Delay(5);
  109.         LCD_Write_Command(0x06);Delay(5);
  110.         LCD_Write_Command(0x01);Delay(5);
  111.         
  112.         LCD_Display_A_Line(1,LCD_Line_1);
  113.         LCD_Display_A_Line(2,LCD_Line_2);
  114. }
  115. /********************************PCF8591部分************************************/
  116. void Convert_To_Voltage(uint val)//電壓換算成溫度或壓力
  117. {
  118.          uint Tmp;
  119.         Tmp = val;
  120.         Voltage[2] = Tmp/100+'0';
  121.         Tmp = Tmp%100*10;
  122.         Voltage[1] = Tmp/100+'0';
  123.         Tmp = Tmp%100*10;
  124.         Voltage[0] = Tmp/100+'0';
  125. }

  126. /*****************IIC初始化*****************/
  127. void delay()   
  128. {;;}


  129. void start()//停止
  130. {
  131.         SDA=1;
  132.         delay();
  133.         SCL=1;
  134.         delay();
  135.         SDA=0;
  136.         delay();
  137. }

  138. void stop()      //啟動(dòng)
  139. {
  140.         SDA=0;
  141.         delay();
  142.         SCL=1;
  143.         delay();
  144.         SDA=1;
  145.         delay();
  146. }


  147. void respons()//應(yīng)答信號(hào)
  148. {
  149.         uchar i;
  150.         SCL=1;
  151.         delay();
  152.         while((SDA==1)&&(i<250))
  153.         i++;
  154.         SCL=0;
  155.         delay();
  156. }

  157. void init()      //初始化PCF8591接口
  158. {
  159.         SDA=1;
  160.         delay();
  161.         SCL=1;
  162.         delay();   
  163. }

  164. uchar read_byte()//對(duì)PCF8591讀一個(gè)字節(jié)數(shù)據(jù)
  165. {
  166.         uchar i,k;
  167.         SCL=0;
  168.         delay();
  169.         SDA=1;
  170.         delay();
  171.         for(i=0;i<8;i++)
  172.         {
  173.                 SCL=1;
  174.                 delay();
  175.                 k=(k<<1)|SDA;
  176.                 SCL=0;
  177.                 delay();
  178.         }
  179.         return k;
  180. }

  181. void write_byte(uchar date)  //對(duì)PCF8591寫一個(gè)字節(jié)數(shù)據(jù)
  182. {
  183.         uchar i,temp1;
  184.         temp1=date;
  185.         for(i=0;i<8;i++)
  186.         {
  187.                 temp1=temp1<<1;
  188.                 SCL=0;
  189.                 delay();
  190.                 SDA=CY;
  191.                 delay();
  192.                 SCL=1;
  193.                 delay();            
  194.         }   
  195.         SCL=0;
  196.         delay();
  197.         SDA=1;
  198.         delay();
  199. }



  200. void write_add(uchar control,uchar date)//輸出電壓
  201. {
  202.         start();
  203.         write_byte(0x90);        
  204.         respons();
  205.         write_byte(control);
  206.         respons();
  207.         write_byte(date);
  208.         respons();
  209.         stop();

  210. }

  211. uchar read_add(uchar control)//讀取AD轉(zhuǎn)換值
  212. {
  213.         uchar date;
  214.         start();
  215.         write_byte(0x90);
  216.         respons();
  217.         write_byte(control);
  218.         respons();
  219.         start();
  220.         write_byte(0x90+1);      
  221.         respons();
  222.         date=read_byte();
  223.         stop();
  224.         return date;

  225. }


  226. void main()
  227. ……………………

  228. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
溫控系統(tǒng).rar (121.02 KB, 下載次數(shù): 715)





作者: 1253676557    時(shí)間: 2017-10-22 08:53
大神  temp=read_add(0x40)得到的值是溫度么   不是ad轉(zhuǎn)化的電壓值?
作者: lmy1200    時(shí)間: 2018-1-15 15:42
大神,如果針對(duì)此電路,需要測(cè)一百以上的溫度,該如何改電路啊
作者: qjzyx    時(shí)間: 2018-1-16 12:22
謝謝分享!
作者: zhxiufan    時(shí)間: 2018-1-16 15:03
程序內(nèi)容是用的PCF8591,不是題目上說(shuō)的PT100。
作者: xugh1977    時(shí)間: 2018-2-6 11:03
學(xué)習(xí)一下!
作者: 雁過(guò)留香丶    時(shí)間: 2018-2-6 12:59
謝謝分享
作者: 索尼克    時(shí)間: 2018-4-1 22:25
學(xué)習(xí)一下
作者: xxpjian520    時(shí)間: 2018-5-6 23:08
不錯(cuò)不錯(cuò)不錯(cuò)
作者: xxpjian520    時(shí)間: 2018-5-6 23:09
看看了,再說(shuō)了,應(yīng)該不錯(cuò)
作者: xxpjian520    時(shí)間: 2018-5-6 23:10
看看看再評(píng)價(jià)了。是不是
作者: doney    時(shí)間: 2018-5-9 16:19
正在學(xué)習(xí),謝謝分享
作者: heamin    時(shí)間: 2018-5-9 22:06
1253676557 發(fā)表于 2017-10-22 08:53
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

你說(shuō)得對(duì)
作者: heamin    時(shí)間: 2018-5-9 22:07
用c83單片機(jī)效果一樣嗎???
作者: 猛哥歐巴    時(shí)間: 2018-5-12 13:33
真的可以,學(xué)習(xí)一下
作者: 滄海一聲笑、    時(shí)間: 2018-5-26 09:40
怎么調(diào)節(jié)壓力的值,讓其變化范圍大一些呢
作者: 闊愛(ài)的釗釗    時(shí)間: 2018-6-7 01:31
樓主威武,我做的題目不讓用數(shù)字傳感器,無(wú)奈只好四處找找有沒(méi)有PT100的。
作者: 三萬(wàn)英尺雙子    時(shí)間: 2018-8-14 15:21
很好很好
作者: prettytank    時(shí)間: 2018-10-24 10:29
就是在找Pt100啊,謝謝樓主的分享
作者: goinwin    時(shí)間: 2018-10-24 13:17
樓主!有做過(guò)用熱電偶控制300度的案列嗎??
作者: 應(yīng)作如是觀    時(shí)間: 2018-11-8 19:12
大哥 你這個(gè)放大電路的放大倍數(shù)是多少啊
作者: bwk    時(shí)間: 2018-12-20 18:22
nice!

作者: 矛木    時(shí)間: 2019-1-2 20:21
想下載
作者: lkk99號(hào)    時(shí)間: 2019-1-13 21:39
感謝樓主,新接項(xiàng)目正好用到PT100仿真,找了一下午資料不會(huì)話仿真圖!!!!謝謝樓主
作者: lkk99號(hào)    時(shí)間: 2019-1-13 21:40
這個(gè)PT100,可不可以直接不加放大電路,然后直接引出來(lái)一個(gè)節(jié)點(diǎn)然后用8591讀取呢
作者: woyaodwn    時(shí)間: 2019-3-28 09:28
有熱電偶的資料嗎
作者: billchun    時(shí)間: 2019-3-30 23:13
謝謝分享
作者: 萌個(gè)錘子    時(shí)間: 2019-4-16 16:30
觀摩學(xué)習(xí)
作者: 萌個(gè)錘子    時(shí)間: 2019-4-16 16:35
謝謝分享
作者: 萌個(gè)錘子    時(shí)間: 2019-4-16 16:39
觀摩學(xué)習(xí) 謝謝分享
作者: zzf872490437    時(shí)間: 2019-5-13 00:24
請(qǐng)問(wèn):如果只要溫度顯示,不要壓力顯示,程序應(yīng)該如何修改呢?
作者: swy分工會(huì)盡快    時(shí)間: 2019-5-14 18:06
學(xué)習(xí)一下
作者: 若離枝    時(shí)間: 2019-5-14 19:26
很有用
作者: 若離枝    時(shí)間: 2019-5-14 19:26
學(xué)習(xí)學(xué)習(xí)
作者: gdatgb    時(shí)間: 2019-5-17 14:45
謝謝分享 學(xué)習(xí)一下
作者: Wuhen_123456789    時(shí)間: 2019-5-22 22:52
想請(qǐng)問(wèn)為什么電壓值乘以236就是溫度值?

作者: 嘿哈123    時(shí)間: 2019-6-5 16:06
若離枝 發(fā)表于 2019-5-14 19:26
很有用

十分感謝

作者: QWE8764210    時(shí)間: 2019-6-11 17:07
可以  很強(qiáng)大很給力
作者: abc111111    時(shí)間: 2019-6-12 00:34
剛好需要這個(gè)作為參考程序,謝謝
作者: jovew    時(shí)間: 2019-6-13 09:56
怎么將溫度測(cè)量范圍放大?負(fù)溫度怎么寫程序?
作者: JEFF1    時(shí)間: 2019-6-13 15:36
lmy1200 發(fā)表于 2018-1-15 15:42
大神,如果針對(duì)此電路,需要測(cè)一百以上的溫度,該如何改電路啊

不用改電路,程序這兩個(gè)地方成這樣就好了:
        Convert_To_Voltage(temp*5);
        LCD_Line_1[7]= Voltage[3];
        LCD_Line_1[8]= Voltage[2];
        LCD_Line_1[9]= Voltage[1];
        LCD_Line_1[10]= '.';
        LCD_Line_1[11]= Voltage[0];
        LCD_Line_1[12]= 'C';
        LCD_Line_1[13]= 'e';
        LCD_Line_1[14]= 'n';
        LCD_Line_1[15]= 't';
        LCD_Display_A_Line(LCD_LINE_ONE,LCD_Line_1);//溫度顯示

void Convert_To_Voltage(uint val)//電壓換算成溫度或壓力
{
        uint Tmp;
        Tmp = val;
        Voltage[3] = Tmp/1000+'0';
        Tmp = Tmp%1000*10;
        Voltage[2] = Tmp/1000+'0';
        Tmp = Tmp%1000*10;
        Voltage[1] = Tmp/1000+'0';
        Tmp = Tmp%1000*10;
        Voltage[0] = Tmp/1000+'0';
}
作者: yang123456789    時(shí)間: 2019-6-17 09:46
麻煩問(wèn)一下Pt100是三線的嗎?
作者: 韓昊辰    時(shí)間: 2019-6-19 09:28
謝謝分享
作者: lucheng77    時(shí)間: 2019-8-22 12:33
yang123456789 發(fā)表于 2019-6-17 09:46
麻煩問(wèn)一下Pt100是三線的嗎?

有三線的,也有兩線的,三線是線材補(bǔ)償,因?yàn)镻T100本身電阻比較小,引線長(zhǎng)了后引線的電阻就不能忽略不計(jì)了,為了測(cè)量更精確才加入另一條線進(jìn)行補(bǔ)償。
作者: 梅江松子    時(shí)間: 2019-8-22 14:08
謝謝分享
作者: 6467778399    時(shí)間: 2019-9-26 14:46


學(xué)習(xí)學(xué)習(xí)備用
作者: pps10086    時(shí)間: 2019-10-29 15:22
謝謝分享。。。
作者: blackss    時(shí)間: 2019-12-25 10:33
很給力
作者: cbay    時(shí)間: 2020-1-16 01:22
樓主太厲害
作者: qssh    時(shí)間: 2020-12-28 17:31
1253676557 發(fā)表于 2017-10-22 08:53
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

是溫度值
作者: 文把把2    時(shí)間: 2022-4-29 17:21
請(qǐng)問(wèn)一下這個(gè)輸出電壓乘上236對(duì)不上實(shí)際溫度值呢




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲成人一区 | 欧美vide | 玖玖久久 | 超碰97在线免费 | 久久精品美女 | 国产91久久久久久久免费 | 日韩精品免费视频 | 超碰在线国产 | 国产重口老太伦 | 精品一区二区三区视频在线观看 | 亚洲一区二区三区欧美 | 日本成人福利视频 | 精品国产乱码久久久久久老虎 | 成人在线观看免费视频 | 国产成人精品久久 | 成人在线小视频 | 国产精品69毛片高清亚洲 | 国产蜜臀97一区二区三区 | 91大神在线资源观看无广告 | 大久| 欧美电影一区 | 亚洲国产欧美91 | 成人福利在线视频 | 欧美在线色视频 | 免费网站在线 | 久热免费 | 97操操 | 国产欧美一级 | 99在线国产 | 精品综合 | 911网站大全在线观看 | 国产精品久久久久久久岛一牛影视 | 国产欧美精品在线观看 | 欧美老少妇一级特黄一片 | 亚洲视频一区二区三区 | 午夜不卡一区二区 | 欧美精品一区二区免费 | 中文字幕一区二区三区在线视频 | 亚洲精品电影网在线观看 | 中国一级特黄真人毛片免费观看 | 日韩成人精品一区二区三区 |