❶ 求用單片機AT89C51控制TC35i發送簡訊的c語言程序!急!!!!
smc.c:
// Header:    	tc35操作函數
// File Name: 	TC35.C
// Author:	  	興創科技
#include "hardware.h"
#include "SMS.h"
extern uchar numbuff[];
void delay(uint m)								//延時m*0.2ms
{
	uchar n;
	for(;m>0;m--)
		for(n=100;n>0;n--);
}
void Sendcmd(uchar *p)				//發送AT命令
{	
 	while(*p)
 	{
	 	SBUF=*(p++);
		while(TI==0);
		TI=0;
	}   
}
void Sendchar(uchar c)				//發送一個字元
{ 
    TI=0;   
    SBUF=c;   
    while(TI==0);   
    TI=0;   
}
void Init_tc35(void)				//判斷是否連接TC35
{
	uint i=0xffff;
	rcount=0;
	receive_ok=0;
	Sendcmd("AT\r\n");   
	while(receive_ok==0)
	{
		i--;
		if(i==0)		 			//超時還未響應則返回
		{
			rcount=0;
			receive_ok=0;
			return;
		} 
	}	
	receive_ok=0;
 	rcount=0;
    delay(4000);
 	i=0xffff;
 	Sendcmd("AT&F\r\n");	   		//初始化	   
 	while(receive_ok==0)
    {
		i--;
	 	if(i==0)		 			//超時還未響應則返回
	  	{
			rcount=0;
        	receive_ok=0;
	   	return;
		} 
	}
	receive_ok=0;
	rcount=0;
    delay(4000);
 	i=0xffff;
 	Sendcmd("AT+IPR=4800\r\n");	   		//設置波特率	   
 	while(receive_ok==0)
    {
		i--;
	 	if(i==0)		 			//超時還未響應則返回
	  	{
			rcount=0;
        	receive_ok=0;
	   	return;
		} 
	}
	receive_ok=0;
	rcount=0;
    delay(4000);
 	i=0xffff;
 	Sendcmd("AT+CMGF=1\r\n");	   		//設置短消息格式	   
 	while(receive_ok==0)
    {
		i--;
	 	if(i==0)		 			//超時還未響應則返回
	  	{
			rcount=0;
        	receive_ok=0;
	   	return;
		} 
	}
	receive_ok=0;
	rcount=0;
    delay(4000);
 	i=0xffff;
 	Sendcmd("AT+CSCS=");	   		//設置字元集為「GSM」
	Sendchar('"');
	Sendcmd("GSM");
	Sendchar('"');
	Sendchar(0x0D);
	Sendchar(0x0A);		   
 	while(receive_ok==0)
    {
		i--;
	 	if(i==0)		 			//超時還未響應則返回
	  	{
			rcount=0;
        	receive_ok=0;
	   	return;
		} 
	}
	receive_ok=0;
	rcount=0;
 	tc35_init_ok=1;    				//全部初始化完畢置標志
}
void Sendsms(uchar *q)				//向指定的號碼發送短消息
{
	ulong i=0x1ffff;
 	rcount=0;						//數據緩沖區指針回0
	Sendcmd("AT+CMGS=");
	Sendchar('"');
	Sendcmd(numbuff);
	Sendchar('"');
	Sendchar(0x0D);
	Sendchar(0x0A);
	while(rbuff[rcount-2]!='>')
   	{
		i--;		   
		if(i==0)
		{
			rcount=0;
			receive_ok=0;
			return;				   //超時返回
		}			
    }
	Sendcmd(q);	
	Sendchar(0x1A); //發送簡訊
	Sendchar(0x0D);
    Sendchar(0x0A);
 				
	receive_ok=0;
	i=0x5fffff;    					//發送短消息超時處理發送等待5s比較安全
	while(receive_ok==0)
	{
		i--;
		if(i==0)		 			//超時還未響應則返回
		{
			rcount=0;
			receive_ok=0;
			return;
		} 
	}
	receive_ok=0;
	rcount=0;
}
smc.h
// Header:    	tc35頭文件
// File Name: 	SMS.H
// Author:	  	Yoran
// Date:	  	2008/05/12
#ifndef __SMS_H__
#define __SMS_H__
#include <reg52.H>
#include <hardware.H>
extern uchar 	idata rbuff[];
extern uchar  	data databuff[];
extern uchar	rcount;
extern bit		tc35_init_ok;
extern bit		receive_ok;
extern bit   	new_sms;
void Init_tc35(void);			//判斷是否連接TC35 
void Sendcmd(uchar *cmd);		//發送AT命令
void Sendchar(uchar c);			//發送一個字元
void Sendsms(uchar *q);			//向指定的號碼發送短消息
#endif
main.c
// Header:    	XC-TC35簡訊貓測試程序
// File Name: 	發送英文簡訊.C
// Author:	  	興創科技
//                           P2^4---//發簡訊
#include <reg52.h>
#include <string.h>
#include "hardware.h"
#include "sms.h"
#include "sms.c"
//LCD Start
uchar code table[]="Welcome...." ;
uchar code table1[]="No:1 is ON" ;
uchar code table2[]="No:2 is ON" ;
uchar code table3[]="No:1 2 are ON" ;
uchar i;
 //以下三個是定義LCD的引腳
 sbit lcden=P2^2;  //6
 sbit lcdwrite=P2^1; //5
 sbit lcdrs=P2^0;//4
 
