#include "IRIN.h" #include "i2c.h" uint mileage = 0; uint count=0; uchar ms=0; uint speed=0; uint r_s=0; extern uchar play; extern uint Seep_model; extern struct UserInfo usr; extern uchar model; void delay11(int i) { while(i--); } void IRIN_Init(void) { TMOD=0x01 | 0x20; TH0=0XFc; TL0=0X18; ET0=1; TR0=1; EA=1; EX1=1; IT1=1; } void display() { // 显示速度 LcdWriteCom(0x80 + 2); LcdWriteData(0x30+speed/100%10); LcdWriteData(0x30+speed/10%10); LcdWriteData(0x30+speed%10); // 显示里程 LcdWriteCom(0x80 + 8); LcdWriteData(0x30+mileage/1000%10); LcdWriteData(0x30+mileage/100%10); LcdWriteData(0x30+mileage/10%10); LcdWriteData(0x30+mileage%10); LcdWriteData('m'); LcdWriteCom(0x80 + 14); if(Seep_model == 0) LcdWriteData('N'); else if(Seep_model == 1) LcdWriteData('L'); else if(Seep_model == 2) LcdWriteData('M'); else if(Seep_model == 3) LcdWriteData('H'); // 显示目标里程 LcdWriteCom(0x80 + 0x40); LcdWriteData(0x30+usr.target_mileage/1000%10); LcdWriteData(0x30+usr.target_mileage/100%10); LcdWriteData(0x30+usr.target_mileage/10%10); LcdWriteData(0x30+usr.target_mileage%10); LcdWriteData('m'); LcdWriteCom(0x80 + 0x40 + 8); LcdWriteData(0x30+usr.Remaining_mileage/1000%10); LcdWriteData(0x30+usr.Remaining_mileage/100%10); LcdWriteData(0x30+usr.Remaining_mileage/10%10); LcdWriteData(0x30+usr.Remaining_mileage%10); LcdWriteData('m'); LcdWriteCom(0x80 + 0x40 + 14); if(model == 0) LcdWriteData('D'); else LcdWriteData('S'); } void Key_scan(){ if(k1==0){ delay11(1000); if(k1==0){ Seep_model++; if(Seep_model >= 4) Seep_model = 0; } while(!k1); } } void time0() interrupt 1 { static int time = 0; TH0=0XFc; TL0=0X18; time++; pwm_out_right_moto(); if(time >= 500){ EX1=0; time = 0; r_s = count * 3 / 20; // 500ms计算一次 求每秒钟的圈数,珊格数为20 r_s = count * 2 / 20 speed= (r_s * 6) * 2; mileage = mileage + (count / 20 * 3); if(mileage > 9999) mileage = 9999; count=0; EX1 = 1; } } void int1() interrupt 2 { count++; }