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

📄 main.c

📁 使用STC89c58RD+系列单片机控制手机收发短信息的原理、硬件电路、PDU数据格式和短信息发送/接收程序
💻 C
字号:
/*********************本程序仅限学习交流***************************
*********************引用请注明作者 axin***************************
*************************文件名main.c******************************
*Copyright(C)2008 biti
*功能描述:单片机控制tc35iGSM模块收发短信
*所需模块:	名称		型号		厂家
*			单片机		STC89c58RD+	STC
*			GSM模块		tc35i		西门子
*			液晶显示器	1602(16脚)
*			串口		MAX232		
*			蜂鸣器
*			电源、连接线若干
*所需文件:	名称		描述
*			reg52.h		特殊功能寄存器
*			stdlib.h	NULL
*			intrins.h	_nop_()
*			1602_lcd.c	1602液晶显示器子函数
*			shizhong.c	时间函数
*			tc35i.c		GSM模块子函数
*作    者:axin
*日    期:2008-4-20
*QQ:35714796
********************本程序仅限学习交流****************************
********************引用请注明作者 axin***************************
*****************************************************************/
#include <reg52.h>
#include <stdlib.h>
#include <intrins.h>

extern void delayms_48us();
extern void delayms_1ms();
extern void delayms_10ms();
extern void delayms_100ms();
extern void delayms_1000ms();

#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long
#define zhushi ;

sbit P3_7=P3^7;

#include "1602_lcd.c"
#include "shizhong.c"
#include "tc35i.c"

/*****************************************************************
*函数名称: 主函数
*功能: 		延时函数
*形参:
*返回值:
*备注:		调度个子函数,完成通信过程
*****************************************************************/
void main(void)
{ char i=0;	//uint j=0;	char *p;
	//定时器初始化
	Time0Init();
	zhushi delayms_10ms();Bell();
	//初始化LCD1602
	delayms_1ms();lcd_init();
	delayms_1ms();lcd_init();
	delayms_1ms();lcd_init();
	delayms_1ms();lcd_init();delayms_100ms();
	//显示开机画面
	zhushi lcd_disp_str(" How are you !  ",1);
	zhushi lcd_disp_str("   Welcome!     ",2);	
	//延时5s					
	for(i=0;i<5;i++)delayms_1000ms();
	//清除串口接收缓冲区
	zhushi lcd_disp_str("  Clear RsBuf   ",1);
	zhushi lcd_disp_str("                ",2);
	ClrBuf(RsBuf,RsBuf_N);
	//串口初始化 定时器初始化
	UART_init();delayms_100ms();
	//串口发送"联机"指令
	Send_AT();
	//串口发送"禁止回显"指令
	SendString("ATE0\r");
	zhushi lcd_disp_str("ATE0            ",1);				
	delayms_1000ms();
	//串口发送"PDU模式"指令
	SendString("AT+CMGF=0\r");
	zhushi lcd_disp_str("AT+CMGF=0       ",1);
	delayms_1000ms();
	//串口发送"新信息报告"指令
	SendString("AT+CNMI=1,1,0,2,1\r");	
	zhushi lcd_disp_str("ATCNMI=1,1,0,2,1",1);	
	delayms_1000ms();
	//清除串口接收缓冲区前50字节
	ClrBuf(RsBuf,50);
	RsPoint=0;
	ES=1;
	//tc35i向服务台发送请求信息
	RequestDWW();	
	delayms_1000ms();

	while(1){
		//delayms_100ms();
	  if(RsPoint){
		//信息报告 "+CDSI: "SM",xx"
		ReturnCommandOffSet=mystrstr(RsBuf,"+CDSI: \"SM\"");	
		if(ReturnCommandOffSet!=NULL){
			RsPoint=0;
			*(ReturnCommandOffSet+1)=0xa5;
			*(ReturnCommandOffSet+2)=0xa5;
			zhushi Bell();
			zhushi lcd_disp_str("Have new Report ",1);
			ReciveNewStatusReport();
			//ClrBuf(RsBuf,8);
			//RsPoint=0;
			} 

		delayms_100ms();
		//有新信息	"+CMTI: "SM",xx"
		ReturnCommandOffSet=mystrstr(RsBuf,"+CMTI: \"SM\"");	
		if(ReturnCommandOffSet!=NULL){
			RsPoint=0;
			*(ReturnCommandOffSet+1)=0xa5;
			*(ReturnCommandOffSet+2)=0xa5;
			zhushi Bell();for(i=0;i<16;i++)dis2[i]=*(ReturnCommandOffSet+i);
			zhushi lcd_disp_str("Have new Message",1);
			zhushi lcd_disp_str(dis2,2);delayms_1000ms();
			ReciveNewMsg();
			ClrBuf(RsBuf,8);
			RsPoint=0;
			} 
	//	RsPoint=0;
	  }

		//while(!RsPoint){
			//时间显示 "time is 00:00:00";
			dis2[0]='t';dis2[1]='i';dis2[2]='m';dis2[3]='e';dis2[4]=0x20;
			dis2[5]='i';dis2[6]='s';dis2[7]=0x20;
			dis2[8]=hh/10+48;dis2[9]=hh%10+48;dis2[10]=0x3a;
			dis2[11]=mi/10+48;dis2[12]=mi%10+48;dis2[13]=0x3a;
			dis2[14]=ss/10+48;dis2[15]=ss%10+48;
			lcd_disp_str(dis2,2);
			
			//状态显示
			if(ss&0x01) lcd_disp_str("   |(='.'=)|    ",1);
			else 		lcd_disp_str("   -(='.'=)-    ",1);

			//定时时间到,向服务台发送请求信息
			if((T0800||T2000)&&DWW_Flag){
				DWW_Flag=0;
				zhushi lcd_disp_str("It's time to     ",1);
				zhushi lcd_disp_str("   send Request. ",1);
				zhushi Bell();
				zhushi delayms_1000ms();
				RequestDWW();delayms_1000ms();
				}
			//}
    		
		//zhushi lcd_disp_str("                ",1);//delayms_100ms();
		//zhushi lcd_disp_str("                ",2);
		}
  
}
 
/*
			if(ss==58){
			zhushi lcd_disp_str("( ^o^)|         ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^.^)/-~       ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^.^)/--~      ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^.^)/---~     ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^.^)/----~    ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^.^)/-----~   ",1);delayms_100ms();delayms_100ms();delayms_100ms();
			zhushi lcd_disp_str("( ^o^)/-----   *",1);delayms_1000ms();
			}


		*/	

⌨️ 快捷键说明

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