找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4796|回复: 7
收起左侧

STC单片机使用第二串口功能(STC12C5A60S2+GPS+串口2+1602LCD)

  [复制链接]
ID:408809 发表于 2020-1-9 21:36 | 显示全部楼层 |阅读模式
终于将STC单片机使用第二串口功能(STC12C5A60S2+GPS+串口2+1602LCD)给整出来了。作为新人真的真的是欣喜若狂,无语言表啊!!!
再此将来之不易的心得写出来,让和我一样的单片机小朋友一起共勉......
1、注意串口的引脚,如果你没有设置着的话(P1.2  Rx脚,P1.3  Tx脚)。我就犯了这个习惯性的错误,太无语了!!!
2、一定要将单片机设置为1T的。

P00109-213507.jpg        LNUMX6H[NF}(1LSZCLEC%RL.png IIC海拔、速度、卫星 、温度效果图(2004显示).jpg IIC海拔、速度、卫星 效果图.jpg

单片机源程序如下:
  1. #include "GPS.h"

  2. unsigned char RX_Buffer[68];                //此数组用于直接储存来自GPS的原始数据
  3. unsigned char RX_Count = 0;

  4. bit Flag_GPS_OK = 0;


  5. void Uart_Init()                                                                     
  6. {
  7.         SCON = 0X50;  //UART方式1;8位UART
  8.         REN  = 1;     //允许串行口接收数据
  9.         PCON = 0x00;  //SMOD=0;波特率不加倍
  10.         TMOD = 0x20;  //T1方式2,用于产生波特率
  11.         TH1  = 0xFD;  //装初值
  12.         TL1  = 0xFD;
  13.         TR1  = 1;     //启动定时器1
  14.         EA   = 1;     //打开全局中断控制
  15.         ES   = 1;     //打开串行口中断        
  16. }



  17. void RECEIVE_DATA(void) interrupt 4 using 3                  //串口中断函数,收到GPS的数据时进入此中断        
  18. {
  19.         unsigned char temp = 0;
  20.         ES=0;                                                                                //先关闭串行口中断
  21.         temp = SBUF;                                                                //接收SBUF中的数据
  22.         RI = 0;                                                                                //接收完成的标志位清零
  23. //        LED1 = ~LED1;
  24.         
  25.         if(temp == '



  26. )                                                                //若是统一的数据头,则作为数组第一个元素
  27.         {
  28.                 RX_Count = 0;
  29.                 Flag_GPS_OK = 0;               
  30.         }

  31.         RX_Buffer[RX_Count++] = temp;                                //收到的数据放到数组中

  32.         if(RX_Count >= 66)                                                        //序号大于66的数据无用,统一放到第66位覆盖掉
  33.         {
  34.                 RX_Count = 66;
  35.         }

  36.         if(temp == '*')                                                                //收到*,则完成一帧数据的接收,不管是否完整有效
  37.         {
  38.                 Flag_GPS_OK = 1;                                                //标志变量置为1
  39.         }

  40.         ES=1;                                                                                 //重新打开串行口中断
  41. }
复制代码

所有资料51hei提供下载:
009版本IIC-GPS+1602+C52-海拔、速度、卫星 +温度 - (GPS接串口2).7z (31.69 KB, 下载次数: 155)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:453245 发表于 2020-1-10 20:19 | 显示全部楼层
新手过来学习
回复

使用道具 举报

ID:64053 发表于 2020-2-15 18:57 | 显示全部楼层
楼主你好,能给个原理图参考吗?
回复

使用道具 举报

ID:64053 发表于 2020-2-20 22:08 | 显示全部楼层
楼主,你好,我做出来的在1602屏只有上面的一气白色方块,有原理图我自己接一下吗?先谢谢了,或者发我邮箱:93mxt@163.com
回复

使用道具 举报

ID:64053 发表于 2020-2-20 22:51 | 显示全部楼层
楼主,把1602屏的引脚到Mcu的输出口标示一下行吗,或者发到我邮箱:93mxt@163.com ,先谢了
回复

使用道具 举报

ID:495323 发表于 2020-4-15 17:47 来自手机 | 显示全部楼层
上位机软件用的是什么?
回复

使用道具 举报

ID:402026 发表于 2020-4-16 11:04 | 显示全部楼层
你的资料很好,果断的下载学习
回复

使用道具 举报

ID:134868 发表于 2022-8-19 22:18 | 显示全部楼层
用的是串口1吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表