此程序是本人通过51单片机控制sim900发送英文短信

时间:2019-05-12 20:34:05下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《此程序是本人通过51单片机控制sim900发送英文短信》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《此程序是本人通过51单片机控制sim900发送英文短信》。

第一篇:此程序是本人通过51单片机控制sim900发送英文短信

此程序是本人通过51单片机控制sim900发送英文短信,希望能够帮助

需要使用的朋友们

其中 有什么问题没有看明白 希望能够 与本人沟通 或者哪里解释有误请向本人 提出修改

#include

#include

#include

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

uchar code SMS_send[]=“AT+CMGS=”;//发送电话号码指令

uchar code GMS[]=“AT+CSCS=GSM”;//设置为英文数字 字符集

uchar code SMS_PDU[]= “AT+CMGF=1”;//设置为 文本模式

uchar Byte_num[]=“”***“";//由于设置的是文本模式所以必须电话号码必须加上“” uchar code Sms2_Pdu[]=”warning“;//内容是:警告(英文模式)

sbit key=P3^7;//发送短信恩建位

sbit led=P1^1;//检测程序是否执行完毕

void delay(uint ms)// 延时子程序

{

uchar i;

while(ms--)

{

for(i=0;i<120;i++);

}

}

/***********************************************************

函数名称:Print_Char

函数功能:发送单个字符

入口参数:ch出口参数:无

***********************************************************/

void Print_Char(uchar ch)//发送单个字符

{

SBUF=ch;//送入缓冲区

while(TI==0);//等待发送完毕

TI=0;//软件清零

}

/***********************************************************

函数名称:Print_Str

函数功能:发送字符串

入口参数:*str出口参数:无

***********************************************************/ void Print_Str(uchar *str)//发送字符串

{

while(*str!='')//直到输入最后一个跳出

{

Print_Char(*str++);

}

}

/***********************************************************函数名称:Ini_UART

函数功能:串口初始化、定时器初始化

入口参数:无出口参数:无

***********************************************************/void Ini_UART(void)//串口初始化、定时器初始化

{

TMOD = 0x20;//T1方式2,用于UART波特率

TH1 = 0xFD;//UART波特率设置:9600

TL1 = 0xFD;

SCON = 0x50;////UART方式1:8位UART;REN=1:允许接收PCON = 0x00;

TF1 = 1;// 中断标志位

TR1 = 1;// 启动定时器1

ES=1;//启动串行口中断

ET0=1;//启动中断功能

EA=1;

}

void GSM_PDU()//

{

Print_Str(GMS);//设置为gsm

Print_Str(”rn“);

delay(1000);

Print_Str(SMS_PDU);//发送设置指令为文本模式

Print_Str(”rn“);//发送回车

ES=1;

delay(1000);

delay(1000);

delay(1000);

delay(1000);

}

/***********************************************************函数名称:GSM_PDU_SMS

函数功能:发送数据为PDU格式的短信内容

入口参数:无出口参数:无

***********************************************************/void GSM_PDU_SMS()/

{

Print_Str(SMS_send);

Print_Str(Byte_num);

Print_Str(”rn");//发送回车

delay(900);

Print_Str(Sms2_Pdu);

delay(500);

Print_Char(0x1A);//发送短息内容结束符对应的ASCII为0x1aES=1;

delay(5000);

delay(5000);

}

/***********************************************************函数名称:main

函数功能:主函数

***********************************************************/void main()

{

Ini_UART();

while(1)

{

if(!key)//检测是否发送短信键位摁下

{

GSM_PDU();

//delay(500);

GSM_PDU_SMS();led=0;

}

}

}

第二篇:51单片机控制交通灯原理图及C语言程序

Proteus仿真原理图:

Keil C源程序:

#include #define uchar unsigned char #define uint

unsigned

int sbit

RED_DONGXI

= P1^0;//南北方向红灯亮 sbit

YELLOW_DONGXI = P1^1;//南北方向黄灯亮 sbit

RED_NANBEI

= P1^3;//东西方向红灯亮 sbit

GREEN_DONGXI = P1^2;//南北方向绿灯亮 sbit

YELLOW_NANBEI = P1^4;//东西方向黄灯亮 sbit

GREEN_NANBEI = P1^5;//东西方向绿灯亮

sbit

DXweixuan1

= P1^6;//南北方向数码管位选1 sbit

DXweixuan2

= P1^7;//南北方向数码管位选2 sbit

NBweixuan1

= P3^0;//东西方向数码管位选1 sbit

NBweixuan2

= P3^1;//东西方向数码管位选2 sbit

L1=P3^5;sbit

L2=P3^6;sbit

L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();

void main(){ P0=0xFF;P1=0xFF;P2=0x00;

P3=0xFF;EA=1;EX0=1;IT0=0;

init1();while(1)

{

init2();//第2个状态

init3();//第3个状态

init4();//第4个状态

init5();//第5个状态

} } void init1()//第一个状态:东西、南北方向均亮红灯5S { uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

//第一个状态东西、南北均亮红灯5S

RED_NANBEI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

}

shi1=shi2=temp/10;

ge1=ge2=temp%10;

if(temp==0)

{

temp=5;

break;

}

display(ge1,shi1,ge2,shi2);} } void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{ uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=1;

RED_NANBEI=0;

GREEN_DONGXI=0;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

shi1=(temp+5)/10;

}

}

} ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){ temp=26;break;} display(ge1,shi1,ge2,shi2);void init3()//第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=0;

GREEN_DONGXI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

YELLOW_DONGXI=~YELLOW_DONGXI;

shi1=temp/10;

shi2=shi1;

ge1=temp%10;

ge2=ge1;

}

if(temp==0)

{

temp=6;

break;

}

display(ge1,shi1,ge2,shi2);} } void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S; { uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

RED_NANBEI=1;

YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5S

GREEN_NANBEI=0;

if(aa==20)

{

aa=0;

temp--;

shi1=temp/10;

shi2=(temp+5)/10;

ge1=temp%10;

ge2=(temp+5)%10;

if(temp==0)

{

temp=26;

break;

}

}

display(ge1,shi1,ge2,shi2);} } void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=1;

RED_DONGXI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

if(aa==20)

{

aa=0;

temp--;

YELLOW_NANBEI=~YELLOW_NANBEI;

shi1=temp/10;

shi2=shi2;

ge1=temp%10;

ge2=ge1;

if(temp==0)

{

temp=6;

break;

}

}

display(ge1,shi1,ge2,shi2);} }

void display(uint shi1,uint ge1,uint shi2,uint ge2){ DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);} void xint0()interrupt 0 { RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xint1()interrupt 2 { RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xtimer0()interrupt 1 { TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;} void delay(uint z){uint x,y;for(x=0;x

for(y=0;y<110;y++);}

下载此程序是本人通过51单片机控制sim900发送英文短信word格式文档
下载此程序是本人通过51单片机控制sim900发送英文短信.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