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

📄 main.c

📁 keil打开-51单片机LCD显示程序 LCD控制模块使用深圳剑拓的串口转VGA模块
💻 C
📖 第 1 页 / 共 4 页
字号:
		mput(DiagnosisCode7[8]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[1])  //580
	{
		mput(DiagnosisCode7[9]);
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode7[10]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[2])  //581
	{
		mput(DiagnosisCode7[11]);
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode7[12]);
		setwfc(7);
		mput("   等待 3 秒");
		TR0 = 1;
		for(i=2;i!=0xff;i--)
		{
			while(TimingFlag == 0) ;
			TimingFlag = 0;
			mput("\r\t"); mputchar(i+0x30);
			watchdog();
		}
		TR0 = 0;
		Count = 28;
		watchdog();
		if(Sw[Page45Sel][7]&Mask[2])  //581
		{
			mput(DiagnosisCode7[11]);
		}
		else
		{
			setwfc(9);
			mput(DiagnosisCode7[13]);
			setwfc(7);
		}
	}
	if(Sw[Page45Sel][8]&Mask[4])  //687
	{
		mput(DiagnosisCode7[14]);
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode7[15]);
		setwfc(7);
		mput("   等待 3 秒");
		TR0 = 1;
		for(i=2;i!=0xff;i--)
		{
			while(TimingFlag == 0) ;
			TimingFlag = 0;
			mput("\r\t"); mputchar(i+0x30);
			watchdog();
		}
		TR0 = 0;
		Count = 28;
		watchdog();
		if(Sw[Page45Sel][8]&Mask[4])  //687
		{
			mput(DiagnosisCode7[14]);
		}
		else
		{
			setwfc(9);
			mput(DiagnosisCode7[16]);
			setwfc(7);
		}
	}
	if(Sw[Page45Sel][7]&Mask[5])  //591
	{
		mput(DiagnosisCode7[17]);
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode7[18]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[6])  //592
	{
		mput(DiagnosisCode7[19]);
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode7[20]);
		setwfc(7);
	}
	watchdog();
	mput(DiagnosisEnd);

}

check_process8()
{
	uchar i;
	if(Sw[Page45Sel][6]&Mask[4])//568
		mput(DiagnosisCode8[0]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[1]);
		setwfc(7);
	}
	if(Sw[Page45Sel][4]&Mask[6])//577
		mput(DiagnosisCode8[2]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[3]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[4])//590
		mput(DiagnosisCode8[4]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[5]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[3])//589
		mput(DiagnosisCode8[6]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[7]);
		setwfc(7);
	}
	if(Sw[Page45Sel][7]&Mask[7])//593
		mput(DiagnosisCode8[8]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[9]);
		setwfc(7);
	}
	watchdog();
	if(Sw[Page45Sel][8]&Mask[0])//594
		mput(DiagnosisCode8[10]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[11]);
		setwfc(7);
		mput("   等待 3 秒");
		TR0 = 1;
		for(i=2;i!=0xff;i--)
		{
			while(TimingFlag == 0) ;
			TimingFlag = 0;
			mput("\r\t"); mputchar(i+0x30);
			watchdog();
		}
		TR0 = 0;
		Count = 28;
		watchdog();
		if(Sw[Page45Sel][8]&Mask[0])
			mput(DiagnosisCode8[10]);
		else
		{
			setwfc(9);
			mput(DiagnosisCode8[12]);
			setwfc(7);
		}
	}
	if(Sw[Page45Sel][8]&Mask[1])//597
		mput(DiagnosisCode8[13]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[14]);
		setwfc(7);
	}
	if(Sw[Page45Sel][8]&Mask[2])//599
		mput(DiagnosisCode8[15]);
	else
	{
		setwfc(9);
		mput(DiagnosisCode8[16]);
		setwfc(7);
	}
	mput(DiagnosisEnd);
}

