久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11339|回復: 27
打印 上一主題 下一主題
收起左側

KS0108-12864無字庫、大數字時分、時鐘、農歷、生肖年、溫度

  [復制鏈接]
跳轉到指定樓層
樓主
參考本壇幾位高人的程序終于完了一個心愿,令很早前買的12864屏可以按自己滿意的顯示方式顯示
搬程序搬了兩天總意搬好,


源代碼下載: 19264改12864.rar (481.63 KB, 下載次數: 350)
自己不會畫仿真圖所以用qpzmg的原仿真,此19264也是用ks0108跟我的12864同芯片,實際用在12864的只要改一下屏選就行.

下面是源程序預覽:
  1. /*系統頭文件--------------------------------------------------------------------*/
  2. #include
  3. #include
  4. #include "MODEL.h"
  5. #include "LCM19264.h"
  6. #include "DS1302.h"
  7. #include "DS18B20.h"
  8. #include "nongli.h"

  9. /*定義按鍵----------------------------------------------------------------------*/
  10. sbit K1  = P3^0;  //按鍵K1-設置
  11. sbit K2  = P3^1;  //按鍵K2-確認、返回
  12. sbit K3  = P3^2;  //按鍵K3-加
  13. sbit K4  = P3^3;  //按鍵K4-減
  14. //sbit K5  = P1^3;
  15. /************************函數聲明***********************************************/
  16. void DelayM(uint);
  17. void ds_w(void);
  18. uchar m,date,month,year,hour,minute,second;
  19. void Conver_week(bit c,uchar year,uchar month,uchar day);
  20. /*-----------------------------定義全局變量------------------------------*/
  21. bit q=0, w=0;    //調時標志位
  22. unsigned char yy,mo,dd,xq,hh,mm,ss,month_moon,day_moon,week,tiangan,dizhi,moontemp1,moontemp2;//定義時間映射全局變量(專用寄存器)
  23. signed char address,item,max,mini;
  24. unsigned char sel,dd,mo,yy;
  25. /*延時1(us)微秒———————————————————————————————————————————————————————————————————————————————
  26. void delay(uint i)

  27.         while(i--);

  28. 毫秒級CPU延時函數———————————————————————————————————————————————————————————————————————————
  29. void DelayM(uint a)               
  30. {
  31.         uint i;
  32.         while( --a != 0) { for(i = 0; i < 125; i++); }                                             
  33. }
  34. */

  35. void displaytime(void)
  36. {
  37.         
  38.     year=read_time(0x8d);//調用1302時鐘數據中的年數據,從地址0x8d中
  39.         ShowChar(0,0,'2');
  40.         ShowChar(0,1,'0');
  41.         ShowChar(0,2,(year/16+0x30));        
  42.         ShowChar(0,3,(year%16+0x30));
  43.         ShowHZ(0,2,10);                 //年
  44.         
  45.         month=read_time(0x89);//調用1302時鐘數據中的月數據,從地址0x89中
  46.         ShowChar(0,6,(month/16+0x30));         
  47.         ShowChar(0,7,(month%16)+0x30);
  48.         //ShowChar(0,4,(Time[6]/16));
  49.         //ShowChar(0,5,(Time[6]%16));
  50.         ShowHZ(0,4,11);                 //月
  51.         
  52.         date=read_time(0x87);//從1302芯片中讀取日數據,從地址0x87中
  53.         ShowChar(0,10,(date/16+0x30));
  54.         ShowChar(0,11,(date%16+0x30));
  55.         //ShowChar(0,8,(Time[6]/16));
  56.         //ShowChar(0,9,(Time[6]%16));
  57.         ShowHZ(0,6,12);                 //日

  58.         //小時
  59.         hour = read_time(0x85);
  60.         //if((hour/16)==0){Show1632(1,0,11);}
  61.         //        else        {Show1632(1,0,(hour/16));}        //小時十位
  62.         Show1632(1,0,(hour/16));
  63.         Show1632(1,1,(hour%16));                                        //小時個位
  64.         Show1632(1,2,10);                                                //時鐘分隔符號":"
  65.         //分鐘
  66.         minute = read_time(0x83);
  67.         Show1632(1,3,(minute/16));                                        //分鐘十位
  68.         Show1632(1,4,(minute%16));                                        //分鐘個位
  69.         ShowSZ(2,5,10);                                                //時鐘分隔符號":"        
  70.         //秒鐘
  71.         second = read_time(0x81);
  72.         ShowSZ(2,6,(second/16));                                        //秒鐘十位
  73.         ShowSZ(2,7,(second%16));                                        //秒鐘個位
  74.         
  75.         ShowHZ(1,5,13);//星
  76.         ShowHZ(1,6,14);//期
  77.         
  78.         dd = read_time(0x87);//日
  79.         mo = read_time(0x89);//月
  80.         yy = read_time(0x8d);//年
  81.         Conver_week(0,yy,mo,dd);//調用公歷換算星期子函數
  82.     //sel=week;//week是公歷轉換星期子函數的運行結果,結果為0-6,0是星期日
  83.         ShowHZ(1,7,((week)-1));//顯示位置
  84.            if(week==0)
  85.            ShowHZ(1,7,12);    //0=星期日
  86. }
  87. void displaynl(void)
  88. {
  89.         Conversion(century,year,month,date);        //公歷轉農歷
  90.         //write_com(0x30); write_com(0x06); write_com(0x98);
  91.         
  92.         ShowHZ(3,0,(month_moon));  //顯示農歷月
  93.         if(month_moon==1) {ShowHZ(3,0,28);}    //正
  94.         if(month_moon==2) {ShowHZ(3,0,1);}    //
  95.         if(month_moon==3) {ShowHZ(3,0,2);}    //
  96.         if(month_moon==4) {ShowHZ(3,0,3);}    //
  97.         if(month_moon==5) {ShowHZ(3,0,4);}    //
  98.         if(month_moon==6) {ShowHZ(3,0,5);}    //
  99.         if(month_moon==7) {ShowHZ(3,0,6);}    //
  100.         if(month_moon==8) {ShowHZ(3,0,7);}    //
  101.         if(month_moon==9) {ShowHZ(3,0,8);}    //
  102.         if(month_moon==10) {ShowHZ(3,0,9);}    //
  103.         if(month_moon==11) {ShowHZ(3,0,15);}    //
  104.         if(month_moon==12) {ShowHZ(3,0,16);}    //
  105.                        ShowHZ(3,1,11);
  106.         ShowHZ(3,2,(day_moon));  //顯示農歷月
  107.         if (day_moon==1)  {ShowHZ(3,2,17);ShowHZ(3,3,0);}// {lcm_w_word("初一");}
  108.         if (day_moon==2)  {ShowHZ(3,2,17);ShowHZ(3,3,1);}//  {lcm_w_word("初二");}
  109.         if (day_moon==3)  {ShowHZ(3,2,17);ShowHZ(3,3,2);}//  {lcm_w_word("初三");
  110.         if (day_moon==4)  {ShowHZ(3,2,17);ShowHZ(3,3,3);}//  {lcm_w_word("初四");}
  111.         if (day_moon==5)  {ShowHZ(3,2,17);ShowHZ(3,3,4);}//  {lcm_w_word("初五");}
  112.         if (day_moon==6)  {ShowHZ(3,2,17);ShowHZ(3,3,5);}//  {lcm_w_word("初六");}
  113.         if (day_moon==7)  {ShowHZ(3,2,17);ShowHZ(3,3,6);}//  {lcm_w_word("初七");}
  114.         if (day_moon==8)  {ShowHZ(3,2,17);ShowHZ(3,3,7);}//  {lcm_w_word("初八");}
  115.         if (day_moon==9)  {ShowHZ(3,2,17);ShowHZ(3,3,8);}//  {lcm_w_word("初九");}
  116.         if (day_moon==10) {ShowHZ(3,2,17);ShowHZ(3,3,9);}//  {lcm_w_word("初十");}
  117.         if (day_moon==11) {ShowHZ(3,2,9);ShowHZ(3,3,0);}//  {lcm_w_word("十一");}
  118.         if (day_moon==12) {ShowHZ(3,2,9);ShowHZ(3,3,1);}//   {lcm_w_word("十二");}
  119.         if (day_moon==13) {ShowHZ(3,2,9);ShowHZ(3,3,2);}//   {lcm_w_word("十三");
  120.         if (day_moon==14) {ShowHZ(3,2,9);ShowHZ(3,3,3);}//   {lcm_w_word("十四");}
  121.         if (day_moon==15) {ShowHZ(3,2,9);ShowHZ(3,3,4);}//   {lcm_w_word("十五");}
  122.         if (day_moon==16) {ShowHZ(3,2,9);ShowHZ(3,3,5);}//   {lcm_w_word("十六");}
  123.         if (day_moon==17) {ShowHZ(3,2,9);ShowHZ(3,3,6);}//   {lcm_w_word("十七");}
  124.         if (day_moon==18) {ShowHZ(3,2,9);ShowHZ(3,3,7);}//   {lcm_w_word("十八");}
  125.         if (day_moon==19) {ShowHZ(3,2,9);ShowHZ(3,3,8);}//   {lcm_w_word("十九");}
  126.         if (day_moon==20) {ShowHZ(3,2,1);ShowHZ(3,3,9);}//   {lcm_w_word("二十");}
  127.         if (day_moon==21) {ShowHZ(3,2,18);ShowHZ(3,3,0);}//   {lcm_w_word("廿一");}
  128.         if (day_moon==22) {ShowHZ(3,2,18);ShowHZ(3,3,1);}//  {lcm_w_word("廿二");}
  129.         if (day_moon==23) {ShowHZ(3,2,18);ShowHZ(3,3,2);}//  {lcm_w_word("廿三");
  130.         if (day_moon==24) {ShowHZ(3,2,18);ShowHZ(3,3,3);}//  {lcm_w_word("廿四");}
  131.         if (day_moon==25) {ShowHZ(3,2,18);ShowHZ(3,3,4);}//  {lcm_w_word("廿五");}
  132.         if (day_moon==26) {ShowHZ(3,2,18);ShowHZ(3,3,5);}//  {lcm_w_word("廿六");}
  133.         if (day_moon==27) {ShowHZ(3,2,18);ShowHZ(3,3,6);}//  {lcm_w_word("廿七");}
  134.         if (day_moon==28) {ShowHZ(3,2,18);ShowHZ(3,3,7);}//  {lcm_w_word("廿八");}
  135.         if (day_moon==29) {ShowHZ(3,2,18);ShowHZ(3,3,8);}//  {lcm_w_word("廿九");}
  136.         if (day_moon==30) {ShowHZ(3,2,2);ShowHZ(3,3,9);}//  {lcm_w_test(三十
  137.          
  138. }

  139. void Set_time(uchar sel)
  140. {
  141.           signed char address,item;
  142.           signed char max,mini;
  143.           ShowHZ(3,4,19);          //顯示"設"
  144.         ShowHZ(3,5,20);          //顯示"置"         
  145.         if(sel==0) {ShowHZ(3,6,10);ShowHZ(3,7,27);address=0x8c; max=99; mini=0;}  //年份
  146.         if(sel==1) {ShowHZ(3,6,11);ShowHZ(3,7,27);address=0x88; max=12; mini=1;}  //月份
  147.         if(sel==2) {ShowHZ(3,6,12);ShowHZ(3,7,14);address=0x86; max=31; mini=1;}  //日期
  148.         if(sel==3) {ShowHZ(3,6,23);ShowHZ(3,7,24);address=0x84; max=23;mini=0;}//小時
  149.         if(sel==4) {ShowHZ(3,6,21);ShowHZ(3,7,22);address=0x82; max=59;mini=0;}//分鐘

  150.   //讀取1302某地址上的數值轉換成10進制賦給item
  151.           item=((read_time(address+1))/16)*10 + (read_time(address+1))%16;
  152.           if(K3 == 0){item++;}
  153.           if(K4 == 0){item--;}
  154.           if(item>max) item=mini;   
  155.           if(item<mini) item="max;"
  156.           write_time(0x8e,0x00);//允許寫操作
  157.           write_time(address,(item/10)*16+item%10);//轉換成16進制寫入1302
  158.           write_time(0x8e,0x80);//寫保護,禁止寫操作
  159.           displaytime();

  160. }
  161. void main()
  162. {
  163.         uchar e=0;
  164.         ds1302_init();
  165.         InitLCD();
  166.         while(1)
  167.         {
  168.                 if(w==0)
  169.                 {
  170.                         displaytime();
  171.                         displaynl();        
  172.                         read_temp();                  //讀取溫度
  173.                     ds1820disp();                 //顯示溫度
  174.                 }   //正常走時
  175.                 else {}                    //否則啟動調時
  176. //設置鍵------------------------------------------------------------------------               
  177.                 if (K1 == 0)               // 設置時間
  178.                 {
  179.                         DelayM(20);                   //按鍵消抖
  180.                         if(K1 == 0 && w == 1)  //當是調時狀態 本鍵用于調整下一項
  181.                         {
  182.                                 e++;
  183.                                 if (e >= 6 ){e = 0;}
  184.                                 Set_time(e);       //調整                                
  185.                         }                        
  186.                         if(K1 == 0 && w == 0)  //當是正常狀態時就進入調時狀態
  187.                         {
  188.                                 ClearScreen(0);
  189.                                 ClearScreen(1);
  190.                                 ClearScreen(2);    //清除左中右屏顯示
  191.                                 w=1;                   //進入調時                                
  192.                                 Set_time(e);       //調整
  193.                         }
  194.                            while(K1 == 0);        //等待鍵松開
  195.                 }
  196. //確認,返回鍵-------------------------------------------------------------------               
  197.                 if (K2 == 0)               //在調時狀態時就退出調時
  198.                 {
  199.                         DelayM(20);            //按鍵消抖
  200.                         if(K2 == 0 && w == 1)
  201.                         {                                
  202.                                 w = 0;                   //退出調時
  203.                                 e = 0;                       //"下一項"計數器清0                                                               
  204.                         }
  205.                         if(K2 == 0 && w == 0)
  206.                         {                                
  207.                                 ClearScreen(0);
  208.                                 ClearScreen(1);
  209.                                 ClearScreen(2);           //清除左中右屏顯示                                
  210.                                 while(K2 == 0);   
  211.                         }
  212.                         ClearScreen(0);
  213.                         ClearScreen(1);
  214.                         ClearScreen(2);        //清除左中右屏顯示
  215.                         displaytime();                   //顯示時間
  216.                         read_temp();                  //讀取溫度
  217.                     ds1820disp();                 //顯示溫度
  218.                         while(K2 == 0);  
  219.                 }
  220. //加調整------------------------------------------------------------------------               
  221.                 if (K3 == 0 && w == 1)
  222.                 {
  223.                         DelayM(20);
  224.                         if(K3 == 0 && w == 1) {        Set_time(e); }
  225.                         while(K3 == 0);
  226.                 }
  227. //減調整------------------------------------------------------------------------               
  228.                 if (K4 == 0 && w == 1)
  229.                 {               
  230.                         DelayM(20);
  231.                         if(K4 == 0 && w == 1) { Set_time(e); }
  232.                         while(K4 == 0);
  233.                 }
  234.         }
  235. /*液晶背光控制,按一下亮,再按一下滅----------------------------------------
  236.                 if(K5 == 0)        
  237.                 {
  238.                         DelayM(20); q = ~q;      //標志位取反
  239.                          if(q){BLK = BLK | 1;}   
  240.                                  else {BLK = BLK & 0;}   
  241.                         while(K5 == 0);           
  242.                 }                                                                                                                                        */
  243. }
  244.   
復制代碼



評分

參與人數 1黑幣 +5 收起 理由
vvv64 + 5 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:104846 發表于 2016-2-2 22:01 | 只看該作者
不錯,喜歡這個界面,學習了,多謝
回復

使用道具 舉報

板凳
ID:64089 發表于 2016-2-17 13:42 | 只看該作者
不錯,參考一下思路
回復

使用道具 舉報

地板
ID:144413 發表于 2016-10-25 19:54 | 只看該作者
這個有時間誤差自動補償嗎,1302走不準
回復

使用道具 舉報

5#
ID:228939 發表于 2018-1-23 22:05 | 只看該作者
謝謝樓主,先收藏了
回復

使用道具 舉報

6#
ID:271385 發表于 2018-1-25 16:18 | 只看該作者
圖看著好漂亮
回復

使用道具 舉報

7#
ID:279161 發表于 2018-1-26 16:04 | 只看該作者
收藏先,謝謝樓主
回復

使用道具 舉報

8#
ID:41770 發表于 2018-4-2 10:37 | 只看該作者

圖看著好漂亮
回復

使用道具 舉報

9#
ID:269211 發表于 2018-4-3 00:40 | 只看該作者
為什么不走時呢?
回復

使用道具 舉報

10#
ID:62743 發表于 2018-4-26 17:21 | 只看該作者
寫得好,拜讀,謝謝分享
回復

