?? 控制系統.lst
字號:
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 + -