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

📄 19264cv0_1.c

📁 C51 LCD 显示程序非常具有参考价值
💻 C
📖 第 1 页 / 共 5 页
字号:
//void sys_list_FaceSet();  //SYS信息光标停在3“界面设置”栏
void send_result_disp(uchar send_fan_sign);

uchar number_ascii(uchar number);//将数值转换成ASCII码
void send_keyval(uchar hkeyval,uchar lkeyval); //发送键值

uchar send_feedback(uchar);

uchar send_help(uchar);
	
void send_workinfo_face(); //发送业务信息显示“业务信息发送中”

void send_help_face();    //发送求助信息显示“求助信息发送中”
	
void send_feedback_face();  //发送反馈信息显示“反馈信息发送中”
	
void disp_ver();          //display ver
	
void disp_sign_val();      //显示信号标值
	
void disp_set_menu();      //显示界面设置选择菜单/隐含操作
	
	
void face1_set();  //界面设置:“伊爱高新”
	
void face2_set();  //界面设置:“一路顺风”
	
void face3_set();     //界面设置:“伊爱高新为你服务”
	
void face4_set();//界面设置:“伊爱车载显示终端”
	
void face_Set_operate();  //执行界面设置操作
	
void send_workinfo_fail(); //显示“发送业务信息失败、成功”
	
	
void send_help_success(); //显示“发送求助信息成功”
	
void send_feedback_success(); //显示“发送反馈信息失败、成功”



///////////菜单结构表内函数声明结束///////////////////////////////////

uchar HandleIR(void);//红外拨号器处理

void selfexamine(void);//自检
uchar bytetune(uchar);//字节按位倒序 
void putdown(uchar xpos,uchar ypos,bit);//在第0行显示向下的箭头符号
void putup(uchar xpos,uchar ypos,bit);//在第0行显示向上的箭头符号
void p1tune(uchar);//往P1送片选信号控制LCDE  ROMCS RAMCS HZKCS KEYCS BEEP
void display(uchar *,uchar);
void dispscreen(void);
void serive_tx_data(void);
void keytune(void);	//键值处理
void delaykey(void);
void raminit(void);
//void disnonews(void);
bit testkey(void);//检测是否有按键
bit rxmaindata(void);//接收主机数据
void cleardisram(void);//清显示RAM 0-12	BYTE
void cleardisram1(void);//无实现部分。
void antennaroue(void);//显示GSM信号强度
void dispdate(void);
void disptime(void);
void dispnewsnumb(void);
void dingwroue(void);
//void dispscreenchin(void);
void seridatatune(void);
void dotetimedate(void);
void byte12(void);
void speedtune(void);							   
// Header:
// File Name: 
// Author:
// Date:
//void lightbell(void);
void beginmap1(uchar);
void gpsmap(void);
void gpsfang(void);
void dis12dote(uchar,uchar,uchar *,bit);
void dis12dote1(uchar,uchar,uchar *,bit);
void d12jianmian(void);
void dispscreen1 (void);
//void rxdatatune1(void);
void rxdatatune(void);//串行接收主机数据处理
void readtelep(void);
//void readnews(void);
void beginmap(uchar);
void displaynop(void);
bit lcdstate(void);	//读LCD状态
void lcdinitz(void);  //设置显示初始行为第0行
void lcdiniton(void);//开显示
void lcdclose(void);//关显示
bit lcdwcommd(uchar);//写命令入LCD
bit lcdwdata(uchar); //写显示数据入LCD
void disdatatune(void);//横向数据调整成纵向数据

uchar menutune(uchar,uchar *,uchar,uchar);
//void disonenews(uchar *);
//void displsysure(uchar *);
void displaysurenews(uchar );
void displayline3 (uchar);				 // 清除一行
void displayline2(uchar ,uchar * ,bit );   // 显示信息目录中的某一行
void displayline1(uchar ,uchar * ,bit ); 	//显示一行电话号码。
void displayline(uchar ,uchar * ,bit);	// 显示一行ASCII字符或者汉字。uchar *:指向GB码的指针。
void readromandchpot(uchar ,uchar );
void Dispchar(uchar ,uchar ,uchar ,bit);// 在指定位置显示一个ASCII字符 入口为ASCII码
//void Dispchin(uchar ,uchar ,uchar ,uchar ,bit);
void Dispchin(uchar ,uchar ,bit);//将调整后的Dispdata[32]数据写入LCD
void disromdata(uchar ,uchar );//根据内码取ROM中点阵数据并传给汉显缓冲disdata[]
//extern	void serive_rx_data(void);

//调用外部的汇编程序
//extern uchar SPIRecAChar(void);		//asm files
//extern SPIWRITESD(uchar i );		//asm files
//extern bit SPISendAChar(uchar senddata);


//extern void SPISendStr(INT8U * senddata, INT8U length);




/*****************************************
//key time rset: 键检测时间复位  宏定义
****************************************
#define (){\
	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;
	EA=0;
	//if(byte_read(0,0x02!=0x30))
	//{	
		//wrsr_dog(0x30);	//写使能
		//byte_write(0,0x02,0x30);//X5045	的02H是登陆密码初始化字。30表示已经
		//wrsr_dog(0x3e);//写保护
		
		
		for(j=0,k=0x30;j<3;j++,k++)
		for(i=0;i<6;i++)
		{
			 RegPswVal[j][i]=k;//登录密码值:数字的ASCII
			 	
		}
		page_write(0x10,&RegPswVal[0][0],6);//写入X5045
		page_write(0x20,&RegPswVal[1][0],6);//写入X5045
		page_write(0x30,&RegPswVal[2][0],6);//写入X5045
	//}
}

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;//串口为最高优先级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;
	
	//位标志//初始化
	bGSM_GPRS=0;//0:GSM状态 1:GPRS状态
	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;
		
	KeyCaller=0;
	//调用Keytune()的调用者声明。0x10为LCD面板按键检测程序 0x20为IRKEY检测程序
		      //0为无调用者
	p1tune(RAMCS);
	NoTalkCnt=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公共信息计数器
	ReinforceConveneNum=0;//填充标地的电召存储序号

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

	Feedingdog();
    	cleardisram();
	antenna = 0;
	//tnumbnews = 0x00;
	
	seri_rx_prt = 0x00;
	TotalWorkRec=0;//业务记录总的条数
	ConveneInforCnt=0;//电召信息计数器
	NoReadConveneCnt=0;//未读电召信息计数器
	
	NewAimFlag=0;//收到新标标志

	MainRecBusy_flag=0;
	MainRecBusyTime=0;
	MainRecTimer=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);
	if(jiannumb>3)
		jiannumb=3;	
	
	bNewInfor=0;//有新短信标志
	WaitingOver=0;//在主界面以及拨打电话、通话界面以外待机超过5分钟
	reginit();//登录初始化
	XdataInint();
	//wrsr_dog(0x00);//for debug
	
}

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;
	uchar data i;
	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;
	send_keyval(0x0f,0x00);//请求中心发送“定制信息”
	//FOR DEBUG START
	//wrsr_dog(0x34);//启动看门狗
	
	//FOR DEBUG END
/////////////////按键处理////////////////////////////////////////////////
	while(1)
		{      	
			Feedingdog();

⌨️ 快捷键说明

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