|
終于將STC單片機(jī)使用第二串口功能(STC12C5A60S2+GPS+串口2+1602LCD)給整出來了。作為新人真的真的是欣喜若狂,無語言表。。!
再此將來之不易的心得寫出來,讓和我一樣的單片機(jī)小朋友一起共勉......
1、注意串口的引腳,如果你沒有設(shè)置著的話(P1.2 Rx腳,P1.3 Tx腳)。我就犯了這個(gè)習(xí)慣性的錯(cuò)誤,太無語了。!
2、一定要將單片機(jī)設(shè)置為1T的。
P00109-213507.jpg (4.2 MB, 下載次數(shù): 29)
下載附件
2020-1-9 21:35 上傳
LNUMX6H[NF}(1LSZCLEC%RL.png (20.33 KB, 下載次數(shù): 34)
下載附件
2020-1-9 21:31 上傳
IIC海拔、速度、衛(wèi)星 、溫度效果圖(2004顯示).jpg (222.59 KB, 下載次數(shù): 38)
下載附件
2020-1-9 23:55 上傳
IIC海拔、速度、衛(wèi)星 效果圖.jpg (206.16 KB, 下載次數(shù): 38)
下載附件
2020-1-9 23:55 上傳
單片機(jī)源程序如下:
- #include "GPS.h"
- unsigned char RX_Buffer[68]; //此數(shù)組用于直接儲(chǔ)存來自GPS的原始數(shù)據(jù)
- unsigned char RX_Count = 0;
- bit Flag_GPS_OK = 0;
- void Uart_Init()
- {
- SCON = 0X50; //UART方式1;8位UART
- REN = 1; //允許串行口接收數(shù)據(jù)
- PCON = 0x00; //SMOD=0;波特率不加倍
- TMOD = 0x20; //T1方式2,用于產(chǎn)生波特率
- TH1 = 0xFD; //裝初值
- TL1 = 0xFD;
- TR1 = 1; //啟動(dòng)定時(shí)器1
- EA = 1; //打開全局中斷控制
- ES = 1; //打開串行口中斷
- }
- void RECEIVE_DATA(void) interrupt 4 using 3 //串口中斷函數(shù),收到GPS的數(shù)據(jù)時(shí)進(jìn)入此中斷
- {
- unsigned char temp = 0;
- ES=0; //先關(guān)閉串行口中斷
- temp = SBUF; //接收SBUF中的數(shù)據(jù)
- RI = 0; //接收完成的標(biāo)志位清零
- // LED1 = ~LED1;
-
- if(temp == '
- ) //若是統(tǒng)一的數(shù)據(jù)頭,則作為數(shù)組第一個(gè)元素
- {
- RX_Count = 0;
- Flag_GPS_OK = 0;
- }
- RX_Buffer[RX_Count++] = temp; //收到的數(shù)據(jù)放到數(shù)組中
- if(RX_Count >= 66) //序號大于66的數(shù)據(jù)無用,統(tǒng)一放到第66位覆蓋掉
- {
- RX_Count = 66;
- }
- if(temp == '*') //收到*,則完成一幀數(shù)據(jù)的接收,不管是否完整有效
- {
- Flag_GPS_OK = 1; //標(biāo)志變量置為1
- }
- ES=1; //重新打開串行口中斷
- }
復(fù)制代碼
所有資料51hei提供下載:
009版本IIC-GPS+1602+C52-海拔、速度、衛(wèi)星 +溫度 - (GPS接串口2).7z
(31.69 KB, 下載次數(shù): 166)
2020-1-9 23:57 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|