//lcd的寫指令
void write_com(uchar com)
{
 lcdrs=0;
 lcden=0;
 P0=com;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
//lcd的寫數據
void write_data(uchar da)
{
 lcdrs=1;
 lcden=0;
 P0=da;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0;
}
//初始化
void init()
{
    lcdwrite=0;
    lcden=0;
 write_com(0x38); //16*2顯示,5*7點陣,8位數據
 write_com(0x0c);//顯示開,關游標
 write_com(0x06); //移動游標
 write_com(0x01);//清除LCD的顯示內容
 
}
//LCD END
uchar 	idata rbuff[110];						//串口接收數據緩存區
uchar   numbuff[]="13217832221";  				//此處修改為需要接收簡訊的手機號碼,注意要定義為字元串(\0)
uchar  	databuff[]="000000"; 					//數據緩存區,注意要定義為字元串(\0)
uchar	rcount;									//串口接收數據指針
				 
bit		tc35_init_ok;							//TC35注冊成功初始化完成標志
bit		receive_ok;								//收到模塊「ok」標志
bit     send_error;
bit     send_ok;
void initUart(void)					  			   
{	 //	RXD=1;
	//TXD=1;
 	TMOD=0x20;									//T1工作方式2,8位自動重裝
 	SCON=0x40;									//串列口工作方式1,8位UTRA
 	TH1=0xfa;
 	TL1=0xfa;									//波特率發生器,波特率為4800
 	REN=1;	  									//允許串列接收
 	TR1=1;										//開波特率發生器T1
 	ES=1;										//開串列口中斷
 	EA=1;										//開總中斷
//	R=1;
//	T=1;
}
void RECEIVE_DATA(void) interrupt 4	  			//接收tC35發送的數據並緩存
{ 
	ES=0;
	if(RI)
   	{
		rbuff[rcount++]=SBUF;
    	RI=0;
	}
  	//判斷是否接收完畢
  	if((rbuff[rcount-1]==0x0a)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-4]==0x4f))
	{					//換行					 //回車						
		receive_ok=1;
	}
	//判斷是否為新短消息指示	  
  	if((rbuff[rcount-14]=='C')&&(rbuff[rcount-13]=='M')&&(rbuff[rcount-12]=='T')&&(rbuff[rcount-11]=='I'))
    {							                                                           							 	     //換行
		new_sms=1;
	}
	else  new_sms=0;
  	if(((rbuff[rcount-17]=='C')&&(rbuff[rcount-16]=='M')&&(rbuff[rcount-15]=='G')&&(rbuff[rcount-14]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a))|((rbuff[rcount-16]=='C')&&(rbuff[rcount-15]=='M')&&(rbuff[rcount-14]=='G')&&(rbuff[rcount-13]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a)))
    {							                                                           							 	     //換行
		send_ok=1;
	}
	else  send_ok=0;
  	if((rbuff[rcount-7]=='E')&&(rbuff[rcount-6]=='R')&&(rbuff[rcount-5]=='R')&&(rbuff[rcount-4]=='O')&&(rbuff[rcount-3]=='R'))
    {							                                                           							 	     //換行
		send_error=1;
	}
	else  send_error=0;
	if(rcount>109)rcount=0;
	ES=1; 
}
void keyboard()
{
	if(!(K1&K2&K3&K4))
	{
		delay(10);
		if(!(K1&K2&K3&K4))
		{
			if(K1==0)
			{
		    Sendcmd("ATD13217832221;\r\n");	 //按鍵1撥打電話測試語音通話
			}
			if(K3==0&&K4==0)
			{
		    Sendsms("The Light No:1 and 2 are ON!");	 //發送英文簡訊
			write_com(0x01);
			delay(30);
             for(i=0;i<13;i++)    write_data(table3[i]);
			delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
			while(K3==0&&K4==0);
			}
			if(K3==0)
			{
		    Sendsms("The Light No:1 is ON!");	 //發送英文簡訊
			write_com(0x01);
			delay(30);
             for(i=0;i<10;i++)    write_data(table1[i]);
			delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
			while(K3==0);
			}
			if(K4==0)
			{
		    Sendsms("The Light No:2 is ON!");	 //發送英文簡訊
			write_com(0x01);
			delay(30);
             for(i=0;i<10;i++)    write_data(table2[i]);
			delay(2000);delay(2000);delay(2000);delay(2000);delay(2000);
			while(K4==0);
			}	
			write_com(0x01);
	        write_com(0x80+1);
             for(i=0;i<11;i++)    write_data(table[i]);
			rcount=0;		  
				
		while(!(K1&K2&K3&K4));	  //按鍵釋放	
	 	}
	} 
}
void main(void)		
{
	uchar  times=0;				 
	uchar m=0;
	tc35_init_ok=0;
	
    init();//LCD
	write_com(0x80+1);
     for(i=0;i<11;i++)    write_data(table[i]);
initUart();	  						//初始化串口
	Init_tc35();								//開啟TC35
	delay(5000);
	delay(5000);
	delay(5000);
	delay(5000);
							
 	while(tc35_init_ok==0)  					//初始化TC35
 	{		
		Init_tc35();
		delay(4000);
		times++;
		if(times>15)
		{	
			times=0;
			delay(1000);					
			delay(500);
			delay(1000);
			delay(4000);delay(4000);delay(4000);
		}
	}
	if(tc35_init_ok)
	{		  
		BEEP=0;									   //初始化成功鳴叫一聲
		delay(2000);
		BEEP=1;
		delay(2000);
		BEEP=0;
	}			  						
 	while(1)	  					
 	{
	 	
		keyboard();
  	}		    			
 
}
❷ 求助C語言或者C++語言手機鍵盤發簡訊的編程,...高分懸賞..
自己寫不太現實.
❸ 求用單片機控制手機模塊發送簡訊的C語言程序
就是ASCII碼額,程序中就是發送該ASCII碼對應的16進制數過去就行了,AT+CMGS直接位元組可以
strcpy(&TransPt,「AT+CMGS」),AT指令中最後回車對應的我記得好像是0X0D 0X0A,很久之前用過,記不清了
❹ 求一個單片機C語言程序,實現單片機控制Q2358c模塊發簡訊打電話
這個簡單,單片機TX,RX和模塊的交叉接上,gnd對接上,然後單片機通過串口發送AT指令過去。
❺ 求linux下C語言編程的通信模塊實現撥號與收發簡訊功能的源代碼!
你的是 TC35么,直接初始化串口,然後發送At指令AT+CMGC 發送簡訊AT+CMGR接收簡訊,然後通過串口查詢,看有沒有受到Ok,收到了說明發送成功,我這有8051單片機控制Tc35的源碼
❻ 急求源碼。用c語言模擬實現一個短息的收發。可以簡單一點發送就是存儲起來,可以實現查看等功能。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
void main(void)
{
    FILE *fp;
    char txt[500];
    int cmd;
    int i;
    time_t rawtime;
    struct tm * timeinfo;
    fp = fopen("msg.txt", "a+");
    if (NULL==fp)
    {
        printf("open file error!\n");
        return;
    }
    while (1)
    {
        printf("輸入命令(1:收簡訊,2:發簡訊, 0:退出):");
        scanf("%d",&cmd);
        switch(cmd) {
            case 1:
                i = 0;
                fseek(fp, 0, SEEK_SET); //跳到文件開頭
                while(NULL !=fgets(txt, 500, fp))
                {
                    i++;
                    printf("msg[%d]: %s", i, txt);
                }
                break;
            case 2:
                fseek(fp, 0, SEEK_END); //從文件結尾開始寫入
                time ( &rawtime );
                timeinfo = localtime ( &rawtime );
                asctime (timeinfo);
                fprintf (fp, "[%4d-%02d-%02d %02d:%02d:%02d] ",1900+timeinfo->tm_year, 1+timeinfo->tm_mon, \
                            timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);
                printf("\n輸入命令簡訊內容(不超過500個字元):");
                scanf("%s", txt);
                fprintf(fp, "%s\n", txt);
                break;
            case 0:
                fclose(fp);
                return; //退出
            default:
                printf("未定義命令!\n");
                break;
        }
    }
}
❼ C語言簡訊介面開發,好實現嗎
樓上說的是簡訊模塊的開發辦法,如果是做監控或者野外的提醒終端 應該可以
 
