999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于音頻信道無線傳輸定位數據的軟件設計

2016-02-14 07:17:54李園喜楊家成
信息記錄材料 2016年3期
關鍵詞:單片機程序

李園喜 劉 志 楊家成

(91550部隊3分隊 遼寧 大連 116023)

基于音頻信道無線傳輸定位數據的軟件設計

李園喜 劉 志 楊家成

(91550部隊3分隊 遼寧 大連 116023)

采用單片機為主控核心,以圖像傳輸微波機的音頻傳輸通道為通信手段,對海上圖像傳輸微波機進行實時定位。本文介紹了實現該方案各功能電路的單片機驅動軟件設計思想。

功能電路; 驅動軟件; 實時定位

海上圖像傳輸微波機沒有實時定位功能,在試驗中給天線調整和圖像接收帶來諸多不便,在歷次海上圖像傳輸保障中問題暴露最為明顯。為了解決此問題,二三O所三室提出了通過雙音多頻(DTMF)信號調制GPS定位數據的方法,通過圖像微波機傳輸設備的冗余伴音信道,實現圖像微波機所在點位進行實時傳輸的思想,并且設計了一整套的實現硬件方案。本文根據該硬件方案設計了對各功能硬件進行控制的單片機驅動軟件。

1.驅動軟件的總體組成及設計

1.1總體組成

本軟件的硬件平臺由海上GPS定位數據發送端和陸上GPS定位數據顯示端組成。

海上GPS定位數據發送端需要編寫大容量FLASH存儲器的驅動軟件、DTMF編解碼電路的驅動軟件、GPS OEM板驅動軟件。

陸上GPS定位數據顯示端需要編寫LCD顯示器的驅動軟件、觸摸屏控制器的驅動軟件和DTMF編解碼電路的驅動軟件。

驅動軟件的內容如圖1所示。

1.2海上端硬件驅動軟件設計

1.2.1 GPS OEM板驅動軟件設計

GPS OEM板上電工作后,按照一定的波特率輸出NMEA0183語句。方案采用GARMINGPS25LP GPS OEM板,該板出廠時默認波特率為4800bps,輸出語句為$GPGGA 、$ GPGSA 、 $GPGSV 、$GPRMC 和 $PGRMT語句,因此GPS OEM板上電工作后就會以4800bps每秒分別輸出一幀$GPGGA 、$ GPGSA 、 $GPGSV 、$GPRMC和 $PGRMT語句。可以通過 $PGRMO 語句屏蔽它們。$PGRMO語句格式為:$PGRMO,<1>,<2>,*hh<CR><LF>

根據單片機測量需要,只保留輸出$GPRMC語句,通過單片機串口向GPS OEM板輸入:

$PGRMO,,2 (屏蔽所有輸出語句)

$PGRMO, GPRMC,1 (激活GPRMC語句)

通過以上設置后,GARMINGPS25LP將連續輸出$GPRMC數據,波特率為4800bps。

單片機讀取$GPRMC語句的程序設計方法如下:

對于圖像傳輸微波機定位來說,只關心GPS OEM板輸出的的經緯度和時間。因此在設計讀取$GPRMC語句的單片機軟件時,只關心四組數據,即:UTC當地時間的時分秒(hhmmss),UTC當地時間,日月年(ddmmyy);緯度ddmm.mmmm,經度dddmm.mmmm。對GARMIN GPS25LP進行設置后,每隔一秒GARMIN GPS25LP將發送一幀$GPRMC數據。$GPRMC語句格式為:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<1 0>,<11>,<12>,*hh<CR><LF>

·<1> : UTC 當地時間,hhmmss格式。

·<2> :工作狀態, A =可用; V =接收器警報,不可用。

·<3> :緯度, ddmm.mmmm格式(前面的 0 也會傳送)。

·<4> :緯度半球, N 或者 S。

·<5> :經度,dddmm.mmmm格式(前面的 0 也會傳送)。

