经过两周多的奋斗,终于能用单片机发送一个简单的英文短信了。。。哈哈。。
以下是源码:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define KEY0_OK 1
#define KEY1_OK 2
#define KEY2_OK 3
#define KEY3_OK 4
sbit SENSER=P3^7;
sbit LCDE=P2^7; //enable bit,LCDE--P2.7
sbit RS=P2^6; //register select bit,RS--P2.6
sbit RW=P2^5; //read or write select bit,RW--P2.5
sbit BF=P0^7; //busy mark bit,BF--P0.7
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit KEY0=P1^4;
sbit KEY1=P1^5;
sbit KEY2=P1^6;
sbit KEY3=P1^7;
uchar TEM_ARR[10]=0;
uchar HELLO[7]="HELLO";
uchar WAIT[9]="WAITING";
uchar REC_BUF[20]=0;
uchar key_mark=0;
uchar key0_mark=0;
uchar record=1;
void Delay_1us_(uint temp);
void Delay_ms(uint i);
void Display_son(uchar *p,uchar temp);
void Display(uchar temp);
void manage_data(uint temp);
unsigned char BusyTest(void);
void Init_1602();
void Write_Com(uchar dictate);
void Write_Data(uchar Data);
void Key_detect();
void Reset_18b20();
void Write_byte_18b20_(uchar temp);
uchar Read_byte_18b20_();
uint Get_tem_18b20();
void Send_data(uchar dat);
void Send_arr(uchar arr_capacity,uchar *p);
void Send_com(uchar *p);
void Arring_initialize();
void Init_Timer();
void GSM_receive();
void main()
{
Init_Timer();
Init_1602();
Reset_18b20();
Arring_initialize();
while(1)
{
Key_detect();
GSM_receive();
Display(key_mark);
}
}
/************KEY DETECT FUNCTION*************************************************************************************/
void Key_detect()
{
if(KEY0==0)
{
Delay_1us_(10);
if(KEY0==0) //chose the one to be sended
{
if(key0_mark<2)
key0_mark++;
else
key0_mark=0;
LED0=0;
key_mark=KEY0_OK;
}
while(!KEY0);
LED0=1;
}
if(KEY1==0) //affirm send samething
{
Delay_1us_(10);
if(KEY1==0)
{
key_mark=KEY1_OK;
LED1=0;
}
while(!KEY1);
LED1=1;
}
if(KEY2==0) //display temperature
{
Delay_1us_(10);
if(KEY2==0)
{
key_mark=KEY2_OK;
LED2=0;
}
while(!KEY2);
LED2=1;
}
if(KEY3==0
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define KEY0_OK 1
#define KEY1_OK 2
#define KEY2_OK 3
#define KEY3_OK 4
sbit SENSER=P3^7;
sbit LCDE=P2^7; //enable bit,LCDE--P2.7
sbit RS=P2^6; //register select bit,RS--P2.6
sbit RW=P2^5; //read or write select bit,RW--P2.5
sbit BF=P0^7; //busy mark bit,BF--P0.7
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit KEY0=P1^4;
sbit KEY1=P1^5;
sbit KEY2=P1^6;
sbit KEY3=P1^7;
uchar TEM_ARR[10]=0;
uchar HELLO[7]="HELLO";
uchar WAIT[9]="WAITING";
uchar REC_BUF[20]=0;
uchar key_mark=0;
uchar key0_mark=0;
uchar record=1;
void Delay_1us_(uint temp);
void Delay_ms(uint i);
void Display_son(uchar *p,uchar temp);
void Display(uchar temp);
void manage_data(uint temp);
unsigned char BusyTest(void);
void Init_1602();
void Write_Com(uchar dictate);
void Write_Data(uchar Data);
void Key_detect();
void Reset_18b20();
void Write_byte_18b20_(uchar temp);
uchar Read_byte_18b20_();
uint Get_tem_18b20();
void Send_data(uchar dat);
void Send_arr(uchar arr_capacity,uchar *p);
void Send_com(uchar *p);
void Arring_initialize();
void Init_Timer();
void GSM_receive();
void main()
{
Init_Timer();
Init_1602();
Reset_18b20();
Arring_initialize();
while(1)
{
Key_detect();
GSM_receive();
Display(key_mark);
}
}
/************KEY DETECT FUNCTION*************************************************************************************/
void Key_detect()
{
if(KEY0==0)
{
Delay_1us_(10);
if(KEY0==0) //chose the one to be sended
{
if(key0_mark<2)
key0_mark++;
else
key0_mark=0;
LED0=0;
key_mark=KEY0_OK;
}
while(!KEY0);
LED0=1;
}
if(KEY1==0) //affirm send samething
{
Delay_1us_(10);
if(KEY1==0)
{
key_mark=KEY1_OK;
LED1=0;
}
while(!KEY1);
LED1=1;
}
if(KEY2==0) //display temperature
{
Delay_1us_(10);
if(KEY2==0)
{
key_mark=KEY2_OK;
LED2=0;
}
while(!KEY2);
LED2=1;
}
if(KEY3==0