目前大部分都是用做應用集成,採用運營商提供的網關介面開發,如速達移動的介面,適合集成到各種應用。 開發挺簡單,具體服務商都會提供給你文檔和調用代碼,具體你可以咨詢下sudas
❽ 用單片機控制手機模塊發送PDU簡訊的C語言程序
我想樓主的意思是不是想在單片機的某個輸入口上安裝的按鈕,按鈕按下後簡訊就發出去了。其實這很簡單,你要用單片機的串列口跟TC35通訊。首先你先將單片機的波特率定義的和TC35一致,然後根據PDU格式將你要發送的簡訊內容編碼後存放在單片機里,程序檢測到控制端電平變化後就調用發送子程序按照AT指令的格式發送就完了。不過這樣你只能發送固定內容的簡訊。
❾ C語言要簡訊彩信發送介面,求達人指點!北京的!
開發過c調用彩信的
 
介面要讀懂,特別是封裝彩信內容時 要讀取圖片等
 
具體你可以問問速達移動的技術,他們介面穩定,服務也很好
❿ 求一個用單片機控制gsm模塊發送簡訊的c語言程序,謝謝了
如果只發送ASCII簡訊的話程序比較簡單,發送中文的就比較復雜了。另外,對於不同型號的GSM模塊,發送中文簡訊的程序略有差別,不知你是哪一種需求。
