#include "drive_1602.h" #include "string.h" #include "stdio.h" #define uint unsigned int #define uchar unsigned char /* ����5V USB��·���� ����ʵ������ֹͣ�Ϳ������� ʵ���������ٷ��� ���ٵȼ��ߵ�3�� */ sbit SW1=P3^7; sbit SW2=P3^6; sbit SW3=P3^5; sbit fun=P3^3;//����io uchar temp,humi; int JCount=0; void delay_xms(int xms) { char ix=0; for(;xms>0;xms--) for(ix=110;ix>0;ix--); } uchar SET=0; bit keyflag=0; bit openflag=0;//������־λ uchar dw_val=3;//��λֵ int pwm_cnt=0; #define pwm_max 1000 int set_pwm=pwm_max; void KeyRead(void) { if(!SW1) { if(!SW1&&keyflag==0) { keyflag=1; openflag^=1; while(!SW1); } } else if(!SW2) { if(!SW2&&keyflag==0) { keyflag=1; if(++dw_val>3)dw_val=1; while(!SW2); } } else if(!SW3) { if(!SW3&&keyflag==0) { keyflag=1; if(dw_val>1)dw_val--; } } else { keyflag=0; } } void Timer0Init(void) //10����@11.0592MHz { TMOD &= 0xF0; //���ö�ʱ��ģʽ TMOD |= 0x01; //���ö�ʱ��ģʽ TL0 = 0x00; //���ö�ʱ��ֵ TH0 = 0xDC; //���ö�ʱ��ֵ TF0 = 0; //���TF0��־ ET0=1; TR0 = 1; //��ʱ��0��ʼ��ʱ EA=1; } uchar get_key=0; void TimeISR()interrupt 1 { TL0 = 0x66; //���ö�ʱ��ֵ TH0 = 0xFC; //���ö�ʱ��ֵ 1ms if(++get_key>10) { get_key=0; KeyRead(); } pwm_cnt++; if(pwm_cnt>=pwm_max) { pwm_cnt=0; } if(pwm_cnt>set_pwm) { fun=1; } else { fun=0; } JCount++; } void UartInit(void) //9600bps@11.0592MHz { PCON &= 0x7F; //�����ʲ����� SCON = 0x50; //8λ����,�ɱ䲨���� TMOD &= 0x0F; //�����ʱ��1ģʽλ TMOD |= 0x20; //�趨��ʱ��1Ϊ8λ�Զ���װ��ʽ TL1 = 0xFD; //�趨��ʱ��ֵ TH1 = 0xFD; //�趨��ʱ����װֵ ET1 = 0; //��ֹ��ʱ��1�ж� TR1 = 1; //������ʱ��1 EA=1; ES=0; } void sendData(char *p,unsigned char n) { if( p == 0) return ; ES = 0; if(n > 0) { while(n --) { SBUF = *p++ ; while(!TI) ; TI = 0 ; } } // ES = 1; } // �����ڷ����ַ��� void sendString(char *p) { if(p == 0) return ; sendData(p,strlen(p)); } uchar rxdat=0; // �����жϺ��� void usart() interrupt 4 { if(RI == 1) { rxdat=SBUF; switch(rxdat) { case 0x5a: openflag^=1; break; case 0x65: if(++dw_val>3)dw_val=1; break; case 0x78: if(dw_val>1)dw_val--; break; } // setUsartRxData(SBUF); } RI = 0; TI = 0; } void main() { lcd1602_init(); UartInit(); delay_xms(200); Timer0Init(); while(1) { if(JCount>500)//500ms�ɼ�һ�� { JCount=0; if(openflag) { L1602_printf(0,0,"FUN:ON"); switch(dw_val) { case 1: set_pwm=300; break; case 2: set_pwm=700; break; case 3: set_pwm=pwm_max; break; } }else { L1602_printf(0,0,"FUN:OFF"); } L1602_printf(0,1,"Gears:%d",dw_val); } } }