使用道具 舉報

11#
ID:315723 發表于 2018-4-26 18:47 | 只看該作者
這個漂亮
回復

使用道具 舉報

12#
ID:521117 發表于 2019-10-5 21:44 | 只看該作者
做的很好看,淘了個3.8寸屏,也準備做個時鐘,感謝。
回復

使用道具 舉報

13#
ID:584814 發表于 2019-10-8 21:38 | 只看該作者
新手學習,多謝分享。
回復

使用道具 舉報

14#
ID:727275 發表于 2020-4-13 19:48 | 只看該作者
這個界面設計的圖看著好漂亮,謝謝樓主分享
回復

使用道具 舉報

15#
ID:135809 發表于 2020-4-16 16:17 | 只看該作者
很好的學習資料,收藏了
回復

使用道具 舉報

16#
ID:621343 發表于 2020-6-25 17:41 | 只看該作者
怎么改成12864
回復

使用道具 舉報

17#
ID:87000 發表于 2022-8-17 17:07 | 只看該作者
這個字體非常不錯
回復

使用道具 舉報

18#
ID:366877 發表于 2022-8-21 14:11 | 只看該作者
本帖最后由 wdgao 于 2022-8-23 04:40 編輯

這是非常好的項目,只是希望作者把修改好的源文件分享一下,更多的人受教、受益!
回復

