📄 hand_913_rs232_ok.c
字号:
lcdwritedata(0x0C); //二重合成,设置一,三区为图型方式,合成显示方式为:或.
//---------------------------------------------
clearlcd(); //调清屏子程序
//---------------------------------------------
lcdwritecom(0x59); //显示开,
lcdwritedata(0x07); //设置:1~4区开显示,光标关。5h=01010110
lcdwritecom(0x4c); //光标移动方向,向d移动,地址加一。
//---------------------------------------------------------------------
return;
}
/*=========================================================================================*
函数:void clearscren(void)
功能:清除屏幕
参数:
返回值6
-------------------------------------------------------------------------------------------
更新日期:2003.05.15
=======================================================================================*/
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)
{
//---------------------------------------------------------
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -