查看: 2577|回复: 2

[原创] KL26-UART+GPS+TFTLCD显示_02

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-1-8 14:03:49 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2016-1-8 14:05 编辑

    二、准备工作
    GPS信号读取与显示需要用到串口的收和发:接收GPS发送过来的TTL数据到KL26单片机,由单片机再讲信号通过串口输出给PC
    的串口,通过PC串口软件——本例采用网友温子祺编写的大名鼎鼎的单片机多功能调试助手[串助]作为PC的上位机显示GPS数据,以便
    在单片机上处理这些数据。单片机处理数据后分行列显示在屏幕上,当单片机能完成所有定位功能后——说白了此类低能儿只能
    显示坐标类的信息,无法与地图结合的,但将来开发定位的东西是有用的,比如:小车、飞行器等。
    描述功能大致是:
    读取GPS数据,分类存储在内存中,计算送到LCD显示屏上,送到PC端显示,周而复始。
    1理解GPS信号
    GPS信号是1秒1组,本二手GPS4800波特率,属于较慢的一种;
    停车位前文描述的6组,GPGGA中的有用数据做多,作为主数据读取存放;GPRMC的单位信息和有用信息也较多作为辅助数据读
    取存放;GPGSV也有不少有用的信息,作为有选择数据存放。其他的看单片机的处理速度,如果足够,可以将所有信息都放在屏
    幕上,初设采用1.8寸TFTLCD,可以显示1行16个8X8的ASCII码,一共有20行,如果不够再考虑2.4存的TFTLCD。
    2理解KL26的UART
    查看案例UART带终端的那个,查找uart0Init()初始化函数,可以在MKL_UART.c中找到次函数,分析可以得到:
    UART0的TXD为A1口,RXD为A2口[PORTA_PCR1 = PORT_PCR_MUX(0x2);//UART0_TXD||PORTA_PCR2 = PORT_PCR_MUX(0x2);//UART0_RXD]
    此外在这个程序中还可以找到另一个很重要的函数uart0GetChar(),从UART0获得数据。
    为此UART0的启动由向A1口申请接收数据,则A1口自动接收一次[一组]数据。
    3验证设想理解函数
    为了验证是真,将uart案例中的main程序添加:
    在延时之前加:unsigned int getChar;
    在while(1)中加上两句:
    getChar=uart0GetChar();
    printf("\r\n"+getChar);
    而后找一个PC-TTL,USB转串口的TTL连接器,将连接器的RX连接到KL26的A2口,将TX连接到A1口
    打开J-Link连上KL26,USB接到PC机上,打开串助,测试如下:
    在串助下边输入任意字符[本例12345678],单击发送,在上边的接收窗口就收到一组信号:12345678。证明思路是对的。
    4测试GPS实验
    接着,我们改一下硬件连接:
    RX到KL26的A2口不变,将A1口连接到GPS的TX输出口,就是将GPS信号直接送到KL26,由他接收,而后传送给串助,显示在PC机上。
    运行结果非常令人振奋,GPS那几组数据如约而至显示在串助上。至此初期实验算告一段落,给以后的实验铺平了基础道路。
    改的程序如下:
    #include "includes.h"
    unsigned int getChar;
    int main(void){
    SystemCoreClockUpdate();//时钟配置
    PORT_ENABLE_CLK(MKL_PORTA);//GPIO时钟使能
    PORT_ENABLE_CLK(MKL_PORTB);
    PORT_ENABLE_CLK(MKL_PORTC);
    PORT_ENABLE_CLK(MKL_PORTD);
    PORT_ENABLE_CLK(MKL_PORTE);
    uart0Init(4800,0,0,8,1);//UART0初始化
    printf("MCU test Uart Start,Now you can input anykey\r\n");
    printf("UART0 Get:\r\n");
    while(1){
      while(UART0_S1_REG(UART0_BASE_PTR) & UART0_S1_RDRF_MASK){//清除中断标志
       uart0SendChar(UART0_D_REG(UART0_BASE_PTR));//返回接收数据
      }
      getChar=uart0GetChar();
      printf("\r\n"+getChar);
    }
    }
    两组运行照片如下:

    UART0串口实验

    UART0串口实验

    UART0串口连接GPS实验

    UART0串口连接GPS实验
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-28 12:41
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    280

    帖子

    0

    高级会员

    Rank: 4

    积分
    802
    最后登录
    2021-9-5
    发表于 2016-1-11 13:25:34 | 显示全部楼层
    恭喜调通了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-1-11 20:44:42 | 显示全部楼层
    还没有调通,仅仅是读出后原封不动送出去,没有经过单片机处理数据。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-5 08:05 , Processed in 0.084089 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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