单片机/MCU论坛
直播中

李伟

7年用户 1533经验值
私信 关注
[文章]

51单片机如何运用GSM通信打造电子告示牌

地铁站,公交车站以及机场这种地方都有电子告示牌的存在,其中最大的问题在于更新每天的内容。本文教你如何设计一个运用GSM技术的无线电子告示牌,该项目将可以将我们从手机上发送的内容显示在LCD上。

如今还有很多无线通信科技,比如蓝牙,RF通信,Zigbee等,但只有GSM技术基于长距离,可靠以及安全的通信。

注意:我们需要发送信息的手机以及一个GSM模块才能接受该告示的内容。

原理
当用户从手机发送信息时,GSM模块会发送一下指令来代表收到新信息。
  1. +CMti: “SM”,3

以上的指令中,“3”代表新信息的位置,比如这是收件箱中的第三条信息。如今你需要读取这条未读信息的话,需要运用以下指令来读取GSM模块里的信息。
  1. AT+CMGR=3

将该指令给到GSM模块后,它会发出以下指令。

  1. +CMGR: “REC UNREAD”,”MD-WAYSMS”,,”13/05/20,15:31:48+34″
  2. 电子发烧友

以上的指令中,“REC UNREAD”指未读信息。”MD-WAYSMS”指发送者手机号或名字,13/05/20指时间,15:31指时间,电子发烧友为该信息的内容。


电路
1.jpg

所需主要元器件
AT89C51
SIM 900A
16 x 2 LCD
10kΩ电位器

显示模块代码
  1. while (rx_data() ! = 0x0d);
  2. while (rx_data() ! = 0x0a);
  3. if (rx_data() == ‘+’)
  4. {
  5. if (rx_data() == ‘C’)
  6. {
  7. if (rx_data() == ‘M’)
  8. {
  9. if (rx_data() == ‘T’)
  10. {
  11. if(rx_data()==’I’)
  12. {
  13. while (rx_data() != ‘,’);
  14. a = rx_data ();
  15. delay_ms (10);
  16. tx_string (“at”);
  17. tx_data (0x0d);
  18. tx_data (0x0a);
  19. tx_string (“at + cmgf =1”);
  20. tx_data (0x0d);
  21. tx_data (0x0a);
  22. tx_string (“at + cmgr =”);
  23. tx_data (a);
  24. tx_data (0x0d);
  25. tx_data (0x0a);
  26. while (rx_data() ! = 0x0a);
  27. while (rx_data() != 0x0a);
  28. while (rx_data() ! = 0x0a);
  29. for (i=0; i<15; i++)
  30. {
  31. read [i]= rx_data();
  32. }
  33. lcd_stringxy(1,0,read);
  34. delay_ms (5000);
  35. }
  36. }
  37. }
  38. }
  39. }

更多回帖

发帖
×
20
完善资料,
赚取积分