找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8831|回復(fù): 10
收起左側(cè)

萬年歷集大成版之調(diào)試程序

  [復(fù)制鏈接]
ID:233911 發(fā)表于 2017-9-18 17:47 | 顯示全部樓層 |閱讀模式
因上次轉(zhuǎn)讓出的萬年歷集大成版控制板主要是針對(duì)我的數(shù)碼管設(shè)計(jì)的,測(cè)試中的程序沒法直接給LCD12864和LCD240128使用,這兩天應(yīng)個(gè)別壇友要求,特調(diào)制了兩個(gè)小程序供買板的壇友直接拿過去使用。僅調(diào)試了個(gè)把小時(shí),沒實(shí)際進(jìn)行老化試驗(yàn),bug難免。還是老話,我主攻的數(shù)碼管顯示,沒精力折騰其他程序。而且工作合同即將到期,很多雜事要處理!
發(fā)現(xiàn)bug自己修改,并歡迎技術(shù)回帖!

第一個(gè):GPS+LCD12864+DS3231
圖片:
大字體主界面(我故意調(diào)到911,以測(cè)試自動(dòng)校時(shí)用的):

1.jpg


鄭重提示:下載程序時(shí)必須將GPS斷開!
萬年歷運(yùn)行中使用GPS時(shí),電腦串口斷不斷開無所謂。

K4切換至GPS顯示界面:
2.jpg

在此界面隨時(shí)使用K1(MOD)鍵強(qiáng)制手動(dòng)校時(shí)。

GPS信息完整顯示界面:
3.jpg

經(jīng)緯度第一個(gè)小數(shù)點(diǎn)前為度,第一個(gè)小數(shù)點(diǎn)后為分。
如:東經(jīng)118度59.00分。如需顯示秒,自己轉(zhuǎn)換:0.00*60=0.0秒。
定位信息出現(xiàn)后5分鐘自動(dòng)與DS3231校時(shí)。


一廣州壇友打電話要求設(shè)個(gè)定時(shí)幾小時(shí)校準(zhǔn)一次DS3231。
我說首先DS3231已經(jīng)很準(zhǔn)了,日誤差遠(yuǎn)低于1s;第二如果把GPS一直掛在萬年歷上,還不如直接把GPS當(dāng)RTC得了,何須浪費(fèi)個(gè)DS3231!
因此特專做了個(gè)GPS+LCD12864的程序供選擇。

二、GPS+LCD12864
大字體主界面(早上手機(jī)拍的,將就看):
4.jpg

GPS沒有溫度了,需要的自己加18B20。

K4切換至GPS信息界面:
5.jpg


在運(yùn)行模式下K3鍵是屏幕背景燈開關(guān),GPS支持熱插拔。
只要波特率是9600,NMEA-0183協(xié)議就可以直接使用。
如果波特率是4800(GPS常用就這兩個(gè)波特率),就可以在程序里面將宏定義BAUD 9600改為 BAUD 4800
#define BAUD 9600  
不建議使用4800,雖然波長(zhǎng)大抗干擾好,畢竟速度慢,個(gè)人意見。


淘寶2手gps風(fēng)險(xiǎn)大,幾塊錢一個(gè),一般都是隨機(jī)選擇不包好,本人曾買過8個(gè)壞了兩個(gè),那兩個(gè)明顯受了外傷的,沒辦法,賣家連這最基本的常識(shí)都不知道?
最后教大家一招如何簡(jiǎn)單測(cè)試GPS好壞的方法。
6.jpg

外殼上有 9.6kps,恭喜你,我的程序你可以直接使用了。淘寶最常見的二手GPS八成以上都是韓國(guó)貨,質(zhì)量也還過得去。

拆開,接線端子上一般是四根線,最外端的紅黑一般是5V供電+-。
如果不是紅黑色,那么在端子旁邊有個(gè)小紐扣電池,電池上有標(biāo)正負(fù)。萬用表測(cè)短路檔,一端接電池-,另一端去測(cè)試接線端子,找到-。其次可以順著電池+極找到3.3v的穩(wěn)壓塊,可以在穩(wěn)壓塊上找到5V供電+。
5V接上通電后板載指示燈會(huì)亮:
7.jpg


拿一發(fā)光二極管,二極管-接電源-。正極接任意一根未知端子。
如果發(fā)光二極管有規(guī)律的一秒亮一次就確定了這根是TX,即接萬年歷的RX。因?yàn)镚PS是每秒發(fā)送一次數(shù)據(jù),不管有沒有接受到衛(wèi)星信號(hào)。如果兩根線分別接上發(fā)光二極管都常亮或不亮,那就只有默哀了。

常規(guī)情況下靠近電源+極的就是TX。
另一根線應(yīng)該是RX用來刷機(jī)用的,我們空置不管。
因?yàn)槌R?guī)的TTL排序是 VCC  TX  RX GND。

8.jpg

還有個(gè)別種類gps帶綠色尋星指示燈,尋星中為綠色閃爍,定位成功為綠色常亮。如果剛送電就常亮綠燈顯然是壞了。

原本想淘它幾百個(gè)來測(cè)試挑選出無故障的再來一樂論壇轉(zhuǎn)讓的,但實(shí)在沒精力了……
最后向此次買萬年歷控制板的幾個(gè)壇友說聲抱歉。
本人平常上班,晚上下班回來都6:30過了,故平常沒法發(fā)快遞。所以我轉(zhuǎn)讓的東西都是挑周末或節(jié)假日發(fā)布。
這次剛好撞上了中秋節(jié)快遞爆倉(cāng),雖然是兩家小快遞,平常也還能實(shí)現(xiàn)江浙滬次日達(dá)的,這次居然發(fā)貨后3天都還沒出本地中轉(zhuǎn),實(shí)在意外。
所以補(bǔ)發(fā)兩個(gè)GPS程序以精神安慰!
各收一個(gè)幣,象征一下:
GPS+LCD12864+DS3231大字體翻頁(yè)版:
GPS 3231 12864.rar (99.22 KB, 下載次數(shù): 89)

GPS+LCD12864大字體翻頁(yè)版:
GPS 12864.rar (69.63 KB, 下載次數(shù): 60)

應(yīng)部分壇友要求,把二手GPS淘寶鏈接發(fā)了

