#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit beep=P2^0; sbit see=P2^2; sbit smog=P2^3; sbit lcden=P3^5; sbit lcdrs=P3^4; sbit lcdwr=P2^4; uchar code table0[]=" S I F E "; uchar code table1[]=" S O S ! "; uchar code table2[]=" D A Y "; uchar code table3[]=" N I G H T "; uchar num; uchar i,j,mu,flag=1; void dsp(); void action0(); void action1(); void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) { lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() { lcdwr=0; lcden=0; write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); write_com(0x80+0x10); } void dsp() { init(); if(mu==1) { for(num=0;num<12;num++) { write_data(table1[num]); delay(20); } } else { for(num=0;num<11;num++) { write_data(table0[num]); delay(20); } } if(see==0) { write_com(0xc0+17); delay(50); for(num=0;num<10;num++) { write_data(table2[num]); delay(40); } } else { write_com(0xc0+17); delay(50); for(num=0;num<13;num++) { write_data(table3[num]); delay(40); } } for(num=0;num<16;num++) { write_com(0x18); delay(20); } } void main() { j=1; EA=1; EX0=1; IT0=1; while(1) { dsp; if(smog==1) mu=1; if(mu==1) action1(); } } void action0() { dsp(); for(i=0;i<2;i++) { P1=0xfd; beep=1; delay(50); if(flag==0)break; P1=0xf7; beep=0; delay(50); if(flag==0)break; flag=1; } } void action1() { dsp(); for(i=0;i<100;i++) { P1=0xff; beep=1; delay(50); if(flag==0)break; P1=0xf0; beep=0; delay(50); if(flag==0)break; mu=0; flag=1; } } void enter0() interrupt 0 { flag=0; } |