⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 water.lst

📁 详细介绍了怎么利用单片机实现自身温度控制的程序!通过了实验验证!效果不错!
💻 LST
📖 第 1 页 / 共 5 页
字号:
1168   2                      }*/
1169   2                      Time3=1;
1170   2                      Second=0;
1171   2              }
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 20  

1172   1              TIMECON=0x13;
1173   1      }
1174          
1175          void Longdelay()
1176          {
1177   1              int i=0;
1178   1              TimeCountInt();
1179   1              TIMECON=0x13;
1180   1              while(!i)
1181   1              {
1182   2                      i=Time;
1183   2              }
1184   1              delay(5000);
1185   1              delay(50000);
1186   1              TIMECON=0x00;
1187   1              delay(50000);
1188   1              delay(50000);
1189   1      }
1190          /***************************************多次开关水泵测流量************************************/
1191          void FlowDet()
1192          {
1193   1              int j=0;
1194   1              int i=0;
1195   1              int k=0;
1196   1              int s=0;
1197   1              while(!s)
1198   1              {
1199   2                      k++;
1200   2                      if(k==3)
1201   2                      {
1202   3                              s=1;
1203   3                      }
1204   2                      if(Rate<20)
1205   2                      {
1206   3                              WATER=1;
1207   3                              for(j=0;j<10;j++)
1208   3                              {
1209   4                                      delay(50000);
1210   4                                      delay(50000);
1211   4                                      delay(50000);
1212   4                                      delay(50000);
1213   4                                      delay(50000);
1214   4                                      delay(50000);
1215   4                                      delay(50000);
1216   4                                      delay(50000);
1217   4                                      delay(50000);
1218   4                                      delay(50000);
1219   4                                      delay(50000);
1220   4                                      delay(50000);
1221   4                                      delay(50000);
1222   4                              }
1223   3                              delay(1000);
1224   3                              WATER=0;
1225   3                              for(i=0;i<10;i++)
1226   3                              {
1227   4                                      delay(50000);
1228   4                                      delay(50000);
1229   4                                      delay(50000);
1230   4                                      delay(50000);
1231   4                                      delay(50000);
1232   4                                      delay(50000);
1233   4                                      delay(50000);
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 21  

1234   4                                      delay(50000);
1235   4                                      delay(50000);
1236   4                                      delay(50000);
1237   4                              }               
1238   3                      }
1239   2                      if(Rate>30)
1240   2                      {
1241   3                              nop();
1242   3                              s=1;
1243   3                      }
1244   2              }
1245   1      }
1246          void closeWater()
1247          {
1248   1              if(Rate<30)
1249   1              {
1250   2                      WATER=1;
1251   2              }
1252   1      }
1253          
1254          /***************************************save***************************************/
1255          void StoreData1(void)
1256          {
1257   1              bit bEA;
1258   1              bEA=EA;
1259   1              EA=0;
1260   1              EADRH = 0x00;
1261   1      
1262   1              EADRL=0x84;
1263   1              EDATA1=TL/256;      //保存设置电流值,按关闭键时保存
1264   1              EDATA2=TL%256;  
1265   1              ECON = 0x05;  //擦除一页
1266   1              delay(1);
1267   1              ECON = 0x02;  //写一页
1268   1              EA=bEA;
1269   1      }
1270          
1271          void StoreData2(void)
1272          {
1273   1              bit bEA;
1274   1              bEA=EA;
1275   1              EA=0;
1276   1              EADRH = 0x00;
1277   1      
1278   1              EADRL=0x85;
1279   1              EDATA1=Tset/256;      //保存设置温度值,按关闭键时保存
1280   1              EDATA2=Tset%256;        
1281   1              ECON = 0x05;  //擦除一页
1282   1              delay(1);
1283   1              ECON = 0x02;  //写一页
1284   1              EA=bEA;
1285   1      }
1286          
1287          /****************************************调用存储***************************************/
1288          void RetriveData1(void)
1289          {
1290   1              bit bEA;
1291   1              int  s1, s2;
1292   1              bEA = EA;
1293   1              EA = 0;
1294   1      
1295   1              EADRH = 0x00; 
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 22  

1296   1              
1297   1              EADRL = 0x84;
1298   1              delay(1);
1299   1              ECON = 0x01; //read
1300   1              delay(1);
1301   1              s1 = EDATA1;
1302   1              s2 = EDATA2;
1303   1              TL = s1 *256 + s2;
1304   1              EA=bEA;
1305   1      }
1306          
1307          void RetriveData2(void)
1308          {
1309   1              bit bEA;
1310   1              int  s1, s2;
1311   1              bEA = EA;
1312   1              EA = 0;
1313   1      
1314   1              EADRH = 0x00; 
1315   1              
1316   1              EADRL = 0x85;
1317   1              delay(1);
1318   1              ECON = 0x01; //read
1319   1              delay(1);
1320   1              s1 = EDATA1;
1321   1              s2 = EDATA2;
1322   1              Tset = s1 *256 + s2;
1323   1              EA=bEA;
1324   1      }
1325          
1326          
1327          /****************************************开机测温判断********************************/
1328          commpare()
1329          {
1330   1              int i;
1331   1              if(WATER==0)
1332   1              {
1333   2                      GetTemTout();
1334   2                      delay(100);
1335   2                      GetTemTout();
1336   2                      T=Tout;
1337   2                      Second=0;
1338   2                      TimeCountInt();
1339   2                      TIMECON=0x13;
1340   2                      while(!i)
1341   2                      {
1342   3                              i=Time1;
1343   3                              nop();
1344   3                              GetTemTout();
1345   3                      }
1346   2                      TIMECON=0x00;
1347   2                      Second=0;
1348   2                      GetTemTout();
1349   2                      if(abs(Tout-T)>0.8)
1350   2                      {
1351   3                              RetriveData1();                 //调用以前的值
1352   3                      }
1353   2                      else if(abs(Tout-T)<0.1)
1354   2                      {
1355   3                              Pwmout(26124);
1356   3                              TIMECON=0x13;                   //满功率并计时并存储
1357   3                              while(!i)
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 23  

1358   3                              {
1359   4                                      i=Time2;
1360   4                                      nop();
1361   4                                      GetTemTout();
1362   4                              }
1363   3                              TL=Second-1;;
1364   3                              delay(5000);
1365   3                              Second=0;
1366   3                              StoreData1();
1367   3                              TIMECON=0x00;
1368   3                      }
1369   2              }
1370   1              else
1371   1              {
1372   2                      nop();
1373   2              }
1374   1      }
1375          
1376          
1377          /***************************************出错报警*********************************************/
1378          void Fault()
1379          {
1380   1              int a;
1381   1              a=abs(Tout-ToutB);
1382   1              if(a>1)
1383   1              {
1384   2                      NT = 0;
1385   2              }
1386   1              else
1387   1              {
1388   2                      NT++;
1389   2              }
1390   1              ToutB=Tout;
1391   1              if(water==1)
1392   1              {
1393   2                      PWMCON=0x80;
1394   2                      PWM=0;
1395   2                      Star=0;
1396   2                      Pout=0;
1397   2                      delay(100);
1398   2                      WATER=1;
1399   2                      write7279(SEGON,LED_LackWater);
1400   2                      write7279(SEGON,LED_FlowLow);
1401   2                      write7279(SEGOFF,  LED_Standby);
1402   2              }
1403   1      
1404   1              if(Rate<20)
1405   1              {
1406   2                      PWMCON=0x80;
1407   2                      PWM=0;
1408   2                      Star=0;
1409   2                      Pout=0;
1410   2                      WATER=1;
1411   2                      Errorflag[0] = 1;
1412   2                      ErrorNum ++;
1413   2                      write7279(SEGON,LED_FlowLow);
1414   2                      write7279(SEGOFF,  LED_Standby);
1415   2              }
1416   1              else if(Rate<40)
1417   1              {
1418   2                      Errorflag[1] = 1;
1419   2                      ErrorNum ++;
C51 COMPILER V7.06   WATER                                                                 10/28/2007 09:52:35 PAGE 24  

1420   2                      write7279(SEGON,LED_FlowLow);
1421   2              }
1422   1              else if(Tout>4000&&Star==1)
1423   1              {
1424   2                      Errorflag[2] = 1;
1425   2                      ErrorNum ++;
1426   2                      write7279(SEGON,LED_Fault);
1427   2              }
1428   1              else if(NT>80)
1429   1              {
1430   2                      if(abs(Tout-Tset)>100&&Star==1)
1431   2                      {
1432   3                              Errorflag[3] = 1;
1433   3                              ErrorNum ++;
1434   3                              write7279(SEGON,LED_Fault);
1435   3                      }
1436   2              }
1437   1              else if(Tout<450)
1438   1              {
1439   2                      PWMCON=0x80;
1440   2                      PWM=0;
1441   2                      Star=0;
1442   2                      Pout=0;
1443   2                      Errorflag[5] = 1;
1444   2                      ErrorNum ++;
1445   2                      write7279(SEGON,LED_Fault);
1446   2                      write7279(SEGOFF,  LED_Standby);
1447   2              }
1448   1              else
1449   1              {
1450   2                      ErrorNum=0;
1451   2                      write7279(SEGOFF,LED_FlowLow);
1452   2                      write7279(SEGOFF,LED_Fault);
1453   2                      write7279(SEGOFF,LED_LackWater);
1454   2              }
1455   1      }
1456          /**********************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -