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

📄 19264cv0_1.c.bak

📁 C51 LCD 显示程序非常具有参考价值
💻 BAK
📖 第 1 页 / 共 5 页
字号:
/***********************************************************************************
 Start date: 2004-06-15 
 mcu: STC89C516RD、STC89C516RD+
 ver:	0.8
 Writer: hujie
 Purpose: V type machine
------------------------------------------------------------------------------------
 NOTICE:
	1)STC89C512RD+内有1024BYTE XRAM,如用此IC 读写外部RAM:0X400以内地址需屏蔽
	   STC89C512RD 内有768YTE   XRAM,如用此IC 读写外部RAM:0X300以内地址需屏蔽

   	2)读写XRAM时候 A0-A15 、/WR、 /RD无输出。

 	3)更换虚拟XDATA不同的MCU后需修改以下函数:
    	   void disromdata(uchar hicode,uchar locode)//从ROM中读取汉字点阵数据
	   另,在对所有XDATA型数据的访问前,需执行p1tune(RAMCS)函数。
//------- MODIFY DATE:2004-10-19------------//
//**********************************************************************************/
//#pragma SRC

#include  "regx52.h"	 
#include  "lcd192.h"
#include  <absacc.h>
#include  <intrins.h>
#include  "io_assign.h"
#include  "IRrec.h"
#include  "keyval_def.h"
#include  "array_def.h"
#include  "newmenu.h"
#include  "x5045.h"

//#include <hanshudef.h>

//#include <keytune.h>


#define     MAIN_COMM     1 //接收主机数据
#define     DGPS_COMM	  0 //接收GPS数据
//////////////////位标志定义///////////////////////
//////////原始位标志///////////////
bit gps_star;//
bit gps_rec_end;//
bit gps_dingw;//GPS定位标志
bit gps_write;//
//bit dispnews;//
bit fangsign;//
bit time50mssign,time100mssign,time1ssign,miao60sign,dispteleph;//
bit dispsign,comeingtelep,selfsign,screen2;//
bit alarmsign,loudsign,lightsign,dismiaosign,testsign;//
bit nogpsdata1;//
bit nogpsdata;//"1"GPS定位状态“0”GPS无定位
//////////////////////////////新定义位标志///////////////
//bit newtel,news;//
bit flag_main_dgps;//接收主机与DGPS选择标志  
bit RxMain_head=FALSE;
bit BeepSound,BLlight;//蜂鸣器发声以及背光点亮标志
bit readkeysign;//有键盘按下标志
bit volatile RecJoin;//接收主机数据字节高、低4位结合标志。1:结合
bit FlagOldComeTel;//上一次来电标志
bit bNewInfor;//有新短信标志
bit WaitingOver;//在主界面以及拨打电话、通话界面以外待机超过5分钟
bit regingflag;//“密码验证成功但还未返回”标志 1:未返回 0已经:返回
////////////////////////////////////////////////////////
uchar data pic_temp;//上一状态号码
uchar data other_temp;
uchar data other1_temp; //上一状态号
uchar data keyval_temp; //上一键值
uchar data  TxPos;
//uchar idata  TxPos;
uchar data TxNum;
uchar data RxMain_star;
uchar data RxMain_end;
uint16 data RxMain_ptr;
uchar data COMM_OK;
uchar data KEYVAL_OK;
uchar data sec5;//

uchar idata RegOK;// 登录标志
uchar idata CommCounter;//公共信息计数器
uchar idata SMScnt;//短信计数器
uchar idata CommTotal;//公共信息总数 包含公共信息计数器+短信计数器
uchar idata SchInforCnt;//调度信息计数器
uchar idata InforTotal;//总的信息条数
uchar idata InforListCnt;//信息显示列表计数器
uchar idata InforDispCnt;//信息内容显示计数器

uchar idata WaitingTimer;//待机定时器;单位:分钟
uchar idata FlagNoHotTel;//无热线号码标志
uchar idata FlagPortInput;//IP端口输入状态标志
bit AutoConnectionFlag;// 自动接听标志。1:自动 0:手动
bit SelectAutoConnection;//自动接听选择标志:1:自动 0:手动

