📄 main.lst
字号:
157 3 Delay_Xms(5);
158 3 }
159 2 save_temp();
160 2 temp_view(datTem);
161 2 key=keyscan();
162 2 if(key=='E'){WriteCommandLCM(0x01,1);break; }
163 2 if(uart_receive_date=='E') {WriteCommandLCM(0x01,1);break; }
164 2 }while(key!='E');
165 1 }
166 /***************主函数***********************************/
167 void main()
168 {
169 1 unsigned char baiwei=0,gewei=0,shiwei=0,gao=0,di=0;
170 1 unsigned int shifen=0,baifen=0,qianfen=0,wanfen=0;
171 1
172 1 LCMInit();
173 1 IICInit();
174 1 com_init();
175 1 hello();
176 1 do{
177 2 Read_onetemp(datTem);
178 2 temp_view(datTem);
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 4
179 2 if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
180 2
181 2 baiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%1000/100)+48; //显示位处理,一边后续显示
182 2 shiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%100/10)+48;
183 2 gewei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%10/1)+48;
184 2 shifen=(((datTem[0]&0x0F)*625)%10000/1000)+48;
185 2 baifen=(((datTem[0]&0x0F)*625)%1000/100)+48;
186 2 qianfen=(((datTem[0]&0x0F)*625)%100/10)+48;
187 2 wanfen=(((datTem[0]&0x0F)*625)%10/1)+48;
188 2
189 2 key=keyscan();
190 2 switch(key-'A') //键盘控制
191 2 {
192 3 case 0: { save_temp(); } break; //A 存储温度
193 3 case 1: { over_record();} break; //B 查看记录
194 3 case 2: {} break; //C 上一个
195 3 case 3: {} break; //D 下一个
196 3 case 4: {} break; //E 返回
197 3 case 5: {auto_save_temp();} break; //F 5秒自动存储温度
198 3 case 6: { //G 串口数据发送
199 4 diaplay_string(uart_transmit,13);
200 4 send_char_uart(baiwei);
201 4 send_char_uart(shiwei);
202 4 send_char_uart(gewei);
203 4 send_char_uart('.');
204 4 send_char_uart(shifen);
205 4 send_char_uart(baifen);
206 4 send_char_uart(qianfen);
207 4 send_char_uart(wanfen);
208 4 send_char_uart(' ');
209 4 WriteCommandLCM(0x01,1);
210 4 } break;
211 3 case 7: { diaplay_string(spi_transmit,12); //H SPI通信
212 4 gao=datTem[1];
213 4 di=datTem[0];
214 4 MOSI=0;
215 4 SPI_Transmit(gao);
216 4 SPI_Transmit(di);
217 4 MOSI=1;
218 4 WriteCommandLCM(0x01,1);} break;
219 3 default : {} break;
220 3 }
221 2 switch(uart_receive_date-'A') //UART控制
222 2 {
223 3 case 0: { save_temp(); } break; //A 存储温度
224 3 case 1: { over_record();} break; //B 查看记录
225 3 case 2: {} break; //C 上一个
226 3 case 3: {} break; //D 下一个
227 3 case 4: {} break; //E 返回
228 3 case 5: {auto_save_temp();} break; //F 5秒自动存储温度
229 3 case 6: { //G 串口数据发送
230 4 diaplay_string(uart_transmit,13);
231 4 send_char_uart(baiwei);
232 4 send_char_uart(shiwei);
233 4 send_char_uart(gewei);
234 4 send_char_uart('.');
235 4 send_char_uart(shifen);
236 4 send_char_uart(baifen);
237 4 send_char_uart(qianfen);
238 4 send_char_uart(wanfen);
239 4 send_char_uart(' ');
240 4 WriteCommandLCM(0x01,1);
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 5
241 4 } break;
242 3 case 7: { diaplay_string(spi_transmit,12); //H SPI通信
243 4 gao=datTem[1];
244 4 di=datTem[0];
245 4 MOSI=0;
246 4 SPI_Transmit(gao);
247 4 SPI_Transmit(di);
248 4 MOSI=1;
249 4 WriteCommandLCM(0x01,1);} break;
250 3 default : {} break;
251 3 }
252 2 if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
253 2 uart_receive_date=0;
254 2 }while(1);
255 1 }
256
257 /************************************************
258 UART 串口通信程序
259 *************************************************/
260 /*************串口初始化*********************/
261 void com_init()
262 {
263 1 TMOD=0x20; //定时器1方式2
264 1 TH1=0xfd; //波特率9600
265 1 TL1=0xfd;
266 1 SCON=0x50; //串口工作方式1,允许接收
267 1 PCON= 0x00; // 波特率不倍增
268 1 TR1=1; //启动定时
269 1 IE=0x90; //开串口中断 等效于 EA=1;ES=1;EX0=1
270 1 }
271
272
273 /*************向串口发送一个字符*********************/
274 void send_char_uart( unsigned char date)
275 {
276 1 EA=0;
277 1 SBUF=date;
278 1 while(TI==0);
279 1 TI= 0 ;
280 1 EA=1;
281 1 }
282
283 /************串口中断函数*********************/
284 void Uart_receive(void) interrupt 4 //串口中断接收
285 {
286 1 EA=0;
287 1 if(RI)
288 1 {
289 2 uart_receive_date=SBUF;
290 2 RI=0;
291 2 }
292 1 else TI=0; //发送中断。则无操作
293 1 EA=1;
294 1 }
295 /************INT0中断函数********************
296 void SPI_INT0(void) interrupt 0
297 {
298 EA=0;
299 uart_receive_date=SPI_Receive();
300 EA=1;
301 }*/
302 /************************************************
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 6
303 THE END OF FILE
304 *************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1979 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 95
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -