📄 dfq.c
字号:
/******************************************************
DESIGN FOR PCBA'S Material Number Display by RF315M
Designer: BH Zhang
Date:2006-1-11
Ver:1.0
Modify Mark:NONE
*******************************************************/
#include <at89x51.h> //包含89S51的WDT子过程
#include "dfq.h"
#include "timer.h"
#include "1602b_lcd.h"
#include "rf315mhz.h"
#include "4x4key.h"
//------------------------------------------------------
#define MNLEN (RFSENDLEN-4) //material NO len=16bits
//------------------------------------------------------
unsigned char nCurMode=KEY; //init status
unsigned char nCurLine='A'; //Line Code
unsigned char aDispNo[MNLEN+1];
bit bInLN=0; //input LO:1 MO:0
unsigned char nGroup=0; //0--number 1,2,3--abcd...
unsigned char nKey=NOKEY; //record key,0xFF=NO KEY
//------------------------------------------------------
void ClearDispNo(void){
unsigned char i;
for(i=0;i<MNLEN+1;i++)aDispNo[i]='_';
}
//------------------------------------------------------
void DispSendOK(void){
unsigned char i;
for(i=0;i<MNLEN+1;i++)aDispNo[i]='_';
aDispNo[0]='S';aDispNo[1]='E';
aDispNo[2]='N';aDispNo[3]='D';
aDispNo[5]='O';aDispNo[6]='K';
}
//------------------------------------------------------
void DispSendFail(void){
unsigned char i;
for(i=0;i<MNLEN+1;i++)aDispNo[i]='_';
aDispNo[0]='N';aDispNo[1]='O';
aDispNo[3]='A';aDispNo[4]='C';
aDispNo[5]='K';
}
//------------------------------------------------------
void InitMcu(void){
RFTX=1; //close 315MH Transistor
LCD_init();
InitTime();
ClearDispNo();
EA=1;
TR0=1;
TR1=0;
}
//------------------------------------------------------
unsigned char InputPos(){
unsigned char i;
for(i=0;i<MNLEN;i++){
if(aDispNo[i]==' ')break;
if(aDispNo[i]=='_')break;
}
return i;
}
//------------------------------------------------------
void Display(void){
unsigned char i;
static bit b;
b=!b;
LCD_write_string(0,0,"LineNo:");
if((bInLN)&&(nCurMode==KEY)){
if(b)LCD_char(nCurLine);
else LCD_char('_');
}else LCD_char(nCurLine);
LCD_write_string(9,0," ");
if(bInLN){
LCD_char('L');LCD_char('N');
}else{
LCD_char('M');LCD_char('O');
}
LCD_char(' ');
LCD_char('G');
LCD_digtal(nGroup);
LCD_set_xy(0,1);
if((!bInLN)&&(nCurMode==KEY)){
i=InputPos();
if(b)aDispNo[i]='_';
else aDispNo[i]=' ';
}
for(i=0;i<MNLEN;i++)LCD_char(aDispNo[i]);
}
//------------------------------------------------------
void DeleteChar(void){
unsigned char i;
//for(i=0;i<MNLEN;i++)if(aDispNo[i]==' ')break;
i=InputPos();
if(i>0)aDispNo[i-1]='_';
}
//------------------------------------------------------
//0 1 2 3
//0ABC 1DEF 2GHI 3JKL
//4 5 6 7
//4MNO 5PQR 6STU 7VWX
//8 9 10 11
//8YZ 9 NUM A-1
//12 13 14 15
//A-2 A-3 c/l Enter
//------------------------------------------------------
void process_key(){
unsigned char i,tmp;
i=InputPos();
switch(nKey){
case 10:
case 11:
case 12:
case 13:
nGroup=nKey-10;
break;
case 14:
if(i==0)bInLN=!bInLN;
else DeleteChar();
break;
case 15:
if(i>0){
nCurMode=SEND;
LCD_write_string(0,1,"Sending_________");
}
break;
default:
tmp=(nGroup==0)?nKey+'0':nKey*3+'A'+nGroup-1;
if(tmp<='Z'){
if(bInLN)nCurLine=tmp;
else if(i<16)aDispNo[i]=tmp;
}
break;
}
i=InputPos();
for(;i<MNLEN+1;i++)aDispNo[i]='_';
nKey=NOKEY;
}
//------------------------------------------------------
void Sort_Data(){
unsigned char i;
RFBuf[2]=nCurLine;
for(i=3;i<19;i++)RFBuf[i]=aDispNo[i-3];
}
//------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -