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

📄 gui.lst

📁 别人的C51菜单程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.08   GUI                                                                   07/15/2007 10:32:44 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE GUI
OBJECT MODULE PLACED IN gui.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE gui.c LARGE OPTIMIZE(9,SPEED) DEBUG OBJECTEXTEND

line level    source

   1          #include <at89c51xd2.h>
   2          #include "common.h"
   3          #include "hanzi.h"
   4          #include "lm3228.h"
   5          #include "ds18b20.h"
   6          #include "PCA_9555.h"
   7          #include "ds1302.h"
   8          #include "LTC1860.h"
   9          #include "stdio.h"
  10          #include "lct1451.h"
  11          
  12          #define KeyTabLen 13
  13          extern uchar data keyvalue[2];
  14          extern bit key_flag;
  15          volatile uchar data zhen_temp[4];   //
  16          volatile uchar data xiaoshu_temp[5]; //
  17          extern bit ds18b20_flag;
  18          extern bit dot_dis;
  19          bit timeout=0;
  20          uchar data time_count=0;
  21          uchar data keyfuncindex=12;
  22          uchar data ds18b20_1_dis,ds18b20_2_dis,ds18b20_3_dis,ds18b20_4_dis;
  23          //函数申明
  24          void FunctionDisp(void);
  25          void Config(void);
  26          void Serial(void);
  27          void HelpInf(void);
  28          void Temprature(void);
  29          void Time(void);
  30          void AD(void);
  31          void CaculatorDisp(void);
  32          void TempratureDisp(void);
  33          void AD_Disp(void);
  34          void Caculator(void);
  35          void TimeDisp(void);
  36          void gui_init(void);
  37          void time_init(void);
  38          void channel_display(void);
  39          
  40          //结构定义
  41          typedef struct
  42                  {
  43                  uchar KeyTab_MenuIndex;         //当前状态索引号                        //uchar KeyTab_MaxItems;                //本级菜单最大条目数
  44              uchar KeyTab_PressDown;     //按下"向下"键时转向的状态索引号
  45              uchar KeyTab_PressUp;       //按下"向上"键时转向的状态索引号
  46                  uchar KeyTab_PressOk;           //按下"回车"键时转向的状态索引号
  47              uchar KeyTab_PressEsc;              //按下"返回"键时转向的状态索引号
  48                  void    (*CurrentOperate)();            //当前状态应该执行的功能操作
  49                  }KeyTabStruct;
  50          
  51          void    (*KeyFuncPtr)();    //按键功能指针
  52          //结构数组
  53          KeyTabStruct xdata KeyTab[KeyTabLen]={
  54          {0,1,3,4,12,(*FunctionDisp)},
  55          {1,2,1,1,0,(*Config)},
C51 COMPILER V8.08   GUI                                                                   07/15/2007 10:32:44 PAGE 2   

  56          {2,3,1,2,0,(*Serial)},
  57          {3,0,2,3,0,(*HelpInf)},
  58          {4,5,7,8,0,(*Temprature)},
  59          {5,6,4,9,0,(*Time)},
  60          {6,7,5,10,0,(*AD)},
  61          {7,4,6,11,0,(*Caculator)},
  62          {8,8,8,8,4,(*TempratureDisp)},
  63          {9,9,9,9,5,(*TimeDisp)},
  64          {10,10,10,10,6,(*AD_Disp)},
  65          {11,11,11,11,7,(*CaculatorDisp)},
  66          {12,11,0,12,12,(*gui_init)}
  67          
  68          };
  69          //
  70          void delay(unsigned int time)
  71          {
  72   1              unsigned int i,j;
  73   1              for(i=0;i<time;i++)
  74   1                      for(j=0;j<200;j++);
  75   1      }
  76          //开机动画
  77          void open_picture_init(void)
  78          {
  79   1              uchar  i;//data
  80   1              hanzi_display(open_picture,sizeof(open_picture),0x00,0x10);
  81   1              
  82   1              for(i=0;i<30;i++)
  83   1              {       
  84   2                      if(!key_flag)
  85   2                      {
  86   3                              set_display_area(GRAPHIC_ADDRESS,0x00+i,0x00);
  87   3                              delay(100);
  88   3                      }
  89   2                      else
  90   2                              break;
  91   2              }
  92   1              
  93   1      }
  94          //开机密码
  95          /*void open_code(void)
  96          {
  97                  uint data key_code=0;
  98                  uchar data i;
  99                  bit code_ok=0;
 100                  uchar code *str="Please input code:";
 101                  uchar code *str1="code error!:";
 102                  clrgraphic();
 103                  set_point(SET_ADDRESS_POINTER,0x00,0x31);
 104                  
 105                  string_display_code(0,str,0x00,0x31);
 106                  while(!code_ok)
 107                  {
 108                          for(i=0;i<4;i++)
 109                          {
 110                                  while(!key_flag)
 111                                  {
 112                                  }
 113                                  {
 114                                          key_flag=0;
 115                                  
 116                                          readregister(keyvalue);
 117                                  
C51 COMPILER V8.08   GUI                                                                   07/15/2007 10:32:44 PAGE 3   

 118                                          text_display('*');  // ,0x00,0x00
 119                                          key_code=key_code*10+(keyvalue[0]&0x0f);
 120                                  }
 121                          }
 122                          if(key_code==124)
 123                          code_ok=1;
 124                          else
 125                          {       clrtext();
 126                                  set_point(SET_ADDRESS_POINTER,0x00,0x31);
 127                                  string_display_code(0,str1,0x00,0x31);
 128                                   
 129                                  while(!key_flag)
 130                                  {
 131                                  }
 132                                  key_flag=0;
 133                                  key_code=0;
 134                                  set_point(SET_ADDRESS_POINTER,0x00,0x31);
 135                                  string_display_code(0,str,0x00,0x31);
 136                          }
 137                  }
 138          }*/
 139                  
 140          
 141          //界面初始化
 142          void gui_init(void)
 143          {
 144   1              Picture  pic1={64,32,menu1};   //data
 145   1              Picture  pic2={64,32,menu2}; //data
 146   1              Picture  pic3={64,32,menu3}; //data
 147   1              Picture  pic4={64,32,menu4};//data
 148   1              Picture *point1=&pic1;
 149   1              clrgraphic();
 150   1              clrtext();
 151   1                      
 152   1              picture_display(point1,0x00,0x00,0);
 153   1              point1=&pic2;
 154   1              picture_display(point1,0x08,0x00,0);
 155   1              point1=&pic3;
 156   1              picture_display(point1,0x10,0x00,0);
 157   1              point1=&pic4;
 158   1              picture_display(point1,0x18,0x00,0);
 159   1              hanzi_display(cancel,sizeof(cancel),0x1c,0x1e);
 160   1              hanzi_display(ok,sizeof(ok),0x00,0x1e);
 161   1      
 162   1      }
 163          
 164          //得到键
 165          void get_inputkey(void)
 166          {
 167   1              switch(keyvalue[0]&0x0f)
 168   1              {
 169   2                      case 0x03: //向上键
 170   2                              keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressUp;       
 171   2                              break;
 172   2                      case 0x07: //向下键
 173   2                              keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressDown;
 174   2                              break;
 175   2                      case 0x0b:      //功能键
 176   2                              keyfuncindex=0;
 177   2                              break;  
 178   2                      case 0x0c: //cancel
 179   2                              keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressEsc;      
C51 COMPILER V8.08   GUI                                                                   07/15/2007 10:32:44 PAGE 4   

 180   2                              break;
 181   2                      case 0x0e: //帮助键
 182   2                              
 183   2                              break;
 184   2                      case 0x0f: //ok键
 185   2                              keyfuncindex=KeyTab[keyfuncindex].KeyTab_PressOk;       
 186   2                              break;
 187   2                      default:
 188   2                              break;
 189   2              }
 190   1      
 191   1              KeyFuncPtr=KeyTab[keyfuncindex].CurrentOperate;
 192   1              (*KeyFuncPtr)();
 193   1      }
 194          //
 195          void FunctionDisp(void)
 196          {
 197   1              Picture pic1={64,32,menu1};
 198   1              Picture pic2={64,32,menu2};
 199   1              Picture pic3={64,32,menu3};
 200   1              Picture pic4={64,32,menu4};
 201   1              
 202   1              Picture *point2=&pic1;
 203   1              clrgraphic();
 204   1              clrtext();
 205   1              picture_display(point2,0x00,0x00,1);
 206   1              point2=&pic2;
 207   1              picture_display(point2,0x08,0x00,0);
 208   1              point2=&pic3;
 209   1              picture_display(point2,0x10,0x00,0);
 210   1              point2=&pic4;
 211   1              picture_display(point2,0x18,0x00,0);
 212   1      }
 213          //
 214          void Config(void)
 215          {
 216   1              Picture data pic1={64,32,menu1};
 217   1              Picture data pic2={64,32,menu2};
 218   1              Picture data pic3={64,32,menu3};
 219   1              Picture data pic4={64,32,menu4};
 220   1              Picture *point1=&pic1;  
 221   1              picture_display(point1,0x00,0x00,0);
 222   1              point1=&pic2;
 223   1              picture_display(point1,0x08,0x00,1);
 224   1              point1=&pic3;
 225   1              picture_display(point1,0x10,0x00,0);
 226   1              point1=&pic4;
 227   1              picture_display(point1,0x18,0x00,0);
 228   1      }
 229          //
 230          void Serial(void)
 231          {
 232   1              Picture data pic1={64,32,menu1};
 233   1              Picture data pic2={64,32,menu2};
 234   1              Picture data pic3={64,32,menu3};
 235   1              Picture data pic4={64,32,menu4};
 236   1              Picture *point1=&pic1;
 237   1              picture_display(point1,0x00,0x00,0);
 238   1              point1=&pic2;
 239   1              picture_display(point1,0x08,0x00,0);

⌨️ 快捷键说明

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