|
制作出來(lái)的實(shí)物圖如下:
IMG_8344.JPG (2.05 MB, 下載次數(shù): 75)
下載附件
2021-2-18 15:16 上傳
IMG_8345.JPG (1.83 MB, 下載次數(shù): 93)
下載附件
2021-2-18 15:16 上傳
最終的顯示效果,
單片機(jī)采用stc8a8k32s4a12。7567芯片串口屏幕,加上DHt11溫濕度采集,
供電電壓直接由單片機(jī)AD采集增加電量顯示
附件中保留DS1302部分程序,DS1302時(shí)間誤差太大,最終舍棄。采用GPS校時(shí)方式。
發(fā)個(gè)帖子賺點(diǎn)積分
12864 tft.rar
(174.87 KB, 下載次數(shù): 85)
2021-2-18 15:21 上傳
點(diǎn)擊文件名下載附件
源碼 下載積分: 黑幣 -5
單片機(jī)源程序如下:
- #include "stc8.h"
- #include <intrins.h>
- #include "GPS.h"
- unsigned char RX_Buffer[120]={0};
- unsigned char RX_Count = 0;
- unsigned char Hour = 0,Min_High = 0,Min_Low = 0,Sec_High = 0,Sec_Low = 0,Min=0,Sec=0;
- unsigned char Month = 0,Day = 0,Month_High = 0, Month_Low = 0,Day_Low = 0,Day_High = 0, Year_High = 0,Year_Low = 0;
- unsigned int Year = 0;
- bit Flag_GPS_OK = 0;
- unsigned char MaxDay = 0;
- bit Page = 0;
- unsigned char xdata Display_GPGGA_Buffer[120]={0};
- unsigned char xdata Display_GPRMC_Buffer[120]={0};
- bit Flag_OV = 0;
- bit Flag_Calc_GPGGA_OK = 0;
- bit Flag_Calc_GPRMC_OK = 0;
- void gps(void)
- {
- int ii;
- int jj;
- Flag_OV =0;
- if(RX_Buffer[0]==0x24&Flag_GPS_OK==1&RX_Buffer[1]==0x47&RX_Buffer[2]==0x50&RX_Buffer[4]==0x47&RX_Buffer[5]==0x41&RX_Buffer[6]==0x2C&RX_Buffer[17]==0x2C) //確定是否收到"GPGGA"這一幀數(shù)據(jù)
- {
- Flag_GPS_OK=0;
- // Flag_OV =1;
- for( ii = 0; ii < 120 ; ii++)
- {
- Display_GPGGA_Buffer[ii] = RX_Buffer[ii];
- }
-
-
- }
-
- if(RX_Buffer[56]==0X2c&RX_Buffer[63]==0x2c&Flag_GPS_OK==1&RX_Buffer[18] == 0x41&RX_Buffer[0] == 0x24 & RX_Buffer[1] == 0x47 & RX_Buffer[2] == 0x50& RX_Buffer[3] == 0x52& RX_Buffer[4] == 0x4d& RX_Buffer[5] == 0x43) //確定是否收到"GPRMC"這一幀數(shù)據(jù)
- {
- Flag_GPS_OK=0;
- Flag_OV =1;
- for( jj = 0; jj < 120 ; jj++)
- {
- Display_GPRMC_Buffer[jj] = RX_Buffer[jj];
- }
- Year_High = Display_GPRMC_Buffer[61];
- Year_Low = Display_GPRMC_Buffer[62];
- Month_High = Display_GPRMC_Buffer[59];
- Month_Low = Display_GPRMC_Buffer[60];
- Day_High = Display_GPRMC_Buffer[57];
- Day_Low = Display_GPRMC_Buffer[58];
- Min_High = Display_GPRMC_Buffer[9];
- Min_Low = Display_GPRMC_Buffer[10];
- Sec_High = Display_GPRMC_Buffer[11];
- Sec_Low = Display_GPRMC_Buffer[12];
-
- // Day = (Day_High - 0x30) * 10 + (Day_Low-0x30); //日 加一
- Month = (Month_High - 0x30) * 10 + (Month_Low - 0x30);
- Year = (Year_High - 0x30) * 10 + (Year_Low - 0x30);
- Hour = ((Display_GPRMC_Buffer[7]-0x30)*10+(Display_GPRMC_Buffer[8]-0x30)+8)%24; //UTC時(shí)間轉(zhuǎn)換到北京時(shí)間 UTC+8
- //0x30為ASCII轉(zhuǎn)換為數(shù)字
- if(Hour<=7)
- {
- Day = (Day_High - 0x30) * 10 + (Day_Low-0x30)+1; //日 加一
- }
- else
- {
- Day = (Day_High - 0x30) * 10 + (Day_Low-0x30);
- }
- Min = (Display_GPRMC_Buffer[9]-0x30)*10+(Display_GPRMC_Buffer[10]-0x30);
- Sec= (Display_GPRMC_Buffer[11]-0x30)*10+(Display_GPRMC_Buffer[12]-0x30);
-
-
-
- }
-
-
- }
- void UTCDate2LocalDate(void)
- {
- Day = (Day_High - 0x30) * 10 + (Day_Low-0x30) + 1; //日 加一
- Month = (Month_High - 0x30) * 10 + (Month_Low - 0x30);
- Year = 2000 + (Year_High - 0x30) * 10 + (Year_Low - 0x30);
-
-
- }
復(fù)制代碼 |
評(píng)分
-
查看全部評(píng)分
|