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

📄 控制系统.lst

📁 核心文件,直接烧录
💻 LST
📖 第 1 页 / 共 5 页
字号:
 969   1        con_disp(0x55,0x55,0x87,0x80,1,16);   
 970   1      }
 971          
 972          
 973          /*图片显示标头*/
 974          void dis_title_pic(void)
 975          {
 976   1        display_cnasc(0x80,2,"〓〓");
 977   1        display_cnasc(0x86,2,"〓〓");
 978   1      }
 979          
 980          
 981          /*功能实现显示标头*/
 982          void dis_title_e(void)
 983          {
 984   1        display_cnasc(0x80,1," \x15");
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 17  

 985   1        con_disp(0xff,0xff,0x80,0x80,1,16);
 986   1        con_disp(0xff,0xc7,0x81,0x80,1,16);
 987   1        con_disp(0xff,0xff,0x82,0x80,3,16);
 988   1        con_disp(0xe3,0xff,0x85,0x80,1,16);
 989   1        con_disp(0xff,0xff,0x86,0x80,2,16);
 990   1      }
 991          
 992          
 993          
 994          /*显示菜单图片  格式:图片反显(1)或正常显示(0),显示图片的号码*/
 995          void anti_nor_pic (uchar cpl_sign,uchar menu_num)
 996          {
 997   1        uchar i,j,x,y;
 998   1        x=menu_num*3;    // 计算图片显示坐标
 999   1        if(x>6) x--;
1000   1        if(menu_num<3) y=16;  // 上下半屏显示
1001   1        else y=8;
1002   1        if(cpl_sign==1) display_cnasc(0x82,4,menu_cn[menu_num]);
1003   1        for(j=0;j<24;j++)
1004   1        {
1005   2         for(i=0;i<2;i++)
1006   2         {
1007   3           wr_lcd(comm,0x34);
1008   3           wr_lcd(comm,0x80+y);
1009   3           wr_lcd(comm,0x80+x+i);  // 分两次显示 16bit
1010   3           wr_lcd(comm,0x30);
1011   3           if(cpl_sign==1)          // 图片反选
1012   3           {
1013   4                 wr_lcd(dat,~menu_pic[menu_num][j*4+i*2]);
1014   4             wr_lcd(dat,~menu_pic[menu_num][j*4+i*2+1]);
1015   4               }
1016   3           else                                         // 正常显示
1017   3           {
1018   4                 wr_lcd(dat,menu_pic[menu_num][j*4+i*2]);
1019   4             wr_lcd(dat,menu_pic[menu_num][j*4+i*2+1]);
1020   4               }
1021   3         }
1022   2         y++;
1023   2         if(y==32&&menu_num<3) {x+=8;y=0;}  // 上下屏切换
1024   2        }
1025   1        wr_lcd(comm,0x36);
1026   1      }
1027          
1028          
1029          
1030          
1031          /*状态16*16图片  格式:反色(1)或正常0,X坐标,Y坐标,状态编码(16*16)*/
1032          void dis_run_state(uchar cpl,uchar x0,uchar y0,uchar state_num)
1033          {
1034   1        uchar j;
1035   1        for(j=0;j<16;j++)
1036   1        {
1037   2          wr_lcd(comm,0x34);  // 扩展功能
1038   2          wr_lcd(comm,y0++);  // 写Y地址
1039   2          wr_lcd(comm,x0);    // 写X地址
1040   2          wr_lcd(comm,0x30);  // 普通功能
1041   2              if(cpl==1)                      // 写数据
1042   2          {
1043   3                wr_lcd(dat,~running[state_num][j*2]);
1044   3            wr_lcd(dat,~running[state_num][j*2+1]);
1045   3              }
1046   2              else
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 18  

1047   2              {
1048   3                wr_lcd(dat,running[state_num][j*2]);
1049   3            wr_lcd(dat,running[state_num][j*2+1]);
1050   3              }
1051   2        }
1052   1        wr_lcd(comm,0x36);
1053   1      }
1054          
1055           
1056          
1057           /*显示菜单按钮  参数格式:反色(1)或正常(0)*/
1058          void dis_menu_key(uchar d)
1059          {
1060   1        if(d==1)
1061   1        {
1062   2          for(d=0;d<8;d++)                                                              // 显示菜单按钮
1063   2            con_disp(~menu_key[d*2],~menu_key[d*2+1],0x9f,0x97+d,1,1);
1064   2        }
1065   1        else
1066   1        {
1067   2          for(d=0;d<8;d++)                                                              // 显示菜单按钮
1068   2            con_disp(menu_key[d*2],menu_key[d*2+1],0x9f,0x97+d,1,1);
1069   2        }
1070   1      }
1071          
1072          
1073          
1074          
1075          /*显示模式3的界面*/
1076          void dis_mode3(void)
1077          {
1078   1        uchar i,j,h,l,x_0=0x80,y_0=0x90;
1079   1        h=now.hour>>4;       // 分离十位 个位
1080   1        l=now.hour&0x0f;
1081   1        for(j=0;j<2;j++)
1082   1        {
1083   2          for(i=0;i<32;i++)  // 十位个位一起读入
1084   2          { 
1085   3            wr_lcd(comm,0x34);
1086   3            wr_lcd(comm,y_0++);
1087   3            wr_lcd(comm,x_0);
1088   3            wr_lcd(comm,0x30);
1089   3            wr_lcd(dat,mode_3num[h][i*3]);  // 连续写数据,X坐标自动加1
1090   3            wr_lcd(dat,mode_3num[h][i*3+1]);
1091   3            wr_lcd(dat,mode_3num[h][i*3+2]);
1092   3            wr_lcd(dat,mode_3num[l][i*3]);
1093   3            wr_lcd(dat,mode_3num[l][i*3+1]);
1094   3            wr_lcd(dat,mode_3num[l][i*3+2]); 
1095   3            if(y_0==0xa0){x_0=x_0+8;y_0=0x80;}
1096   3          }
1097   2          x_0=0x84,y_0=0x90;
1098   2          h=now.minute>>4;   // 分离十位 个位
1099   2          l=now.minute&0x0f;
1100   2        }
1101   1        dis_run_state(0,0x83,0x90,4); // 显示点
1102   1        dis_run_state(0,0x8b,0x80,4);                                    
1103   1        y_0=0x80;                        // 显示状态标记
1104   1        if(keb) {dis_run_state(0,0x87,y_0,2);y_0+=16;}
1105   1        if(alm) {dis_run_state(0,0x87,y_0,1);y_0+=16;}
1106   1        if(y_0<0xa0&&!als){dis_run_state(0,0x87,y_0,0);}
1107   1        if(y_0==0xa0&&!als){dis_run_state(0,0x8f,0x80,0);}
1108   1        dis_menu_key(0);
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 19  

1109   1      }
1110          
1111          
1112          
1113          
1114          /*显示模式1和2的共用部分*/
1115          void mode1_2_union(void)
1116          {
1117   1        uchar x=0x9b;
1118   1        display_cnasc(0x98,2,"星期");
1119   1        if(nba_tim) dis_run_state(0,x,0x90,6);
1120   1        if(keb) {dis_run_state(0,x,0x90,2);x++;}    // 显示标记
1121   1        if(alm) {dis_run_state(0,x,0x90,1);x++;}
1122   1        if(!als){dis_run_state(0,x,0x90,0);}
1123   1        dis_menu_key(0);                           // 显示菜单按钮
1124   1      }
1125          
1126          
1127          /*显示模式2的日期*/
1128          void dis_date_mode2(uchar d)
1129          {
1130   1        uchar save[2];
1131   1        display_cnasc(d+2,1,"年");
1132   1        display_cnasc(d+4,1,"月");
1133   1        display_cnasc(d+6,1,"日");
1134   1        display_cnasc(0x9a,1,weeks[today.week]);  // 显示星期
1135   1        save[0]=char_num[today.year>>4];              // 将显示的数值存到数组中
1136   1        save[1]=char_num[today.year&0x0f];
1137   1        display_cnasc(d+1,1,save);
1138   1        save[0]=char_num[today.month>>4];
1139   1        save[1]=char_num[today.month&0x0f];
1140   1        display_cnasc(d+3,1,save);
1141   1        save[0]=char_num[today.day>>4];
1142   1        save[1]=char_num[today.day&0x0f];
1143   1        display_cnasc(d+5,1,save);
1144   1      }
1145          
1146          /*显示模式2的时间数字显示  16*32*/
1147          void num2_asc_dis(uchar num,uchar x_0)
1148          {
1149   1        uchar i,y_0=0x90;
1150   1        for(i=0;i<32;i++)  // 十位个位一起读入
1151   1        { 
1152   2          wr_lcd(comm,0x36);
1153   2          wr_lcd(comm,y_0++);
1154   2          wr_lcd(comm,x_0);
1155   2          wr_lcd(comm,0x30);
1156   2          wr_lcd(dat,mode_2num[num][i*2]);
1157   2          wr_lcd(dat,mode_2num[num][i*2+1]);
1158   2              if(i==15){x_0+=8;y_0=0x80;}
1159   2        }
1160   1        wr_lcd(comm,0x36);
1161   1      }
1162          
1163          /*显示模式2的时间*/
1164          void dis_time_mode2(void)
1165          {
1166   1        uchar h,l;
1167   1        if(now.hour!=save_time.hour||init_d2)
1168   1        {
1169   2          h=now.hour>>4;    // 分离十位 个位
1170   2          l=now.hour&0x0f;
C51 COMPILER V8.02   縚制系统                                                              08/08/2008 18:31:54 PAGE 20  

1171   2          num2_asc_dis(h,0x80);
1172   2              num2_asc_dis(l,0x80+1);
1173   2        }
1174   1        if(now.minute!=save_time.minute||init_d2)
1175   1        {
1176   2          h=now.minute>>4;    // 分离十位 个位
1177   2          l=now.minute&0x0f;
1178   2          num2_asc_dis(h,0x83); 
1179   2              num2_asc_dis(l,0x83+1);
1180   2        }
1181   1        if(now.second!=save_time.second||init_d2)
1182   1        {
1183   2          h=now.second>>4;    // 分离十位 个位
1184   2          l=now.second&0x0f;
1185   2          num2_asc_dis(h,0x86);
1186   2              num2_asc_dis(l,0x86+1);
1187   2        }
1188   1        if(init_d2)
1189   1        {
1190   2          dis_run_state(0,0x82,0x90,5); // 显示点
1191   2          dis_run_state(0,0x8a,0x80,5);
1192   2          dis_run_state(0,0x85,0x90,5); // 显示点
1193   2          dis_run_state(0,0x8d,0x80,5);
1194   2        }     
1195   1      }
1196          
1197          
1198          /*显示模式2的界面*/
1199          void dis_mode2(void)
1200          {
1201   1        dis_date_mode2(0x81);       // 显示日期
1202   1        display_cnasc(0x81,1,"20");
1203   1        dis_time_mode2();                       // 显示时间
1204   1        mode1_2_union();
1205   1      }
1206          
1207          
1208          /*显示模式1的日期*/

⌨️ 快捷键说明

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