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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3129|回復: 2
打印 上一主題 下一主題
收起左側

基于單片機設計的半導體制冷系統程序(含PID較正)

[復制鏈接]
跳轉到指定樓層
樓主
ID:525872 發表于 2019-5-3 17:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
設計要求:
1.利用4*4矩陣鍵盤進行溫度任意設定
2.利用PID控制實現PWM控制,驅動H橋電路,使制冷片工作
3.利用18b20顯示系統實時溫度值
4.利用1cd1602進行鍵盤輸入值顯示,時間顯示

單片機源程序如下:
  1. #include <reg52.h>
  2. #include <math.h>

  3. #include "anjian.h"
  4. #include "1602.h"
  5. #include "18b20.h"

  6. #include "anjian.c"
  7. #include "1602.c"
  8. #include "18b20.c"
  9. #include <intrins.h>

  10. #define uchar unsigned char
  11. #define uint unsigned int

  12. #define LCD_COM         0  
  13. #define LCD_DAT  1  

  14. #define  tpwnsum  (5000)
  15. #define  THR1  (-tpwnsum)
  16. #define  THR0 (-50000)
  17. /***********************************/
  18. uint T = 0;
  19. /************************************/

  20. float idata temp,key,sum=0,anjian=0;
  21. char e=0;

  22. sbit pwm=P3^6;

  23. void T_1()          //T1初始化
  24. {
  25.          EA=1;
  26.         TMOD|=0x10;
  27.         ET1=1;
  28.         TH1=THR1/256;
  29.         TL1=THR1%256;
  30.         TR1=1;
  31. }
  32.                                                                   
  33. void Delay1ms(unsigned int n)
  34. {
  35.     unsigned int i,j;
  36.       for(i=n;i>0;i--)
  37.          for(j=112;j>0;j--);
  38. }
  39. void T_0()                   //T0初始化
  40. {
  41.         TMOD=0X01;
  42.         EA=1;
  43.         TR0=1;
  44.         ET0=1;
  45.         TH0=THR0/256;
  46.         TL0=THR0%256;        
  47. }

  48. void main(void)
  49. {
  50.         uchar k;
  51.         uchar i=0,j=0,flag=0;
  52.         float x=0,y=0,w=0;
  53.         Delay1ms(10);
  54.         anjian=000;

  55.         T_0();
  56.         T_1();
  57.         LCD_Initial();
  58.         GotoXY(0,0);
  59.         Print("shuru:");
  60.         GotoXY(1,0);
  61.         Print("sc:     C");
  62.         while(1)
  63.         {        

  64.                 k=key1();
  65.                 if(((k>=0)&&(k<=10)))
  66.                 {
  67.                         if(k==10)
  68.                          {
  69.                                 if(i!=0)
  70.                                 if(flag==0)
  71.                                 {
  72.                                         GotoXY(0,6+i);
  73.                                         LCD_WRITE('.',LCD_DAT);
  74.                                         flag=1;
  75.                                         i++;
  76.                                 }
  77.                          }
  78.                         else
  79.                         {                                         
  80.                                 lcd_word(0x86+i,k);
  81.                                 if(flag==0)
  82.                                         x=x*10+k;
  83.                                 else                        
  84.                                 {
  85.                                         y=y*10+k;
  86.                                         j++;
  87.                                 }
  88.                                 i++;                        
  89.                         }                        
  90.                 }
  91.                 if(k==15)
  92.                 {
  93.                         w=x+y/pow(10,j);
  94.                         anjian=w;i=0,j=0;
  95.                          x=0,y=0,w=0;
  96.                         flag=0;
  97.                         GotoXY(0,6);
  98.                         Print("        ");
  99.                 }
  100.                 disp(0x8b,anjian);
  101.                 disp(0xc3,temp);         
  102.   }
  103. }


  104.   /* PID較正*/
  105. float idata e0,e1,e2;
  106. int   kp=1,ki=200,kd=1;
  107. float U;
  108. float D;
  109. unsigned int Higt;
  110. unsigned int low;
  111. void T0down() interrupt 1                   //T0中斷
  112. {
  113.         TH0=THR0/256;
  114.         TL0=THR0%256;
  115.         temp=readtemp()/10.0;
  116.         e2=e1;          //e2=e1;e1=e0         順序不能換過來,不然往下看三行,有詳細解析
  117.         e1=e0;
  118.         e0=anjian-temp;
  119.         U=kp*(e0-e1)+ki*e0+kd*(e0-2*e1+e2);                   //如果上面的e2=e1;e1=e0換成         e1=e0;        e2=e1 ,則u=ki*e0 ,對kp和kd木有關系了,PID算法不準確
  120.         //且是增量型PID算法


  121.         if(anjian>=temp)
  122.         {               
  123.                 TR1=0;                                                   //關中斷
  124.                 pwm=0;                        
  125.         }
  126.         else
  127.         {
  128.            D=abs(U)/100.0;
  129.            if(D>0.95)D=0.95;
  130.            if(D<0.05)D=0.05;
  131.            Higt=D*tpwnsum;
  132. ……………………

  133. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
keshe終極版.rar (201.44 KB, 下載次數: 78)


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

使用道具 舉報

沙發
ID:328014 發表于 2019-5-5 22:10 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:489878 發表于 2019-5-14 19:21 | 只看該作者
注釋再多一點就好了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91色综合 | 久草久草久草 | 一区二区三区高清 | av在线天堂 | 国产精品大全 | 人人九九精 | 日韩在线视频播放 | 雨宫琴音一区二区在线 | 99久热| 国精日本亚洲欧州国产中文久久 | 亚洲精品一区二三区不卡 | 天天操天天操 | 一级毛片视频在线 | a级黄色网 | 99久久精品免费看国产高清 | 一区二区亚洲 | 欧美久久一区二区三区 | 人人人人干 | 国产精品久久久久aaaa樱花 | 综合国产第二页 | 成人免费福利视频 | 欧美一区二区三区久久精品视 | 国产一级毛片视频 | 午夜无码国产理论在线 | 草草草影院 | 色婷婷综合久久久中字幕精品久久 | 九九热精品视频 | 国产精品亚洲精品日韩已方 | 久草在线 | 性一爱一乱一交一视频 | 久久爱一区 | 精品一区二区三区中文字幕 | 久久久久久999 | 在线啊v | 天天爱天天操 | 日本精品视频 | 999精品视频 | 欧洲免费毛片 | 亚洲一区二区精品视频在线观看 | 成人免费视频 | 免费一区 |