提醒:
1、gps模塊實(shí)際會(huì)裹滿泥巴的,沒照片上好看
2、店主對(duì)gps一問三不知,她的主業(yè)是賣耳機(jī)等配件的
3、建議多淘幾個(gè)。自己承擔(dān)風(fēng)險(xiǎn)!
4、選這家是因?yàn)槠鋬r(jià)格算是比較低的了
5、本人跟賣家無任何經(jīng)濟(jì)利益關(guān)系,里面最長(zhǎng)的評(píng)論是我的

  1. /*---------------------------------------------------------------------------
  2.                 GPS+DS3231+LCD12864 萬年歷大字體翻頁(yè)版程序
  3.                 單 片 機(jī):STC89C58RD+
  4.                 晶    振:12MHz
  5.                 時(shí)鐘芯片:DS3231
  6.                 液 晶 屏:LCM-12864-ST7920                 LCM12864使用并口連接方式,PSB、RST接高電平
  7.                 GPS模塊 :JSA-S100         ATMEL方案
  8.                 通信格式:NMEA0183
  9.                 通信協(xié)議:9600,8,N,1               
  10.                 時(shí)    間:2014年9月10日
  11. ------------------------------------------------------------------------------*/
  12. /*
  13.                 運(yùn)行界面分 DS3231大字體 與 GPS時(shí)間定位 ;通過K4鍵切換,詳見下面 按鍵定義
  14.                 GPS界面獲取有效定位信息連續(xù)超過5min即自動(dòng)給DS3231校時(shí)。

  15.                 如果一些漢字不能正常顯示如"三"等,說明keil需打漢字補(bǔ)丁
  16.                 GPS支持熱插拔,如果供電電源質(zhì)量差,插入GPS后LCD屏幕對(duì)比度會(huì)明顯變差!

  17.                 經(jīng)緯度顯示為DD.MM.MM(度分格式)
  18.                 如東經(jīng):118.58.99  表示為118度58.99分
  19.                 如果要顯示秒,則為0.99*60=59.4秒,需要的自己動(dòng)手改進(jìn)!

  20.                 程序僅經(jīng)初步測(cè)試,用以臨時(shí)測(cè)試GPS、DS3231、LCD12864和【集大成萬年歷】控制板焊接組裝是否正常,并未經(jīng)老化實(shí)驗(yàn)!
  21.                
  22.                 核心程序都是博采眾長(zhǎng),自己付出的僅是刪減組合微調(diào)而已,向原作者致敬!*/       
  23.                                           
  24. /*-------------------------------頭文件---------------------------------------*/
  25. #include <reg52.h>
  26. #include <intrins.h>
  27. #include <string.h>
  28. #include <stdlib.h>
  29. #include "LCD12864.h"
  30. #include "DS3231.h"

  31. #include "nongli.h"
  32. #include "displaytime.h"
  33. #include "dashuzi.h"
  34. const char chHex[16] = "0123456789ABCDEF";
  35. /********************************************************************************************************************
  36.                 以下為GPS部分定義 (如果純?yōu)轱@示GPS信息只需要定義變量RsBuf[80]就夠了,兩個(gè)結(jié)構(gòu)體可以不要,邊解析邊顯示  )
  37. ********************************************************************************************************************/
  38. //串口中斷需要的變量
  39. uchar seg_count;             /**  逗號(hào)計(jì)數(shù)器 **/
  40. uchar byte_count;            /**  位數(shù)計(jì)數(shù)器 **/

  41. uchar mode;                  /**  0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式         **/
  42. uchar buf_full;              /**  1:整句接收完成,相應(yīng)數(shù)據(jù)有效。0:緩存數(shù)據(jù)無效  **/

  43. typedef xdata struct
  44. {
  45.     uchar TIME[10];       
  46.     uchar VA[2];               
  47.     uchar WD[11];       
  48.     uchar WDNS[2];       
  49.     uchar JD[12];       
  50.     uchar JDWE[2];       
  51.     uchar DATE[9];                 
  52. } GPS_GPRMC;

  53. GPS_GPRMC  gps;

  54. typedef xdata struct                  /** 作時(shí)區(qū)轉(zhuǎn)換時(shí)需要用到年、月、日進(jìn)一 **/
  55. {
  56.     uchar Hour;
  57.     uchar Min;
  58.     uchar Sec;
  59.     uchar Day;
  60.     uchar Mon;
  61.     uchar Year;
  62. } TIMER;
  63. TIMER Timer;

  64. char idata RsBuf[80];     /**  全局變量 **/
  65. void InitBps();                           /**  串口初始化 **/

  66. void UTCToLocal(TIMER *GPS_DataTmp);

  67. /****          以上為GPS部分定義  ***************************************************/

  68. /*--------------------定義按鍵-----------------------------------------------*/
  69. sbit K1  = P3 ^ 4; //K1-進(jìn)入設(shè)置;GPS模式下為強(qiáng)制校時(shí)
  70. sbit K2  = P1 ^ 7; //K2-調(diào)時(shí)模式下為 加
  71. sbit K3  = P1 ^ 6; //K3-調(diào)時(shí)模式下為 減;運(yùn)行模式下為背景燈控制
  72. sbit K4  = P1 ^ 5; //K4-調(diào)時(shí)模式下為 確認(rèn)、返回         ;運(yùn)行模式下為DS3231與GPS運(yùn)行界面切換

  73. sbit BLK = P2 ^ 0; //液晶背光控制輸出,低電平有效,PNP三極管控制。

  74. sbit Bell_Out  = P1 ^ 2;

  75. /*---------------------函數(shù)聲明------------------------------*/
  76. void DelayM(uint);
  77. void Delay(int);
  78. void ds_w(void);
  79. void        GetDS3231(void);
  80. void Conver_week(uchar year, uchar month, uchar day);
  81. /*-----------------------------定義全局變量------------------------------*/
  82. bit q = 0, w = 0; //調(diào)時(shí)標(biāo)志位
  83. uchar yy, mo, dd, xq, hh, mm, ss, month_moon, day_moon, week, tiangan, dizhi, moontemp1, moontemp2; //定義時(shí)間映射全局變量(專用寄存器)
  84. signed char address, item, max, mini;

  85. /*-----------------------------延時(shí)函數(shù) 1MS/次-------------------------------*/
  86. void DelayM(uint a)
  87. {
  88.     uchar i;
  89.     while( --a != 0)
  90.     {
  91.         for(i = 0; i < 125; i++);
  92.     }
  93. }
  94. /*-----------------------------日期、時(shí)間設(shè)置函數(shù)-----------------------------*/

  95. void tiaozheng(void)
  96. {
  97.     yy = read_random(DS3231_YEAR);               
  98.     mo = read_random(DS3231_MONTH);       
  99.     dd = read_random(DS3231_DAY);       
  100.     week = read_random(DS3231_WEEK);

  101.     lcm_w_test(0, 0x80);

  102.     lcm_w_word("20");           //顯示內(nèi)容字符20
  103.     lcm_w_test(1, yy / 10 + 0x30);         //函數(shù)參數(shù)1,代表本行寫數(shù)據(jù),YY/10+0X30得出年十位數(shù)字的顯示碼地址,送顯示
  104.     lcm_w_test(1, yy % 10 + 0x30);        
  105.     lcm_w_word("年");

  106.     lcm_w_test(1, mo / 10 + 0x30);
  107.     lcm_w_test(1, mo % 10 + 0x30);                
  108.     lcm_w_word("月");                           //調(diào)用字符顯示函數(shù),顯示文字 月

  109.     lcm_w_test(1, dd / 10 + 0x30);
  110.     lcm_w_test(1, dd % 10 + 0x30);        
  111.     lcm_w_word("日");                         //顯示字符 日

  112.     if(read_random(DS3231_HOUR) != hh)          //如果程序中的小時(shí)與1302芯片中的不同,
  113.     {
  114.         hh = read_random(DS3231_HOUR);                 //刷新程序中的小時(shí)數(shù)據(jù)
  115.     }
  116.     lcm_w_test(0, 0x91);                       //第一個(gè)參數(shù)0,表示本行寫入LCM的是指令,指定顯示位置88H(第三行左端)
  117.     lcm_w_test(1, (hh / 10) + 0x30); //顯示十位
  118.     lcm_w_test(1, hh % 10 + 0x30);         //顯示個(gè)位
  119.     lcm_w_word("時(shí)");

  120.     if(read_random(DS3231_MINUTE) != mm)                 //如果1302芯片中的分鐘數(shù)據(jù)與程序中的分鐘變量不相等
  121.     {
  122.         mm = read_random(DS3231_MINUTE) ;                //刷新程序中的分鐘數(shù)據(jù)
  123.     }
  124.     lcm_w_test(1, (mm / 10) + 0x30);         //向液晶寫數(shù)據(jù),顯示分鐘的十位數(shù)
  125.     lcm_w_test(1, mm % 10 + 0x30);                 //向液晶寫數(shù)據(jù),顯示分鐘的個(gè)位數(shù)
  126.     lcm_w_word("分");

  127.     if(read_random(DS3231_SECOND) != ss)                         //如果1302芯片中的分鐘數(shù)據(jù)與程序中的秒鐘變量不相等
  128.     {
  129.         ss = read_random(DS3231_SECOND);                        //刷新程序中的秒鐘數(shù)據(jù)
  130.     }
  131.     lcm_w_test(1, (ss / 10) + 0x30);         //向液晶寫數(shù)據(jù),顯示分鐘的十位數(shù)
  132.     lcm_w_test(1, ss % 10 + 0x30);                 //向液晶寫數(shù)據(jù),顯示分鐘的個(gè)位數(shù)
  133.     lcm_w_word("秒");
  134. }

  135. /**********************************************************************************************************/
  136. //調(diào)整時(shí)間子函數(shù),設(shè)置鍵、數(shù)據(jù)范圍、上調(diào)加一,下調(diào)減一功能。
  137. void Set_time(unsigned char sel)  //根據(jù)選擇調(diào)整的相應(yīng)項(xiàng)目加1并寫入DS1302,函數(shù)參數(shù)是按動(dòng)設(shè)置鍵的次數(shù)
  138. {

  139.     write_com(0x30);
  140.     write_com(0x06);

  141.     lcm_w_test(0, 0x98); //第一參數(shù)0表示本行寫入指令,指定下面行的 調(diào)整 顯示起始位置為9AH
  142.     lcm_w_word("★調(diào)整");//調(diào)用字符顯示函數(shù),顯示 調(diào)整字樣

  143.     if(sel == 5)
  144.     {
  145.         lcm_w_word("秒鐘");
  146.         address = DS3231_SECOND;
  147.         max = 59;
  148.         mini = 0;
  149.         tiaozheng();  //調(diào)用日期、時(shí)間調(diào)整函數(shù)
  150.         ds_w();                  //被調(diào)數(shù)據(jù)加一或減一函數(shù)
  151.         tiaozheng();

  152.     }        //秒7,按動(dòng)7次顯示 調(diào)整秒鐘
  153.     //并指定秒鐘數(shù)據(jù)寫入1302芯片的地址是0x82,秒鐘數(shù)據(jù)的最大值是59,最小值是0

  154.     if(sel == 4)
  155.     {
  156.         lcm_w_word("分鐘");
  157.         address = DS3231_MINUTE;
  158.         max = 59;
  159.         mini = 0;
  160.         tiaozheng();
  161.         ds_w();
  162.         tiaozheng();

  163.     }        //分鐘6,按動(dòng)6次顯示 調(diào)整分鐘
  164.     //并指定分鐘數(shù)據(jù)寫入1302芯片的地址是0x82,分鐘數(shù)據(jù)的最大值是59,最小值是0

  165.     if(sel == 3)
  166.     {
  167.         lcm_w_word("小時(shí)");
  168.         address = DS3231_HOUR;
  169.         max = 23;
  170.         mini = 0;

  171.         tiaozheng();
  172.         ds_w();
  173.         tiaozheng();

  174.     }        //小時(shí)5,按動(dòng)5次顯示 調(diào)整小時(shí)
  175.     //規(guī)定小時(shí)數(shù)據(jù)寫入1302芯片的位置是0x84,小時(shí)數(shù)據(jù)最大值23,最小值是0       

  176.     if(sel == 2)
  177.     {
  178.         lcm_w_word("日期");
  179.         address = DS3231_DAY;

  180.         mo = read_random(DS3231_MONTH);//讀月數(shù)據(jù)
  181.         yy = read_random(DS3231_YEAR);//讀年數(shù)據(jù)

  182.         if(mo == 2 && yy % 4 != 0)
  183.         {
  184.             max = 28;    //平年2月28天
  185.             mini = 1;
  186.         }
  187.         if(mo == 2 && yy % 4 == 0)
  188.         {
  189.             max = 29;    //閏年2月29天
  190.             mini = 1;
  191.         }
  192.         if(mo == 1 || mo == 3 || mo == 5 || mo == 7 || mo == 8 || mo == 10 || mo == 12)
  193.         {
  194.             max = 31;    //31天的月份
  195.             mini = 1;
  196.         }
  197.         if(mo == 4 || mo == 6 || mo == 9 || mo == 11)
  198.         {
  199.             max = 30;    //30天的月份
  200.             mini = 1;
  201.         }
  202.         tiaozheng();
  203.         ds_w();
  204.         tiaozheng(); //調(diào)用日期、時(shí)間調(diào)整函數(shù)

  205.     }        //日3,按動(dòng)3次顯示 調(diào)整日期
  206.     //規(guī)定日期數(shù)據(jù)寫入1302的位置地址是0x86,日期最大值31,最小值是1

  207.     if(sel == 1)
  208.     {
  209.         lcm_w_word("月份");
  210.         address = DS3231_MONTH;
  211.         max = 12;
  212.         mini = 1;
  213.         tiaozheng();
  214.         ds_w();
  215.         tiaozheng();

  216.     }        //月2,按動(dòng)2次顯示 調(diào)整月份
  217.     //規(guī)定月份寫入1302的位置地址是0x88,月份最大值12,最小值1

  218.     if(sel == 0)
  219.     {
  220.         lcm_w_word("年份");
  221.         address = DS3231_YEAR;
  222.         max = 99;
  223.         mini = 0;
  224.         tiaozheng();
  225.         ds_w();                //被調(diào)數(shù)據(jù)加一或減一函數(shù)
  226.         tiaozheng();        //調(diào)用日期、時(shí)間調(diào)整函數(shù)

  227.     }        //年1,按動(dòng)1次顯示 調(diào)整年份,
  228.     //規(guī)定年份寫入1302的地址是0x8c,年份的最大值99,最小值0

  229. }

  230. /*****************************************************************************/
  231. //被調(diào)數(shù)據(jù)加一或減一,并檢查數(shù)據(jù)范圍,寫入1302指定地址保存
  232. void ds_w(void)
  233. {
  234.     item = read_random(address);
  235.     if(K2 == 0) //如果按動(dòng)上調(diào)鍵
  236.     {
  237.         item++;//數(shù)加 1
  238.     }
  239.     if(K3 == 0) //如果按動(dòng)下調(diào)鍵
  240.     {
  241.         item--;//數(shù)減 1
  242.     }
  243.     if(item > max) item = mini;         //查看數(shù)值是否在有效范圍之內(nèi)
  244.     if(item < mini) item = max;         //如果數(shù)值小于最小值,則自動(dòng)等于最大值

  245.     ModifyTime(address, item);
  246. }

  247. //=================================BEEP驅(qū)動(dòng)===========================================//
  248. //需要定義Delay,輸出Bell_Out引腳
  249. /********************************************************************************************/
  250. void beep (        unsigned char a, unsigned char b,
  251.             unsigned char c, unsigned char d)
  252. {
  253.     for(; a > 0; a--) //第一個(gè)聲音的長(zhǎng)度
  254.     {
  255.         Bell_Out = ~Bell_Out;//取反揚(yáng)聲器驅(qū)動(dòng)口,以產(chǎn)生音頻
  256.         Delay(b);//音調(diào)設(shè)置延時(shí)
  257.     }
  258.     for(; c > 0; c--) //同上
  259.     {
  260.         Bell_Out = ~Bell_Out;
  261.         Delay(d);//
  262.     }
  263.     Bell_Out = 1;
  264. }


  265. void Beep_y(void)
  266. {
  267. ……………………

  268. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼



評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
陳潤(rùn)源home + 5 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:233911 發(fā)表于 2017-9-18 17:50 | 顯示全部樓層
問:仿制成功,溫度顯示有問題,不能大于26度,是哪的問題啊
答:
  1. 好多人反應(yīng)都有這個(gè)問題,一超過25.5就回到了20多,暫時(shí)沒條件測(cè)試了,等我的新的大數(shù)字萬年歷板子回來了再測(cè)試。
  2. 懷疑是DS3231.h中的 uint    read_temp()   是否有問題(26度的臨界bug)。
  3. uint    read_temp()       /* -------- read temperature -------- */
  4. {
  5.                 int     itemp;
  6.                 float   ftemp;
  7.                 //溫度數(shù)據(jù)是以2 進(jìn)制格式存儲(chǔ)的并不需要數(shù)制轉(zhuǎn)換
  8.                 write_byte(0x0e,0x20);//0x0e寄存器的CONV位置1開啟溫度轉(zhuǎn)換

  9.         itemp = ( (int) read_random(0x11) << 5 );          //放大32倍
  10.         itemp += ( read_random(0x12)>> 3);
  11.         Stop_I2C();
  12.         if(itemp & 0x1000)
  13.                         itemp += 0xe000;        /* if sign bit set, make 16 bit 2's comp */

  14.         ftemp = 0.3125 * (float) itemp+0.5;    /* 放大10倍 */
  15.                 return  (uint) ftemp;
  16. }
  17. 該read_temp() 函數(shù)放在C++編譯環(huán)境中測(cè)試是可以大于26度的。

  18. 和溫度相關(guān)的另一個(gè)函數(shù)是displaytime.h中的:
  19. /*溫度值顯示-----------------------------------------------------------------*/
  20. void displaytemp()
  21. {
  22.         uint tvalue=read_temp();

  23.         set1616pic(5,4,0,1);                                         //顯示"溫度計(jì)圖標(biāo)"
  24.         write_com(0x30); write_com(0x06);        
  25.         write_com(0x9d);           //在液晶上顯示溫度起始位置:"28.8°C"
  26.         if(tvalue>=100)
  27.         write_data(tvalue%1000/100+0x30);    //顯示十位
  28.         else
  29.                  write_data(0x20);    //不顯示十位
  30.         write_data(tvalue%100/10+0x30);    //顯示個(gè)位         
  31.         write_data(0x2e);          //顯示小數(shù)點(diǎn)         
  32.         write_data(tvalue%10+0x30);    //顯示小數(shù)位
  33.         set1616pic(8,4,0,0);           //在第8列第4行不反白的°C圖標(biāo)
  34. }
復(fù)制代碼

此函數(shù)似乎沒多大問題。

但是我用同樣的DS3231.h做的其他幾個(gè)時(shí)鐘溫度是可以大于26度的:
1.jpg

2.jpg

3.jpg

29度!

希望其他懂單片機(jī)的壇友看到了此回復(fù)有精力就幫忙測(cè)試下DS3231的溫度函數(shù)問題。

如果溫度不夠,可以用手觸摸ds3231芯片讓其升溫至26度上!

原因已找到,  ds3231芯片的問題  ,換了個(gè)就沒事了,用的是一年前買的不帶#號(hào)的片子。
回復(fù)

使用道具 舉報(bào)

ID:82765 發(fā)表于 2017-9-18 19:55 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

ID:225681 發(fā)表于 2017-10-28 09:51 | 顯示全部樓層
沒看到電路圖是什么個(gè)意思?可否提供下
回復(fù)

使用道具 舉報(bào)

ID:90212 發(fā)表于 2018-2-17 21:59 | 顯示全部樓層
2014年的測(cè)試圖片,2017年發(fā)帖……
回復(fù)

使用道具 舉報(bào)

ID:116551 發(fā)表于 2018-6-28 22:11 | 顯示全部樓層
樓主,想問一下,P2.0用PNP三極管控制的液晶屏的背光有什么作用嗎,可不可以直接接電源的負(fù),謝謝
回復(fù)

使用道具 舉報(bào)

ID:116551 發(fā)表于 2018-7-14 20:24 | 顯示全部樓層
您好,我做了一個(gè)您設(shè)計(jì)的時(shí)鐘,第一個(gè),您的程序里不是有一個(gè)12小時(shí)自動(dòng)對(duì)時(shí)一次嗎,我測(cè)試了好幾天這個(gè)功能都實(shí)現(xiàn)不了,我又改了一下,1小時(shí)自動(dòng)對(duì)時(shí)一次,也不行,是程序的問題嗎,想問一下您做的第一個(gè)時(shí)鐘有沒有這個(gè)問題,我用的GPS是GPS模塊 NEO-7N UBLOX。麻煩您能解答一下,謝謝
回復(fù)

使用道具 舉報(bào)

ID:116551 發(fā)表于 2018-12-31 22:11 | 顯示全部樓層
您好,我做了一個(gè)您設(shè)計(jì)的時(shí)鐘,第一個(gè),您的程序里不是有一個(gè)12小時(shí)自動(dòng)對(duì)時(shí)一次嗎,我測(cè)試了好幾天這個(gè)功能都實(shí)現(xiàn)不了,我又改了一下,1小時(shí)自動(dòng)對(duì)時(shí)一次,也不行,是程序的問題嗎,想問一下您做的第一個(gè)時(shí)鐘有沒有這個(gè)問題,我用的GPS是GPS模塊 NEO-7N UBLOX。麻煩您能解答一下,謝謝
回復(fù)

使用道具 舉報(bào)

ID:190223 發(fā)表于 2019-3-22 23:42 來自手機(jī) | 顯示全部樓層
為什么gps校準(zhǔn)不了時(shí)間啊
回復(fù)

使用道具 舉報(bào)

ID:567636 發(fā)表于 2019-7-16 19:34 | 顯示全部樓層
看上去好像不錯(cuò)了!
回復(fù)

使用道具 舉報(bào)

ID:138130 發(fā)表于 2019-9-18 18:42 | 顯示全部樓層
各位朋友,大家好!誰有以上不帶#號(hào)的ds3231芯片購(gòu)鏈接,幫忙發(fā)一下,將不勝感謝。ㄒ虮救薉IY的時(shí)候碰到以上的溫度問題得不到解決。)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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