【正文】
02 的讀寫程序 void write_(uchar ) //LCD1602 寫地址設(shè)置 { P1=。 CE=0。 } return b/16*10+b%16。//位移操作 } } //向 DS1302 讀取一個(gè)字節(jié) uchar get_a_byte_from_ds1302() { uchar i,b,t。 初始化按鍵 按鍵 1按下? 光標(biāo)左移一位 按鍵 4按下? 切換到鬧鐘界面 按鍵 2按下? 按鍵 3按下? 對應(yīng)的數(shù)值加 1 對應(yīng)的數(shù)值減 1 Y Y Y Y N N N N 基于 GPS的高精度時(shí)鐘設(shè)計(jì) 18 DS1302 的讀寫程序 //向 DS1302 寫一個(gè)字節(jié) void write_a_byte_to_ds1302(uchar datt) { uchar i。//電源控制寄存器設(shè)置 SCON = 0x50。//顯示光標(biāo)移動(dòng)設(shè)置 write_(0x01)。如果沒有 GPS 信息,為了防止時(shí)間停滯,采用 DS1302 計(jì)時(shí)。根據(jù)管腳功能,當(dāng)為有效電平時(shí),狀態(tài)命令字可從 LCD 模塊傳輸?shù)綌?shù)據(jù)總線。給 OEM板發(fā)送一條指令,使其發(fā)送的 0183數(shù)據(jù)格式為“ $GPGGA” ,該指令預(yù)先存在數(shù)據(jù)存儲(chǔ)器里,用循環(huán)方式順次從 程序存儲(chǔ)器里取出數(shù)據(jù)就可循環(huán)發(fā)送。每一碼脈沖的寬度是 10ms,通過改變直流電平占空比或變化 1kHZ 調(diào)制信號的幅值來表示邏輯“ 1”與“ 0”及標(biāo)識(shí)符 (幀起始符,相鄰秒、分、小時(shí)、日期、數(shù)據(jù)的分隔符 )。時(shí)間信息格式一般是 由幀頭、時(shí)、分、秒、日、月、年及結(jié)束符組成。 在 GPS OEM 板取得有效導(dǎo)航解析的時(shí)候,秒脈沖上升沿的時(shí)刻 與 GPS 時(shí)刻相差在50ns 以內(nèi),與串行口輸出的 UTC 標(biāo)準(zhǔn)時(shí)間相差在 1us 以內(nèi)。同步脈沖的周期、頻率、電平、脈寬、脈沖的正負(fù)、上升和下降時(shí)間、同步的時(shí)刻等均可能有所變化。 讀狀態(tài):輸入: RS=L, RW=H, E=H 輸出: D0D7 = 狀態(tài)字 寫指令:輸入: RS=L, RW=L, D0D7 = 指令碼, E=高脈沖 輸出:無 讀數(shù)據(jù):輸入: RS=H, RW=H, E=H 輸出: D0D7 = 數(shù)據(jù) 寫數(shù)據(jù):輸入: RS =H, RW=L, D0D7 = 數(shù)據(jù), E=高脈沖 輸出:無 LCD1602 VSS VDD VEE D0D7 RS R/W E AT89C52 P1 口 GROUND VCC GROUND 基于 GPS的高精度時(shí)鐘設(shè)計(jì) 10 按鍵模塊和單片機(jī)的連接 鍵盤模塊設(shè)置了四個(gè)按鍵: KEY KEY KEY KEY4。 系統(tǒng)采用 LCD1602 進(jìn)行輸出顯示, 1602 中數(shù)據(jù)總線 DB07 對應(yīng)單片機(jī)中的 P1 口 , 3條控制線分別接另外 3個(gè)單片機(jī)端口,其他對應(yīng)接上電源和地。 DS1302 的控制字如下圖 ,控 制字節(jié)的最高有效位 (位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入 DS1302中,位 6如果為 0,則表示存取日歷時(shí)鐘數(shù)據(jù),為 1表示存取 RAM 數(shù)據(jù);位 5至位 1指示操作單元的地址;最低有效位 (位 0)如為 0表示要進(jìn)行寫操作,為 1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。X1 和 X2 是振蕩源,外接 晶振。采用三線接口與 CPU 進(jìn)行 同步通信 ,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的 時(shí)鐘信號 或 RAM 數(shù)據(jù)。下圖 為 AT89C52 的最小系統(tǒng) [4]。 第三章,給出了 GPS 接受模塊進(jìn)行截取數(shù)據(jù)的原理、流程圖以及主要程序??傮w上說各種 GPS同步時(shí)時(shí)鐘的差別主要在于其時(shí)間的精準(zhǔn)度、提供給用戶的接口及輸出信息。另外 GPS 信號中自帶了誤差糾正碼,接收端可以很容易的把延遲的這段傳輸延遲去掉。 GPS性能特點(diǎn): ?可以全球全天候工作。s concept of time bees more and more strong,therefore, design and development digital clock has a good application , traditional way of time service is increasingly difficult to meet the requirements of modern industrial production practice of the time. In the rapid development of GPS, the GPS clock function is increasingly attentio n by of the price of lowcost, highperformance single chip microputer has been widely used in automatic control of the design use the AT89S52 microcontroller on the electronic clock of Atmel pany development,implements the required function of the hardware circuit is designed,application C language for software programming and demonstration, validation with the test board. This paper introduces a GPS high precision clock module chip function and the pin connection with the implementation,GPS timing GPS clock module in the system are expounded in detail,including GPS timing synchronization using method and GPS receiving the data output form and the connection between the GPS module and MCU munication,to read the purpose of the GPS information and on the LCD1602 display time. The data read from the GPS module are given in this paper the interception time data and transmission between MCU and shows the flow chart and main the received GPS signal problems,this system will join a DS1302 clock chip is used to solve GPS signal or the signal strength is too low, lead to can39。在 GPS 的高速發(fā)展下,其授時(shí)功能已日益被人們所關(guān)注 [1]。 本論文主要介紹構(gòu)成 GPS 高精度時(shí) 鐘的各模塊芯片的功能及各管腳的連接與執(zhí)行情況,詳細(xì)闡述了 GPS 授時(shí)系統(tǒng)中的授時(shí)模塊,包括 GPS 授時(shí)的同步利用方式和GPS接受端的數(shù)據(jù)輸出形式以及 GPS模塊與單片機(jī)之間的連接通信,來達(dá)到讀取 GPS信息并且在 LCD1602 上顯示時(shí)間的目的。AT89C52。三維位置定位精度優(yōu)于 25米,三維速度精度優(yōu)于住 /秒,時(shí)間精度 100納秒,采用載波測距定位精度可達(dá)厘米級。 基于 GPS的高精度時(shí)鐘設(shè)計(jì) 2 國內(nèi)外研究以及趨勢 傳統(tǒng)的時(shí)間服務(wù)方式越來越難以滿足現(xiàn)代工業(yè)化生產(chǎn)實(shí)踐對時(shí)間的要求。所以這種系統(tǒng)一般精確度要高,但是其成本也比較高。 第六章,對全文 進(jìn)行系統(tǒng)的總結(jié),并對 GPS 時(shí)鐘的研究應(yīng)用進(jìn)行展望。具體地說,就是:發(fā)射時(shí),把 音頻信號 編譯成用來發(fā)射的基帶碼;接收時(shí),把收到的基帶碼解譯為音頻信號。 圖 DS1302 的引腳圖 DS1302 的引腳中 Vcc1 為后備電源, Vcc2 為主電源。當(dāng) RST 為高電平時(shí),所有的 數(shù)據(jù)傳送 被初始化,允許對 DS1302 進(jìn)行操作。 圖 LCD1602的引腳圖 LCD1602 其引腳功能如下: RS:數(shù)據(jù)和指令選擇控制端, RS=0 命令狀態(tài); RS=1 數(shù)據(jù); R/W: 讀寫控制線, R/W=0 寫操作; R/W=1 讀操作; A: 背光控制正電源; 浙江理工大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 7 K: 背光控制地; E: 數(shù)據(jù)讀寫操作控制位, E 線向 LCD 模塊發(fā)送一個(gè)脈沖, LCD 模塊和單片機(jī)間將進(jìn)行一次數(shù)據(jù)交換; DB0DB7:數(shù)據(jù)線,可用 8 位連接,也可只用高 4 位連接,節(jié)約單片機(jī)源; VDD: 電源端; VEE: 亮 度控制端( 15V); VSS: 接地端。 (RXD)、(TXD)是 Receive Data , Transmit Data 的意思 ,即 RXD 為接收數(shù)據(jù)的引腳, TXD 為發(fā)送數(shù)據(jù)的引腳。 R5R6R7R8+ 5 VK E Y 1K E Y 2K E Y 3K E Y 4P 0 . 0P 0 . 1P 0 . 2P 0 . 3 圖 按鍵模塊和單片機(jī)的連接 時(shí)鐘芯片 DS1302 和單片機(jī)的連接 DS1302 與 CPU 的連接需要三條線,即 SCLK、 I/O、 RST,分別連接單片機(jī)的 3 個(gè)端口 、 、 (下圖 ),用來對 DS1302 的命令字的讀寫和數(shù)據(jù)的讀寫。這種輸出,用戶可以直接引出同步信號,不必外加電源。僅在取得正確導(dǎo)航解時(shí)才可以用 UTC 時(shí)間對 GPS OEM 內(nèi)部時(shí)間進(jìn)行校正 ,輸出精確時(shí)間。受接收過程中信息處理時(shí)間的影響,對時(shí)精度差。 1kHZ 正弦波調(diào)制碼的分辨率為 1ms,適合遠(yuǎn)距離傳輸,這種正弦波調(diào)制碼一般通過音頻傳輸線路來傳輸數(shù)據(jù)。由于接收到的時(shí)間是世界標(biāo)準(zhǔn)時(shí) (UTC),因此在此時(shí)間上加上 8h才是準(zhǔn)確的北京時(shí),在超出 24h時(shí)應(yīng)作減 24h處理,然后進(jìn)行顯示處理。 圖 讀入狀態(tài)字流程圖 寫命令操作 由表 可知當(dāng) RS=0, R/W=0 時(shí),才 可以通過單片機(jī)或用戶指令把數(shù)據(jù)即命令,寫到 LCD 模塊,此時(shí)就對 LCD 進(jìn)行調(diào)制。 初始化程序 void Initial_LCD1602(void)//LCD1602 初始化 { RW=0。//給各標(biāo)志位附初值 BLA=0。 TR1 = 1。i++)//一個(gè)字節(jié) 8位 { DIO=dattamp。i++)//一個(gè)字節(jié) 8位 { b=1。 SCLK=0。 CE=1。 delay(10)。 LCDEN=1。//寫地址操作, 0xC0 為第二行 write_date(0x30+shi)。 DS1302 的晶振頻率 DS1302 應(yīng)該外接 晶振,測試的時(shí)候采用其他頻率的晶振會(huì)照成比較大的誤差。有時(shí)候時(shí)間上僅僅是一點(diǎn)點(diǎn)的差別,也會(huì)造成巨大的損失。在我走向社會(huì),走向工作崗位的過程中,韓老師給予我的教誨、幫助和殷切期望,促使我更加積極追求新的人生目 標(biāo)。 sbit RS=P2^1。 uint count0,count1。 //經(jīng)度 unsigned char JD_a=39。 //日 unsigned char time_s[2]={}。 //天空中總衛(wèi)星數(shù) unsigned char DW=39。 //命令類型 unsigned char mode。 /******************************************* 函數(shù)名稱 : Get_Data 功 能 : GPS 報(bào)文解碼 參 數(shù) : 無 返回值 : 無 /********************************************/ void Get_Data(void) { uchar tmp。 case 39。 //GPGGA break。 break。){ if(cmd[3]==39。 high_num=0。 byte_count=0。R39。 byte_count=0。 } break。 } break。 7) 訊號噪聲比( C/No), 00 至 99 dB;無表未接收到訊號