我是一个新手。希望大家能够帮我。
我现在做一个51单片机控制TC35i模块发短信的项目
我用电脑通过RS232连TC35i~已经可以发出短信了
但是我用单片机连MAX232再通过RS232连TC35i却发不出短信
我用单片机连MAX232再通过RS232连电脑可以看到串口发出去的指令
为什么指令发出去了模块却没反应呢?各位大哥知道是什么问题的话请不吝赐教,小弟拜谢。
程序如下:
#include<reg52.h>
#include<stdio.h>
unsigned int i;
unsigned char letter= 0;
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
void serial_init(void);
void delay_3s(void);
void send_message(void);
//********************
void serial_init(void)
{
EA = 0;
ET1=0;
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
}
//*************************
void delay_3s(void)
{
for(i=0;i<60;i++) //delay 50ms *60= 3s
{TMOD=0x21;
TH0=0x3C ;
TL0=0xB0 ;
TF0=0;
TR0=1;
while(TF0==0)
{}
TR0=0;
TF0=0;
}
}
//************************
char sendchar (char ch)
{
bit es = ES;
ES= 0;
SBUF = ch;
while (TI==0);
TI = 0;
ES = es;
return ch;
}
//*************************
void send_message (void)
{ for ( ;letter<1;letter++)
{
delay_3s();
sendchar ('a');
sendchar ('t');
sendchar ('\r');
sendchar ('\n');
ES=1;
delay_3s();
D0=0;
sendchar ('a');
sendchar ('t');
sendchar ('+');
sendchar ('c');
sendchar ('m');
sendchar ('g');
sendchar ('f');
sendchar ('=');
sendchar ('1');
sendchar ('\r');
sendchar ('\n');
ES=1;
delay_3s();
D1=0;
sendchar ('a');
sendchar ('t');
sendchar ('+');
sendchar ('c');
sendchar ('s');
sendchar ('m');
sendchar ('p');
sendchar ('=');
sendchar ('1');
sendchar ('7');
sendchar (',');
sendchar ('1');
sendchar ('6');
sendchar ('7');
sendchar (',');
sendchar ('0');
sendchar (',');
sendchar ('0');
sendchar ('\r');
sendchar ('\n');
ES=1;
delay_3s();
D2=0;
sendchar ('a');
sendchar ('t');
sendchar ('+');
sendchar ('c');
sendchar ('s');
sendchar ('c');
sendchar ('s');
sendchar ('=');
sendchar ('g');
sendchar ('s');
sendchar ('m');
sendchar ('\r');
sendchar ('\n');
ES=1;
delay_3s();
D3=0;
sendchar ('a');
sendchar ('t');
sendchar ('+');
sendchar ('c');
sendchar ('m');
sendchar ('g');
sendchar ('s');
sendchar ('=');
sendchar ('0');
sendchar ('8');
sendchar ('7');
sendchar ('1');
sendchar ('6');
sendchar ('8');
sendchar ('5');
sendchar ('5');
sendchar ('4');
sendchar ('6');
sendchar ('\r');
sendchar ('\n');
delay_3s();
sendchar ('h');
sendchar ('e');
sendchar ('l');
sendchar ('l');
sendchar ('o');
sendchar (0x1A);
ES=1;
D4=0;
delay_3s();
}
}
//**************************
void main (void)
{ P1=0XFF;
serial_init();
while (1)
{
if (P1==0xFF) {}
else if (P1==0xFE)
{
send_message();
}
}
}
大概的电路图是这样(因为是临时画的。一些细节的东西我就不接上去了) |