uchar idata IRKeyVal;
uchar idata mcsbak;//片选信号备分
uchar idata FlagXram;//读取点阵时使用XDATA 0x0000--0x02ff标志。1:使用 0:未使用
uchar idata ComeTelTimer;//来电超时定时器
uchar idata TxCmdCnt;//发送除电话号码以外的命令数据的字节数
uchar idata HotLineCnt;//热线条数
uchar idata ForntMID;//前一位是间隔符标志
uchar idata InforType;//收到新信息的类型标志
//0x10 电召 0x20 调度 0x30 GPRS 公共 OX40 短信
//0x11 0x21 0x31 0x41 表示信息已经显示
uchar idata RefushCommInfor;//刷新公共信息标志
uchar idata RefushCmdInfor;//刷新调度信息标志

uchar idata NoReadCmdCnt;// 未读调度信息计数器
uchar idata NoReadSmsCnt;// 未读短信信计数器
uchar idata NoReadGprsCommCnt;// 未读GPRS公共信息计数器
uchar idata NoReadInfoCnt;//未读信息计数器
uchar idata NewInforTimer;//新信息显示定时器

uchar idata REG_No;//当前登录驾驶员编号
uchar idata ModifyPsw_No;//当前更改登录密码的驾驶员编号
bit FlagOldOK;//旧密码验证OK
bit FinishRegModify;//完成登陆密码更改标志
bit FlagFinishReg;//登陆验证完成标志
//////////////////////////////////////////////////////////////
uchar idata  antenna;//USED GSM信号强度值。
uchar data  mcs138;
uchar idata  miaotime;
uchar idata  time_count_s;
uchar idata  time_10ms;
uchar idata command;
uchar idata time20mssign;
uchar idata KeyIntervalTime;//按键间隔时间
uchar idata BEEPtime;//蜂鸣器响闹时间
uint16 idata BLtime;//LCD背光时间
//uchar data tnumbnews;

uchar idata  jiannumb;//主界面问候语句序号
uchar data  gpstime;
uchar data seri_rx_prt;		       

uchar data hi_gb;				      
uchar data low_gb;
/***********************信息显示部分变量声明开始*********************/
uchar idata InforListCurser;//信息列表光标
uchar idata InforListPtr;//显示信息列表时的序号//以3递增递减
uchar idata InforScreenNum;//信息内容显示屏号
uchar idata InforScreenCnt;//信息内容屏数

 
bit InforListClrScreen;//信息列表清屏标志
bit InforDispBuffering;//信息内容已经全部缓冲标志

uchar idata x5045data;//for debug

/*************************信息显示部分变量声明结束********************/

struct GprsInforStruct//GPRS方式发出信息的结构
{
	uchar ReadFlag;//是否阅读标志//0x2a未读、0x20已读//00表示废弃
	uchar InforNumber;//信息存储序号//0xff表示无用信息
	uchar CodeMode;//编码方式内码或UNICODE//0XF0内码、0XF8 UNICODE
	uchar BlockNumber;
	uchar BlockTotal;
	//uchar Tels[54];//电召及顾客电话
	uchar Text[512];//文本 
	uint16 TextLenth;//文本长度
};




struct SMSstruct//短信的结构
{
	uchar ReadFlag;//是否阅读标志//10未读、80已读 //00表示废弃
	uchar InforNumber;//信息存储序号
	uchar CodeMode;//编码方式内码或UNICODE//0XF0内码、0XF8 UNICODE
	uchar Tel[24];//
	uchar Text[166];//文本 
	uchar TextLenth;//文本长度
};

struct ComeTelStruct//来电记录的结构
{
	uchar TalkFlag;//是否通话标志
	uchar ComeTelNumber;// 电话序号
	uchar ComeTel[22];//来电号码
	uchar ComeTelDate[24];//来电日期时间
	
};

struct ComeTelStruct xdata ComeTel[20] _at_  0x60e6;//来电记录

struct GprsInforStruct xdata CmdInfor[20] _at_ 0x1000; //调度信息
struct GprsInforStruct xdata ConvokeInfor[10] _at_ 0x388c;//电召信息
struct SMSstruct xdata SMSInfor[10] _at_ 0x4cd2;//短信

