📄 main.lst
字号:
958 1
959 1 return(keycode);
960 1 }
961
962 /*************** initialization all function ********************/
963 void initialization()
964 {
965 1
966 1 TMOD=0x01; /*工作模式,定时器0*/
967 1 TH0=0x3c;
968 1 TL0=0xb0;
969 1 EA=1;
970 1 ET0=1;
971 1 TR0=1; /*启动定时器器*/
972 1
973 1 EX1=0; // out interrupt
C51 COMPILER V7.08 MAIN 06/13/2007 16:48:08 PAGE 17
974 1
975 1
976 1 PX1=0; // 优先级
977 1 IT1=1; // 边沿触发(下降沿有效)
978 1
979 1 /************************/
980 1 TMOD|= 0x20;
981 1 SCON = 0x50;
982 1 TH1 = 0xf4;
983 1 TL1 = 0xf4;
984 1 PCON = 0x00; // SMOD=0
985 1
986 1 TR1 = 1; /* 定时器1启动计数*/
987 1 ES = 0; /* 串口开中断 */
988 1 PS = 0; /* 串口低优先级 */
989 1 REN = 1; /* 串口接收允许 */
990 1 EA = 1; /* 开CPU中断 */
991 1 DE=0;
992 1 /*************************/
993 1
994 1
995 1 initialization_led_screen();
996 1 // There have lcd_s
-crren error!
997 1 // ds18b20_start();
998 1
999 1 key_flag=0;
1000 1 delay_iic();
1001 1 read_iic_data(1,&iic_read,0,1);
1002 1 if(iic_read[0]==-1|iic_read[0]>64|iic_read[0]<0){memery_error();} //存储器故障!
1003 1 start();
1004 1
1005 1 if(iic_read[0]==0) // read two times
1006 1 { lcd_screen_blank();
1007 2 found_new();
1008 2 display_set();
1009 2 }
1010 1 display_set();
1011 1
1012 1 ch451_init();
1013 1 ch451_write(0x406);
1014 1
1015 1
1016 1 }
1017 //****************** off *********************************************//
1018 void off(void)
1019 {
1020 1 clear_lcd_screen();
1021 1
1022 1
1023 1 write_word(0,3,16,&chinese[63]); // 重新启动中……
1024 1 write_word(0,3,32,&chinese[39]);
1025 1 write_word(0,3,48,&chinese[64]);
1026 1 write_word(1,3,0,&chinese[65]);
1027 1 write_byte(1,3,30,&number[24]);
1028 1 write_word(1,3,16,&chinese[36]);
1029 1
1030 1
1031 1 write_byte(1,3,34,&number[24]);
1032 1 write_byte(1,3,38,&number[24]);
1033 1 write_byte(1,3,42,&number[24]);
1034 1 write_byte(1,3,46,&number[24]);
C51 COMPILER V7.08 MAIN 06/13/2007 16:48:08 PAGE 18
1035 1 // write_byte(1,3,50,&number[24]);
1036 1
1037 1
1038 1 delay_1s(20000);
1039 1 EA=0;
1040 1 while(1);
1041 1 }
1042 /******************* myselfe_number ******************************/
1043 void myselfe_number(void)
1044 {
1045 1 unsigned char o1,o2;
1046 1 clear_lcd_screen();
1047 1 write_word(0,3,16,&chinese[18]); //write input a word "本"
1048 1 write_word(0,3,32,&chinese[19]); //write input a word "机"
1049 1 write_word(0,3,48,&chinese[20]); //write input a word "编"
1050 1 write_word(1,3,0,&chinese[21]); //write input a word "号"
1051 1 write_byte(1,3,16,&number[22]); //write input a byte ":"
1052 1
1053 1 read_iic_data(1,&iic_read,5,1);
1054 1 o1=iic_read[0]/100;
1055 1 write_byte(1,3,24,&number[o1]);
1056 1 o2=(iic_read[0]-o1*100)/10;
1057 1 write_byte(1,3,32,&number[o2]);
1058 1 o1=(iic_read[0]-o1*100-o2*10)%10;
1059 1 write_byte(1,3,40,&number[o1]);
1060 1 key_delay(60000);
1061 1 key_delay(60000);
1062 1 clear_lcd_screen();
1063 1 }
1064 /******************* myselfe_number ******************************/
1065 void myselfe_number_1(void)
1066 {
1067 1 unsigned char o1,o2;
1068 1
1069 1 write_word(0,0,18,&chinese[18]); //write input a word "本"
1070 1 write_word(0,0,34,&chinese[19]); //write input a word "机"
1071 1 write_word(0,0,50,&chinese[20]); //write input a word "编"
1072 1 write_word(1,0,1,&chinese[21]); //write input a word "号"
1073 1 write_byte(1,0,16,&number[22]); //write input a byte ":"
1074 1
1075 1 read_iic_data(1,&iic_read,5,1);
1076 1 o1=iic_read[0]/100;
1077 1 write_byte(1,0,24,&number[o1]);
1078 1 o2=(iic_read[0]-o1*100)/10;
1079 1 write_byte(1,0,32,&number[o2]);
1080 1 o1=(iic_read[0]-o1*100-o2*10)%10;
1081 1 write_byte(1,0,40,&number[o1]);
1082 1 }
1083
1084 //********** 给写到LCD SCREEN 的数据求反 ***************/
1085 void changed(bit x,bit k,unsigned char y[])
1086 {
1087 1 unsigned char i;
1088 1 unsigned char *p;
1089 1 p=y;
1090 1
1091 1 if(x==0)
1092 1 {
1093 2 for(i=0;i<16;i++)
1094 2 {
1095 3 if(k==1)
1096 3 {change_byte[i]=~*p;
C51 COMPILER V7.08 MAIN 06/13/2007 16:48:08 PAGE 19
1097 4 p++;}
1098 3 else
1099 3 {
1100 4 change_byte[i]=*p;
1101 4 p++;
1102 4 }
1103 3 }}
1104 1 if(x==1)
1105 1 {
1106 2 for(i=0;i<32;i++)
1107 2 {
1108 3 if(k==1)
1109 3 {
1110 4 change_word[i]=~*p;
1111 4 p++;
1112 4 }
1113 3 else
1114 3 {
1115 4 change_word[i]=*p;
1116 4 p++;
1117 4 }
1118 3 }}
1119 1 }
1120 /************** setup succeed ************************************/
1121 void setup_succeed(void)
1122 {
1123 1 clear_lcd_screen();
1124 1 write_word(0,3,32,&chinese[66]);
1125 1 write_word(0,3,48,&chinese[67]);
1126 1 write_word(1,3,0,&chinese[55]);
1127 1 write_word(1,3,16,&chinese[56]);
1128 1 write_byte(1,3,32,&number[23]);
1129 1 key_delay(60000);key_delay(60000);
1130 1 clear_lcd_screen();
1131 1 }
1132 /**************** setup unceed **************************/
1133 void setup_unsucceed(void)
1134 {
1135 1 clear_lcd_screen();
1136 1 write_word(0,3,24,&chinese[25]);
1137 1 write_word(0,3,40,&chinese[26]);
1138 1 write_word(0,3,56,&chinese[17]);
1139 1 write_word(1,3,8,&chinese[114]);
1140 1 write_word(1,3,24,&chinese[115]);
1141 1
1142 1 write_byte(1,3,40,&number[23]);
1143 1 key_delay(60000);key_delay(60000);
1144 1 clear_lcd_screen();
1145 1 }
1146 /***************** key *********************************************/
1147
1148
1149 void key(void)
1150 {
1151 1 unsigned char i,key_value,ff,bb,ss,display_mode;
1152 1 unsigned char change_value;
1153 1 unsigned char page;
1154 1 int temp;
1155 1 bit minus_flag;
1156 1 bit row1,row2,row3,row4;
1157 1 float temperature_value; // ES=0;
1158 1
C51 COMPILER V7.08 MAIN 06/13/2007 16:48:08 PAGE 20
1159 1
1160 1
1161 1 // unsigned long int n1;
1162 1 // float g_value;
1163 1 // short int voltage;
1164 1
1165 1 key_value=key_code();
1166 1 key_flag=0;
1167 1 //if(key_flag==1){while(1);}
1168 1 if(key_value==0x58|key_value==0x18)
1169 1 {
1170 2 clear_lcd_screen();
1171 2 write_word(0,3,40,&chinese[22]);
1172 2 write_word(0,3,56,&chinese[106]);
1173 2 write_word(1,3,8,&chinese[107]);
1174 2
1175 2 write_byte(1,3,24,&number[27]);
1176 2 write_byte(1,3,28,&number[27]);
1177 2 write_byte(1,3,32,&number[27]);
1178 2 write_byte(1,3,36,&number[27]);
1179 2 write_byte(1,3,40,&number[27]);
1180 2
1181 2 read_iic_data(1,&iic_read,0,8);delay_iic();
1182 2 write_iic_data(3,&iic_read,0,8);delay_iic();
1183 2 i=iic_read[0];
1184 2 for(iic_write[0]=0;iic_write[0]<i;iic_write[0]++)
1185 2 {
1186 3 read_iic_data(0,&iic_read,iic_write[0]*8,8);delay_iic();
1187 3 write_iic_data(2,&iic_read,iic_write[0]*8,8);delay_iic();
1188 3
1189 3
1190 3 }
1191 2 setup_succeed();
1192 2 }
1193 1
1194 1 if(key_value==0x60)
1195 1 {
1196 2
1197 2 for(i=0;i<40;i++)
1198 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -