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

📄 main.c

📁 全国电子设计大赛:智能电动车的设计.实现功能:以AT89C52单片机为核心
💻 C
📖 第 1 页 / 共 5 页
字号:
	else 
	{
	    Write12C887RAM( SECOND_COUNT_RANGE, second_count );  // 存入一秒钟所计数数目 
	    second_count = 0;
		flag_s = 1;          // 秒标志置位 
	}
	time_old1 = time_now;

	// 半秒钟标志处理 
	if( flag_s )
	{
	    halfsecond_count++;
		if( halfsecond_count == Read12C887RAM( SECOND_COUNT_RANGE )/2 ) 
		{
		    flag_s = 0;
			halfsecond_count = 0;
		}
	}
}

//=================================================================================================
//							  	           显示 子程序
//=================================================================================================
// 
void Display( void )
{
	unsigned char i;

    Read12C887 ( time_buf );       // 读取系统时间 

    TEMPER = GetTemperature ( );   // 取得片内温度 

	//-----------------------------------------------------
	// LED glitter 
	if( LED_Glitter_Enable && !LED_Glitter_Disable )
	{
	    if( flag_s  ) LED_OUT_ACT( );
		if( !flag_s ) LED_OUT_INACT( );
	}
	else if( !LED_Glitter_Enable && LED_Glitter_Disable )
	{
	    LED_Glitter_Enable = LED_Glitter_Disable = 0;
	    LED_OUT_INACT( );
	}
 
	//-------------------------------------------
	// 前方的光电传感器取值, 因白炽灯有 50Hz 的公频, 所以需要滤波 
    // 相应操作: 取 8 次平均值 
	// 左边光电传感器 
	tempshort = 0; 
	for( i=0; i<16; i++ )
	{
	    LightLeft   = ADConvert0( 1 , 0 );  
		tempshort   += LightLeft; 
	}
	LightLeft = tempshort/16;      // LightLeft = _iror_( tempshort, 3 );

	// 中央光电传感器 
	tempshort = 0; 
	for( i=0; i<16; i++ )
	{
	    LightCenter = ADConvert0( 0 , 0 );  
		tempshort   += LightCenter; 
	}
	LightCenter = tempshort/16;    // LightCenter = _iror_( tempshort, 3 );

	// 右边光电传感器 
	tempshort = 0; 
	for( i=0; i<16; i++ )
	{
	    LightRight   = ADConvert0( 2 , 0 );  
		tempshort   += LightRight; 
	}
	LightRight = tempshort/16;    // LightRight = _iror_( tempshort, 3 ); 

	//-------------------------------------------
	// 
	Voltage       = ADConvert0( 6 , 0 );  // 5V 
	DriverVoltage = ADConvert0( 7 , 0 );  // 10V 
	DriverVoltage /= 9;                   // 校正

	Flag_Center = Center;         // 检测中央光电状态: "0" -- 中央, "1" -- 偏离  

	//-----------------------------------------------------
	// LCD 
	if( SCREEN )
	{
        DisplayNumber( 0, 8*0, time_buf[5]/10 ); // 月/日
	    DisplayNumber( 0, 8*1, time_buf[5]%10 );
	    DisplayNumber( 0, 8*2, 16             ); 
	    DisplayNumber( 0, 8*3, time_buf[4]/10 ); 
	    DisplayNumber( 0, 8*4, time_buf[4]%10 );
	    DisplayNumber( 0, 8*5, 78             ); // (星期 )
	    DisplayNumber( 0, 8*6, time_buf[3]    ); 
	    DisplayNumber( 0, 8*7, 79             ); 
	    DisplayNumber( 0, 8*8, time_buf[2]/10 ); // 时:分:秒 ( 带闪烁 ) 
	    DisplayNumber( 0, 8*9, time_buf[2]%10 );
	    if( flag_s )DisplayNumber( 0, 8*10,17 ); 
	    else        DisplayNumber( 0, 8*10,77 ); 
	    DisplayNumber( 0, 8*11,time_buf[1]/10 ); 
	    DisplayNumber( 0, 8*12,time_buf[1]%10 );
	    if( flag_s )DisplayNumber( 0, 8*13,17 ); 
	    else        DisplayNumber( 0, 8*13,77 ); 
        DisplayNumber( 0, 8*14,time_buf[0]/10 ); 
	    DisplayNumber( 0, 8*15,time_buf[0]%10 );
	};

	if( confirm_down ) // 清屏
	{
	    confirm_down = 0;
		LCDInit ( );
		LCDClear ( );
	}

	switch( SCREEN )
	{
	    case 0: //*************************************************************
				//*************************************************************
				// 初始屏:显示时间,温度
				//*************************************************************
				//*************************************************************
/*				DisplayNumber( 2,8*0,Voltage/100    );  // x.xxV
				DisplayNumber( 2,8*1,18             );  
				DisplayNumber( 2,8*2,Voltage%100/10 );
				DisplayNumber( 2,8*3,Voltage%10     );  
				DisplayNumber( 2,8*4,42             );  

				//-------------------------------
				DisplayNumber( 2,8*6,DriverVoltage/100    );  // xx.xV
				DisplayNumber( 2,8*7,DriverVoltage%100/10 );
				DisplayNumber( 2,8*8,18                   ); 
				DisplayNumber( 2,8*9,DriverVoltage%10     );
				DisplayNumber( 2,8*10,42                  );  

				DisplayRevChinese( 4,16*3,kai  ); // 开始 
				DisplayRevChinese( 4,16*4,shi2 );

				//-----------------------------------------------------
				// Light0-2
	            DisplayNumber(6,8*0,LightLeft/1000);
	            DisplayNumber(6,8*1,LightLeft%1000/100);
	            DisplayNumber(6,8*2,LightLeft%100/10);

	            DisplayNumber(6,8*4,LightCenter/1000);
	            DisplayNumber(6,8*5,LightCenter%1000/100);
	            DisplayNumber(6,8*6,LightCenter%100/10);

	            DisplayNumber(6,8*8 ,LightRight/1000);
	            DisplayNumber(6,8*9 ,LightRight%1000/100);
	            DisplayNumber(6,8*10,LightRight%100/10);

				//-----------------------------------------------------
				// DISTANCE
				DisplayNumber(2,8*13,JourneyTime/100);
				DisplayNumber(2,8*14,JourneyTime%100/10);
				DisplayNumber(2,8*15,JourneyTime%10);

				DisplayNumber(4,8*0,DISTANCE/10000);
				DisplayNumber(4,8*1,DISTANCE%10000/1000);
				DisplayNumber(4,8*2,DISTANCE%1000/100);
				DisplayNumber(4,8*3,DISTANCE%100/10);
				DisplayNumber(4,8*4,DISTANCE%10);

				DisplayNumber( 4,8*11, SECTION_BPoint/10000      );
				DisplayNumber( 4,8*12, SECTION_BPoint%10000/1000 );
				DisplayNumber( 4,8*13, SECTION_BPoint%1000/100   );
				DisplayNumber( 4,8*14, SECTION_BPoint%100/10     );
				DisplayNumber( 4,8*15, SECTION_BPoint%10         );

				DisplayNumber( 6,8*12, DISTANCE_C%10000/1000 );
				DisplayNumber( 6,8*13, DISTANCE_C%1000/100   );
				DisplayNumber( 6,8*14, DISTANCE_C%100/10     );
				DisplayNumber( 6,8*15, DISTANCE_C%10         );
*/
				//-----------------------------------------------------
				// Start , Stop 
/*				DisplayNumber(6,8*14,Start );
				DisplayNumber(6,8*15,Stop  );

				DisplayNumber(2,8*12,SECTION - 55 ); // 去掉 ASCII 码 
*/
				DisplayChinese( 0,16*0,shi  );   // 时间:xxs
				DisplayChinese( 0,16*1,jian );  
 			    DisplayNumber ( 0,8*4, 17   );
				DisplayNumber ( 0,8*5, JourneyTime/10 );
				DisplayNumber ( 0,8*6, JourneyTime%10 );
				DisplayNumber ( 0,8*7, 39   );

				DisplayChinese( 0,16*4,tie3  );   // 铁片数:x
				DisplayChinese( 0,16*5,pian4 );  
				DisplayChinese( 0,16*6,shu4  );  
				DisplayNumber ( 0,8*14,17    );
				DisplayNumber ( 0,8*15,MetalNumber );

				DisplayChinese( 2,16*0,di4  );   // 第一铁位置:x.xxm
				DisplayChinese( 2,16*1,yi   );   
				DisplayChinese( 2,16*2,tie3 );   
				DisplayChinese( 2,16*3,wei4 );   
				DisplayChinese( 2,16*4,zhi  );   
				DisplayNumber ( 2,8*10,17   );
				DisplayNumber ( 2,8*11,MetalDistance1/1000     );
				DisplayNumber ( 2,8*12,18   );
				DisplayNumber ( 2,8*13,MetalDistance1%1000/100 );
				DisplayNumber ( 2,8*14,MetalDistance1%100/10   );
				DisplayNumber ( 2,8*15,59   );

				DisplayChinese( 4,16*0,di4  );   // 第二铁位置:x.xxm
				DisplayChinese( 4,16*1,er   );   
				DisplayChinese( 4,16*2,tie3 );   
				DisplayChinese( 4,16*3,wei4 );   
				DisplayChinese( 4,16*4,zhi  );   
				DisplayNumber ( 4,8*10,17   );
				DisplayNumber ( 4,8*11,MetalDistance2/1000     );
				DisplayNumber ( 4,8*12,18   );
				DisplayNumber ( 4,8*13,MetalDistance2%1000/100 );
				DisplayNumber ( 4,8*14,MetalDistance2%100/10   );
				DisplayNumber ( 4,8*15,59   );

				DisplayChinese( 6,16*0,quan   );   // 全程路程 :x.xxm
				DisplayChinese( 6,16*1,cheng  );   
				DisplayChinese( 6,16*2,lu4    );   
				DisplayChinese( 6,16*3,cheng  );   
				DisplayNumber ( 6,8*10,17   );
				DisplayNumber ( 6,8*11,DISTANCE/1000     );
				DisplayNumber ( 6,8*12,18   );
				DisplayNumber ( 6,8*13,DISTANCE%1000/100 );
				DisplayNumber ( 6,8*14,DISTANCE%100/10   );
				DisplayNumber ( 6,8*15,59   );
			
				break;

		case 1: //*************************************************************
		        //*************************************************************
				// 第一屏:主选择菜单
				//*************************************************************
				//*************************************************************
		        // 
		        if( vertical == 1 )	
				{
				    DisplayNumber( 2,8*0, 1  ); // 1.时间(反显)
					DisplayNumber( 2,8*1, 18 );
					DisplayRevChinese( 2,16*1,shi  );
					DisplayRevChinese( 2,16*2,jian );
				}
                else
				{
				    DisplayNumber( 2,8*0, 1  ); // 1.时间
					DisplayNumber( 2,8*1, 18 );
					DisplayChinese( 2,16*1,shi  );
					DisplayChinese( 2,16*2,jian );
				}
				if( vertical == 2 )
				{
				    DisplayNumber( 4,8*0, 2  ); // 2.报警(反显)
					DisplayNumber( 4,8*1, 18 );
					DisplayRevChinese( 4,16*1,bao4  );
					DisplayRevChinese( 4,16*2,jing3 );
				}
				else
				{
				    DisplayNumber( 4,8*0, 2  ); // 2.报警
					DisplayNumber( 4,8*1, 18 );
					DisplayChinese( 4,16*1,bao4  );
					DisplayChinese( 4,16*2,jing3 );
				}
				if( vertical == 3 )
				{
				    DisplayNumber( 6,8*0, 3  ); // 3.DAC(反显)
					DisplayNumber( 6,8*1, 18 ); 
                    DisplayRevNumber( 6,8*2, 13 ); 
					DisplayRevNumber( 6,8*3, 10 ); 
					DisplayRevNumber( 6,8*4, 12 ); 
				}
				else
				{
				    DisplayNumber( 6,8*0, 3  ); // 3.DAC
					DisplayNumber( 6,8*1, 18 ); 
                    DisplayNumber( 6,8*2, 13 ); 
					DisplayNumber( 6,8*3, 10 ); 
					DisplayNumber( 6,8*4, 12 ); 
				}
				if( vertical == 4 )
				{
				    DisplayNumber( 2,8*8, 4  ); // 4.设置(反显)
					DisplayNumber( 2,8*9, 18 );
					DisplayRevChinese( 2,16*5,she );
					DisplayRevChinese( 2,16*6,zhi );
				}
				else
				{
				    DisplayNumber( 2,8*8, 4  ); // 4.设置
					DisplayNumber( 2,8*9, 18 );
					DisplayChinese( 2,16*5,she );
					DisplayChinese( 2,16*6,zhi );
				}
				if( vertical == 5 )
				{
				    DisplayNumber( 4,8*8, 5  ); // 5.USB(反显)
					DisplayNumber( 4,8*9, 18 );
					DisplayRevNumber( 4,8*10,41 );
					DisplayRevNumber( 4,8*11,39 );
					DisplayRevNumber( 4,8*12,22 );
				}

⌨️ 快捷键说明

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