sim900a程序,基于51单片机与sim900a相连接程序

发布者:MysticJourney最新更新时间:2023-06-25 来源: elecfans关键字:sim900a  51单片机 手机看文章 扫描二维码
随时随地手机看文章

  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。


  SIM900A模块是一款尺寸紧凑的GSM/GPRS模块,采用SMT封装,基于STE的单芯片案,采用ARM926EJ-S架构,性能强大,可以内置客户应用程序。可广泛应用于车载跟踪、车队管理、无线POS、手持PDA、智能抄表与电力监控等众多方向。


  程序说明:

  本程序运行后如果gprs模块找到服务商信号,就拨打指定电话。

  1.将自己的51单片机的串口1连接到GSM的tx rx gnd

  2.找到程序中前面的#define处,根据说明修改好自己的单片机配置,编译程序

  3.下载程序

  4.按下模块复位键,启动模块,等待信号灯闪烁变慢,复位单片机4.等待发送成功

  基于51单片机与sim900a相连接程序

  #include 《REGX52.H》

  #define uchar unsigned char

  #define uint unsigned int

  //以下是板子上LED的配置,把Px_x改成自己对应的脚。

  #define LED1_ON P1_0 = 0

  #define LED1_OFF P1_0 = 1

  #define LED2_ON P1_1 = 0

  #define LED2_OFF P1_1 = 1

  #define LED3_ON P1_2 = 0

  #define LED3_OFF P1_2 = 1

  #define LED4_ON P1_3 = 0

  #define LED4_OFF P1_3 = 1

  //以下是你的51单片机的晶振大小

  #define FOSC_110592M

  //#define FOSC_12M

  //以下是开机后发送到手机的内容,发送的号码在程序中修改。

  uchar sms_text[] = “123”;

  //注意,无论接收到信号还是发送完信号,都会进中断服务程序的

  /*初始化程序(必须使用,否则无法收发),次程序将会使用定时器1*/

  void SerialInti()//初始化程序(必须使用,否则无法收发)

  {

  TMOD=0x20;//定时器1操作模式2:8位自动重载定时器

  #ifdef FOSC_12M //在这里根据晶振大小设置不同的数值初始化串口

  TH1=0xf3;//装入初值,波特率2400

  TL1=0xf3;

  #else

  TH1=0xfd;//装入初值,波特率9600

  TL1=0xfd;

  #endif //end of SOC_12M

  TR1=1;//打开定时器

  SM0=0;//设置串行通讯工作模式,(10为一部发送,波特率可变,由定时器1的溢出率控制)

  SM1=1;//(同上)在此模式下,定时器溢出一次就发送一个位的数据

  REN=1;//串行接收允许位(要先设置sm0sm1再开串行允许)

  EA=1;//开总中断

  ES=1;//开串行口中断

  }

  /*串行通讯中断,收发完成将进入该中断*/

  void Serial_interrupt() interrupt 4

  {

  // a=SBUF;

  P2=SBUF;

  RI=0;//接收中断信号清零,表示将继续接收

  // flag=1;//进入中断的标志符号

  }

  void Uart1Send(uchar c)

  {

  SBUF=c;

  while(!TI);//等待发送完成信号(TI=1)出现

  TI=0;

  }//串行口连续发送char型数组,遇到终止号/0将停止

  void Uart1Sends(uchar *str)

  {

  while(*str!=‘’)

  {

  SBUF=*str;

  while(!TI);//等待发送完成信号(TI=1)出现

  TI=0;

  str++;

  }

  }

  //延时函数大概是1s钟,不过延时大的话不准。。。

  void DelaySec(int sec)

  {

  uint i , j= 0;

  for(i=0; i《sec; i++)

  {

  for(j=0; j《65535; j++)

  {

  }

  }

  }

  void main()

  {

  uchar i = 0;

  LED1_OFF;

  LED2_OFF;

  LED3_OFF;

  LED4_OFF;

  SerialInti();

  while(1)

  {

  LED1_ON;

  LED2_OFF;

  Uart1Sends(“AT+CMGF=1r”);

  DelaySec(3);//延时3秒

  Uart1Sends(“AT+CSCS=”GSM“r”);

  DelaySec(3);//延时3秒

  Uart1Sends(“AT+CSMP=17,167,0,250r”);//设备短信模式(手机自动保存模式)

  // Uart1Sends(“AT+CSMP=17,167,0,240r”);//设备短信模式(手机非自动保存模式)

  DelaySec(3);//延时3秒

  Uart1Sends(“AT+CMGS=”18332563682“r”);

  DelaySec(5);//延时3秒

  Uart1Sends(sms_text);

  Uart1Send(0x1a);

  LED2_ON;

  LED1_OFF;

  DelaySec(15);//延时20秒

  }

  }


关键字:sim900a  51单片机 引用地址:sim900a程序,基于51单片机与sim900a相连接程序

上一篇:传感器与AT89S52单片机的接口电路设计:测量模块电路
下一篇:89系列单片机型号编码的组成以及格式解析

推荐阅读最新更新时间:2024-11-06 10:35

51单片机lcd1602的驱动程序
/* ******************************************** **头文件名:LCD液晶驱动 ** Target : AT89s52 ** Crystal: 11.0952 ********************************************* */ #ifndef _LCD_51_H_ #define _LCD_51_H_ #include DELAY_51.H #include at89x52.h /* ------80s52与LCD连接信息----------------------------------------- ** P1_2 - RS ** P1_3
[单片机]
使用AT89S51单片机,将LED灯亮4s熄2s
使用AT89S51单片机,在原有的基础改动,将LED灯亮4s熄2s。谢谢。用定时器。 (程序写在答案中,此处略 ――做而论道注) 原来的程序(局部)如下: LOOP: MOV R0, #0AH ;R0=10 CJNE R0, #00H, $ ;比较R0是否为0,原地转移 ;R0在中断程序中,100ms减1次1。 ;1s钟后,将为0。 CPL LED ;取反,LED亮灭 JMP LOOP 经过分析可以看出,楼主给出的程序是实现LED灯亮1s熄1s的。 按照题目要求,修改后的程序如下: ;---------------------- LED
[单片机]
51单片机的串行通信口基本常识
MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在传行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。下面我们分别介绍。 . 基本概念 数据通信的传输方式 常用于数据通信的传输方式有单工、半双工、全双工和多工方式。 单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集
[单片机]
<font color='red'>51单片机</font>的串行通信口基本常识
基于51单片机的电子秤设计-LCD12864
一.硬件方案 本设计利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。此外,还可通过键盘设定所称物品的价格。 主要由51单片机(STC89C51/52、AT89C51/52均可使用)+LCD12864液晶显示屏+HX711AD转换模块+LED指示灯+蜂鸣器电路+矩阵按键+10kg压力传感器等;如图: 二.设计功能 (1)可以输出量程为10kg物体的重量,精度为0.001kg; (2)可通过按键设置单价,并根据实际重量计算出总价; (3)支持去皮功能、切换量程等功能,输出的重量和
[单片机]
基于<font color='red'>51单片机</font>的电子秤设计-LCD12864
51单片机程序——定时器控制LED闪烁
#include reg52.h #define uint unsigned int uint i=0; void delay(uint z) //延迟函数 { uint x,y; for(x=z;x 0;x--) for(y=20;y 0;y--); } void main (void) { TMOD=0x10; //TMOD赋值,以确定T0和T1的工作方式 TH1=(65536-50000)/256; //计算初值,并将其写入TH0、TL0或TH1、TL1 TL1=(65536-50000)%6; EA=1; //打开总中
[单片机]
51实验3:总线法写闪烁灯
#include reg52.h void delay300ms(void) { unsigned char a,b,c; for(c=123;c 0;c--) for(b=116;b 0;b--) for(a=9;a 0;a--); } void main() { while(1) { P2=0x55; delay300ms(); P2=~P2; delay300ms(); P2=0x00; delay300ms(); P2=0xff; delay300ms(); P2=0xc3; delay300ms(); P2=~P2; delay300ms(); P2
[单片机]
51单片机之IIC&EEPROM的驱动程序
#include #include ./delay/delay.h sbit SCL = P2^0; sbit SDA = P2^1; bit ack = 0; unsigned char flag = 1; #define LCDPORT P0 #define LCD_WRITE_DATA 1 #define LCD_WRITE_COM 0 sbit RS = P2^4; sbit RW = P2^5; sbit E = P2^6; #define SUCC 0 #define ERR 1 void iic_start() { SDA = 1; //先操作SDA,在操作SCL SCL = 1; dela
[单片机]
笙泉科技:抓细分市场,专注工规8051单片机
在IIC-China成都展,一家名为笙泉科技的产品吸引了很多工程师参观,然而他们的产品却是业界非常熟悉的8051单片机。 在中国,绝大多数年龄稍长的开发工程师在学校学的单片机课程,都是以51作为教材。在过去的电子产品应用到的8位单片机,绝大多数都是8051的核。同样,由于市场竞争的关系,原先由飞利浦和ATMEL主要供应商也变成了以台系供应商。 笙泉科技便是目前市场上重要的8051单片机供应商之一。公司业务经理表示,“笙泉的单版机主要以工规产品为主,产品有着出色的可靠性能,均通过6KV ESD测试、1.5KV class-A EFT,以及少于30 dB EMI,有着更广泛的适应温度(-40℃~85℃)。”此外,
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved