📄 main.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 + -