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

📄 19264cv0_1.c.bak

📁 V型机LCD程序2005-11-5,V型机LCD程序2005-11-5
💻 BAK
📖 第 1 页 / 共 5 页
字号:
	miaotime=0;\
	miao60sign=0;\
}

void Feedingdog(void)
{ 	
	bit i,j,k;
	i=MCS1;
	j=MCS2;
	k=MCS3;
	MCS1=0;
	MCS2=0;
	MCS3=1;
	MCS1=i;
	MCS2=j;
	MCS3=k;
}
//void no_p(void){;}
void dispnodata(void)
{
//extern uchar code gpssign[];
	uchar data i;
	for(i=7;i<23;i++)
	{	
		disromdata(gpssign[i-7],gpssign[i-6]);
		disdatatune();
		Dispchin(0,i,0);
		i++;
	}
	Dispchar(0,i,0x20,0);
	//Dispchar(0,i,0x20,0);
	//disromdata(0xb9,0xf4);				
	//disdatatune();
	//Dispchin(0,0,0);
	//disromdata(0xb9,0xfa); //
	//for(j=0;j<28;j++)
	//SBUF=disdata[i];
	//disdatatune();
	//for(j=0;j<24;j++)
	//{
	//	disdata[j]=yy[j];
	//
	//}
	//Dispchin(0,4,0);



	//Dispchar(0,i,0x2e,0);
	//Dispchar(0,i,0x2e,0);
}
void surenume()
{	//disromdata(0xc7,0xeb); 	// 请 //从ROM取数据-》数据横变纵调整-》将数据打入LCD
	//disdatatune();
	//Dispchin(6,4,0);
	
	disromdata(0xcd,0xcb);	// 退
	disdatatune();
	Dispchin(6,3,1);
	
	disromdata(0xb3,0xf6); 	// 出
	disdatatune();
	Dispchin(6,5,1);
	//disromdata(0xbb,0xf2); 	// 或
////disdatatune();
	//Dispchin(6,12,0);
	disromdata(0xc8,0xb7);	// 确
	disdatatune();									   
	Dispchin(6,15,1);
	
	disromdata(0xc8,0xcf); 	// 认
	disdatatune();
	Dispchin(6,17,1);
	
}

void reginit(void)
{
	uchar data i,j,k;
	for(j=0,k=0x30;j<3;j++,k++)
	for(i=0;i<6;i++)
	{
		 RegPswVal[j][i]=k;//登录密码值:数字的ASCII
		 	
	}


}

void Myinit(void)
{
	P0 = 0xFF;
	P1 = 0xFF;	
	P2 = 0xFF;
	P3 = 0xFF;
	BLIGHT=0;
	//AUXR|=0x02;//屏蔽内部XRAM
	FlagXram=0;//读取点阵时使用XDATA 0x0000--0x02ff标志。1:使用 0:未使用
	
	AUXR&=0xfd;//使能内部XRAM//XDATA 0x0000--0x02ff;不对实际的外部RAM开放。
						   
	A18=0;//不选中UNICODE——GB表
	//IP = 0x20;	// t2为最高优权
	IP=0x14;//t2为最高优先级ex1次之其它为低优先级//
	IE = 0x00;	//
	PCON = 0x00;	// give baud 9600 bps
//	PCON=0x80;	// give baud 9600*2 bps
	SCON = 0x50;
	TMOD = 0x21;     //TIMER1 MODE 2,波特率发生器
	TCON = 0x00;	// ENABLE INRET BIT
    	T2CON = 0x09;//
    	T2MOD = 0x00;
    	TL0 = TIME0L;
    	TH0 = TIME0H;	//10MS ONE TIMES
    	TL1 = TIME1L;	//波特率9600
	TH1 = TIME1H;	// 
    	TL2 = 0x00;	//
    	TH2 = 0x00;	//
	RCAP2H=0x00;
	RCAP2L=0x00;
    	
//	CONRX=DGPS_COMM;
//	flag_main_dgps=DGPS_COMM;
	CONRX=MAIN_COMM;//for debug
	flag_main_dgps=MAIN_COMM;
	
	//位标志//初始化
	RecJoin=0;
	////////////全局UCHAR 变量初始化/////////////
	readkeysign=0;
	time20mssign=0;					   
	TxPos=0;
	TxNum=0;
	RxMain_ptr=0;
	RxMain_star=0;
	RxMain_end=0;
	COMM_OK=0;//开机时与主机通讯状况标志。1:OK 0:异常 
	KEYVAL_OK=0;//发送键值是否成功标志1:发送成功 0:发送失败
	KeyIntervalTime=0;//按键间隔时间
	BEEPtime=0;//蜂鸣器响闹时间
 	BLtime=0;//LCD背光时间
	sec5=0;
	
	BeepSound=0;//蜂鸣器发声标志
	BLlight=0;//背光点亮标志
	KeyCaller=0;
	//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
		      //0为无调用者
	NoReadInfoCnt=0;//未读信息计数器
	CommCounter=0;
//	SPIWRITESD(0x00);	// open watch dog
	ComeTelCnt=0;//来电条数计数器
	ComeTelView=0;//当前来电项指针指示当前光标位置
	ComeTelOldView=0;//前一来电项指针
	KeyCaller=0;//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
			      //0为无调用者
	FinallyKeyVal=0xff;//最终键值。可作为KEYTUNE程序以外的用户程序使用的键值
				  //无论由LCD面板还是红外手柄输出的键值译码后都必须在此变量中备份
	TxCmdCnt=0;//发送除电话号码以外的命令数据的字节数
	SMScnt=0;
	SchInforCnt=0;//调度信息计数器
	InforType=0;//收到新信息的类型标志
	RefushCommInfor=0;//刷新公共信息标志
	RefushCmdInfor=0;//刷新调度信息标志

	NewInforTimer=0;//新信息显示定时器

	NoReadCmdCnt=0;// 未读调度信息计数器
	NoReadSmsCnt=0;// 未读短信信计数器
	NoReadGprsCommCnt=0;// 未读GPRS公共信息计数器

	CommTotal=0;
	RegOK=0;
	AutoConnectionFlag=0;// 自动接听标志。1:自动 0:手动

	Feedingdog();
    	cleardisram();
	antenna = 0;
	//tnumbnews = 0x00;
	
	seri_rx_prt = 0x00;
	
	selfsign=0;
	//innewssign=0;
	//rxmsign=0;
	gps_write=0;
	//sendsignt2=0;
	alarmsign=0;
	dispsign=1;
	dismiaosign=0;
	loudsign=0;
	screen2=0;//主界面标志
	//dispnews=0;
	testsign=0;
	dispteleph=0;							  
	comeingtelep=0;
	pic_temp=1;
	jiannumb=byte_read(0,0x01);
	
	bNewInfor=0;//有新短信标志
	WaitingOver=0;//在主界面以及拨打电话、通话界面以外待机超过5分钟
	reginit();//登录初始化
	XdataInint();
	
	
//	SPIWRITESD(0x30);	// close watch dog
}
//void lightbell(void)
//{
//	BLIGHT=0;
//}
void displayline3 (uchar xpost)
{	// 清除一行()
uchar data i;
	for(i=0;i<24;i++)
		Dispchar(xpost,i,0x20,0);
}
 //uchar volatile idata axx=1;
