标题: STC单片机使用第二串口功能(STC12C5A60S2+GPS+串口2+1602LCD) [打印本页]

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

      

单片机源程序如下:
  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, 下载次数: 166)




作者: qwe8062216    时间: 2020-1-10 20:19
新手过来学习
作者: 93mxt    时间: 2020-2-15 18:57
楼主你好,能给个原理图参考吗?
作者: 93mxt    时间: 2020-2-20 22:08
楼主,你好,我做出来的在1602屏只有上面的一气白色方块,有原理图我自己接一下吗?先谢谢了,或者发我邮箱:93mxt@163.com
作者: 93mxt    时间: 2020-2-20 22:51
楼主,把1602屏的引脚到Mcu的输出口标示一下行吗,或者发到我邮箱:93mxt@163.com ,先谢了
作者: 有心插花花木兰    时间: 2020-4-15 17:47
上位机软件用的是什么?
作者: zbfdyw    时间: 2020-4-16 11:04
你的资料很好,果断的下载学习
作者: cdlhb    时间: 2022-8-19 22:18
用的是串口1吧!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1