找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2004|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)串口接收字符的程序,interrupt4里面識別接收到GPRMC這一幀

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1004235 發(fā)表于 2022-4-12 11:38 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
有大佬可以幫一下嗎
最近一直在做51單片機(jī)串口接收字符的程序,就是在interrupt4里面,正確識別接收到GPRMC這一幀,然后把GPRMC整幀存進(jìn)一個(gè)數(shù)組,已經(jīng)搞了十多天了,總是識別不到
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2022-4-12 16:16 | 只看該作者
GPS時(shí)鐘?
如果是的話,這并不難,但不能著急,一步一步來,不要一下寫完整個(gè)程序,然后就試
一個(gè)一個(gè)函數(shù)的去燒錄驗(yàn)證,別仿真,浪費(fèi)時(shí)間,燒錄才是王道
串口一定要設(shè)置正確,并用電腦檢測,不然后面全白費(fèi)這個(gè)是我剛開始學(xué)C語言的時(shí)候?qū)懙?你參考一下,代碼比較弱智,但是,是驗(yàn)證通過的,我?guī)讉(gè)GPS時(shí)鐘用的都是這個(gè)代碼,反正一直沒錯(cuò)過,所以,也就懶得去優(yōu)化代碼了
uart.rar (1.87 KB, 下載次數(shù): 24)

回復(fù)

使用道具 舉報(bào)

板凳
ID:404160 發(fā)表于 2022-4-12 17:29 | 只看該作者
串口中斷里,每次只能讀一個(gè)字符(一個(gè)字節(jié)的數(shù)據(jù))。一般是把這個(gè)字符存入一個(gè)緩沖池,主程序再從緩存池里把幀數(shù)據(jù)送你說的數(shù)組里
回復(fù)

使用道具 舉報(bào)

地板
ID:121859 發(fā)表于 2022-4-12 18:40 | 只看該作者
你可以先用串口助手發(fā)送正常的字符串,看看能否識別,這樣可以排除是否數(shù)據(jù)問題。
回復(fù)

使用道具 舉報(bào)

5#
ID:1004235 發(fā)表于 2022-4-14 10:22 | 只看該作者
Y_G_G 發(fā)表于 2022-4-12 16:16
GPS時(shí)鐘?
如果是的話,這并不難,但不能著急,一步一步來,不要一下寫完整個(gè)程序,然后就試
一個(gè)一個(gè)函數(shù)的去 ...

萬分感謝,但是我發(fā)送四五幀已經(jīng)成功能夠提取出gprmc這一幀了,但只有前半幀,后半幀就亂碼了,怎么辦
回復(fù)

使用道具 舉報(bào)

6#
ID:139866 發(fā)表于 2022-4-14 11:38 | 只看該作者
酒家魯智深 發(fā)表于 2022-4-14 10:22
萬分感謝,但是我發(fā)送四五幀已經(jīng)成功能夠提取出gprmc這一幀了,但只有前半幀,后半幀就亂碼了,怎么辦

最好的辦法就是連示波器看波形
回復(fù)

使用道具 舉報(bào)

7#
ID:401564 發(fā)表于 2022-4-14 12:47 | 只看該作者
酒家魯智深 發(fā)表于 2022-4-14 10:22
萬分感謝,但是我發(fā)送四五幀已經(jīng)成功能夠提取出gprmc這一幀了,但只有前半幀,后半幀就亂碼了,怎么辦

你要先理解這個(gè)思路,代碼你不能就是復(fù)制別人的就得了
1,先給GPRMC準(zhǔn)備一個(gè)數(shù)組,一個(gè)長度大于GPRMC ASCII數(shù)據(jù)個(gè)數(shù)的數(shù)組
2,串口中斷檢測到"GNRMC"這幾個(gè)字符之后,才會再開始保存接下來接收到的數(shù)據(jù),也不一定是要完全得是GNRMC,因?yàn)樵谒械臄?shù)據(jù)中,只要用G R C就可以區(qū)分于其它數(shù)據(jù)了
3,接收到GNRMC所有數(shù)據(jù),或者是接收的數(shù)據(jù)個(gè)數(shù)大于設(shè)定的個(gè)數(shù)之后,就不再接收了,因?yàn)镚PS模塊是會一直發(fā)送數(shù)據(jù)的
4,接收到有數(shù)據(jù),保存在數(shù)組中,然后就去讀取數(shù)組中的數(shù)據(jù)就行了,可以用   ......[56]這種的直接讀取,不用像我代碼中那樣++的,那是我當(dāng)時(shí)為了測試才用的,因?yàn)闆]有問題,所以就沒有去優(yōu)化了
5,可以用串口助手發(fā)送自己類似于"$GNRMC,111111.222,A,3333.4444,N,11408.4790,E,0.53,292.44,141216,,,A*7
5"這樣的,自己設(shè)定有數(shù)據(jù),再顯示出來,自己就可以從中查找出問題來
回復(fù)

使用道具 舉報(bào)

8#
ID:1004235 發(fā)表于 2022-4-20 00:15 | 只看該作者
Y_G_G 發(fā)表于 2022-4-14 12:47
你要先理解這個(gè)思路,代碼你不能就是復(fù)制別人的就得了
1,先給GPRMC準(zhǔn)備一個(gè)數(shù)組,一個(gè)長度大于GPRMC ASCII ...

你好,我想問一下,我的GPS接到電腦就可以收發(fā)字符串,單片機(jī)接電腦也可以收發(fā),但是為什么單片機(jī)和GPS連接不行呢?我的波特率是9600,謝謝
回復(fù)

使用道具 舉報(bào)

9#
ID:401564 發(fā)表于 2022-4-20 17:29 | 只看該作者
酒家魯智深 發(fā)表于 2022-4-20 00:15
你好,我想問一下,我的GPS接到電腦就可以收發(fā)字符串,單片機(jī)接電腦也可以收發(fā),但是為什么單片機(jī)和GPS連 ...

不知道,東西不在手上,也沒有你的代碼,猜不出來
回復(fù)

使用道具 舉報(bào)

10#
ID:121859 發(fā)表于 2022-4-20 18:08 | 只看該作者
LED2=LED3;
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表