check_process9()
{
	uchar i;
	if(Sw[Page45Sel][1]&Mask[7])//433
	{
		mput(DiagnosisCode9[0]);
		if(Sw[Page45Sel][4]&Mask[7])//1780
		{
			mput(DiagnosisCode9[2]);
			if((Analog[Page45Sel][0]*20/0xfff) > 12)//1701
			{
				mput(DiagnosisCode9[4]);
				mput("   还有 10 秒");
				TR0 = 1;
				for(i=9;i!=0xff;i--)
				{
					while(TimingFlag == 0)
						if(Sw[Page45Sel][1]&Mask[1])//415
						{
							TR0 = 0;
							Count = 28;
							TimingFlag = 0;
							mput("\r\t"); mput("00");
							watchdog();
							mput(DiagnosisCode9[6]);
							if(Sw[Page45Sel][3]&Mask[0])//501
							{
								mput(DiagnosisCode9[8]);
								if((Sw[Page45Sel][5]&(Mask[3]|Mask[4]|Mask[5]|Mask[6]))==(Mask[3]|Mask[4]|Mask[5]|Mask[6]))//471#,472#,473#,474#
								{
									mput(DiagnosisCode9[10]);
									if(((AnalogFactor[i]*Analog[Page45Sel][5]*20/0xfff)>15) &&
										((AnalogFactor[i]*Analog[Page45Sel][6]*20/0xfff)>15) &&
										((AnalogFactor[i]*Analog[Page45Sel][7]*20/0xfff)>15) &&
										((AnalogFactor[i]*Analog[Page45Sel][8]*20/0xfff)>15))//1781#,1782#,1783#,1784
										mput(DiagnosisCode9[12]);
									else
									{
										setwfc(9);
										mput(DiagnosisCode9[13]);
										setwfc(7);
									}
								}
								else
								{
									setwfc(9);
									mput(DiagnosisCode9[11]);
									setwfc(7);
								}
							}
							else
							{
								setwfc(9);
								mput(DiagnosisCode9[9]);
								setwfc(7);
							}
							mput(DiagnosisEnd);
							return;
						}
					mput("\r\t"); mputchar(0x30); mputchar(i+0x30);
					watchdog();
					TimingFlag = 0;
				}
				TR0 = 0;
				Count = 28;
				setwfc(9);
				mput(DiagnosisCode9[7]);
				setwfc(7);
			}
			else
			{
				setwfc(9);
				mput(DiagnosisCode9[5]);
				setwfc(7);
			}
		}
		else
		{
			setwfc(9);
			mput(DiagnosisCode9[3]);
			setwfc(7);
		}
	}
	else
	{
		setwfc(9);
		mput(DiagnosisCode9[1]);
		setwfc(7);
	}
	mput(DiagnosisEnd);
}

void check_item(uchar i)  // i = 0 -> 7
{
	clear_screen();
	CurrentPage = Check1 + i;
	cursor(CheckTitleOffset[i], 1);
	mput(CheckItem[0+i]+4);
	watchdog();
	switch(i)
	{
	case 0:
		check_process1();
		break;
	case 1:
		check_process2();
		break;
	case 2:
		check_process3();
		break;
	case 3:
		check_process4();
		break;
	case 4:
		check_process5();
		break;
	case 5:
		check_process6();
		break;
	case 6:
		check_process7();
		break;
	case 7:
		check_process8();
		break;
	case 8:
		check_process9();
		break;
	default: ;
	}
	watchdog();
}

//****************************************************************************
// Key Process
//****************************************************************************
void key_process()
{
	if(NewKey)
	{
		watchdog();
		switch(Key)
		{
		case 0x41:	// 确定
			switch(CurrentPage)
			{
			case MenuPage:
				switch(MenuItem)
				{
				case 0:
					init_page12(0);
					sort_sw();
					refresh_page12(0);
					break;
				case 1:
					init_page12(1);
					sort_sw();
					refresh_page12(1);
					break;
				case 2:
					init_page3();
					NewSelfCheck = 1;
					refresh_page3();
					break;
				case 3:
					Page45Sel = 0;
					init_page45();
					refresh_page45();
					break;
				case 4:
					Page45Sel = 1;
					init_page45();
					refresh_page45();
					break;
				default: ;
				}
				break;
			case Page4:
			case Page5:
				check_item(Page45Item[Page45Sel]);
				break;
			default: ;
			}
			break;
		case 0x42:	// 取消
			switch(CurrentPage)
			{
			case Check1:
			case Check2:
			case Check3:
			case Check4:
			case Check5:
			case Check6:
			case Check7:
			case Check8:
			case Check9:
				init_page45();
				refresh_page45();
				break;
			default: ;
			}
			break;
		case 0x43:	// 上翻
			switch(CurrentPage)
			{
			case MenuPage:
				OldMenuItem = MenuItem;
				if(--MenuItem == 0xff)
					MenuItem = 0x04;
				watchdog();
				refresh_menu();
				break;
			case Page4:
			case Page5:
				Page45OldItem[Page45Sel] = Page45Item[Page45Sel];
				if(--Page45Item[Page45Sel] == 0xff)
					Page45Item[Page45Sel] = 0x08;
				watchdog();
				refresh_page45();
				break;
			default: ;
			}
			break;
		case 0x44:	// 下翻
			switch(CurrentPage)
			{
			case MenuPage:
				OldMenuItem = MenuItem;
				if(++MenuItem == 0x05)
					MenuItem = 0x00;
				watchdog();
				refresh_menu();
				break;
			case Page4:
			case Page5:
				Page45OldItem[Page45Sel] = Page45Item[Page45Sel];
				if(++Page45Item[Page45Sel] == 0x09)
					Page45Item[Page45Sel] = 0x00;
				watchdog();
				refresh_page45();
				break;
			default: ;
			}
			break;
		case 0x40:
		case 0x45:	// 功能
			init_menu();
			refresh_menu();
			break;
		default: ; 
		}
		watchdog();
		NewKey = 0;
	}
}
//****************************************************************************
// Main
//****************************************************************************
void main()
{
	init_timer();
	init_serial();
	init_8279();
	init_can_controller();
	init_irq();
	delay500ms();
	watchdog();
//	AUXR1 |= 0x10;
	init_page12(0);
	sort_sw();
	refresh_page12(0);
	watchdog();
	while(1)
	{
		switch(CurrentPage)
		{
		case Page1:
			if(NewSw)
			{
				sort_sw();
				refresh_page12(0);
				NewSw = 0;
			}
			break;
		case Page2:
			if(NewSw)
			{
				sort_sw();
				refresh_page12(1);
				NewSw = 0;
			}
			break;
		case Page3:
			if(NewAnalog)
			{
				refresh_page3();
				NewAnalog = 0;
			}
			break;
		default: ;
		}
		watchdog();
		key_process();
	}
}
/*************************************************************/
/*****************    定时器中断服务程序   *******************/
/*************************************************************/

