找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9428|回復: 13
打印 上一主題 下一主題
收起左側(cè)

接收gps信號的高精度數(shù)碼管時鐘

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76127 發(fā)表于 2015-4-8 21:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
原來做的4位數(shù)碼管時鐘用的是ds1302時鐘芯片,跑的還是挺準的,現(xiàn)在在家里正用,那個是1.5寸的?吹接胁捎胓ps模塊接收衛(wèi)星的時鐘信號做家庭時鐘用的,就照貓畫虎做了一個,的確不錯,這個精度是微秒級別的,只要接收到信號那效果沒得說。因為我買的模塊帶室外天線,所以時鐘上面就不需要調(diào)整時間的按鍵了,只要把天線放在窗邊,數(shù)碼管就很快顯示出精確的時間來。

這次我還是用的洞洞板焊的電路,數(shù)碼管是舊板子拆的1寸,GPS模塊是淘寶來的,5元一個,其他小零件是淘寶來的。6位帶秒顯示的感覺更好一些。唯一遺憾的是要離窗戶近些,在農(nóng)村比較不錯,不必放窗前也能收到信號,這個很奇怪。

這個時鐘最初是分四部分:數(shù)碼管、三極管驅(qū)動、單片機系統(tǒng)和GPS模塊。所以就有四塊板子相連,實驗成功以后重新把數(shù)碼管和三極管驅(qū)動設計在一塊板子上 ,這樣兩塊板子前后固定比較美觀些,GPS模塊很小,固定在中間看不見。

先來個現(xiàn)在正常運行的視頻:


用Sprint-Layout設計電路板非常方便,標準的2.54mm的孔間距,修改也很方便,看看我的單片機和驅(qū)動部分圖:




下面是最初實驗的樣子:

單片機背面和前面






四塊板子連接在一起





通電顯示,由于數(shù)碼管參數(shù)的離散性及數(shù)碼管動態(tài)顯示和拍攝的原因,亮度不是均勻的,實際顯示還是可以的,。




下面是安裝在一起的樣子,有兩個表頭的是維修電源,暫時給時鐘供電用的,可以無視。后面找個5v電源即可,反正耗電也不大的。

  

附上源代碼 的精華部分:(GPS數(shù)據(jù)接收部分,數(shù)碼管顯示比較簡單的)

void TimerInit() //初始化程序
{
    TMOD=0x21;
    TH0 = 0xF1; //4ms左右
    TL0 = 0x9A;
EA=1;
ET0=1;
TR0=1;
    SCON = 0x50;//使用串行工作方式1,10位異步收發(fā)8位數(shù)據(jù),波特率可變(由T1的溢出率控制)
    TH1 = 0xFD;//9600波特率的初值
    TL1 = TH1;//9600波特率的初值
    ES = 1;
    TR1 = 1;
}


   
void main()
{

TimerInit();
while(1)
{
if((rev_stop==1)&&(buf[5]=='C'))//如果接收到GPS模塊的GPRMC數(shù)據(jù)
{  
ES=0;
hour= (buf [7]-0x30)* 16+ buf[8] -0x30;
min=  (buf [9]-0x30)* 16+ buf[10]-0x30;
sec=  (buf[11]-0x30)* 16+ buf[12]-0x30;
        
                                hour=  hour / 16 * 10 + hour % 16;
hour= (hour+8) % 24;//UTC Time換算成北京時間
hour=hour/10*16+hour%10;

ES=1;
rev_stop=0;
}

}

}

void Timer0() interrupt 1  //中斷函數(shù)
{
TH0 = 0xF1;
        TL0 = 0x9A;
        Display();//定時器兄弟簡單而單調(diào)的工作,很輕松的。每4ms刷新下數(shù)碼管,全年無休哦
}

/***************************************************************/
/*************************單片機串口數(shù)據(jù)接收**************************/
/***************************************************************/
void Uart_Receive(void) interrupt 4
{
unsigned char ch,num;
ES = 0;

if (RI)//如果接收完成則進入
{
ch = SBUF;
if (ch == '$')  //如果收到字符'$',便開始接收
{
rev_start = 1;
rev_stop  = 0;  //接收停止標志
}

if (rev_start == 1)       //標志位為1,開始接收
{
buf[num++] = ch;  //字符存到數(shù)組中
if (ch == '\n')       //如果接收到換行
{
buf[num] = '\n';
rev_start = 0;
rev_stop  = 1;  //接收停止標志
num = 0;
}
}
}
RI = 0; //RI清0,重新接收
ES = 1; //串口1中斷允許
}






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:28571 發(fā)表于 2015-4-17 22:48 | 只看該作者
好東西,學習一下,謝謝!
回復

使用道具 舉報

板凳
ID:79034 發(fā)表于 2015-9-25 01:45 | 只看該作者
!。。。》凑几匠绦蛄,為什么不寫完啊。。。
新手表示,看半截不好啊,,。。
不如樓主把電路和完整程序貼出來吧。。

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:105648 發(fā)表于 2016-3-12 02:44 | 只看該作者
!。。!反正都附程序了,為什么不寫完啊。。。
新手表示,看半截不好啊,,。。
不如樓主把電路和完整程序貼出來吧。。
回復

使用道具 舉報

5#
ID:107797 發(fā)表于 2016-3-16 17:24 | 只看該作者
求完整程序和電路圖
回復

使用道具 舉報

6#
ID:127752 發(fā)表于 2016-6-23 00:04 | 只看該作者
l樓主   求您的聯(lián)系方式 我的qq  864295896  您看到了 麻煩加我一下好嗎??
回復

使用道具 舉報

7#
ID:61390 發(fā)表于 2016-7-4 10:52 | 只看該作者
好貼。偶喜歡。。。。。。。。。。
回復

使用道具 舉報

8#
ID:129526 發(fā)表于 2016-7-7 13:35 | 只看該作者
樓主沒有完整的程序么,新手表示看的懵了
回復

使用道具 舉報

9#
ID:130538 發(fā)表于 2016-8-19 10:09 | 只看該作者
不錯。好東西
回復

使用道具 舉報

10#
ID:170330 發(fā)表于 2017-3-21 21:14 | 只看該作者
我就是想搞個這樣的永不需要調(diào)整的電子鐘來學51單片機的,要是再加點鬧鐘什么的就完美了。
回復

使用道具 舉報

11#
ID:198298 發(fā)表于 2017-5-8 23:26 | 只看該作者
好東西
回復

使用道具 舉報

12#
ID:146089 發(fā)表于 2017-5-11 15:50 | 只看該作者
樓主不實誠,這是轉(zhuǎn)的我的第二篇文章的,轉(zhuǎn)載也不吱聲,做人不好這樣啊
回復

使用道具 舉報

13#
ID:145632 發(fā)表于 2017-9-21 16:53 | 只看該作者
好東西
回復

使用道具 舉報

14#
ID:257136 發(fā)表于 2018-1-23 16:07 | 只看該作者
可否教一下如何用GPS與單片機、數(shù)碼管輪流顯示日期時間
回復

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

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

快速回復 返回頂部 返回列表