⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Avr Atmeg128汽车行驶记录仪 带有USB驱动 c语言
💻 C
📖 第 1 页 / 共 4 页
字号:
			   switch (Receive0[2])
			 	 {	case 0x01:						//驾驶员信息
				 			Get_driver();
							send_data();
				   			break;
				  	case 0x02:						//实时时钟
							Get_time();
							send_data();
				   			break; 
					case 0x03:						//360H行驶累计里程数据
				   			TLL=Get_360Hday_M();
							Send0[0]=15;
 							Send0[1]=0x55;
 							Send0[2]=0x7a;
 							Send0[3]=0x03;
 							Send0[4]=0x00;
 							Send0[5]=0x08;
 							Send0[6]=0x00;
							p1=com1subbuf+8;
							for(i=0;i<8;i++)
							  {	Send0[7+i]=*p1;
								p1++;}
							i1=0x55;
							for(i=2;i<15;i++)
							  i1^=Send0[i];
							Send0[15]=i1;
							send_data();
							break;
					case 0x04:						//特征系数
							Get_tzxs();
							send_data();
				   			break;
					case 0x05:						//360H行驶速度数据
				   			break;
					case 0x06:						//车辆信息
							Get_qiche();
							send_data();
				   			break;
					case 0x07:						//事故疑点数据
				   			FM_CS;
							j=Get_stop();
							if(j==0)
							 {send_no_data(0x07);
							  send_data();
							 }
							 else
							  { j=j*366+7;
							    Receive0_lp=0;
								Staut0&=~(1<<0);
								Status2=Status1;
								Status1=130;
							  }
							break;
					case 0x08:						//2天行驶累计里程数据
				   			TLL=Get_2day_M();
							Send0[0]=15;
 							Send0[1]=0x55;
 							Send0[2]=0x7a;
 							Send0[3]=0x08;
 							Send0[4]=0x00;
 							Send0[5]=0x08;
 							Send0[6]=0x00;
							p1=com1subbuf;
							for(i=0;i<8;i++)
							  {	Send0[7+i]=*p1;
								p1++;}
							i1=0x55;
							for(i=2;i<15;i++)
							  i1^=Send0[i];
							Send0[15]=i1;
							send_data();
							break;
					case 0x09:						//2天行驶速度数据
				   			i=0;
							test();
							UCSR0B =0X90;
	 						Receive0_lp=0;
	 						Staut0&=~(1<<0);
							Staut0&=~(1<<3);
							i=0; 
							break;
					case 0x11:						//疲劳驾驶数据
							 FM_CS;
							j=Get_pilao_2day();
							if(j==0)
							 {send_no_data(0x11);
							  send_data();
							 }
							 else
							  { j=j*10+7;
							    Receive0_lp=0;
								Staut0&=~(1<<0);
								Status2=Status1;
								Status1=130;
							  }
				   			break;
					case 0x81:						//设置驾驶员信息
							FM_CS;
							p1=Driver_now__Buf+1;
							for(i=6;i<27;i++)
							 {*p1=Receive0[i];
							   p1++;
							 }
						     i=0;
				   			break;
					case 0x82:						//设置车辆信息
							FM_CS;
							p1=Qiche_Buf;
							for(i=6;i<47;i++)
							 {*p1=Receive0[i];
							   p1++;
							 }
						    
				   			break;
					case 0xc2:						//设置实时时钟
							CLOCK_RTIME();
							FM_CS;
						
							for(i=0;i<8;i++)
							 {SYS_S_Time[i]=SYS_Time[i];
							 //  p1++;
							 }
							
						    for(i=6;i<9;i++)
							 {SYS_S_Time[13-i]=Receive0[i];
							  // p1++;
							 }
							 for(i=9;i<12;i++)
							 {SYS_S_Time[12-i]=Receive0[i];
							  // p1++;
							 }
							SET_Time();	
				   			break; 
					case 0xc3:						//设置特征系数
						    FM_CS;
							p1=Tzx_Buf;
							for(i=6;i<9;i++)
							 {*p1 = Receive0[i];
							  p1++;
							 }
							
				   			break;
					case 0xd0:
							FM_CS;
							speed_warm_up = Receive0[6];
							break;
					default:						//无此命令
							UCSR0B =0X48;
	  						Send0[0]=0x05;
	  						Send0[1]=0x55;
	  						Send0[2]=0x7a;
	  						Send0[3]=0xfa;
	  						Send0[4]=0x00;
	  						Send0[5]=0xd5;
	  						Send0_lp=2;
	  						UDR0=Send0[1];
							break;
				  }
			 }				
		  }
		 else										//显示部分
		  {switch (Status1)
			 	 {	case  0:						//显示即时数据
				 			if(key_v==K_Menu)
							   { Status1=10;
							     Menu_B=0;
								 }
							else
								Status1=1;
				 			key_v=0;
							break;
					case  1:Dis_Pin=20;						//显示车速、时间
						//	speed=100;
							speed_dot=0;
							Xs();
							Status1=2;
							key_jsq=0;
							break;
					case 2:
							if(key_jsq>30)
							  {Status1=0;
							   key_jsq=0;} 
							else
							  { DelayMs(10);
							    Status1=2;
								key_jsq++;
							  }
							break;
					case 10:						//显示菜单
							Dis_Pin=Menu_B;
							Xs();
							key_jsq=0;
							old_key=0;
							Status1=11;
							break;
					case 11:						//按键判断
							if(key_v==old_key)
							   { key_jsq++;
								 if(key_jsq>=100)
								    {Status1=12;
									 key_jsq=0;
									 old_key=0;}
								}
							else
							   {old_key=key_v;
							    key_jsq=0;}
							DelayMs(10);
							break;


					case 12:						//处理键
							if(key_v==K_down)
							    {if(Menu_B==8)
							      Menu_B=0;
								 else
								  Menu_B++;
							     Status1=10;
							     }
							else if(key_v==K_up)
								{if(Menu_B==0)
							      Menu_B=8;
								 else
								  Menu_B--;
							     Status1=10;
							     }
							else if(key_v==K_esc)
							     Status1=0;
							else if(key_v==K_ok)
							     Status1=(Menu_B+2)*10;
							key_v=0;
							
							break;
				    case 20:						//平均速度查询
							Get_15min();
							Menu_B=0;
							Status1=21;
				   			break;
					case 21:						//显示当前平均速度
							Dis_Pin=Menu_B+30;
							Xs();
							key_jsq=0;
							old_key=0;
							Status1=22;
							break;
					case 22:						//按键判断
							if(key_v==old_key)
							   { key_jsq++;
								 if(key_jsq>=100)
								    {Status1=23;
									 key_jsq=0;
									 old_key=0;}
								}
							else
							   {old_key=key_v;
							    key_jsq=0;}
							DelayMs(10);
							break;

					case 23:						//按键判断
							if(key_v==K_down)
							    {if(Menu_B==3)
							      Menu_B=0;
								 else
								  Menu_B++;
							     Status1=21;
							     }
							else if(key_v==K_up)
								{if(Menu_B==0)
							      Menu_B=3;
								 else
								  Menu_B--;
							     Status1=21;
							     }
							else if(key_v==K_esc)
							     { Status1=10;
							       Menu_B=0;}
							key_v=0;
							break;
				  	case 30:						//读取疲劳驾驶数据
							Menu_B=0;
							AX=Get_pilao_2day();					//AX=;
							Status1=31;
				   			break; 
					case 31:						
							if(AX==0) 
							 	Menu_B=0;			//显示无疲劳驾驶
							else
							 	Menu_B=1;    				
							Status1=32;				//有疲劳驾驶数据
							break;
					case 32:						//显示当前疲劳驾驶数据 
							Dis_Pin=Menu_B+34;//20;
					//		speed=;
							Xs();
							key_jsq=0;
							old_key=0;
							Status1=33;
							break;
					case 33:						//按键判断
							if(key_v==old_key)
							   { key_jsq++;
								 if(key_jsq>=100)
								    {Status1=34;
									 key_jsq=0;
									 old_key=0;}
								}
							else
							   {old_key=key_v;
							    key_jsq=0;}
							DelayMs(10);
							break;
					case 34:						//按键判断
							if((key_v==K_down)&&(Menu_B!=0))
							    {if((Menu_B*2)<AX)
							       Menu_B++;
								 else
								   Menu_B=1;	
							     Status1=32;
 								   
							     }
							else if((key_v==K_up)&&(Menu_B!=0))
								{ if(Menu_B>1)
							        Menu_B--;
								  Status1=32;
									
							     }
							else if(key_v==K_esc)
							     { Status1=10;
							       Menu_B=0;}
							key_v=0;
							break;
					case 40:						//显示打印
				   			
							Dis_Pin=43;
							Xs();
							Status1=204;
							break;
					case 204:						//打印
							SendToPrinter(10);		//走纸一行
    						SendToPrinter(10);
							j1=Get_pilao();
							if(j1==0)
								{	for(i=0;i<6;i++) 
							  			{i1=pgm_read_byte(&tired_no_head[i]);
							   				SendToPrinter(i1);
							   			}
									SendToPrinter(10);
									Status2=41;
									Status1=200;
									j=0;
								}
							else
								{Status1=205;
								}
							
							break;
								
					case 205:
							if(j1==0)
							 	Status1=41;
							else
							   {    for(i=0;i<8;i++) 
							  			{i1=pgm_read_byte(&tired_e_head[i]);
							   				SendToPrinter(i1);
							   			}
									SendToPrinter(0x32);
									SendToPrinter(0x30);
									FM_CS;
									p1=com1subbuf+10*j1-4;
									for(i=0;i<3;i++)
							 			{i1=(uchar)((*p1/16)+0x30);
							  			 SendToPrinter(i1);
							  			 i1=(uchar)((*p1%16)+0x30);
							  			 SendToPrinter(i1);
										 p1++;
							  			 if(i<2)
							   				SendToPrinter(0x2f);
							 			}
									SendToPrinter(0x20);
									for(i=3;i<5;i++)
							 			{i1=(uchar)((*p1/16)+0x30);
							  			 SendToPrinter(i1);
							  			 i1=(uchar)((*p1%16)+0x30);
										 p1++;
							  			 SendToPrinter(i1);
							  			 if(i<4)
							     			SendToPrinter(0x3a);
							 			}
							
									SendToPrinter(10);
									Status2=206;
									Status1=200;
									j=0;
							   } 
							break;
					case 206: 
							 for(i=0;i<8;i++) 
							  			{i1=pgm_read_byte(&tired_s_head[i]);
							   				SendToPrinter(i1);
							   			}
									SendToPrinter(0x32);
									SendToPrinter(0x30);
									FM_CS;
									p1=com1subbuf+10*j1-9;
									for(i=0;i<3;i++)
							 			{i1=(uchar)((*p1/16)+0x30);
							  			 SendToPrinter(i1);
							  			 i1=(uchar)((*p1%16)+0x30);
							  			 SendToPrinter(i1);
										 p1++;
							  			 if(i<2)
							   				SendToPrinter(0x2f);
							 			}
									SendToPrinter(0x20);
									for(i=3;i<5;i++)
							 			{i1=(uchar)((*p1/16)+0x30);
							  			 SendToPrinter(i1);
							  			 i1=(uchar)((*p1%16)+0x30);
										 p1++;
							  			 SendToPrinter(i1);
							  			 if(i<4)
							     			SendToPrinter(0x3a);
							 			}
							
									SendToPrinter(10);
									
									Status2=207;
									Status1=200;
									j=0;
									break; 
					case 207:
								for(i=0;i<4;i++) 
							  		{i1=pgm_read_byte(&tired_l_head[i]);
							   			SendToPrinter(i1);
							   		}
									i1=j1/10+0x30;
									SendToPrinter(i1);
									i1=j1%10+0x30;
									SendToPrinter(i1);
									j1--;
									SendToPrinter(0x3a);
									SendToPrinter(10);
									

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -