佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2448|回复: 11

显示GPS坐标在LCD的问题

[复制链接]
发表于 30-3-2012 11:29 AM | 显示全部楼层 |阅读模式
你要想做什么? 你的应用是什么?
LCD读取 GPS (FV-M8) 的 GGA data
  
你做了什么有了circuit diagram?
大致上应该没有问题,猜想是 programming 出现问题

你遇到了什么问题
LCD 没有显示 (LCD 1602a)

你用什么MCU
pic18f4550

你用什么语言? ASM /C/PICBasic/Keil?Compiler 版本?
C language, mikroC

有源码吗?
// Program to Interface GPS with PIC18F4550 Microcontroller
#define FREQ 12000000
#define baud 4800
#define spbrg_value (((FREQ/64)/baud)-1)
#define rs LATA.F0
#define rw LATA.F1
#define en LATA.F2
#define lcdport LATB

unsigned char rx_data();
void lcd_ini();
void lcdcmd(unsigned char);
void lcddata(unsigned char);

unsigned char longi_data[12];
unsigned char lati_data[12];
unsigned char data,value=0;
unsigned int i=0,pos;

void main()
{
        TRISB=0;                        // Set Port B as output port
        LATB=0;
        TRISA=0;
        LATA=0;
        SPBRG=spbrg_value;                // Fill SPBRG register to set the baud rate
        RCSTA.SPEN=1;                        // To activate serial port (Tx and Rx pins)                                    
        RCSTA.CREN=1;                        // To enable continuous reception
        lcd_ini();
        while(1)
        {
                data=rx_data();                     // Check the string '$GPGGA,'
                if(data=='$')
                {
                        data=rx_data();
                        if(data=='G')
                        {
                                data=rx_data();
                                if(data=='P');
                                {
                                        data=rx_data();
                                        if(data=='G');
                                        {
                                                data=rx_data();
                                                if(data=='G')
                                                {
                                                data=rx_data();
                                                if(data=='A')
                                                {
                                                data=rx_data();
                                                if(data==',')
                                                {
                                                data=rx_data();
                                                while(data!=',')
                                                data=rx_data();
                                                for(i=0;data!='N';i++)
                                                data=rx_data();
                                                lati_data=data;  // Store the Latitude data
                                                }
                                                data=rx_data();
                                                if(data==',')
                                                {
                                                for(i=0;data!='E';i++)
                                                {
                                                data=rx_data();
                                                longi_data=data;  // Store the Longitude data
                                                }
                                                }
                                                i=0;
                                                lcdcmd(0x80);
                                                while(i<11)
                                                {
                                                lcddata(lati_data);        // Print the Latitude data
                                                i++;
                                                }
                                                i=0;
                                                lcdcmd(0xC0);
                                                while(i<12)
                                                {
                                                lcddata(longi_data);          // Print the Longitude data
                                                i++;
                                                }
                                                }
                                                }
                                                }
                                        }
                                }
                        }
                }
                Delay_ms(1000);
                for(i=0;i<12;i++)
                {
                        data=0;
                        lati_data=0;
                        longi_data=0;
                }
        }
}

unsigned char rx_data(void)
{
        while(PIR1.RCIF==0);                // Wait until RCIF gets low
        return RCREG;                        // Store data in Reception register
}

void lcd_ini()
{
        lcdcmd(0x38);                // Configure the LCD in 8-bit mode, 2 line and 5x7 font
        lcdcmd(0x0C);                // Display On and Cursor Off
        lcdcmd(0x01);                // Clear display screen
        lcdcmd(0x06);                // Increment cursor
        lcdcmd(0x80);                // Set cursor position to 1st line, 1st column
}

void lcdcmd(unsigned char cmdout)
{
        lcdport=cmdout;                //Send command to lcdport=PORTB
        rs=0;                                                
        rw=0;
        en=1;
        Delay_ms(10);
        en=0;
}

void lcddata(unsigned char dataout)
{
        lcdport=dataout;        //Send data to lcdport=PORTB
        rs=1;
        rw=0;
        en=1;
        Delay_ms(10);
        en=0;
}


你住的地区在哪里? 如要买东西可能同区域的朋友能给予建议。
马六甲
本帖最后由 pic 于 8-8-2012 05:26 PM 编辑

回复

使用道具 举报


ADVERTISEMENT

发表于 30-3-2012 12:19 PM | 显示全部楼层
你的LCD 接对吗? LCD 有坏吗?
可能先尝试显示固定信息, “hello world” 在你的LCD 先。
回复

使用道具 举报

发表于 30-3-2012 04:20 PM | 显示全部楼层
lz lcd 的library 里的port assign 和circuit 一样吗? parallel port最好不要和其他的东西共用,
如果port assign不好很容易和其他的硬件crash.
lz试过lcd print hello world了吗?
电路图请上传.

注: 我是用hitech c 和 ladder 的. 我也是马六甲人.
回复

使用道具 举报

 楼主| 发表于 31-3-2012 09:51 AM | 显示全部楼层
我没试过 lcd print hello world...等我try料再回复~ 谢了~
回复

使用道具 举报

 楼主| 发表于 2-4-2012 10:30 AM | 显示全部楼层
谢谢 pic 和 whitemilk。。原来之前的lcd有问题,我已经换了一个新的~
但是,lcd 上面那排 显示 黑色~
其实我想问, rs232 从gps evaluation board 去 pic board...我要怎样才能知道 data 有通过去 pic???
回复

使用道具 举报

 楼主| 发表于 2-4-2012 10:34 AM | 显示全部楼层
回复

使用道具 举报

Follow Us
发表于 2-4-2012 04:29 PM | 显示全部楼层
原来之前的lcd有问题,我已经换了一个新的~
但是,lcd 上面那排 显示 黑色~
cheeboon 发表于 2-4-2012 10:30 AM

你的contrast 问题。
LCD 的Pin 3, 接去一个电位器。。参考下图



其实我想问, rs232 从gps evaluation board 去 pic board...我要怎样才能知道 data 有通过去 pic???

使用USB to USART (TTL level), 把USB to USART 的RX 接去MCU 的RX pin 26。。
如果没有USB to USART, 就用USB to RS232, 把RX接去 MAX232 的Pin13。 (当然ground 也要接)

那么GPS 的data 会被USB to USART 监听, 显示在Hyperterminal 之类的。
回复

使用道具 举报

 楼主| 发表于 17-4-2012 09:20 AM | 显示全部楼层
现在的问题是 GPS evalution board 连接 SK 40
然而,我不知道 RS 232 有没有 连接到 、
因为 到此,LCD 还没有show什么出来
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 21-4-2012 10:06 AM | 显示全部楼层
LCD 的 显示




回复

使用道具 举报

发表于 8-6-2012 05:33 PM | 显示全部楼层
回复 1# cheeboon


   
大概看了一下。 你的program有问题。
不过先撇开这个问题。 你的lcd可以print hello world 了吗?
回复

使用道具 举报

发表于 27-7-2012 05:35 PM | 显示全部楼层
請問這個PROGRAM 有什麼問題.......我的情況也是這樣......????

回复

使用道具 举报

发表于 8-8-2012 12:10 AM | 显示全部楼层
eekeek 发表于 27-7-2012 05:35 PM
請問這個PROGRAM 有什麼問題.......我的情況也是這樣......????

lcd 问题。 搞定lcd 才来看gps.


回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-4-2024 02:51 PM , Processed in 0.066764 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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