·<6> :經度半球, E 或者 W 。

·<7> :對地速度,000.0 ~9999.9 節(前面的 0也會傳送)。

·<8> :對地航向,000.0o~ 359.9o(前面的 O也會傳送)。

·<9> :UTC當地時間, ddmmyy 格式。

·<10>:磁變,磁偏角地球磁場在不同時間、不同地點的偏差,000.0 ~180.0度。

·<11>:磁變方向,E & W 。

·<12>:工作模式,A=自主,D=差分,E=評估,N=數據無效。

從$GPRMC數據格式,可以知道第一個逗號之后的字符屬于時間的時、分、秒數據;第三個逗號之后的字符屬于緯度數據;第五個逗號之后的字符屬于經度數據;第九個逗號之后的字符屬于時間的日、月、年數據。因此,從收到第一個字符"$"后,通過判斷逗號就可以尋找到設計所關心的數據,具體程序如下:

serial () interrupt 4 using 1 //輔單片機串行口中斷程序

{RI=0; //軟件清除中斷標志位

if (SBUF==0x24) //判斷是否收到GPRMC格式語句的第一個字符"$",

{record=1; //其數值為0x24,收到后開始記錄數據,并設置記錄標志

igps=0; // 記錄緯度數據字符數量的變量

numbercoma=0; // 記錄逗號數量的變量

}

if (record==1) // 開始處理GPRMC中的數據信息

{ if(SBUF==0x2c) //利用GPRMC數據中的逗號間隔, {numbercoma++; igps=0; //區分接收到的字符處于何種數據中。

}

if (numbercoma==1) // 第一個逗號之后的字符屬于時間的

{stringtime1[igps]=SBUF; //時、分、秒數據

igps++;

}

if (numbercoma==3) // 第三個逗號之后的字符屬于緯度數據

{stringlat[igps]=SBUF;

igps++;

}

if (numbercoma==5) // 第五個逗號之后的字符屬于經度數據

{stringlon[igps]=SBUF;

igps++;

}

if (numbercoma==9) // 第九個逗號之后的字符屬于時間的日、月、年數據

{stringtime2[igps]=SBUF;

igps++;

}

if (SBUF=='*') //判斷是否收到GPRMC格式語句的字符"*",如果收到, {numbercoma=0; //則結束記錄,

record=0;

igps=0;

}

}

}

以上程序將GPS時間的時、分、秒數據存放在stringtime1[] 數組中,共占6個字節;將日、月、年數據存放在stringtime2[]數組中,共占6個字節;將緯度數據存放在stringlat[]數組中,共占10個字節;將經度數據存放在stringlon []數組中,共占10個字節。

1.2.2 FLASH存儲器驅動軟件設計

FLASH存儲器選用三星K9F2808UC0C。該芯片容量為132Mbits,由1024塊組成,每塊又由32頁組成,一頁有528字節(512+16)×8bit。對K9F2808UC0C進行讀寫操作時,必須以頁為單位進行操作。對K9F2808UC0C進行擦除操作,必須以塊為單位進行操作。從設計方案可知,單片機的P25、P26用于控制74LS245的數據方向。K9F2808UC0C的驅動程序由讀數據程序、寫數據程序、擦除程序和寫命令程序三部分組成。具體程序如下:

//************讀FLASH MEMORY 程序*************

void FlashRead(unsigned int pg)

{

unsigned int l; //每個扇區有528個字節

P24=0; //CS=0;選中k9f2808;

WriteCommand(0); //寫讀命令

P25=0; //74LS245處于輸入狀態

while(!RB);

P25=1; //74LS245處于輸出狀態

WriteAddress(0,pg); //確定讀地址

P26=0;

for(l=0;l<512;l++) //連續讀取一頁的數據

{ P0=0xff;

RD=0;

Readdata[l]=P0; //不再讀入

RD=1;

}

P26=1;

P24=1; //cs=1;不再選中k9f2808;

}

//***********寫FLASH MEMORY 程序*****************************

void FlashPagWrite(void)//頁寫操作

{

WDI=0;

P24=0; //CS=0;選中k9f2808;

WriteCommand(16); //將數據寫入flash 0x10

P25=0; //74LS245處于輸入狀態

while(!RB);//等待數據寫入結束

P25=1; //74LS245處于輸出狀態

WriteCommand(112); //讀狀態量

P25=0;while(!RB);

P25=1; //等待數據寫入結束

P26=0;

P0=0xff;

RD=0; //準備好讀入

ACC=P0;

ACC=ACC&0x01;

RD=1;

P26=1;

if(ACC!=0) //若最后一位不為零FLASH損壞

{Invbadr[j]=FlashPagCount; //記錄損壞的FLASH頁碼

j++;

}

FlashPagCount+=1;//頁碼加1

FlashAdrCount=0;

WriteCommand(128); //頁寫命令0x80;

P25=0;while(!RB);P25=1; //等待數據寫入結束

WriteAddress(FlashAdrCount,FlashPagCount); //寫地址

P25=0;while(!RB);P25=1; //等待數據寫入結束

}

//*************FLASH MEMORY擦除程序***************************

void FlashErase(unsigned int a)

{

unsigned int blockcount;

P24=0; //CS=0;選中k9f2808;

for(blockcount=0;blockcount!=a;blockcount++)

{WDI=0;

WriteCommand(96);//塊擦除預命令0x60

WriteAdrpage(32*blockcount);

WriteCommand(208);//塊擦除確認命令0xD0

P25=0;

while(!RB);P25=1;

WriteCommand(112);//讀擦除狀態命令0x70

P25=0;while(!RB);P25=1;

P26=0;

RD=0;

dl_us(1);

ACC=P0;

RD=1;

P26=1;

ACC=ACC&0x01;

if(ACC!=0)//擦除失敗

{Invbadr[0]=blockcount;

j++;

}

}

P24=1; //Cs=1;不再選中k9f2808;

}

//*********寫命令程序*************************

void WriteCommand(unsigned char comd)

{

P26=P25=1;

P20=1;dl_us(1);

P0=comd;

WR=0; dl_us(1);

WR=1; dl_us(1);

P20=0;

}

1.2.3 DTMF編解碼電路驅動軟件設計

GPS定位數據經過DTMF MT8880編碼后,通過圖像微波機傳輸設備的伴音信道傳送到陸上的圖像微波機端。陸上的圖像微波機端接收到DTMF信號的GPS定位數據后,經過DTMF MT8880解碼轉換成數字信號,由CPU 的INT0中斷接收。對MT8880的操作由初始化程序,數據發送程序,數據接收程序組成。具體實現程序如下:

void initialize8880(void) // MT8880初始化

{CS=0;CK=0;

RS=1;RW=1;/*讀狀態寄存器*/

CK=1; _nop_();//重復賦值起延時作用

CK=0;

//****************

RS=1;RW=0;/*寫控制寄存器*/

P10=P11=P12=P13=0;/*控制寄存器清零*/

CK=1; _nop_();

CK=0;

//****************

RS=1;RW=0;/*寫控制寄存器*/

P10=0;P11=0;P12=1;P13=1;/*控制寄存器A值為0XD0*/

CK=1; _nop_();

CK=0;

//****************

RS=1;RW=0;/*寫控制寄存器*/

P10=1;P11=0;P12=0;P13=0;/*控制寄存器B值為0X01*/

CK=1; _nop_();

CK=0;

//****************

RS=1;RW=1;/*讀狀態寄存器*/

CK=1; _nop_();

CK=0;

}

//****************************************

void int1(void) interrupt 3 // 89C51中斷方式接收MT8880數據

