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

📄 hand_902_cmbus_ok.c

📁 基于PIC18F6720MCU开发的手持式POS机的原码
💻 C
📖 第 1 页 / 共 5 页
字号:
=======================================================================================*/
void	clearlcd(void)																	//清除屏幕
{	
	uint	i,j;  
	lcdwritecom(0x4C);              //光标移动方向,向右移动,地址加一。	
    lcdwritecom(0x46);              //设置光标地址
    lcdwritedata(0x00);             //csrl=0x00;
    lcdwritedata(0x00);             //csrh=0x00;同时设置该地址作为显示缓冲区的当前地址指针。
    lcdwritecom(0x42);              //允许MCU连续的将显示数据写入显示缓冲区.   
	for(i=0;i<1091;i++)
       {	
		for(j=0;j<30;j++) lcdwritedata(0X00); 		
	    }
	return;
}
/***************************************************************************************
创建日期:2004.6.28                                 
作者:rojam
功能:忙标志BF判断
返回值:
参数:
**************************************************************************************/
uchar  lcdreadbf(void)
   {
	uchar  i;
	YJDATA_DDR=0xff;
	YJA0_DDR=output;
bf_loop:
	YJA0_OUT=A0_DATA;											//选择输入数据通道
	YJRD_DDR=output;
    YJRD_OUT=0;                                               //读信号有效	
	NOP;
	NOP;
    i=YJDATA_IN;   
	YJRD_OUT=1;                                                 //读信号无效
	while(i&0x40) goto bf_loop ;
   	YJCS1335_OUT=1;												//关闭
	return i;
   }
/***************************************************************************************
创建日期:2004.6.28                             
作者:rojam
功能:写单控制指令
返回值:
参数:CD-命令
**************************************************************************************/
void lcdwritecom(uchar CD)
{
	YJDATA_DDR=0x00;
	YJDATA_OUT=CD;	
	YJA0_OUT=A0_COM;										    //选择输入数据通道
	NOP;
	YJCS1335_OUT=0;
	YJWR_DDR=output;  									        //
    YJWR_OUT=0;                                                 //写信号有效
    NOP;
	NOP;
	NOP;
	NOP;
	YJWR_OUT=1;												    //写信号无效
	YJCS1335_OUT=1;												//
	return;
}
/***************************************************************************************
创建日期:2004.6.28                                
作者:rojam
功能:写LCD参数或显示数据子程序
返回值:数据
参数:data-数据
**************************************************************************************/
void lcdwritedata(uchar data)
  {
   	//---------------------------------------------------------
	//YJRD_DDR=output;
	//YJRD_OUT=1;
	//---------------------------------------------------------
   	YJDATA_DDR=0x00;
	YJDATA_OUT=data;
	YJA0_OUT=A0_DATA;										    //选择输入数据通道
	NOP;
	YJCS1335_OUT=0;												//
	YJWR_DDR=output;  	
    YJWR_OUT=0;                                                 //写信号有效
	NOP;
	NOP;
	NOP;
	NOP;
	YJWR_OUT=1;												    //写信号无效
	YJCS1335_OUT=1;												//
    return ;
   }
/***************************************************************************************
创建日期:2004.6.28                               
作者:rojam
功能:读参数及显示数据子程序
返回值:
参数:
**************************************************************************************/
uchar lcdreaddata(void)									    	//读状态字
   {
	uchar i;
	YJDATA_DDR=0xff;
   	YJA0_OUT=A0_COM;										    //选择输入数据通道
	YJCS1335_OUT=0;
	YJRD_OUT=0;													//读信号有效
	NOP;
	NOP;
	i=YJDATA_IN;
	NOP;
	NOP;
	NOP;
	YJRD_OUT=1;
	YJCS1335_OUT=1;												//
	return i;
    }
/**********************************************************************************
void	yjbg(uchar n)
创建日期:2004.7.10                                  
作者:rojam
功能:液晶背光控制,0 is off, 1 is on.
返回值:
参数:
***********************************************************************************/
void yjbg(uchar n)																		//液晶背光控制
{
	YJLEDCON_DDR=output;
	if(!yjelflag)
      { 
		YJLEDCON_OUT=0;               //开背光
		yjelflag=1;		
	  }
      else 
         {		  
		  YJLEDCON_OUT=1;             //关背光
		  yjelflag=0;
		  elontime=0;
         }
	return;
}
/*========================================================================================*
函数:void Delayms(uchar)
创建日期:2003.4.15                                  
作者:王建华
功能:n ms延时。
参数:n——延时时间设定。
返回值:无
更新日期:2000.5.15
*========================================================================================*/
void	delayms(uint n)											//n ms延时
   {
	uchar s;
	INTCONbits.GIE=0;											//关总中断
	for(; n>0; n--)	
	   {
		DOG;
		for(s=0; s<200; s++);
	   }
	INTCONbits.GIE=1;											//关总中断
	return;
    }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//                 中断处理函数