void timer_isr() interrupt 1 using 0
{
	watchdog();
	TH0 = 0; TL0 = 0;
	if((--Count) == 0)
	{
		Count = 28;
		TimingFlag = 1;
	}
}

/*************************************************************/
/*****************     键盘中断服务程序    *******************/
/*************************************************************/
void key_isr() interrupt 2 using 2
{
	COM8279=0x40;
	Key=DAT8279;
	NewKey=1;
}
/************************************************************************/
/********************	    	CAN接收中断子程序      ******************/
/************************************************************************/
void RX_Service() interrupt 13 using 3
{ 
	uchar idata i, length;
	uchar idata ReceiveMessage[13] = {0};
	CANADR=RBF;
	ReceiveMessage[0] = CANDAT;
	length = ReceiveMessage[0]&0x0F;
	if(length > 0x08)
		length = 0x08;
	for(i=0;i<4+length;i++)
		ReceiveMessage[i+1] = CANDAT;
	watchdog();
	if((ReceiveMessage[2] == 0x04) || (ReceiveMessage[2] == 0x24))
	{
		for(i=0;i<4;i++)
			if((ReceiveMessage[3] < 0x03) || ((ReceiveMessage[3] == 0x03) && (i < 2)))
				Analog[ReceiveMessage[2]>>5][(ReceiveMessage[3]-1)*4+i] =
					ReceiveMessage[5+2*i]+(((uint)ReceiveMessage[6+2*i])<<8);
		NewAnalog = 1;
	}
	else if((ReceiveMessage[2] == 0x05) || (ReceiveMessage[2] == 0x06) ||
		(ReceiveMessage[2] == 0x25) || (ReceiveMessage[2] == 0x26))
	{
		if(ReceiveMessage[3] == 0x10)
		{
			for(i=0;i<4+(ReceiveMessage[2]&0x01);i++)
				Sw[ReceiveMessage[2]>>5][(!(ReceiveMessage[2]&0x01))*5+i] = ReceiveMessage[5+i];
			NewSw = 1;
		}
		else if(ReceiveMessage[3] == 0x01 || ReceiveMessage[3] == 0x00)
		{
			switch(ReceiveMessage[2])
			{
			case 0x05:
				SelfCheck[0] = ReceiveMessage[3];
				break;
			case 0x06:
				SelfCheck[1] = ReceiveMessage[3];
				break;
			case 0x25:
				SelfCheck[2] = ReceiveMessage[3];
				break;
			case 0x26:
				SelfCheck[3] = ReceiveMessage[3];
				break;
			default: ;
			}
			NewSelfCheck = 1;
		}
	}
	else if(ReceiveMessage[2] == 0x01)
	{
		Sw[0][9] = ReceiveMessage[5];
		Sw[1][9] = ReceiveMessage[7];
	}
	watchdog();
	CANCON=0x04;
}

⌨️ 快捷键说明

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