////////////////主函数开始///////////////////////////////////////////////
/*void dtest(void)
{
	uchar idata i,j;
	i++;
	j++;
	
	/*if(ComeTelBuf[0]==0x24)
	{
	 	for(i=3,j=1;i<24;i++)	
		{
			if(ComeTelBuf[j]==0x0d) break;
			
			Dispchar(3,i,ComeTelBuf[j],0);
			j++;
		}
	
	
	
	}		
	else	
	{	i=RxMain_data[0];
		Dispchar(2,0,i,0);
		i=RxMain_data[1];
		Dispchar(2,1,i,0);
		i=RxMain_data[2];
		Dispchar(2,2,i,0);
		i=RxMain_data[3];
		i=number_ascii(i);
		Dispchar(2,3,i,0);
		i=RxMain_data[4];
		i=number_ascii(i);
		Dispchar(2,4,i,0);
		i=RxMain_data[5];
		i=number_ascii(i);
		Dispchar(2,5,i,0);
		i=RxMain_data[6];
		j=(i&0xf0)>>4;
		j=number_ascii(j);
		Dispchar(2,6,j,0);
		i=RxMain_data[6];
		j=i&0x0f;
		j=number_ascii(j);
		Dispchar(2,7,j,0);
	}			
				
			
} */
void main()
{

	//SP=0xd0;

	raminit();   	
	Myinit();
	
	lcdiniton();	// OPEN DISPLAY
	lcdinitz();	// LINE Z
	Feedingdog();	// clear watch dog
	lcdclose();
	displaynop();
	lcdiniton();
	
	beginmap(3);	//  开机图显示
	delaykey();
	//raminit();
	cleardisram();

	
	displaynop();
	COMM_OK=0;
	

	ES=1;
	ET2 =1;	// allow t2 int
	ET0=1;
	
	EA=1;
	TR0 = 1;
	TR1 = 1;
	TR2 = 1;

	selfexamine();
	displaynop();
	keytabindex=0;
	(*KeyTab[keytabindex].CurrentOperate)();
	if(nogpsdata)
	{	dispdate();//显示日期
		disptime();//显示时间
	}
	else
		dispnodata();//显示:搜寻卫星信号...
	Feedingdog();
	dispnewsnumb();// 显示接收信息的条数、以及未读信息的条数
	IRIN=1;	
	BEEPtime=0;
	BLtime=0;
	BEEP=0;
	BLIGHT=0;
	p1tune(RAMCS);
	ManulCall[0]=0x0d;
	comeingtelep=0;
	OldInforCnt=0;
	NewInforCnt=0;
	FinallyKeyVal=0xff;
	
	//FOR DEBUG START
	//wrsr_dog(0x34);//启动看门狗
	
	//FOR DEBUG END
/////////////////按键处理////////////////////////////////////////////////
	while(1)
		{      	
			Feedingdog();

			//if(keytabindex==0)
			//dtest();//for test在LCD上显示从主机接收到的前7位

			//for debug start
			//byte_write(0,0x01,0x03);
			//x5045data=byte_read(0,0x01);
			//Dispchar(2,1,(number_ascii(antenna)),1);
			//Dispchar(2,0,(number_ascii(((antenna)>>4))),1);

			//Dispchar(2,3,(number_ascii(OldAntennaVal)),1);
			//Dispchar(2,2,(number_ascii((OldAntennaVal>>4))),1);

			//for debug end
			
			RefushFace();//刷新主界面//for  
			
			//||OldInforCnt!=NewInforCnt
			if((comeingtelep&&dispteleph)||WaitingOver||((BLtime>=6100)&&((InforType&0x0f)>0)))
			{	
				keytabindex=0;
				mainface();
				pic_temp=0;
				if((InforType&0x0f)>0)
					InforType=0;	
			
			} 
			if(testkey())
			{
				
				KeyCaller=0x10;
				keytune();
				if(keytabindex==24)
				{
					screen2=1;
				}		 	
				else
				{
					screen2=0;
				}
						

		    	}
			IRKeyVal=HandleIR();
			if(IRKeyVal!=0xff)
			{	
				
				KeyCaller=0x20;
				keytune();

				if(keytabindex==24)
				{
					screen2=1;
				}		 	
				else
				{
					screen2=0;
				}
			}			 			
			
			if(gps_rec_end)
			{	
			       	seridatatune();
				gps_star = 0;
				gps_rec_end = 0;
				
			}			

			//UartSendProcess();	

			rxdatatune();//处理主机发送来的数据*/
					
	    } 
  	      
 
}