//主要功能:
//         1.键盘接口工作。                                    
//         2.液晶背光定时控制工作。
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**********************************************************************************
创建日期:2004.7.6                                 
作者:rojam
功能:中断函数,按键功能。
返回值:
参数:
键盘键值对应表:
	0-------09h---10		up------13h-------11
	1-------0ch---1			down----0fh-------12
	2-------08h---2			right---10h-------13
	3-------04h---3			light---0eh-------14
	4-------0bh---4			Esc-----14h-------15
	5-------07h---5			lamp----12h-------16
	6-------03h---6			set-----0dh-------17
	7-------0ah---7			+/------05h-------18
	8-------06h---8			Enter---01h-------19
	9-------02h---9			
**********************************************************************************/                            
void	interrupth(void)
{
	uchar	i,j,k,keyvalue;			
	//*******************按键键扫描程序****************************************
	if(PIR1bits.TMR1IF)													//5ms中断
	{
		//-----------------------
		PIR1bits.TMR1IF=0;												//清定时器TMR2溢出寄存器
		TMR1H=0x40;		                                                //重置定时器值。
		//------------------------       
		ROW4_DDR=input;
		ROW3_DDR=input;
		ROW2_DDR=input;
		ROW1_DDR=input;                        
		keyposition=(keyposition>3)?0:++keyposition;
		switch(keyposition)	    //*************************按键查询******
		{	
			case 0:
			   	COL5_OUT=1;
				COL1_DDR=output;
				COL1_OUT=0;				
				break;
			case 1:
				COL1_OUT=1;
				COL2_DDR=output;
				COL2_OUT=0;				
				break;
			case 2:
				COL2_OUT=1;
				COL3_DDR=output;
				COL3_OUT=0;					
				break;
			case 3:
				COL3_OUT=1;
				COL4_DDR=output;
				COL4_OUT=0;				
				break;
			case 4:				
				COL4_OUT=1;
				COL5_DDR=output;
				COL5_OUT=0;				
				break;
			default: break;
		}
		//-----------------------------------
		if((!key)&&(!handmark))             //中断时间约为:9ms
		{
			if(!ROW1_IN)
			{
				keyvalue=keyposition*4+1;
				handmark=40;
			}
            else if(!ROW2_IN)
			  {
				keyvalue=keyposition*4+2;
				handmark=40;
			   }
			else if(!ROW3_IN)
			  {
				keyvalue=keyposition*4+3;
				handmark=40;
			  }
			else if(!ROW4_IN)
			  {
				keyvalue=keyposition*4+4;
				handmark=40;
			  }
			else keyvalue=0;

	    	if(keyvalue!=0) 
                {
				 key=KEYCODE[keyvalue];
				 elontime=0;
				 systermruntime=0;
                }
            else 
                {
                 elontime++;
				 systermruntime++;	
                 }
		}       		
		if(handmark) handmark--;
	}
	//---------------------------------------------------其它定时功能。		
	if(!displaynextpage) displaytime++;
	batdet_time++;
	return;
}

/**********************************************************************************
创建日期:2004.7.6                                 
作者:rojam
功能:完成按键操作显示功能。实现良好的人机接口。
返回值:key
参数:
step_count0:操作步长=0:未登陆,=10:登陆。
step_count1:=00:表示在主菜单页面下。=10:抄表,=20:---
deep_count:为人机数据交换是横向的相对输入位置。
键盘键值对应表:
	0-------09h---10		up------13h-------11
	1-------0ch---1			down----0fh-------12
	2-------08h---2			right---10h-------13
	3-------04h---3			light---0eh-------14
	4-------0bh---4			Esc-----14h-------15
	5-------07h---5			lamp----12h-------16
	6-------03h---6			set-----0dh-------17
	7-------0ah---7			+/------05h-------18
	8-------06h---8			Enter---01h-------19
	9-------02h---9		
//static uchar rom  KEYCODE[21]={0,19,9,6,3,18,8,5,2,10,7,4,1,17,14,12,13,0,16,11,15 };	
**********************************************************************************/
void	Function(void)																			//按键功能函数
{
    static	uchar   cby[7]={0xb3,0xad,0xb1,0xed,0xd4,0xb1,0};

⌨️ 快捷键说明

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