当前位置:首页 > 通信技术 > 通信模块
[导读]   51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应

  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=1 ”);

  DelaySec(3);//延时3秒

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

  DelaySec(3);//延时3秒

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

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

  DelaySec(3);//延时3秒

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

  DelaySec(5);//延时3秒

  Uart1Sends(sms_text);

  Uart1Send(0x1a);

  LED2_ON;

  LED1_OFF;

  DelaySec(15);//延时20秒

  }

  }

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