找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2361|回复: 4
打印 上一主题 下一主题
收起左侧

自己参考例子写的带字库12864(ST7920)液晶屏程序,求优化

[复制链接]
回帖奖励 30 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:261451 发表于 2018-7-19 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 一袋天骄 于 2018-7-23 10:58 编辑
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #include "4.h"

  6. uchar code table[] = "      测试      ";
  7. uchar code table1[]= "  实时数据查看  ";
  8. uchar code table2[]= "  上下限设置    ";  
  9. uchar code table3[]= "光照:           ";
  10. uchar code table4[]= "风速:           ";
  11. uchar code table5[]= "风向:           ";
  12. uchar code table6[]= "温度:           ";
  13. uchar code table7[]= "湿度:           ";
  14. uchar code table8[]= "土温:           ";
  15. uchar code table9[]= "土湿:           ";
  16. uchar code table10[]="时:             ";
  17. uchar code table11[]="天:             ";
  18. uchar code table12[]="月:             ";
  19. uchar code table13[]="年:             ";
  20. uchar code table14[]="下限:           ";
  21. uchar code table15[]="上限:           ";
  22. uchar code table16[]="  请输入密码:   ";
  23. uchar code table17[]="    密码错误    ";
  24. uchar code table18[]="  请重新输入    ";
  25. uchar code table19[]="    降雨量      ";
  26. uchar code table20[]="    设置成功    ";
  27. uchar fanye,fanye2,guangbiao;
  28. uchar b,c,d,e,f,g;
  29. uchar yi,er,san,si;
  30. uchar ge,shi,bai,qian,wan;
  31. uint  guang_shang,guang_xia,feng_shang,wendu_shang,wendu_xia,shidu_shang,shidu_xia,tuwen_shang,tuwen_xia,tushi_shang,tushi_xia,yu_shang;
  32. uint  guang,fengsu,fengxiang,wendu,wendu1,shidu,tuwen,tuwen1,tushi,yu_shi,yu_tian;
  33. long  yu_yue,yu_nian;
  34. //sbit LCD_CS=P0^7;   //RS
  35. sbit LCD_SID=P0^6;    //RW
  36. sbit LCD_SCLK=P0^5;   //E
  37. sbit key1=P1^1;       //确认
  38. sbit key2=P1^2;       //按键减一
  39. sbit key3=P1^3;       //按键加一
  40. sbit key4=P1^4;       //返回
  41. sbit key5=P1^5;

  42. void delay_ms(uint z)
  43. {
  44.    uint x,y;
  45.         for(x=z;x>0;x--)
  46.                 for(y=110;y>0;y--);
  47. }
  48. void sendbyte(unsigned char bbyte) //发送一个字节
  49. {
  50. unsigned char i;
  51. for(i=0;i<8;i++)
  52.    {
  53.    LCD_SID=bbyte&0x80; //取出最高位
  54.    LCD_SCLK=1;
  55.    LCD_SCLK=0;
  56.    bbyte<<=1; //左移
  57.    }  
  58. }

  59. void write(bit start, unsigned char ddata) //写指令或数据
  60. {
  61.   unsigned char start_data,Hdata,Ldata;
  62.   if(start==0)
  63.     start_data=0xf8;  //写指令
  64.   else      
  65.         start_data=0xfa;  //写数据
  66.   
  67.   Hdata=ddata&0xf0;    //取高四位
  68.   Ldata=(ddata<<4)&0xf0;  //取低四位
  69.   sendbyte(start_data);   //发送起始信号
  70.   delay_ms(1); //延时
  71.   sendbyte(Hdata);       //发送高四位
  72.   delay_ms(1);
  73.   sendbyte(Ldata);    //发送低四位
  74.   delay_ms(1);
  75. }
  76. //***********一行显示8个汉字***********
  77. //***************汉字显示***************
  78. //***X为行Y为列,K为字的个数,*P为数组*
  79. //*************************************
  80. void chinese(uchar x,uchar y,uchar k,uchar *p)
  81. {
  82.         uchar hang,out,i;
  83.         y=y-1;
  84.         switch(x)
  85.         {
  86.                 case 1:hang=0x80;break;
  87.                 case 2:hang=0x90;break;
  88.                 case 3:hang=0x88;break;
  89.                 case 4:hang=0x98;break;        
  90.         }
  91.         out=hang+y;        
  92.         write(0,out);
  93.         for(i=0;i<k*2;i++) {
  94.              write(1,*p);
  95.                   p++;
  96.                     }
  97.                                 //write(1,p);
  98. }
  99. //**********一行显示16个字母***********
  100. //***********英文数字显示***************
  101. //***X为行Y为列,K为字的个数,*P为数组*
  102. //************************************
  103. void english(uchar x,uchar y,uchar k,uchar *p)
  104. {
  105.         uchar hang,out,i;
  106.         y=y-1;
  107.         
  108.         switch(x)
  109.         {
  110.                 case 1:hang=0x80;break;
  111.                 case 2:hang=0x90;break;
  112.                 case 3:hang=0x88;break;
  113.                 case 4:hang=0x98;break;        
  114.         }
  115.         out=hang+y;        
  116.         write(0,out);
  117.         for(i=0;i<k;i++) {
  118.                  write(1,*p);
  119.                   p++;
  120.                        }
  121. }

  122. void lcd_init()
  123. {
  124.         write(0,0x30);  //8位介面,基本指令集
  125.         write(0,0x0c);  //显示打开,光标关,光标位置关
  126.         write(0,0x01);  //清屏,将DDRAM地址计数器归零
  127.         delay_ms(10);
  128. }

  129. /*****************箭头指示*****************/
  130. void zhishi(uchar a)
  131. {
  132.            write(0,0x30);  //8位介面,基本指令集
  133.            
  134.      switch(a)
  135.         {
  136.                 case 1:write(0,0x80);break;
  137.                 case 2:write(0,0x90);break;
  138.                 case 3:write(0,0x88);break;
  139.                 case 4:write(0,0x98);break;        
  140.         }           
  141.             write(1,0x1a);           
  142. }

  143. /*******************************反白1**************************
  144. 将128*64看做256*32,3.4行在1.2行右边
  145. x0范围(0x80,0x80+16),x1范围(1,16)按字数算
  146. y0范围(0x80,0x80+32),y1范围(1,32)按点数算
  147. data1,data2写入0xff为反白,写入0x00为清零图片缓存
  148. ********************************************************************/
  149. /*void fanbai(uchar data1,uchar data2,uchar x0,uchar y0,uchar x1,uchar y1)
  150. {
  151.              uchar i,j;
  152.         for(j=0;j<y1;j++)
  153.         {
  154.         for(i=0;i<x1;i++)
  155.           {
  156.                   write(0,0x34);
  157.                         write(0,y0+j);  //写y坐标
  158.                         write(0,x0+i);  //写x坐标
  159.                         write(0,0x30);
  160.                         write(1,data1);
  161.                         write(1,data2);
  162.           }
  163.         }
  164.         write(0,0x36);
  165. }

  166. /*******************显示*******************************/
  167.    void display_start()
  168.     {
  169.                         write(0,0x01);
  170.                          english(2,1,15,table);  //开始界面
  171.                                  }
  172.    void display_menu()
  173.     {
  174.                         write(0,0x01);
  175.                           english(1,1,15,table1);// 实时数据查看
  176.         english(2,1,15,table2);//上下限设置  
  177.                                  }
  178.   /* void display_menu2()
  179.     {
  180.                         write(0,0x01);
  181.                           english(3,1,15,table1);// 实时数据查看
  182.         english(4,1,15,table2);//上下限设置  
  183.                                  }*/
  184.    void display_mima()
  185.     {
  186.                         write(0,0x01);
  187.                         english(1,1,15,table16);//请输入密码:
  188.                                  }
  189.                 void display_error()
  190.                 {
  191.                         write(0,0x01);
  192.                         english(1,1,15,table17);//密码错误
  193.                         english(3,1,15,table18);//请重新输入
  194.                 }
  195.                 void display1()
  196.     {
  197.                         write(0,0x01);
  198.                           english(2,1,15,table3);//光照
  199.                           guang=1234;
  200.                           write(0,0x93);
  201.                           write(1,0x30+guang/10000);
  202.                           write(1,0x30+guang/1000%10);
  203.                           write(0,0x94);
  204.                           write(1,0x30+guang/100%10);
  205.                           write(1,0x30+guang/10%10);
  206.                           write(0,0x95);
  207.                           write(1,0x30+guang%10);
  208.                            write(1,0x30);
  209.                           write(0,0x96);
  210.                           write(1,0x20);
  211.                           write(1,0x4c);
  212.                           write(0,0x97);
  213.                           write(1,0x78);
  214.                                  }
  215.                 void display2()
  216.     {
  217.                         write(0,0x01);
  218.                         english(2,1,15,table4);//风速
  219.                         fengsu=1230;
  220.                         write(0,0x93);
  221.                         write(1,0x30+fengsu/1000);
  222.                         write(1,0x30+fengsu/100%10);
  223.                         write(0,0x94);                        
  224.                         write(1,0x2e);
  225.                         write(1,0x30+fengsu/10%10);
  226.                         write(0,0x95);
  227.                         write(1,0x30+fengsu%10);
  228.                         write(0,0x96);
  229.                         write(1,0x6d);
  230.                         write(1,0x2f);
  231.                         write(0,0x97);
  232.                         write(1,0x73);
  233.                         english(4,1,15,table5);//风向
  234.                         fengxiang=1800;
  235.                         write(0,0x9b);
  236.                         write(1,0x30+fengxiang/1000);
  237.                         write(1,0x30+fengxiang/100%10);
  238.                         write(0,0x9c);
  239.                         write(1,0x30+fengxiang/10%10);
  240.                         write(1,0x2e);
  241.                         write(0,0x9d);
  242.                         write(1,0x30+fengxiang%10);
  243.                         write(0,0x9e);
  244.                         write(1,0xa1);
  245.                         write(1,0xe3);
  246.                                  }
  247.                 void display3()
  248.     {
  249.                         write(0,0x01);
  250.                         english(2,1,15,table6);//空气温度
  251.                         wendu=120;
  252.                         //wendu=0xfff0;
  253.                         if(wendu<8000)
  254.                                 {
  255.          write(0,0x93);
  256.                            write(1,0x30+wendu/100);
  257.                                  write(1,0x30+wendu/10%10);
  258.                            write(0,0x94);
  259.                            write(1,0x2e);
  260.                                  write(1,0x30+wendu%10);
  261.                                  write(0,0x96);
  262.                                  write(1,0xa1);
  263.                                  write(1,0xe6);
  264.                                 }
  265.                         if(wendu>=8000)
  266.                                 {
  267.                                  wendu1=0xffff-wendu+1;
  268.                                  write(0,0x93);
  269.                                  write(1,0x2d);
  270.                            write(1,0x30+wendu1/100);
  271.                                  write(0,0x94);
  272.                                  write(1,0x30+wendu1/10%10);
  273.                            write(1,0x2e);
  274.                                  write(0,0x95);
  275.                                  write(1,0x30+wendu1%10);
  276.                                  write(1,0x20);
  277.                                  write(0,0x96);
  278.                                  write(1,0xa1);
  279.                                  write(1,0xe6);
  280.                                 }
  281.                         english(4,1,15,table7);//空气湿度
  282.                                 shidu=120;
  283.                                 write(0,0x9b);
  284.                                 write(1,0x30+shidu/100);
  285.                                 write(1,0x30+shidu/10%10);
  286.                                 write(0,0x9c);
  287.                                 write(1,0x2e);
  288.                                 write(1,0x30+shidu%10);
  289.                                 write(0,0x9e);
  290.                                 write(1,0xa3);
  291.                                 write(1,0xa5);
  292.                                  }
  293.                 void display4()
  294.     {
  295.                         write(0,0x01);
  296.                   english(2,1,15,table8);//土壤温度
  297.                         //tuwen=120;
  298.                         tuwen=0xfff0;
  299.                         if(shidu<8000)
  300.                                 {
  301.          write(0,0x93);
  302.                            write(1,0x30+tuwen/100);
  303.                                  write(1,0x30+tuwen/10%10);
  304.                            write(0,0x94);
  305.                            write(1,0x2e);
  306.                                  write(1,0x30+tuwen%10);
  307.                                  write(0,0x96);
  308.                                  write(1,0xa1);
  309.                                  write(1,0xe6);
  310.                                 }
  311.                         if(tuwen>=8000)
  312.                                 {
  313.                                  tuwen1=0xffff-tuwen+1;
  314.                                  write(0,0x93);
  315.                                  write(1,0x2d);
  316.                            write(1,0x30+tuwen1/100);
  317.                                  write(0,0x94);
  318.                                  write(1,0x30+tuwen1/10%10);
  319.                            write(1,0x2e);
  320.                                  write(0,0x95);
  321.                                  write(1,0x30+tuwen1%10);
  322.                                  write(1,0x20);
  323.                                  write(0,0x96);
  324.                                  write(1,0xa1);
  325.                                  write(1,0xe6);
  326.                                 }
  327.       english(4,1,15,table9);//土壤湿度
  328.                                 tushi=210;
  329.                                 write(0,0x9b);
  330.                                 write(1,0x30+tushi/100);
  331.                                 write(1,0x30+tushi/10%10);
  332.                                 write(0,0x9c);
  333.                                 write(1,0x2e);
  334.                                 write(1,0x30+tushi%10);
  335.                                 write(0,0x9e);
  336.                                 write(1,0xa3);
  337.                                 write(1,0xa5);
  338.                                  }
  339.                 void display5()
  340.     {
  341.                         write(0,0x01);
  342.                          english(1,1,15,table19);
  343.                          english(2,1,15,table10);//小时雨量
  344.                          yu_shi=120;
  345.                          write(0,0x92);
  346.                          write(1,0x30+yu_shi/100);
  347.                          write(1,0x30+yu_shi/10%10);
  348.                          write(0,0x93);
  349.                          write(1,0x2e);
  350.                          write(1,0x30+yu_shi%10);
  351.                          write(0,0x95);
  352.                          write(1,0x6d);
  353.                          write(1,0x6d);
  354.                          english(4,1,15,table11);//天雨量
  355.                          yu_tian=2100;
  356.                          write(0,0x9a);
  357.                          write(1,0x30+yu_tian/1000);
  358.                          write(1,0x30+yu_tian/100%10);
  359.                          write(0,0x9b);
  360.                          write(1,0x30+yu_tian/10%10);
  361.                          write(1,0x2e);
  362.                          write(0,0x9c);
  363.                          write(1,0x30+yu_tian%10);
  364.                          write(1,0x20);
  365.                          write(0,0x9d);
  366.                          write(1,0x6d);
  367.                          write(1,0x6d);
  368.                                  }
  369.                 void display6()
  370.     {
  371.                         write(0,0x01);
  372.                          english(1,1,15,table19);
  373.                          english(2,1,15,table12);//月雨量
  374.                          yu_yue=11110;
  375.                          write(0,0x92);
  376.                          write(1,0x30+yu_yue/10000);
  377.                          write(1,0x30+yu_yue/1000%10);
  378.                          write(0,0x93);
  379.                          write(1,0x30+yu_yue/100%10);
  380.                          write(1,0x30+yu_yue/10%10);
  381.                          write(0,0x94);
  382.                          write(1,0x2e);
  383.                          write(1,0x30+yu_yue%10);
  384.                          write(0,0x96);
  385.                          write(1,0x6d);
  386.                          write(1,0x6d);
  387.                          english(4,1,15,table13);//年雨量
  388.                          yu_nian=201422;
  389.                          write(0,0x9a);
  390.                          write(1,0x30+yu_nian/100000);
  391.                          write(1,0x30+yu_nian/10000%10);
  392.                          write(0,0x9b);
  393.                          write(1,0x30+yu_nian/1000%10);
  394.                          write(1,0x30+yu_nian/100%10);
  395.                          write(0,0x9c);
  396.                          write(1,0x30+yu_nian/10%10);
  397.                          write(1,0x2e);
  398.                          write(0,0x9d);
  399.                          write(1,0x30+yu_nian%10);
  400.                          write(0,0x9f);
  401.                          write(1,0x6d);
  402.                          write(1,0x6d);
  403.                                  }

  404.                 void display1_1()
  405.     {
  406.                         write(0,0x01);
  407.                         english(1,1,15,table3);//光照
  408.                         english(2,1,15,table15);//上限
  409.                         english(3,1,15,table14);//下限
  410.                                  }
  411.                 void display1_2()
  412.     {
  413.                         write(0,0x01);
  414.                         english(1,1,15,table4);//风速
  415.                         english(2,1,15,table15);//上限
  416.                                  }
  417.                
  418.                 void display1_3()
  419.     {
  420.                         write(0,0x01);
  421.                         english(1,1,15,table6);//空气温度
  422.                          english(2,1,15,table15);//上限
  423.                         english(3,1,15,table14);//下限
  424.                                  }
  425.                 void display1_4()
  426.     {
  427.                         write(0,0x01);
  428.                         english(1,1,15,table7);//空气湿度
  429.                         english(2,1,15,table15);//上限
  430.                          english(3,1,15,table14);//下限
  431.                                  }
  432.                 void display1_5()
  433.     {
  434.                         write(0,0x01);
  435.                         english(1,1,15,table8);//土壤温度
  436.                          english(2,1,15,table15);//上限
  437.                         english(3,1,15,table14);//下限
  438.                                  }
  439.                 void display1_6()
  440.     {
  441.                         write(0,0x01);
  442.                         english(1,1,15,table9);//土壤湿度
  443.                          english(2,1,15,table15);//上限
  444.                          english(3,1,15,table14);//下限
  445.                                  }
  446.                 void display1_7()
  447.     {
  448.                         write(0,0x01);
  449.                         english(1,1,15,table19);//小时降雨
  450.                         english(2,1,15,table10);//小时降雨
  451.                          english(3,1,15,table15);//上限
  452.                                  }
  453.                 void display1_8()
  454.                 {
  455.                 write(0,0x01);
  456.                 english(2,1,15,table20);//设置成功
  457.                 }
  458.                 void anjian_wan()
  459.                 {
  460.                  if(key3==0)
  461.                         {
  462.                           delay_ms(50);        
  463.                           if(key3==0)
  464.                                         {
  465.                                                 if(wan<9)
  466.                                                         {
  467.                                        wan++;
  468.                                  }
  469.                        }                     
  470.                                   while(!key3);
  471.                         }
  472.                  if(key2==0)
  473.                         {
  474.                          delay_ms(50);        
  475.                            if(key2==0)
  476.                                                 {
  477.                                                 if(wan>0)
  478.                                                     {
  479.                                          wan--;
  480.                                    }
  481.                               }
  482.                   while(!key2);
  483.                          }
  484.                 }
  485.                 void anjian_qian()
  486.                 {
  487.                 if(key3==0)
  488.                         {
  489.                          delay_ms(50);        
  490.                           if(key3==0)
  491.                                         {
  492.                                                 if(qian<9)
  493.                                                         {
  494.                                        qian++;
  495.                                  }
  496.                              }
  497.                                         while(!key3);
  498.                                 }
  499.                  if(key2==0)
  500.                                 {
  501.                           delay_ms(50);        
  502.                            if(key2==0)
  503.                                                 {
  504.                                                   if(qian>0)
  505.                                                                 {
  506.                                          qian--;
  507.                                   }
  508.                   }               
  509.                 while(!key2);
  510.                                 }
  511.                 }
  512. void anjian_bai()
  513.                 {
  514.                 if(key3==0)
  515.                         {
  516.                          delay_ms(50);        
  517.                           if(key3==0)
  518.                                         {
  519.                                                 if(bai<9)
  520.                                                         {
  521.                                        bai++;
  522.                                  }
  523.                              }
  524.                 while(!key3);
  525.                                 }
  526.                  if(key2==0)
  527.                                 {
  528.                           delay_ms(50);        
  529.                            if(key2==0)
  530.                                                 {
  531.                                                   if(bai>0)
  532.                                                                 {
  533.                                          bai--;
  534.                                   }
  535.                   }                             
  536.           while(!key2);
  537.                                 }
  538.                 }
  539.                 void anjian_shi()
  540.                 {
  541.                 if(key3==0)
  542.                         {
  543.                          delay_ms(50);        
  544.                           if(key3==0)
  545.                                         {
  546.                                                 if(shi<9)
  547.                                                         {
  548.                                        shi++;
  549.                                  }
  550.                              }
  551.                  while(!key3);
  552.                                 }
  553.                  if(key2==0)
  554.                                 {
  555.                           delay_ms(50);        
  556.                            if(key2==0)
  557.                                                 {
  558.                                                   if(shi>0)
  559.                                                                 {
  560.                                          shi--;
  561.                                   }
  562.                               }
  563.                  while(!key2);
  564.                                 }
  565.                 }
  566.                 void anjian_ge()
  567.                 {
  568.                 if(key3==0)
  569.                         {
  570.                          delay_ms(50);        
  571.                           if(key3==0)
  572.                                         {
  573.                                                 if(ge<9)
  574.                                                         {
  575.                                        ge++;
  576.                                  }
  577.                              }
  578.                  while(!key3);
  579.                                 }
  580.                  if(key2==0)
  581.                                 {
  582.                           delay_ms(50);        
  583.                            if(key2==0)
  584.                                                 {
  585.                                                   if(ge>0)
  586.                                                                 {
  587.                                          ge--;
  588.                                   }
  589.                              }
  590.                 while(!key2);  
  591.                                 }
  592.                 }
  593.                 void anjian_fuhao()
  594.                 {
  595.                 if((key3==0)||(bai==0))
  596.                         {
  597.                         delay_ms(50);
  598.                                         if((key3==0)||(bai==0))
  599.                                                         {
  600.                                                         bai=0x2b;
  601.                                                   }
  602.                                         while(!key3);
  603.                         }
  604.                 if(key2==0)
  605.                         {
  606.                         delay_ms(50);
  607.                           if(key2==0)
  608.            {
  609.                                                 bai=0x2d;
  610.                                                 }
  611.                                 while(!key2);
  612.                         }
  613.                 }
  614.                
  615. void main()
  616. {
  617.         lcd_init();
  618. //fanbai(0x00,0x00,0x80,0x80,16,32);   //上电清空图片缓存
  619. //lcd_init();
  620. display_start();
  621. while(1){
  622.          //key1确认键
  623.                   if(key1==0)
  624.                  {
  625.                         delay_ms(50);
  626.                            if(key1==0)
  627.                                 {                  
  628.                                                 if(c<2)
  629.                                                 {
  630.                                                 c++;      
  631.                                                 }
  632.                                                 if((c==1)&&(b==0))
  633.                                                 {
  634.                                                 display_menu();
  635.                                                 zhishi(1);
  636.                                                 b=1;
  637.                                                 }
  638.                                 }        
  639.                          while(!key1);
  640.                  }
  641.                  //key4返回键
  642.                 if(key4==0)
  643.                 {
  644.                 delay_ms(50);
  645.                                 if(key4==0)
  646.                                 {
  647.                                 yi=er=san=si=0;
  648.                                 write(0,0x0c);          //关闭光标显示
  649.                                 b=0;
  650.                                 e=0;
  651.                           f=0;
  652.                                 fanye2=0;
  653.                                      if(c>0)
  654.                                                  {
  655.                                                         c--;                  
  656.                                                  }
  657.                                                  if(c==1)
  658.                                                  {
  659.                                                         display_menu();
  660.                                                         zhishi(1);
  661.                                                         b=1;
  662.                                                         }
  663.                                                  if(c==0)
  664.                                                  {
  665.                                                   fanye=0;
  666.                                                         display_start();
  667.                                                  }
  668.                                         }        
  669.          while(!key4);
  670.                         }
  671.                  
  672. //按键翻页
  673.               if(c==0)
  674.                                 {                            //一级界面
  675.                  if(key3==0)
  676.                                          {
  677.                        delay_ms(50);
  678.                           if(key3==0) //key3向右翻页
  679.                                                         {
  680.                                        fanye++;
  681.                                     if(fanye>6)
  682.                                                                         {
  683.                                                  fanye=6;
  684.                                                                         }
  685.                                                         }
  686.                                 while(!key3);
  687.                                                         if(fanye==1){display1();delay_ms(50);}
  688.                                 if(fanye==2){display2();delay_ms(50);}
  689.                                 if(fanye==3){display3();delay_ms(50);}
  690.                                                         if(fanye==4){display4();delay_ms(50);}
  691.                                 if(fanye==5){display5();delay_ms(50);}
  692.                                 if(fanye==6){display6();delay_ms(50);}
  693.                         }
  694.                              if(key2==0)
  695.                                           {
  696.                                    delay_ms(50);
  697.                                        if(key2==0)  //key2向左翻页
  698.                                                          {      
  699.                                              fanye--;
  700.                                                  if(fanye<1)
  701.                                                                          {
  702.                                            fanye=1;
  703.                                                                          }
  704.                                                                 }
  705.                                   while(!key2);
  706.                if(fanye==6){display6();delay_ms(50);}
  707.                                  if(fanye==5){display5();delay_ms(50);}
  708.                                                          if(fanye==4){display4();delay_ms(50);}
  709.                if(fanye==3){display3();delay_ms(50);}
  710.                                        if(fanye==2){display2();delay_ms(50);}
  711.                                        if(fanye==1){display1();delay_ms(50);}
  712.                         }
  713.                                 
  714.              }
  715. //************菜单**************************/
  716.                                                   if(c==1)
  717.                                                         {
  718.                                                                   if(key3==0)
  719.                                                                         {                              
  720.                               delay_ms(50);
  721.                                   if(key3==0)
  722.                                                                                         {
  723.                                                                                                   if(b<2)
  724.                                                                                                         {
  725.                                                    b++;
  726.                                                                                                         }
  727.                                                                                         }
  728.                                                                                         while(!key3);
  729.                                                                                         if(b==1){display_menu();zhishi(1);delay_ms(50);}
  730.                                                                                         if(b==2){display_menu();zhishi(2);delay_ms(50);}
  731.                     /*  if(b==3){display_menu();zhishi(3);delay_ms(50);}
  732.                       if(b==4){display_menu();zhishi(4);delay_ms(50);}
  733.                       if(b==5){display_menu2();zhishi(1);delay_ms(50);}
  734.                       if(b==6){display_menu2();zhishi(2);delay_ms(50);}
  735.                       if(b==7){display_menu2();zhishi(3);delay_ms(50);}        */                                                                                       
  736.                                                                                 }
  737.                                                               if(key2==0)
  738.                                                                                 {
  739.                                  delay_ms(50);
  740.                                      if(key2==0)
  741.                                                                                                  {
  742.                                                                                                                  if(b>1)
  743.                                                                                                                  {
  744.                                                      b--;
  745.                                                                                                                  }
  746.                                                                                                         }
  747.                                                                                                          while(!key2);
  748.                                                                                                  if(b==1){display_menu();zhishi(1);delay_ms(50);}
  749.                                                                                                  if(b==2){display_menu();zhishi(2);delay_ms(50);}
  750.                         /* if(b==3){display_menu();zhishi(3);delay_ms(50);}
  751.                          if(b==4){display_menu();zhishi(4);delay_ms(50);}        
  752.                          if(b==5){display_menu2();zhishi(1);delay_ms(50);}
  753.                          if(b==6){display_menu2();zhishi(2);delay_ms(50);}        
  754.                          if(b==7){display_menu2();zhishi(3);delay_ms(50);}        */                                                                                                
  755.                                                                                  }
  756.                                                                         
  757.                                          }
  758.                                                     if((b==1)&&(key1==0))       //实时数据查看
  759.                                                                  {
  760.                              delay_ms(50);
  761.                                   if(key1==0)
  762.                                                                                         {
  763.                                                                                          b=0;
  764.                                                                                          c=0;                                                                                                                                       
  765.                                                                                          fanye=1;
  766.                                                                                          display1();
  767.                                                                                         }
  768.                                                                                         while(!key1);
  769.                                                                  }
  770.                                         if((b==2)&&(e==0))
  771.                                                                  {
  772.                                                                                                         if(key1==0)
  773.                                                                                                         {
  774.                                                                                                         delay_ms(50);
  775.                                                   if(key1==0)
  776.                                                                                                                                 {
  777.                                                                                                                                 display_mima();         //输入密码:1425
  778.                                                                                                                                 write(0,0x0f);          //打开光标显示
  779.                                                                                                                                 write(0,0x8a);
  780.                                                                                                                                 e=1;
  781.                                                                                                                           c=2;
  782.                                                                                                                                 delay_ms(50);  
  783.                                                                                                                                 }
  784.                                                                                                                          while(!key1);
  785.                                                                                                    }
  786.                                                                                 }
  787.                                                                                 if(e==1)
  788.                                                                                   {
  789.                                                                                                         if(key3==0)
  790.                                                                                                         {
  791.                                             delay_ms(50);        
  792.                                                 if(key3==0)
  793.                                                                                                                         {
  794.                                                                                                                       if(yi<9)
  795.                                                                                                                                         {
  796.                                                           yi++;
  797.                                                     }
  798.                                                 }
  799.                                     while(!key3);
  800.                                                                                                         }
  801.                                                                                              if(key2==0)
  802.                                                                                                         {
  803.                                             delay_ms(50);        
  804.                                                  if(key2==0)
  805.                                                                                                                          {
  806.                                                                                                                         if(yi>0)
  807.                                                                                                                                                 {
  808.                                                              yi--;
  809.                                                       }
  810.                                                  }
  811.                                      while(!key2);
  812.                                                                                                         }
  813.                                             write(0,0x8a);
  814.                                             write(1,0x30+yi);
  815.                                                                                                         delay_ms(50);
  816.                           if(key1==0)
  817.                                                                                                         {
  818.                                                                                                         delay_ms(50);
  819.                                                                                                                         if(key1==0)
  820.                                                                                                                         {
  821.                                                                                                                   write(0,0x8b);
  822.                                                                                                                         delay_ms(50);
  823.                                                                                                                         e=2;
  824.                                                                                                                         }
  825.                                                                                                         while(!key1);               
  826.                                                                                                         }                                                                                                                                 
  827.                                                                                          }
  828.                                                                                  if(e==2)
  829.                                                                                          {
  830.                                                                                                         if(key3==0)
  831.                                                                                                         {
  832.                                             delay_ms(50);        
  833.                                                 if(key3==0)
  834.                                                                                                                         {                                 
  835.                                                                                                                         if(er<9)
  836.                                                                                                                                                 {
  837.                                                             er++;
  838.                                                       }
  839.                                                }
  840.                                    while(!key3);
  841.                                                                                                          }
  842.                                             if(key2==0)
  843.                                                                                                          {
  844.                                               delay_ms(50);        
  845.                                                   if(key2==0)
  846.                                                                                                                                 {
  847.                                                             if(er>0)
  848.                                                                                                                                                 {
  849.                                                              er--;
  850.                                                        }
  851.                                                   }
  852.                                       while(!key2);
  853.                                                                                                                 }
  854.                                               write(0,0x8b);
  855.                                               write(1,0x30+er);
  856.                                                                                                                 delay_ms(50);
  857.                                   if(key1==0)
  858.                                                                                                                 {
  859.                                                                                                                 delay_ms(50);
  860.                                                                                                                                         if(key1==0)
  861.                                                                                                                                         {
  862.                                                                                                                                         write(0,0x8c);
  863.                                                                                                                                         delay_ms(50);
  864.                                                                                                                                         e=3;
  865.                                                                                                                                  }
  866.                                                                                                                 while(!key1);
  867.                                                                                                                 }                                                                                                                                                         
  868.                                                                                                  }
  869.                                                                                                 if(e==3)
  870.                                                                                                  {
  871.                                                                                                                 if(key3==0)
  872.                                                                                                                 {
  873.                                                   delay_ms(50);        
  874.                                                   if(key3==0)
  875.                                                                                                                                 {
  876.                                                                                                                          if(san<9)
  877.                                                                                                                                                  {
  878.                                                               san++;
  879.                                                         }
  880.                                                    }   
  881.                                       while(!key3);
  882.                                                                                                                 }
  883.                                                                                                         if(key2==0)
  884.                                                                                                                 {
  885.                                                delay_ms(50);        
  886.                                                    if(key2==0)
  887.                                                                                                                                  {
  888.                                                                                                                            if(san>0)
  889.                                                                                                                                                         {
  890.                                                                san--;
  891.                                                         }
  892.                                                   }
  893.                                       while(!key2);  
  894.                                                                                                                 }
  895.                                               write(0,0x8c);
  896.                                               write(1,0x30+san);
  897.                                                                                                                 delay_ms(50);
  898.                             if(key1==0)
  899.                                                                                                                 {
  900.                                                                                                                  delay_ms(50);
  901.                                                                                                                                 if(key1==0)
  902.                                                                                                                                 {
  903.                                                                                                                                 write(0,0x8d);
  904.                                                                                                                                 delay_ms(50);
  905.                                                                                                                                 e=4;
  906.                                                                                                                                 }
  907.                                                                                                                 while(!key1);
  908.                                                                                                                 }
  909.                                                                                                  }
  910.                                                                                                  if(e==4)
  911.                                                                                                  {
  912.                                                                                                                 if(key3==0)
  913.                                                                                                                 {
  914.                                                delay_ms(50);        
  915.                                                  if(key3==0)
  916.                                                                                                                    {
  917.                                                                                                                         if(si<9)
  918.                                                                                                                                     {
  919.                                                             si++;
  920.                                                       }
  921.                                                  }
  922.                                     while(!key3);
  923.                                                                                                                 }
  924.                                                                                                                 if(key2==0)
  925.                                                                                                                 {
  926.                                                delay_ms(50);        
  927.                                                    if(key2==0)
  928.                                                                                                                                  {
  929.                                                                                                                           if(si>0)
  930.                                                                                                                                                         {
  931.                                                               si--;
  932.                                                         }
  933.                                                    }
  934.                                       while(!key2);
  935.                                                                                                                 }
  936.                                                 write(0,0x8d);
  937.                                                 write(1,0x30+si);
  938.                                                                                                                         delay_ms(50);
  939.                             if(key1==0)
  940.                                                                                                                 {
  941.                                                                                                                         delay_ms(50);
  942.                                                                                                                                         if(key1==0)
  943.                                                                                                                                         {
  944.                                                                                                                                          write(0,0x0c);          //关闭光标显示
  945.                                                                                                                                                 if((yi==1)&&(er==4)&&(san==2)&&(si==5))//密码:1425
  946.                                                                                                                                                         {
  947.                                                                                                                                                         e=5;
  948.                                                                                                                                                         }
  949.                                                                                                                                                         if((yi!=1)||(er!=4)||(san!=2)||(si!=5))
  950.                                                                                                                                                         {
  951.                                                                                                                                                          display_error();   //密码错误
  952.                                                                                                                                                          delay_ms(3000);
  953.                                                                                                                                                          display_mima();
  954.                                                                                                                                                          write(0,0x0f); //打开光标显示
  955.                                                                                                                                                          write(0,0x8a);
  956.                                                                                                                                                          delay_ms(50);
  957.                                                                                                                                                          yi=er=san=si=0;
  958.                                                                                                                                                          e=1;
  959.                                                                                                                                                          }
  960.                                                                                                                                          }
  961.                                                                                                                         while(!key1);
  962.                                                                                                                 }                                                                                                                                                         
  963.                                                                                                 }
  964.                                                                                                 if((e==5)&&(fanye2==0))
  965.                                                                                                 {
  966.                                                                                                                 if((b==2)&&(key1==0))        //上下限设置
  967.                                                                                                                 {         
  968.                                                delay_ms(50);
  969.                                             if(key1==0)
  970.                                                                                                               {
  971.                                                                                                                                  fanye2=1;
  972.                                                                                                                                  f=1;
  973.                                                                                                                                  display1_1();
  974.                                                                                                                                  write(0,0x93);
  975.                                                    write(1,0x30+guang_shang/10000);
  976.                                                                                                                                  write(0,0x94);
  977.                                                    write(1,0x30+guang_shang/1000%10);
  978.                                                    write(0,0x95);
  979.                                                    write(1,0x30+guang_shang/100%10);
  980.                                                                                                                                  write(0,0x96);
  981.                                                    write(1,0x30+guang_shang/10%10);
  982.                                                    write(0,0x97);
  983.                                                    write(1,0x30+guang_shang%10);
  984.                                                                                                                                  write(0,0x8b);
  985.                                                    write(1,0x30+guang_xia/10000);
  986.                                                                                                                                  write(0,0x8c);
  987.                                                    write(1,0x30+guang_xia/1000%10);
  988.                                                    write(0,0x8d);
  989.                                                    write(1,0x30+guang_xia/100%10);
  990.                                                                                                                                  write(0,0x8e);
  991.                                                    write(1,0x30+guang_xia/10%10);
  992.                                                    write(0,0x8f);
  993.                                                    write(1,0x30+guang_xia%10);
  994.                                                                                                                                  write(0,0x0f);         //打开光标显示
  995.                                                                                                                                  write(0,0x93);
  996.                                                                                                                                 }
  997.                                                                                                                                 while(!key1);
  998.                                                                                                           }
  999.                                                                                                 }
  1000.                                                                                                 if(fanye2==1)             //光照
  1001.                                                                                                 {
  1002.                                                                                                      if(f==1)           //光照上限万位
  1003.                                                                                                      {     
  1004.                                                                                                                           if(g==0)
  1005.                                                                                                                                   {
  1006.                                                                                                                             wan=guang_shang/10000;
  1007.                                                                                                                                         g=1;
  1008.                                                                                                                             }
  1009.                                                                                                                              anjian_wan();
  1010.                                                                                                                                          write(0,0x93);
  1011.                                                                                                                                          write(1,0x30+wan);
  1012.                                                                                                                      if(key1==0)
  1013.                                                                                                                        {
  1014.                                                      delay_ms(50);
  1015.                                                     if(key1==0)
  1016.                                                                                                                                               {
  1017.                                                                                                                                          write(0,0x94);
  1018.                                                                        f=2;
  1019.                                                                                                                                                                  g=0;
  1020.                                                                                                                                         }
  1021.                                                           while(!key1);
  1022.                                                                                                            }
  1023.                                                                                                                         }
  1024.                                                                                                                  if(f==2)            //光照上限千位
  1025.                                                                                                                  {     
  1026.                                                                                                                          if(g==0)
  1027.                                                                                                                                  {
  1028.                                                                                                                             qian=guang_shang/1000%10;
  1029.                                                                                                                                          g=1;
  1030.                                                                                                                             }
  1031.                                                                                                                              anjian_qian();
  1032.                                                                                                                                          write(0,0x94);
  1033.                                                                                                                                          write(1,0x30+qian);
  1034.                                                                                                                        if(key1==0)
  1035.                                                                                                                        {
  1036.                                                      delay_ms(50);
  1037.                                                     if(key1==0)
  1038.                                                                                                                                               {
  1039.                                                                                                                                          write(0,0x95);
  1040.                                                                        f=3;
  1041.                                                                                                                                                                  g=0;
  1042.                                                                                                                                         }
  1043.                                                          while(!key1);
  1044.                                                                                                            }
  1045.                                                                                                                         }
  1046.                                                                                                                  if(f==3)        //光照上限百位
  1047.                                                                                                                  {
  1048.                                                                                                                          if(g==0)
  1049.                                                                                                                                  {
  1050.                                                                                                                             bai=guang_shang/100%10;
  1051.                                                                                                                                          g=1;
  1052.                                                                                                                             }
  1053.                                                                                                                              anjian_bai();
  1054.                                                                                                                                          write(0,0x95);
  1055.                                                                                                                                          write(1,0x30+bai);
  1056.                                                                                                                        if(key1==0)
  1057.                                                                                                                        {
  1058.                                                      delay_ms(50);
  1059.                                                     if(key1==0)
  1060.                                                                                                                                               {
  1061.                                                                                                                                          write(0,0x96);
  1062.                                                                        f=4;
  1063.                                                                                                                                                                  g=0;
  1064.                                                                                                                                         }
  1065.                                                          while(!key1);
  1066.                                                                                                            }
  1067.                                                                                                                         }
  1068.                                                                                                                  if(f==4)           //光照上限十位
  1069.                                                                                                                  {
  1070.                                                                                                                          if(g==0)
  1071.                                                                                                                                  {
  1072.                                                                                                                             shi=guang_shang/10%10;
  1073.                                                                                                                                          g=1;
  1074.                                                                                                                             }
  1075.                                                                                                                              anjian_shi();
  1076.                                                                                                                                          write(0,0x96);
  1077.                                                                                                                                          write(1,0x30+shi);
  1078.                                                                                                                        if(key1==0)
  1079.                                                                                                                        {
  1080.                                                      delay_ms(50);
  1081.                                                     if(key1==0)
  1082.                                                                                                                                               {
  1083.                                                                                                                                          write(0,0x97);
  1084.                                                                        f=5;
  1085.                                                                                                                                                                  g=0;
  1086.                                                                                                                                          }
  1087.                                                          while(!key1);
  1088.                                                                                                            }
  1089.                                                                                                                         }
  1090.                                                                                                                  if(f==5)      //光照上限个位
  1091.                                                                                                                  {     
  1092.                                                                                                                          if(g==0)
  1093.                                                                                                                                  {
  1094.                                                                                                                             ge=guang_shang%10;
  1095.                                                                                                                                          g=1;
  1096.                                                                                                                             }
  1097.                                                                                                                              anjian_ge();
  1098.                                                                                                                                          write(0,0x97);
  1099.                                                                                                                                          write(1,0x30+ge);
  1100.                                                                                                                        if(key1==0)
  1101.                                                                                                                        {
  1102.                                                      delay_ms(50);
  1103.                                                     if(key1==0)
  1104.                                                                                                                                               {
  1105.                                                                                                                                                                 guang_shang=wan*10000+qian*1000+bai*100+shi*10+ge;//光照上限
  1106.                                                                                                                                                                         
  1107.                                                                                                                                                                  wan=qian=bai=shi=ge=0;
  1108.                                                                                                                                          write(0,0x8b);
  1109.                                                                        f=6;
  1110.                                                                                                                                                                  g=0;
  1111.                                                                                                                                         }
  1112.                                                          while(!key1);
  1113.                                                                                                            }
  1114.                                                                                                                         }
  1115.                                                                                                                  if(f==6)         //光照下限万位
  1116.                                                                                                                  {
  1117.                                                                                                                            if(g==0)
  1118.                                                                                                                                   {
  1119.                                                                                                                             wan=guang_xia/10000;
  1120.                                                                                                                                         g=1;
  1121.                                                                                                                             }
  1122.                                                                                                                            anjian_wan();
  1123.                                                                                                                                  write(0,0x8b);
  1124.                                                                                                                            write(1,0x30+wan);
  1125.                                                                                                                                  if(key1==0)
  1126.                                   {
  1127.                                                      delay_ms(50);
  1128.                                                     if(key1==0)
  1129.                                                                                                                                               {
  1130.                                                                                                                                          write(0,0x8c);
  1131.                                                                        f=7;
  1132.                                                                                                                                                                  g=0;
  1133.                                                                                                                                          }
  1134.                                                          while(!key1);
  1135.                                                                                                                                   }
  1136.                                                                                                                   }
  1137.                                                                                                                   if(f==7)        //光照下限千位
  1138.                                                                                                                   {
  1139.                                                                                                                                  if(g==0)
  1140.                                                                                                                                   {
  1141.                                                                                                                             qian=guang_xia/1000%10;
  1142.                                                                                                                                         g=1;
  1143.                                                                                                                             }
  1144.                                                                                                                            anjian_qian();
  1145.                                                                                                                                  write(0,0x8c);
  1146.                                                                                                                            write(1,0x30+qian);
  1147.                                                                                                                                  if(key1==0)
  1148.                                   {
  1149.                                                      delay_ms(50);
  1150.                                                     if(key1==0)
  1151.                                                                                                                                               {
  1152.                                                                                                                                          write(0,0x8d);
  1153.                                                                        f=8;
  1154.                                                                                                                                                                  g=0;
  1155.                                                                                                                                         }
  1156.                                                         while(!key1);
  1157.                                                                                                                                   }
  1158.                                                                                                                   }
  1159.                                                                                                                  if(f==8)          //光照下限百位
  1160.                                                                                                                  {
  1161.                                                                                                                            if(g==0)
  1162.                                                                                                                                   {
  1163.                                                                                                                             bai=guang_xia/100%10;
  1164.                                                                                                                                         g=1;
  1165.                                                                                                                             }
  1166.                                                                                                                            anjian_bai();
  1167.                                                                                                                                  write(0,0x8d);
  1168.                                                                                                                            write(1,0x30+bai);
  1169.                                                                                                                                  if(key1==0)
  1170.                                   {
  1171.                                                      delay_ms(50);
  1172.                                                     if(key1==0)
  1173.                                                                                                                                               {
  1174.                                                                                                                                          write(0,0x8e);
  1175.                                                                        f=9;
  1176.                                                                                                                                                                  g=0;
  1177.                                                                                                                                         }
  1178.                                                         while(!key1);
  1179.                                                                                                                                   }
  1180.                                                                                                                   }
  1181.                                                                                                                  if(f==9)         //光照下限十位
  1182.                                                                                                                  {
  1183.                                                                                                                                               //标志位g
  1184.                                                                                                                            anjian_shi();
  1185.                                                                                                                                  write(0,0x8e);
  1186.                                                                                                                            write(1,0x30+shi);
  1187.                                                                                                                                  if(key1==0)
  1188.                                   {
  1189.                                                      delay_ms(50);
  1190.                                                     if(key1==0)
  1191.                                                                                                                                               {
  1192.                                                                                                                                          write(0,0x8f);
  1193.                                                                        f=10;
  1194.                                                                                                                                         }
  1195.                                                         while(!key1);  
  1196.                                                                                                                                   }
  1197.                                                                                                                   }
  1198.                                                                                                                  if(f==10)        //光照下限个位
  1199.                                                                                                                  {
  1200.                                                                                                                            anjian_ge();
  1201.                                                                                                                                  write(0,0x8f);
  1202.                                                                                                                            write(1,0x30+ge);
  1203.                                                                                                                                  if(key1==0)
  1204.                                   {
  1205.                                                      delay_ms(50);
  1206.                                                     if(key1==0)
  1207.                                                                                                                                               {
  1208.                                                                                                                                                            guang_xia=wan*10000+qian*1000+bai*100+shi*10+ge;//光照下限
  1209.                                                                                                                                                                  wan=qian=bai=shi=ge=0;
  1210.                                                                                                                                                                  fanye2=2;
  1211.                                                                                                                                                                  write(0,0x0c);     //关闭光标显示
  1212.                                                                                                                                                                  display1_2();           //风速
  1213.                                                                                                                                                                  write(0,0x93);
  1214.                                                            write(1,0x30+feng_shang/10);
  1215.                                                                                                                                          write(0,0x94);
  1216.                                                            write(1,0x30+feng_shang%10);
  1217.                                                                        f=1;
  1218.                                                                                                                                                                  write(0,0x0f);         //打开光标显示
  1219.                                                                                                                                          write(0,0x93);
  1220.                                                                                                                                         }
  1221.                                                           while(!key1);
  1222.                                                                                                                                   }
  1223.                                                                                                                   }
  1224.                                                                                                         }         
  1225.                                                                                                 if(fanye2==2)             //风速
  1226.                          {
  1227.                                                                                                      if(f==1)               //风速上限十位
  1228.                                                                                                                   {
  1229.                                                                                                                       anjian_shi();
  1230.                                                                                                                             write(0,0x93);
  1231.                                                                                                                                         write(1,0x30+shi);
  1232.                                                                                                                                         if(key1==0)
  1233.                                   {
  1234.                                                      delay_ms(50);
  1235.                                                     if(key1==0)
  1236.                                                                                                                                               {
  1237.                                                                                                                                          write(0,0x94);
  1238.                                                                        f=2;
  1239.                                                                                                                                         }
  1240.                                                         while(!key1);
  1241.                                                                                                                                   }
  1242.                                                                                                                   }
  1243.                                                                                                                 if(f==2)            //风速上限个位
  1244.                                                                                                                   {
  1245.                                                                                                                       anjian_ge();
  1246.                                                                                                                             write(0,0x94);
  1247.                                                                                                                                         write(1,0x30+ge);
  1248.                                                                                                                                         if(key1==0)
  1249.                                   {
  1250.                                                      delay_ms(50);
  1251.                                                     if(key1==0)
  1252.                                                                                                                                               {
  1253.                                                                                                                                                                  feng_shang=shi*10+ge;     //风速上限
  1254.                                                                                                                                                                  shi=ge=0;
  1255.                                                                                                                                                                  fanye2=3;
  1256.                                                                                                                                                                  write(0,0x0c);     //关闭光标显示
  1257.                                                                                                                                                                   display1_3();          //温度
  1258.                                                                                                                                                                  write(0,0x94);
  1259.                                                            write(1,0x30+wendu_shang/10);
  1260.                                                                                                                                          write(0,0x95);
  1261.                                                            write(1,0x30+wendu_shang%10);
  1262.                                                                                                                                                                  write(0,0x8c);
  1263.                                                            write(1,0x30+wendu_xia/10);
  1264.                                                                                                                                          write(0,0x8d);
  1265.                                                            write(1,0x30+wendu_xia%10);
  1266.                                                                                                                                                                         
  1267.                                                                                                                                                                  f=1;
  1268.                                                                                                                                                                  write(0,0x0f);         //打开光标显示
  1269.                                                                                                                                          write(0,0x93);
  1270.                                                                                                                                          }
  1271.                                                         while(!key1);
  1272.                                                                                                                                   }
  1273.                                                                                                                  }
  1274.                                                                                                 }
  1275.                                                                                          if(fanye2==3)              //温度
  1276.                                                                                            {
  1277.                                                                                             if(f==1)            //温度上限符号
  1278.                                                                                                     {
  1279.                                                                                                           anjian_fuhao();
  1280.                                                                                                                                         write(0,0x93);
  1281.                                                                                                                                         write(1,bai);
  1282.                                                                                                                                 if(key1==0)
  1283.                                   {
  1284.                                                      delay_ms(50);
  1285.                                                     if(key1==0)
  1286.                                                                                                                                               {
  1287.                                                                                                                                          write(0,0x94);
  1288.                                                                        f=2;
  1289.                                                                                                                                         }
  1290.                                                         while(!key1);
  1291.                                                                                                                                   }
  1292.                                                                                                      }
  1293.                                                                                                                 if(f==2)         //温度上限十位
  1294.                                                                                                                  {
  1295.                                                                                                                       anjian_shi();
  1296.                                                                                                                             write(0,0x94);
  1297.                                                                                                                                         write(1,0x30+shi);
  1298.                                                                                                                                         if(key1==0)
  1299.                                   {
  1300.                                                      delay_ms(50);
  1301.                                                     if(key1==0)
  1302.                                                                                                                                               {
  1303.                                                                                                                                          write(0,0x95);
  1304.                                                                        f=3;
  1305.                                                                                                                                          }
  1306.                                                          while(!key1);
  1307.                                                                                                                                   }
  1308.                                                                                                                  }
  1309.                                                                                                                 if(f==3)            //温度上限个位
  1310.                                                                                                                  {
  1311.                                                                                                                       anjian_ge();
  1312.                                                                                                                             write(0,0x95);
  1313.                                                                                                                                         write(1,0x30+ge);
  1314.                                                                                                                                         if(key1==0)
  1315.                                   {
  1316.                                                      delay_ms(50);
  1317.                                                     if(key1==0)
  1318.                                                                                                                                               {
  1319.                                                                                                                                                                  wendu_shang=shi*10+ge;     //温度上限
  1320.                                                                                                                                                                  bai=shi=ge=0;
  1321.                                                                                                                                          write(0,0x8b);
  1322.                                                                        f=4;
  1323.                                                                                                                                         }
  1324.                                                        while(!key1);
  1325.                                                                                                                                   }
  1326.                                                                                                                  }
  1327.                                 if(f==4)         //温度下限符号
  1328.                                                                                                      {
  1329.                                                                                                           anjian_fuhao();
  1330.                                                                                                                                         write(0,0x8b);
  1331.                                                                                                                                         write(1,bai);
  1332.                                                                                                                                 if(key1==0)
  1333.                                   {
  1334.                                                      delay_ms(50);
  1335.                                                     if(key1==0)
  1336.                                                                                                                                               {
  1337.                                                                                                                                          write(0,0x8c);
  1338.                                                                        f=5;
  1339.                                                                                                                                         }
  1340.                                                         while(!key1);
  1341.                                                                                                                                   }
  1342.                                                                                                      }
  1343.                            if(f==5)            //温度下限十位
  1344.                                                                                                                  {
  1345.                                                                                                                       anjian_shi();
  1346.                                                                                                                             write(0,0x8c);
  1347.                                                                                                                                         write(1,0x30+shi);
  1348.                                                                                                                                         if(key1==0)
  1349.                                   {
  1350.                                                      delay_ms(50);
  1351.                                                     if(key1==0)
  1352.                                                                                                                                               {
  1353.                                                                                                                                          write(0,0x8d);
  1354.                                                                        f=6;
  1355.                                                                                                                                         }
  1356.                                                          while(!key1);
  1357.                                                                                                                                   }
  1358.                                                                                                                  }        
  1359.                                                                                                    if(f==6)             //温度下限个位
  1360.                                                                                                                  {
  1361.                                                                                                                       anjian_ge();
  1362.                                                                                                                             write(0,0x8d);
  1363.                                                                                                                                         write(1,0x30+ge);
  1364.                                                                                                                                         if(key1==0)
  1365.                                   {
  1366.                                                      delay_ms(50);
  1367.                                                     if(key1==0)
  1368.                                                                                                                                               {
  1369.                                                                                                                                                                  wendu_xia=shi*10+ge;     //温度下限
  1370.                                                                                                                                                                  bai=shi=ge=0;
  1371.                                                                        fanye2=4;
  1372.                                                                                                                                                                  write(0,0x0c);     //关闭光标显示
  1373.                                                                                                                                                                  display1_4();       //湿度
  1374.                                                                                                                                                                  write(0,0x93);
  1375.                                                            write(1,0x30+shidu_shang/10);
  1376.                                                                                                                                          write(0,0x94);
  1377.                                                            write(1,0x30+shidu_shang%10);
  1378.                                                                                                                                                                  write(0,0x8b);
  1379.                                                            write(1,0x30+shidu_xia/10);
  1380.                                                                                                                                          write(0,0x8c);
  1381.                                                            write(1,0x30+shidu_xia%10);
  1382.                                                                                                                                                                  f=1;
  1383.                                                                                                                                                                  write(0,0x0f);         //打开光标显示
  1384.                                                                                                                                          write(0,0x93);
  1385.                                                                                                                                          }
  1386.                                                          while(!key1);
  1387.                                                                                                                                   }
  1388.                                                                                                                  }
  1389.                                                                                                 }
  1390.                                                                                         if(fanye2==4)               //湿度
  1391.                                                                                            {
  1392.                                                                                             if(f==1)                 //湿度上限十位
  1393.                                                                                                                  {
  1394.                                                                                                                       anjian_shi();
  1395.                                                                                                                             write(0,0x93);
  1396.                                                                                                                                         write(1,0x30+shi);
  1397.                                                                                                                                         if(key1==0)
  1398.                                   {
  1399.                                                      delay_ms(50);
  1400.                                                     if(key1==0)
  1401.                                                                                                                                               {
  1402.                                                                                                                                          write(0,0x94);
  1403.                                                                        f=2;
  1404.                                                                                                                                         }
  1405.                                                         while(!key1);
  1406.                                                                                                                                   }
  1407.                                                                                                                  }
  1408.                                                                                                                 if(f==2)              //湿度上限个位
  1409.                                                                                                                  {
  1410.                                                                                                                       anjian_ge();
  1411.                                                                                                                             write(0,0x94);
  1412.                                                                                                                                         write(1,0x30+ge);
  1413.                                                                                                                                         if(key1==0)
  1414.                                   {
  1415.                                                      delay_ms(50);
  1416.                                                     if(key1==0)
  1417.                                                                                                                                               {
  1418.                                                                                                                                                                  shidu_shang=shi*10+ge;     //湿度上限
  1419.                                                                                                                                                                  shi=ge=0;
  1420.                                                                                                                                          write(0,0x8b);
  1421.                                                                        f=3;
  1422.                                                                                                                                         }
  1423.                                                         while(!key1);
  1424.                                                                                                                                   }
  1425.                                                                                                                  }
  1426.                            if(f==3)              // 湿度下限十位
  1427.                                                                                                                  {
  1428.                                                                                                                       anjian_shi();
  1429.                                                                                                                             write(0,0x8b);
  1430.                                                                                                                                         write(1,0x30+shi);
  1431.                                                                                                                                         if(key1==0)
  1432.                                   {
  1433.                                                      delay_ms(50);
  1434.                                                     if(key1==0)
  1435.                                                                                                                                               {
  1436.                                                                                                                                          write(0,0x8c);
  1437.                                                                        f=4;
  1438.                                                                                                                                          }
  1439.                                                           while(!key1);
  1440.                                                                                                                                   }
  1441.                                                                                                                  }        
  1442.                                                                                                    if(f==4)                  //湿度下限个位
  1443.                                                                                                                  {
  1444.                                                                                                                       anjian_ge();
  1445.                                                                                                                             write(0,0x8c);
  1446.                                                                                                                                         write(1,0x30+ge);
  1447.                                                                                                                                  if(key1==0)
  1448.                                   {
  1449.                                                      delay_ms(50);
  1450.                                                     if(key1==0)
  1451.                                                                                                                                               {
  1452.                                                                                                                                                                  shidu_xia=shi*10+ge;     //湿度下限
  1453.                                                                                                                                                                  shi=ge=0;
  1454.                                                                                                                                                                  fanye2=5;
  1455.                                                                                                                                                                  write(0,0x0c);     //关闭光标显示
  1456.                                                                                                                                                                  display1_5();          //土温
  1457.                                                                                                                                                                  write(0,0x94);
  1458.                                                            write(1,0x30+tuwen_shang/10);
  1459.                                                                                                                                          write(0,0x95);
  1460.                                                            write(1,0x30+tuwen_shang%10);
  1461.                                                                                                                                                                  write(0,0x8c);
  1462.                                                            write(1,0x30+tuwen_xia/10);
  1463.                                                                                                                                          write(0,0x8d);
  1464.                                                            write(1,0x30+tuwen_xia%10);
  1465.                                                                                                                                                                  write(0,0x0f);         //打开光标显示
  1466.                                                                                                                                          write(0,0x93);
  1467.                                                                                                                                                                  f=1;
  1468.                                                                                                                                          }
  1469.                                                          while(!key1);
  1470.                                                                                                                                   }
  1471.                                                                                                                  }
  1472.                                                                                                 }
  1473.                                                                                          if(fanye2==5)                //土温
  1474.                                                                                           {
  1475.                                                                                             if(f==1)                    //土温上限符号
  1476.                                                                                                     {
  1477.                                                                                                           anjian_fuhao();
  1478.                                                                                                                                         write(0,0x93);
  1479.                                                                                                                                         write(1,bai);
  1480.                                                                                                                                 if(key1==0)
  1481.                                   {
  1482.                                                      delay_ms(50);
  1483.                                                     if(key1==0)
  1484.                                                                                                                                               {
  1485.                                                                                                                                          write(0,0x94);
  1486.                                                                        f=2;
  1487.                                                                                                                                         }
  1488.                                                          while(!key1);
  1489.                                                                                                                                   }
  1490.                                                                                                      }
  1491.                                                                                                                 if(f==2)       //土温上限十位
  1492.                                                                                                                  {
  1493.                                                                                                                       anjian_shi();
  1494.                                                                                                                             write(0,0x94);
  1495.                                                                                                                                         write(1,0x30+shi);
  1496.                                                                                                                                         if(key1==0)
  1497.                                   {
  1498.                                                      delay_ms(50);
  1499.                                                     if(key1==0)
  1500.                                                                                                                                               {
  1501.                                                                                                                                          write(0,0x95);
  1502.                                                                        f=3;
  1503.                                                                                                                                           }
  1504.                                                          while(!key1);
  1505.                                                                                                                                   }
  1506.                                                                                                                  }
  1507.                                                                                                                 if(f==3)           //土温上限个位
  1508.                                                                                                                  {
  1509.                                                                                                                       anjian_ge();
  1510.                                                                                                                             write(0,0x95);
  1511.                                                                                                                                         write(1,0x30+ge);
  1512.                                                                                                                                         if(key1==0)
  1513.                                   {
  1514.                                                      delay_ms(50);
  1515.                                                     if(key1==0)
  1516.                                                                                                                                               {
  1517.                                                                                                                                                                  tuwen_shang=shi*10+ge;     //土温上限
  1518.                                                                                                                                                                  bai=shi=ge=0;
  1519.                                                                                                                                          write(0,0x8b);
  1520.                                                                        f=4;
  1521.                                                                                                                                         }
  1522.                                                         while(!key1);
  1523.                                                                                                                                   }
  1524.                                                                                                                  }
  1525.                                 if(f==4)          //土温下限符号
  1526.                                                                                                      {
  1527.                                                                                                           anjian_fuhao();
  1528.                                                                                                                                         write(0,0x8b);
  1529.                                                                                                                                         write(1,bai);
  1530.                                                                                                                                 if(key1==0)
  1531.                                   {
  1532.                                                      delay_ms(50);
  1533.                                                     if(key1==0)
  1534.                                                                                                                                               {
  1535.                                                                                                                                          write(0,0x8c);
  1536.                                                                        f=5;
  1537.                                                                                                                                          }
  1538.                                                          while(!key1);
  1539.                                                                                                                                   }
  1540.                                                                                                      }
  1541.                            if(f==5)         //土温下限十位
  1542.                                                                                                                  {
  1543.                                                                                                                       anjian_shi();
  1544.                                                                                                                             write(0,0x8c);
  1545.                                                                                                                                         write(1,0x30+shi);
  1546.                                                                                                                                         if(key1==0)
  1547.                                   {
  1548.                                                      delay_ms(50);
  1549.                                                     if(key1==0)
  1550.                                                                                                                                               {
  1551.                                                                                                                                          write(0,0x8d);
  1552.                                                                        f=6;
  1553.                                                                                                                                         }
  1554.                                                         while(!key1);
  1555.                                                                                                                                   }
  1556.                                                                                                                  }        
  1557.                                                                                                    if(f==6)            //土温下限个位
  1558.                                                                                                                  {
  1559.                                                                                                                       anjian_ge();
  1560.                                                                                                                             write(0,0x8d);
  1561.                                                                                                                                         write(1,0x30+ge);
  1562.                                                                                                                                         if(key1==0)
  1563.                                   {
  1564.                                                      delay_ms(50);
  1565.                                                     if(key1==0)
  1566.                                                                                                                                               {
  1567.                                                                                                                                                                  tuwen_xia=shi*10+ge;     //土温下限
  1568.                                                                                                                                                                  bai=shi=ge=0;
  1569.                                                                        fanye2=6;
  1570.                                                                                                                                                                  write(0,0x0c);     //关闭光标显示
  1571.                                                                                                                                                                  display1_6();       //土湿
  1572.                                                                                                                                                                  write(0,0x93);
  1573.                                                            write(1,0x30+tushi_shang/10);
  1574.                                                                                                                                          write(0,0x94);
  1575.                                                            write(1,0x30+tushi_shang%10);
  1576.                                                                                                                                                                  write(0,0x8b);
  1577.                                                            write(1,0x30+tushi_xia/10);
  1578.                                                                                                                                          write(0,0x8c);
  1579.                                                            write(1,0x30+tushi_xia%10);
  1580.                                                                                                                                                                  f=1;
  1581.                                                                                                                                                                  write(0,0x0f);         //打开光标显示
  1582.                                                                                                                                          write(0,0x93);
  1583.                                                                                                                                         }
  1584.                                                         while(!key1);
  1585.                                                                                                                                   }
  1586.                                                                                                                  }
  1587.                                                                                                 }
  1588.                                                                                 if(fanye2==6)                  //土湿
  1589.                                                                                           {
  1590.                                                                                             if(f==1)                 //土湿上限十位
  1591.                                                                                                                  {
  1592.                                                                                                                       anjian_shi();
  1593.                                                                                                                             write(0,0x93);
  1594.                                                                                                                                         write(1,0x30+shi);
  1595.                                                                                                                                         if(key1==0)
  1596.                                   {
  1597.                                                      delay_ms(50);
  1598.                                                     if(key1==0)
  1599.                                                                                                                                               {
  1600.                                                                                                                                          write(0,0x94);
  1601.                                                                        f=2;
  1602.                                                                                                                                         }
  1603.                                                         while(!key1);
  1604.                                                                                                                                   }
  1605.                                                                                                                  }
  1606.                                                                                                                 if(f==2)           //土湿上限个位
  1607.                                                                                                                  {
  1608.                                                                                                                       anjian_ge();
  1609.                                                                                                                             write(0,0x94);
  1610.                                                                                                                                         write(1,0x30+ge);
  1611.                                                                                                                                         if(key1==0)
  1612.                                   {
  1613.                                                      delay_ms(50);
  1614.                                                     if(key1==0)
  1615.                                                                                                                                               {
  1616.                                                                                                                                                                  tushi_shang=shi*10+ge;     //土湿上限
  1617.                                                                                                                                                                  shi=ge=0;
  1618.                                                                                                                                          write(0,0x8b);
  1619.                                                                        f=3;
  1620.                                                                                                                                         }
  1621.                                                         while(!key1);
  1622.                                                                                                                                   }
  1623.                                                                                                                  }
  1624.                            if(f==3)            //土湿下限十位
  1625.                                                                                                                  {
  1626.                                                                                                                       anjian_shi();
  1627.                                                                                                                             write(0,0x8b);
  1628.                                                                                                                                         write(1,0x30+shi);
  1629.                                                                                                                                         if(key1==0)
  1630.                                   {
  1631.                                                      delay_ms(50);
  1632.                                                     if(key1==0)
  1633.                                                                                                                                               {
  1634.                                                                                                                                          write(0,0x8c);
  1635.                                                                        f=4;
  1636.                                                                                                                                          }
  1637.                                                          while(!key1);
  1638.                                                                                                                                   }
  1639.                                                                                                                  }
  1640.                                                                                                    if(f==4)             //土湿下限个位
  1641.                                                                                                                  {
  1642.                                                                                                                       anjian_ge();
  1643.                         
复制代码

程序4.zip

113.89 KB, 下载次数: 29

12864

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:261451 发表于 2018-7-19 16:52 | 只看该作者
水平有限,stc89c52rc的8k内存写满了,功能还不完善,不知道有没有大神指点一下怎么优化一下
回复

使用道具 举报

板凳
ID:261451 发表于 2018-7-19 17:36 | 只看该作者
程序没写完,占不下了,不过下面基本都是一种方法写的
回复

使用道具 举报

地板
ID:451441 发表于 2018-12-24 17:18 | 只看该作者
谢谢LZ的分享
回复

使用道具 举报

5#
ID:451718 发表于 2018-12-24 19:04 | 只看该作者
这个好,正是我想要的。不过代码的效率可能有点低,等我看完了,看看能不能优化一下算法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表