{ uchar abc,A;

Delay(3000);

CS=0; CK=0;

RW=1;RS=1;/*讀狀態寄存器*/

CK=1; _nop_();

CK=0; _nop_();

CK=1;

P10=1;P11=1;P12=1;P13=1;/*讀數據前單片機總線賦F*/

RW=1;RS=0;/*讀接收數據寄存器*/

Delay(30);

abc=P1&0x0f; //讀入數據

CK=1; _nop_();

CK=0; _nop_();

}

//******************************************* ***************

void mt8880_WriteData(uchar SendData) // mt8880發送數據

{ CS=0; CK=0;

RS=0; RW=0;

CK=1;_nop_();

P1|=SendData;

_nop_();

CK=0;_nop_();

RW=1;RS=1;

CS=1;

CK=0;

}

1.3陸上端硬件驅動軟件設計

1.3.1 觸摸屏控制器驅動軟件設計

本設計中采用觸摸屏專用控制芯片ADS7843實現對觸摸屏的控制。它是一款具有同步串行接口的12位取樣模數轉換器。由于89C51沒有專門的同步串行接口,因此采用I/O口模擬同步串行接口(SPI)的方式進行設計,觸摸屏被按下時產生INT1中斷,單片機通過INT1中斷服務程序實現觸摸點位置的讀取。具體驅動程序如下:

//************I/O定義***************************

// DCLK-------P24

// CS7843-----P234

// DIN ---------P22

// BUSY ------P21

// DOUT-------P20

//*********寫ads7843**********************

void ads7843_wr(unsigned char num) //SPI寫數據

{unsigned char i=0;

DCLK=0;

for(i=0;i<8;i++)

{ num<<=1;

DIN=CY;

DCLK=0;delay(0); //上升沿有效

DCLK=1; delay(0);}

}

//********讀ads7843************************

unsigned int ads7843_rd() //SPI 讀數據

{unsigned char i=0;

unsigned int Num=0;

for(i=0;i<12;i++)

{ Num<<=1;

DCLK=1; delay(0); //下降沿有效

DCLK=0; delay(0);

if(DOUT) Num++;

}

return(Num);

}

//**********INT0中斷服務程序****************************

ext_1() interrupt 2

{delay(10000); //中斷后延時以消除抖動,使得采樣數據更準確

DCLK=0;

DIN=1;

DCLK=1;

CS7843=0;

while(BUSY); //如果BUSY信號不好使可以刪除不用

delay(2);

ads7843_wr(0x90); //送控制字 10010000 即用差分方式讀X坐標 詳細請見有關資料

while(BUSY); //如果BUSY信號不好使可以刪除不用

delay(2);

DCLK=1; delay(0);

DCLK=0; delay(0);

X=ads7843_rd();

ads7843_wr(0xD0); //送控制字 11010000 即用差分方式讀Y坐標 詳細請見有關資料

DCLK=1;delay(0);

DCLK=0;delay(0);

Y=ads7843_rd();

CS7843=0;

}

1.3.2 LCD顯示電路驅動軟件設計設計

本設計采用臺灣晶采光電科技股份有限公司生產的AG320240A4STCW-T51液晶顯示屏,該液晶顯示屏內置SED1335 LCD控制器,具有320列240行的顯示能力。LCD顯示屏與單片機之間通過一片74ls245進行連接。LCD顯示屏主要有兩個程序,一個是寫命令程序,一個是寫數據程序,程序如下:

//******************************************* ****

void WLCDCOM(uchar com ) //寫LCD控制命令

{

P26=0; //選中LCD顯示屏

P34=0;

P35=0;

P0=com;

A0=1;

WD=0;

delay(1);

WD=1;

P26=1;//不選中LCD顯示屏

}

//******************************************* *************

void WLCDDATA(uchar ref ) //寫LCD參數和顯示字符數據

{

P26=0; //選中LCD顯示屏

P34=0;

P35=0;

P0=ref;

A0=0;

delay(5);

WD=0;

WD=1;

A0=1;

}

本設計中的USB接口電路不需要特意編寫驅動程序,PC機端的驅動程序Silicon公司免費提供,單片機端的驅動程序其實就是UART的收發程序。