使用道具 舉報

19#
ID:190577 發表于 2022-8-21 15:09 | 只看該作者
您好,怎么程序編譯下生成新的hex,仿真就運行不了,自帶的hex可以運行。
回復

使用道具 舉報

20#
ID:74784 發表于 2022-8-21 18:29 | 只看該作者
我當年試驗時的圖:




回復

使用道具 舉報

21#
ID:366877 發表于 2022-8-22 04:54 | 只看該作者
我看了一下,很受啟發。好像作者給的程序里漢字顯示模塊有瑕疵,請作者指正。謝謝!
回復

使用道具 舉報

22#
ID:1042173 發表于 2022-8-30 00:03 | 只看該作者
非常不錯的界面,大字體,
回復

使用道具 舉報

23#
ID:1041859 發表于 2022-9-1 11:18 | 只看該作者
參考價值很高
謝謝
回復

使用道具 舉報

24#
ID:1042173 發表于 2022-9-2 00:01 | 只看該作者
lxa0 發表于 2022-8-21 18:29
我當年試驗時的圖:

哇08年了呀……那么久。大佬了,
回復

使用道具 舉報

25#
ID:98875 發表于 2022-9-10 16:45 | 只看該作者
顯示界面審計的很漂亮!點贊!
回復

使用道具 舉報

