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

📄 stccoinboxnew.c

📁 投币按摩椅驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
uchar nSpareMoney;//nLedValueA0,nLedValueA1,nLedValueA2,nLedValueA3,
uchar nHigh_CheckCoinCounter,nLow_CheckCoinCounter,nCheckLevelStep;
uchar xdata nTotalCoins[6];
uchar xdata nTotalCoinNumber[3]={0,0,0};
uchar xdata TimeCoin1[2]={0,0},TimeCoin2[2]={0,0};
unsigned long nRunTime;//nRunTimeB;
unsigned int nCountValue,nTimeCounter,SendTime;
unsigned int xdata Totaltime;
bit bRun,bDotShow=FALSE,bClearScreenPermit,bShowTotalcoinsumPermit;
bit bEtime;
unsigned long TotalCoinTime;
uchar Transmit_Point;Senddata1,Senddata2;
unsigned int  TimeMoney,TimeMoneyValue;
uchar R_Status,T_Status;

uchar  xdata Rxd0_RecBuffer[26];// _at_ 220;// idata 
bit bRunB,bKeyPermit,bGetCommand,bAckCommand,bSetState,bSendCommand;
bit bRtc_ChangePermit=0;
uchar code LcdSeg[] = {0x5f,0x50,0x6b,0x79,0x74,0x3d,0x3f,0x58,0x7f,0x7d,0x00};
//uchar code LcdSeg[] = {0xeb,0x60,0xc7,0xe5,0x6c,0xad,0xaf,0xe0,0xef,0xed};///*0-9适用于左边正常显示*/
uchar xdata Rtc_Seg[10]={0x00,0x08,0x00,0x01,0x02,0x06,0x00,0x08,0x00,0x00};//年月日时分
//uchar code Rtc_Seg[5]={0x26,0x6d,0x27,0x2e,0x8e};//年月日时分
uchar code TimeSet[] = {1,2,3,4,5,6,7,8,9,10,12,15,18,20,25,30};
unsigned int  code TimeSetValue[] = {60,60,120,180,240,300,360,420,480,540,600,660,720,780,840,900} ;
uchar code backtime[]  =  {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0x64,0x65,0x66}; 
//xt
uchar code SmsSend_Time[5]={0x07,0x10,0x31,0x17,0x30}; //
//uchar code tel_str1[15]="13524392560"; //Receive 手机
//uchar code tel_str2[15]="013818288474"; //Transmit 手机
uchar xdata SmsMangerCenterCode[15]={0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; //"13524392560\r";//Receive 手机13818288474
uchar xdata SmsCenterCode[15]={0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30}; //"13818288474\r";//Transmit 手机
/*******************************************************************/
  //uchar code EventCode[5]={0x01,0x02,0x03,0x04,0x05};
  uchar code EventCode=0x05;
  //01:Power off;02:Moneyfull;03:Bill Acceptor;
  //04:Action of taking money;05:Working Record of Massage chair
  /*****************************************************************/
 // uchar Init_CoinValue;//起始币值设定
 // uchar Init_TimeValue;//运行时间
  char nMoneyFullValue=0;//MoneyFull设定个、十、百、千数值;纸币张数基准值设定
 // uchar Init_BackTime;//躺卧时间设定
  //uchar Init_CoinValue;//
  uchar xdata SmsSendTime[4]={0x01,0x07,0x00,0x00};//_at_ 250;//SMS发送时刻设定
  uchar xdata MoneyFullSendTime[6];//_at_ 250;//SMS发送时刻设定
  char SmsSendTimeValue=0;//SMS发送时刻设定数值
  char Rtc_WriteTimeValue=0;//RTC调整设定数值
  uchar Rtc_WriteTimePosition=0;//指示年月日时分的设定位置
  uchar SmsSetSendTimePosition=3;//指示年月日时分的设定位置
  uchar MoneyFullPosition=0;//MoneyFull设定个、十、百、千位置
  
  uchar xdata RTC_Time[5];//_at_ 270;//年月日时分设定
  
  //uchar xdata g8563_Store[5]; /*时间交换区,全局变量声明*/
 // uchar code c8563_Store[9]={0x00,0x16,0x04,0x01,0x0a,0x07,0x07}; /*写入时间初值:星期一 07:59:00*/
 uchar code Command_At[3] = {'A','T','\r'};//"AT\r"; 
/*41 54 0d  回传:41 54 0D 0D 0A 4F 4B 0D 0A
AT
OK
*/ 
uchar code Command_Csq[7] = "AT+CSQ\r";//Signal quality test
                                     //发送41 54 2B 43 53 51 0d
/*接收到41 54 2B 43 53 51 0D 0D 0A 2B 43 53 51 3A 20 31 36 2C 39 39 0D 0A 0D 0A 4F 4B 0D 0A 
对应字符
AT+CSQ
+CSQ: 16,99

OK
*/

uchar code Command_Cmgf[10] = "AT+CMGF=1\r";//text 模式
/*
发送41 54 2B 43 4D 47 46 3D 30 0D
接收:
41 54 2B 43 4D 47 46 3D 30 0D 0D 0A 4F 4B 0D 0A
AT+CMGF=0
OK
*/
uchar code Command_cops[10] = "AT+COPS=0\r";//network operator is to be selected automatically
uchar code Command_ateo[5] = "ATE0\r";
uchar code Command_cmee[10] = "AT+CMEE=2\r";
uchar code Command_Cmgs[8] = "AT+CMGS=";
uchar xdata Command_Enter[2] = {0x1a,0x0d};
/*
发送41 54 2B 43 4D 47 53 3D 30 32 37 0D
41 54 2B 43 4D 47 53 3D 30 32 37 0D 0D 0A 45 52 52 4F 52 0D 0A 
对应字符:AT+CMGS=027
*/
/*
发送41 54 2B 43 4D 47 53 3D 30 32 37 0D 
对应字符:AT+CMGS=027
41 54 2B 43 4D 47 53 3D 30 32 37 0D 0D 0A 3E 20
*/

/*
发送
30 30 31 31 30 30 30 44 39 31 36 38 33 31 31 38 30 30 33 32 33 38 66 36 30 30 30 38 30 31 30 43 36 32 31 31 35 44 46 32 37 45 43 46 35 32 33 30 38 46 42 45 33 30 30 32 1A
接收:
30 30 31 31 30 30 30 44 39 31 36 38 33 31 31 38 30 30 33 31 33 38 66 36 30 30 30 38 30 31 30 43 36 32 31 31 35 44 46 32 37 45 43 46 35 32 33 30 38 46 42 45 33 30 30 32 1A 
0D 0A 2B 43 4D 47 53 3A 20 39 0D 0A 0D 0A 4F 4B 0D 0A
对应字符:
AT+CMGS=027
> 0011000D91683118003138f60008010C62115DF27ECF52308FBE3002
+CMGS: 10
OK
*/

uchar code GSMhead[12]="0011000D9168";
uchar code Center_number[12]="3118003238f6";
uchar code	GSM_set[6]="000801";
uchar code	GSM_sms[26]="0C62115DF27ECF52308FBE3002";			//短消息内容:我已经到达。

uchar code Command_Cnmi[18] = "AT+CNMI=1,1,0,0,1\r";//"AT+CNMI=1,1,0,0,1\r"
uchar code Command_Cmgr[8]="AT+CMGR=";
uchar code Command_Cmgd[8]="AT+CMGD=";//删除一条保存在SIM卡内的短信息
uchar code Command_Csca[23]="AT+CSCA=+8613800731500\r";//设置短信息服务中心地址
//uchar code Command_Cmgf[8]="AT+CMGF=";//择短信息格式:0为PDU方式:1为文本方式
  //uchar code SmsCenterCode[15] ={"013818288474"};//短信平台号码设定
//  uchar code SmsMangerCenterCode[15]={"13524392560"};//管理中心号码设定
 // uchar xdata SmsCenterCode[15] _at_ 300;//={"013818288474"};//短信平台号码设定
  //uchar xdata SmsMangerCenterCode[15] _at_ 330;//={"13524392560"};//管理中心号码设定
  //uchar xdata User_PassWord[4];//用户级别密码设定
  uchar xdata Supervisor_PassWord[4];	//管理员级别密码设置
  uchar xdata User_PassWord[4];// _at_ 360;//={0xd0,0xd0,0xd0,0xd0};//用户级别密码设定
  uchar xdata PassWord[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};// _at_ 360;//={0xd0,0xd0,0xd0,0xd0};//用户级别密码设定
 // uchar code User_PassWord[4]={0xd0,0xd0,0xd0,0xd0};//用户级别密码设定
//  uchar code Supervisor_PassWord[4]={0x01,0x02,0x03,0x04};	//管理员级别密码设置
   uchar xdata MoneyFull[6]={0,0,6,0,0,0};// _at_ 380;//纸币张数基准值设定
   uchar xdata CMDBuf[20];// _at_ 390;//
   //_at_ 415; //  at_ 820;  //存储通讯的手机号码长度
  char  Init_MangerCenterCodeValue=0;//管理中心号码设定数值
   char  Init_SmsCenterCodeValue=0;//管理中心号码设定数值
  char  nMangerCenterCodePosition=0;//
   char  nSmsCenterCodePosition=0;//
   
  uchar   nPasswordstatus=0;
  uchar  PassWordPosition=0;
  uchar  nPassWordErroTime=0;
  uchar nKeyTimes=0;
  bit bPassWordPermit=0;
   bit bSetPassWordPermit=0;
  bit bFirstKey_Test=0;
  bit bPassWordErro=0;
  bit bUser_PassWordPermit=0;
  bit bSupervisor_PassWordPermit=0;
//uchar xdata tel_buf[50];
void lcd(void);
void Key_Process(void);
void Totalcoinsum(void); 
void Disp_Process(void); 
void Beep(void);
void Movdisp (void);
void LcdSendData(uchar nAddress,uchar nData);
void RTCreadtime();
void RTCWritetime();
void PassWord_Process(void);
void start_GSM(void);
void WDR(void);
void Buzzer(void);
void Buzzer1(void);
/******************与IIC通信相关子程序************************/
void Buzzer(void)
{
bSpeak=1;
bBuzzDelayPermit=1;	
}

void Buzzer1(void)
{
bSpeak=1;
bBuzzDelayPermit=1;	
}

void Delay()
{
   // {P10=1;_nop_();P10=0;}
    Nop;
    Nop; /*根据晶振频率制定延时时间*/
}
/*
void DelaymS(uint time)
{
	Delay_ms=time;
	while(Delay_ms);
}
*/

void delay_20ms()    //20ms
{
bDelay20mS=1;
while(bDelay20mS);
}

/*
void delay_160ms()    //160ms
{uchar nCnt;
for(nCnt=0;nCnt<8;nCnt++)	
{
bDelay20mS=1;
while(bDelay20mS);
}
}
*/
/*
//延时500ms秒

void delay_500ms()
{
  uchar  nCnt;
  for(nCnt=0;nCnt<2;nCnt++)
    delay_160ms();
}
*/
//延时1S
/*
void delay_1s()     //1s
{
bDelay1S=1;
}
*/
//延时1S
void Start(void)
{
	bScl = 1;
	bSda = 1;
	Delay();
	bSda = 0;
	Delay();
	bScl =0;
}
void Stop(void)
{
	bSda = 0;
	bScl = 1;
	Delay();
	bSda = 1;
	Delay(); 
	//EA=1;
}
bit CheckAck()
{
	bit bEepromAck ;
	Delay();
	bScl = 1 ;
	Delay();
	bEepromAck = bSda ;
	Delay();
	bScl = 0 ;
	Delay();
	return bEepromAck ;
}
void Ack(void)
{
	bSda = 0;
	Delay();
	bScl = 1;   //clock:falling edge
	Delay();
	bScl = 0;
	Delay();
}
void NoAck(void)
{
	bSda =1;
	Delay();
	bScl = 1;
	Delay();
	bScl = 0;
	Delay();
}

/*******************************************************/
uchar ReadOneByte()
{
	bit bReadBit ;
	uchar nCnt,nTemp ;
	nTemp = 0x00 ;
	for(nCnt=0;nCnt<8;nCnt++)
	{
		nTemp = nTemp<< 1 ;
		Delay();
		bScl = 1;   	//high level continue for a while ,then read a bit 
		Delay();
		bReadBit = bSda;
		bScl = 0;
		if(bReadBit)
		{
		 	nTemp = nTemp | 0x01 ;
		} 
		else 
		{
		    nTemp = nTemp & 0xfe ;
		}
	}
	return nTemp ;
}
/*******************************************************/
void WriteOneByte(uchar nData)
{
	uchar nCnt ;
	for(nCnt=0;nCnt<8;nCnt++)
	{
		if((nData & 0x80) == 0x80)
		{
			bSda = 1 ;
		}
		else
		{
			bSda = 0 ;
		}
		Delay();
		bScl = 1;
		Delay();
		bScl = 0;
		Delay();
		nData = nData << 1 ;
	}
}
/*******************************************************/
bit WaitWriteEnd()
{
	bit bEepromAck;
	unsigned int nCounter;
	nCounter = 0;
	while(1)
	{
		Start();
		WriteOneByte(ReadCommand);
		bSda = 1;
		bEepromAck = CheckAck();
		if(bEepromAck ==0) 
		{
			ReadOneByte();
			NoAck();
			return TRUE;
		}
		nCounter++;
		if(nCounter>=0xfff)
		{
			return FALSE;
		}
	}
}	  
/*******************************************************/

bit ReadFromRom(uchar * nData,uchar nAddress,uchar nNum)
{
	bit bEepromAck ;
	uchar nCnt;
	EA=0;
	Start();
	//WP=0;
	WriteOneByte(WriteCommand);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ; 
	//WP=0;
	WriteOneByte(nAddress);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ;
	Start();
	//WP=0;
	WriteOneByte(ReadCommand);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ;
	for(nCnt=0;nCnt<nNum;nCnt++)
	{
		nData[nCnt] = ReadOneByte();
		if(nCnt!=(nNum-1))
		{
			Ack();
			bSda = 1 ;
		}
		else
		{
			NoAck(); 
		}
	}
	Stop();
	EA=1;
	return TRUE ;
	
	
}

uchar ByteReadFromRom(uchar nAddress)
{
	bit bEepromAck ;
	uchar nData;
	Start();
	//WP=0;
	WriteOneByte(WriteCommand);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ; 
	//WP=0;
	WriteOneByte(nAddress);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ;
	Start();
	//WP=0;
	WriteOneByte(ReadCommand);
	//WP=1;
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck==1) return FALSE ;
	nData = ReadOneByte();	
  NoAck(); 
  Stop();
	return nData ;
}

bit WriteToRom(uchar * nData,uchar nAddress,uchar nNum)
{
	bit bEepromAck ;
	uchar nCnt;
	EA=0;
	Start();
	WriteOneByte(WriteCommand);
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck == 1) return FALSE ;
	WriteOneByte(nAddress);
	bSda = 1 ;
	bEepromAck = CheckAck();
	if(bEepromAck == 1) return FALSE ;
	for(nCnt=0;nCnt<nNum;nCnt++)
	{
		WriteOneByte(nData[nCnt]) ;
		bSda = 1 ;
		bEepromAck = CheckAck();
		if(bEepromAck == 1) return FALSE ;
	}
	Stop();
	
	if((WaitWriteEnd() == FALSE))
	{
		EA=1;
		return FALSE;
	}
	//Delay100us(200); //在STOP命令发出后,24C02开始写,在约20MS
	EA=1;
	return TRUE;
}
/********************************************************/
bit ByteWriteToRom(uchar nAddress,uchar nData)
{
	bit bEepromAck;
	EA=0;
	Start();
	WriteOneByte(WriteCommand);
	bSda = 1;
	bEepromAck = CheckAck();
	if(bEepromAck ==1) return FALSE;
	WriteOneByte(nAddress);
	bSda = 1;
	bEepromAck = CheckAck();
	if(bEepromAck ==1) return FALSE;
	WriteOneByte(nData);
	bSda = 1;
	bEepromAck = CheckAck();
	if(bEepromAck ==1) return FALSE;
	Stop();
	if((WaitWriteEnd() == FALSE))
	{EA=1;
		return FALSE;
	}
	EA=1;
	//Delay100us(100);
	return TRUE;
}
/////////////////////////////////////////////////////////

/********************************************
内部函数,输出ACK ,每个字节传输完成,输出ack=0,结束读书据,ack=1;
********************************************/

⌨️ 快捷键说明

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