2.結束語

本文根據海上圖像傳輸微波機實時定位所設計的的硬件實現方案,設計了相應的驅動軟件。論文中所涉及的軟件作者工作中都曾經配合相應電路使用過。年初在驗證DTMF信號進行數字通信的PCB板上,使用本文所設計的軟件成功實現了數字信號的發送和接收。因此可以說,本文所設計的軟件是可行的。

[1] 馬忠梅等,《單片機的C語言應用程序設計》,北京航空航天大學出版社,2003.

[2] 徐愛鈞 彭秀華.單片機高級語言C51 Windows環境編程與應用.電子工業出版社.

The software design of wireless transmission based on audio channel positioning data


LI Yuan-xi, LIU Zhi, YANG Jia-cheng. The People's Liberation Army 91550 Troops 3 division, Liaoning Province, Dalian 116023, China

By single chip microcomputer as the master control core to microwave image transmission machine audio transmission channel for communications, microwave machine image transmission in real time positioning of sea. This paper introduces the realization of the plan each function circuit of single chip microcomputer driver software design thought.

Function circuit; Driver software; Real time positioning

TP311

A

1009-5624-(2016)03-0057-06

猜你喜歡
單片機程序
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于單片機的平衡控制系統設計
電子制作(2017年19期)2017-02-02 07:08:27
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 一级毛片在线直接观看| 永久免费无码成人网站| 中国特黄美女一级视频| 亚洲欧洲自拍拍偷午夜色| 亚洲天堂色色人体| 在线网站18禁| 精品伊人久久久香线蕉| a免费毛片在线播放| 成人一级黄色毛片| 国产成年无码AⅤ片在线| 欧美日韩久久综合| 一级全免费视频播放| 国产一区二区三区在线观看视频| 亚洲天堂网在线播放| 依依成人精品无v国产| 国产成人高清精品免费5388| 国产在线观看第二页| 91福利在线看| 91视频免费观看网站| 国产精品区网红主播在线观看| 欧美中文字幕一区| 秘书高跟黑色丝袜国产91在线| 色成人综合| 黄色国产在线| 99ri精品视频在线观看播放| 欧美成人免费一区在线播放| 中文字幕无码av专区久久| 国产精品成人AⅤ在线一二三四| 亚洲国产成熟视频在线多多| 少妇人妻无码首页| 久久黄色毛片| 2021国产在线视频| 精品久久高清| 91麻豆精品视频| 天堂在线视频精品| 任我操在线视频| 久久亚洲AⅤ无码精品午夜麻豆| 日韩av手机在线| 五月综合色婷婷| a级高清毛片| 小蝌蚪亚洲精品国产| 久热中文字幕在线| 亚洲第一黄色网| 精品福利一区二区免费视频| 在线亚洲小视频| 九九久久精品免费观看| 中文字幕第1页在线播| 欧美在线综合视频| 国产亚洲视频免费播放| 萌白酱国产一区二区| 全部免费特黄特色大片视频| 亚洲av综合网| 久久a级片| 中文字幕1区2区| 热久久这里是精品6免费观看| 精品国产欧美精品v| 亚洲天堂伊人| 国产一区免费在线观看| 国产chinese男男gay视频网| 噜噜噜综合亚洲| 国产欧美自拍视频| 成人在线天堂| 亚洲视频一区在线| 中文字幕一区二区人妻电影| 久久性视频| 欧美日一级片| 欧美爱爱网| 一区二区三区在线不卡免费| 免费国产在线精品一区| 91精品专区| 精品少妇人妻无码久久| 欧美午夜在线播放| 国产一级精品毛片基地| 亚洲欧美另类久久久精品播放的| 国产欧美日韩专区发布| 亚洲欧美在线综合一区二区三区| 五月婷婷综合网| 一级爱做片免费观看久久| 国产午夜小视频| 2020国产精品视频| 亚洲欧洲日韩久久狠狠爱| 囯产av无码片毛片一级|