26#
ID:824664 發表于 2023-3-13 00:23 | 只看該作者
漂亮!美觀,大方,值得學習。
回復

使用道具 舉報

27#
ID:309923 發表于 2024-6-7 16:58 | 只看該作者
這是沒改好的嗎?12864顯示不正常
回復

使用道具 舉報

28#
ID:1141064 發表于 2024-12-23 22:54 | 只看該作者
各位大神可以知道一下這是怎么回事

51hei圖片_20241223225345.jpg (207.2 KB, 下載次數: 0)

有問題的狀態

有問題的狀態
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91香蕉视频在线观看 | 精品国产久| 精品九九久久 | av中文字幕在线播放 | 国产免费一级片 | 国产精品国产成人国产三级 | 亚洲成人一级 | 中文字幕在线观看 | 五月婷婷丁香 | 国产在线一区二区三区 | 成人在线视频免费观看 | 国产亚洲精品久久情网 | 青青久久av北条麻妃海外网 | 久久久久国产精品午夜一区 | 午夜精品视频在线观看 | 少妇久久久 | 中文字幕免费视频 | 国产成人一区二区三区电影 | av中文字幕在线 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲精品久久久一区二区三区 | 久久国产精品色av免费观看 | 亚洲成人免费视频在线观看 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 91一区| 婷婷五月色综合香五月 | 日日夜夜免费精品 | 日韩精品在线网站 | 99热这里 | 欧美日韩精品一区二区三区四区 | 一道本不卡 | 日本小视频网站 | 午夜寂寞福利视频 | 日韩在线xx| 色婷婷九月 | 国产在线精品一区二区 | 午夜久久久久久久久久一区二区 | 免费av在线网站 | 久久精品中文字幕 | 午夜精品久久久久久久久久久久久 | 精品视频一区在线 |