////////////////主函数结束///////////////////////////////////////////////
 
void untogb(uchar hi_unicode,uchar low_unicode)//unicode 转换成 GB2312内码
{						//查表后所得到的是区位码+0x2020
					//加0x8080转化为内码送入缓冲
				//如果以后RAM不够用可采用返回参数方式
			//!!不可显示字符转换会出乱码!!!//不转换ASCII的UNICODE
	uint16 data unicode;
	/*if(hi_unicode==0&&low_unicode<0xa4)//如果是ASCII字符
	{
	}*/		
	p1tune(ROMCS);
	A18=1;
	A17=0;//非常重要!!!!!
	LCDRWIO=1;
	LCDDIIO=1;
	//P1=ROMCS;							
	unicode=hi_unicode;
	CY=0;
	unicode=unicode<<8;
	//k=low_unicode;
	unicode+=(uint16)(low_unicode);

	if(unicode>=0x80a4)//判断是在第一还是第二个64K范围
	{	
		
	
		//unicode=unicode-0x80a4;
		unicode-=0x80a4;     //减去0x8000
		A16=1;
		//unicode-=0x00a4;
	}
	else
	{	
		A16=0;
		unicode-=0x00a4;
	}
	CY=0;
		
	unicode=unicode<<1;
	
	hi_gb=XBYTE[unicode];
	
	unicode++;
	low_gb=XBYTE[unicode];
	
	/*if((hi_gb<0x21)||(low_gb<0x21))//for debug
	{
		hi_gb=0x21;low_gb=0x32;


	} //for debug

	//P1=j;
	 if((hi_gb>0x77)||(low_gb>0x7e))//for debug
	{
		hi_gb=0x21;low_gb=0x24;


	} //for debug*/ 
	hi_gb=hi_gb|0x80;
	low_gb=low_gb|0x80;

	A18=0;
       

}



void rxdatatune(void)//接收主机数据处理
{
	uchar data i,j,k,checksum;
	//uchar xdata *TempPtr;
	//uchar xdata *pTemp1,*pTemp2;
	uint16 idata p,q,r;
	//uchar xdata pTemp1,pTemp2;
	p=q=r=0;
	i=j=k=checksum=0;
	while(TxNum!=0||TxPos!=0);
	//ES=0;
	Feedingdog();
	LCDRWIO=1;
	LCDDIIO=1;
	p1tune(RAMCS);
		
	if(RxMain_end)
	{			
		
		p=RxMain_data[3];
		p=(p<<8);
		p+=RxMain_data[4];
		p+=5;//加上$+设备字+命令字+2数据长度字节
		checksum=RxMain_data[3];		
		for(q=4;q<p;q++)			      
		{
			checksum^=RxMain_data[q];		
		}//算校验和

		//for GPRS SMS DEBUG STAR
		if(RxMain_data[2]==0x42)//for test
		{	ReturnOK(0x42);	 //for test
			BEEPtime=0;
			BLtime=0;
			BEEP=0;
			BLIGHT=0;
			if(RxMain_data[15]==0x00)//如果是公共信息
				CommProcess(p);//GPRS发送的公共信息处理

⌨️ 快捷键说明

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