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

📄 dfq.c

📁 与C51相关模块LCD,24CXX,等的源代码程序
💻 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 + -