struct GprsInforStruct xdata CommInfor[10] _at_ 0x64e6;//公共信息

uchar data keytabindex;//菜单状态索引变量
typedef struct 
	{
		unsigned char KeyTab_MenuIndex; //当前状态索引号
		//unsigned int KeyTab_MaxItems; //本级菜单最大条目数
    		unsigned char KeyTab_PressOk;  	//按下"确认"键时转向的状态索引号
    		unsigned char KeyTab_PressEsc;	//按下"退出"键时转向的状态索引号
		unsigned char KeyTab_PressDEL;	//按下"DEL"键时转向的状态索引号
		unsigned char KeyTab_PressFUNC;	//按下"功能"键时转向的状态索引号
		unsigned char KeyTab_PressDown; //按下"下翻"键时转向的状态索引号
    		unsigned char KeyTab_PressUp;   //按下"上翻"键时转向的状态索引号
		unsigned char SubTotal;		//该级子菜单数//OXFF表示小于2
		unsigned char SubNum;		//该画面的子序号对应红外键值转向
		
		void    (code *CurrentOperate)();    //当前状态应该执行的功能操作
	}KeyTabStruct;
void    (code *KeyFuncPtr)();    //按键功能指针
KeyTabStruct code KeyTab[121];

///////////////////////////////////////////////////////
void  untogb(uchar hi_unicode,uchar low_unicode);
void Feedingdog(void);
void XdataInint(void);
//uchar AscToHex(uchar Asc);//ASCII转HEX
void CommProcess(uint16 p);//GPRS发送的公共信息处理//入口数据长度值
void ReturnOK(uchar token);//向串口发送接收OK。入口为命令字
void TxCommand(void);//向主机发送(除电话号码以外)数据的公共函数
void DialNum(void);//在待机界面显示数字以及* #,及在通话状态向主机发送键值
void SendTel(void);// 发送号码到主机
/////////菜单结构表内函数声明开始/////////////////////////////////////
void disp_halfline(uchar xpost,uchar * discodeprt,bit tempsign);
void RefushFace(void);//刷新主界面
void SendGprsInforListToDisBuf(struct GprsInforStruct *InforPtr,struct SMSstruct *SMS_Ptr,
				uchar ReverseLine);
void SendGprsInforContentToDisBuf(void); //将入口参数对应的GPRS
							//信息的当前屏的内容送显示缓冲
void DispCommError(void);//显示通讯异常
void owntel_number_in(void);//自定义电话:号码输入界面

void store_owntel(void);//自定义号码:存储界面

void SMScenter_number_in(void);//设置短信中心界面

void store_SMScenter(void);//存储短信中心号码

void SendSMS_CentTel(void);// 发送短信中心号码到主机

void GPRS_IPset(void);//GPRS IP设置界面

void GPRS_Pw(void);//GPRS设置密码输入

void Validate(void);//GPRS IP以及密码验证

void PwNotice(uchar xpos,uchar ypos,bit tempsign);//密码提示语句显示“请输入X位密码”

void TempDispFuc(uchar xpos,uchar ypos,bit tempsign);//从固定地址提取内码显示一行临时语句
      
void CommSMSProcess(uint16 p);//短信方式发送的公共信息处理

void ScheduleInforProcess(uint16 p);//GPRS发送的调度信息的处理

void ScheduleInfor_Del_face(void);//GPRS调度信息删除询问界面

void ScheduleInfor_Del_Operate(void);//GPRS调度信息删除操作,无截面

///调度信息列表显示函数
void SendCmdInforListToDisBuf(struct GprsInforStruct *InforPtr,uchar ReverseLine);

void workRec_disp_face(void); //业务记录列表:显示详细业务记录 


void SendCmdInforContentToDisBuf(void);//调度信息的当前屏的内容送显示缓冲

void DispCurrentInfor(void);//显示当前收到的短信,全局变量入口:InforType为信息类型
				//0x10 电召 0x20 调度 0x30 GPRS 公共 OX40 短信
				//0x11 0x21 0x31 0x41 表示信息已经显示

SendComeTelListToDisBuf(struct ComeTelStruct *pComeTel,uchar ReverseLine);//显示来电记录列表

void NumberInput(uchar xpos,uchar LowBit,uchar HighBit);//从IRKEY输入数字的公共函数

void NumberInput_Separate(uchar xpos,uchar LowBit,uchar HighBit);//从IRKEY或者FACEBORD输入数字的公共函数

void store_config(void);//自动接听配置界面:手动

void auto_connection_face(void); //自动接听配置界面:自动 

void modify_psw_face1(void);      //"1#更改登录密码"

void modify_psw_face2(void);      //"2#更改登录密码"

void modify_psw_face3(void);      //"3#更改登录密码"

void Input_OldRegPsw(void);//更改登录密码--》旧密码输入

void RegPsw_Sure(void);    //输入新登陆密码以及确认

void often_list_feedback(void){;} //常用短语列表-》“2 反馈短语”

void into_tel_disp(void){;}       //来电详细内容显示                                                
                                               
void del_intotel_request(void){;}  //DEL来电记录询问  
                                              
void del_intotel_face(void){;}   //DEL来电操作并显示                       
                                                              
void manual_connection_face(void){;}//自动接听配置界面:手动

//显示8*16的天线符号
void DispAntenna(uchar xpost,uchar ypost,bit tempsign);

void ComeTel_Del_Face(void);//删除来电列表询问界面

void ComeTel_Del_Operate(void);// 删除来电列表操作,无界面

void Dial_ComeTel(void);//拨打来电号码界面

void DispDetial_ComeTel(void);//显示来电号码以及时间等详细信息

void SendComeTelContentToDisBuf(void);//发送来电详细记录到显示缓冲


void mainface(void);//显示主界面

void main_menu_query();     //主菜单,光标停在“查询来电”栏

void main_menu_workinfo();   //主菜单,光标停在“业务信息”栏

//void main_menu_publicInfo();//主菜单,光标停在“公共信息”栏

void sub_menu_workinfo();  //业务信息列表,光标停在第一栏"车到侯客"
	
	
void sub_menu_help();     //求助信息列表,光标停在第一栏"塞 车"
	
	
void sub_menu_feedback();  //反馈信息列表光标停在第一栏"车内有事物"

		  	//以下三个是对应3个预留主菜单的内容显示结构
	
void read_sms_face();    //阅读短信界面,根据10状态的光标停留栏显示短信
	
	
void read_tel_face();     //阅读来电界面,根据11状态的光标停留栏显示来电
	
		                 //目前暂和11的功能一样--未使用
	
void send_workinfo_ask(); //发送业务信息询问界面
	
	
void send_help_ask();   //发送求助信息询问界面
	
	
void send_feedback_ask();   //发送反馈信息询问界面
	
	
void gps_status();      //GPS定位状态。
	
void del_sms_face(void);  // DEL 短信无界面

void disp_send_success();

void workinfo_list_jdk();//业务信息光标停在2“接到客人”

void workinfo_list_kc();//业务信息3空车

void workinfo_list_wzdzcdd();//业务信息4未找到召车地点

void workinfo_list_zcdwk();//业务信息5召车地无客

void workinfo_list_wfasdd();//业务信息6无法按时到达

void workinfo_list_qlpc(); //业务信息7请另派车

	
void help_list_gz();    //求助信息2光标停在"故 障"栏

void help_list_sg();    //求助信息3光标停在"事 故"栏

void help_list_pm();	//求助信息4光标停在"抛 锚"栏

void help_list_qzsjyz();//求助信息5光标停在"请指示加油站"栏

void help_list_ylqz();  //求助信息6光标停在"医疗求助"栏

void help_list_mlqzswz();//求助信息7光标停在"迷路,请指示位置"栏

	
void feedback_list_cnwsw();	//反馈信息2车内有失物

void feedback_list_tcxx();  //反馈信息3停车休息

void feedback_list_cljy();  //反馈信息4车辆加油
	
void sys_list_ver();		//SYS信息光标停在4"版本信息"栏
	
void sys_list_gsm();      //SYS信息光标停在2"GSM信号标值"栏

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 Keytimerset(){\

⌨️ 快捷键说明

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