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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自制DS3231大液晶屏幕12864摸擬鐘

  [復制鏈接]
跳轉到指定樓層
樓主
ID:358930 發表于 2018-7-17 01:33 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /*原創作品,冰冰潔潔,謝謝使用*/
  2. #include <DS3231.h>
  3. #include <Wire.h>
  4. #include <U8glib.h> //聲明庫
  5. U8GLIB_ST7920_128X64_4X u8g(10, 9, 8); // 聲明液晶屏  13=sck, 12=mosi, 11=cs
  6. int r,xo,yo,a,b,c,z;//動畫變量不能用char型變量無法計算
  7. DS3231 Clock;
  8. bool Century=false;
  9. bool h12;
  10. bool PM;
  11. byte ADay, AHour, AMinute, ASecond, ABits;
  12. bool ADy, A12h, Apm;
  13. int second,minute,hour,date,month,year,DoW;
  14. byte   temperature;//溫度

  15. void setup( )
  16. {
  17.     delay(500);
  18.    Wire.begin();
  19.     /*
  20.          //改時間
  21.         Clock.setSecond(10);//Set the second
  22.         Clock.setMinute(40);//Set the minute
  23.         Clock.setHour(1);  //Set the hour
  24.         Clock.setDoW(7);    //Set the day of the week
  25.         Clock.setDate(24);  //Set the date of the month
  26.         Clock.setMonth(6);  //Set the month of the year
  27.         Clock.setYear(18);  //Set the year (Last two digits of the year)
  28.       */
  29.    u8g.setFont(u8g_font_5x7);//顯示5x7英文字符
  30.    
  31. }
  32. void ReadDS3231()//讀取時間
  33. {

  34.   second=Clock.getSecond(); //時間
  35.   minute=Clock.getMinute();//時間
  36.   hour=Clock.getHour(h12, PM);//時間
  37.   date=Clock.getDate(); //日期   
  38.   month=Clock.getMonth(Century);//日期
  39.   year=Clock.getYear();  //日期  
  40.   DoW=Clock.getDoW();//星期

  41.   temperature=Clock.getTemperature();//溫度
  42. }
  43. void loop( )
  44. {
  45.    
  46.      do
  47.      {
  48.         
  49.         
  50.          ReadDS3231();//讀取時間
  51.          /*
  52.         //畫點  
  53.          u8g.drawPixel(0,5);//(開始坐標x0 MAX127----y0MAX63 )     
  54.         //畫任意線   
  55.         u8g.drawLine(2,0,2,9);//(開始坐標x0 MAX127----y0MAX63結束坐標x1MAX127---y1MAX63 )
  56.         //畫橫向軸線
  57.         u8g.drawHLine(7,13,6);//(開始坐標x0 MAX127----y0MAX63 +Z橫軸線長
  58.         //畫縱向軸線
  59.         u8g.drawVLine(10,15,7);//(開始坐標x0 MAX127----y0MAX63 +Z橫軸線長         
  60.         //畫空心方框
  61.          u8g.drawFrame(5,0,5,10);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )
  62.         //畫空心方框+圓形角度方框
  63.          u8g.drawRFrame(0,23,6,10,1);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )+Z圓形角度         
  64.          //畫實心方框
  65.         u8g.drawBox(12,0,5,10);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )
  66.         //畫實心方框+圓形角度方框
  67.         u8g.drawRBox(0,12,6,10,1);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )+Z圓形角度
  68.        //畫空心多邊形+圓形角度
  69.         u8g.drawCircle(25,8,5,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度 小于大小的3倍)
  70.         //畫實心多邊形+圓形角度
  71.         u8g.drawDisc(25,20,5,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度 小于大小的3倍)
  72.         //畫空心橢圓+圓形角度
  73.         u8g.drawEllipse(5,48,5,10,15);//(圓中心坐標x0MAX127----y0MAX63 )(X+控制大小   Y+控制大小   h控制角度=最小X\\Y大小的3倍)
  74.         //畫實心橢圓+圓形角度
  75.         u8g.drawFilledEllipse(20,48,5,10,15);//(圓中心坐標x0MAX127----y0MAX63 )(X+控制大小   Y+控制大小   h控制角度=最小X\\Y大小的3倍)
  76.         //畫空心三角形
  77.         u8g.drawTriangle(30,15,40,2,50,15);//(A角坐標x0MAX127----y0MAX63 )(B角坐標x0MAX127----y0MAX63 )(C角坐標x0MAX127----y0MAX63 )
  78.         //顯示英文字符
  79.         u8g.drawStr(10,35,"bb");//(開始坐標x0 MAX127----y0MAX63 )  
  80.        //顯示一個變量  
  81.         u8g.setPrintPos(25,35);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  82.         u8g.print(sec);  
  83.         */
  84.         
  85.        //不能用char型變量無法計算
  86.         r=17;//指針半徑
  87.         xo=95;//圓心坐標x MAX 127
  88.         yo=32;//圓心坐標y  MAX 63
  89.         z=180;//圓
  90.         //int second=0;//調整
  91.         //int minute=0;//調整
  92.          //int hour=0;//調整
  93.          int  hour1=hour;
  94.          if(hour1>12)
  95.       {hour1=hour1-12;}
  96.        else
  97.       {hour1=hour1;}
  98.       
  99.         a=(second-15)*6;//圓角度360/60
  100.         b=(minute-15)*6;//圓角度360/60
  101.         c=(hour1-15)*30;//圓角度360/12
  102.        //畫空心多邊形+圓形角度
  103.        u8g.drawCircle(xo,yo,20,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度取15的倍度。MAX60)
  104.        u8g.drawCircle(xo,yo,28,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度取15的倍度。MAX60)
  105.        //畫實心多邊形+圓形角度
  106.        u8g.drawDisc(xo,yo,2,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度取15的倍度。MAX60)
  107.         //顯示英文字符
  108.        u8g.drawStr(xo-5,yo-20,"12");//(開始坐標x0 MAX127----y0MAX63 )  
  109.        u8g.drawStr(xo+22,yo+3,"3");//(開始坐標x0 MAX127----y0MAX63 )  
  110.        u8g.drawStr(xo-2,yo+28,"6");//(開始坐標x0 MAX127----y0MAX63 )  
  111.        u8g.drawStr(xo-25,yo+3,"9");//(開始坐標x0 MAX127----y0MAX63 )
  112.         //.畫一圈實心圓
  113.    int B;  
  114.    for(B=0;B<12;B++)//.畫一圈實心圓
  115.    {
  116.      int A=B*30;//圓角度
  117.     if(B==0||B==3||B==6||B==9)//跳過這幾個點畫實心圓
  118.     {}
  119.     else
  120.    {
  121.     u8g.drawPixel((xo+((r+7)*cos(A*3.14/z))),(yo+((r+7)*sin(A*3.14/z))));//(控制圓心位置列0/127   控制圓心位置行0/63  )(控制大小=0+x )
  122.    }
  123.    }
  124.        //.畫sec時針線      
  125.        u8g.drawLine(xo,yo,(xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))));//(開始列127  開始行63)( 結束列127 結束行63) /////00
  126.         //.畫minute時針線  
  127.       u8g.drawLine(xo,yo,(xo+((r-3)*cos(b*3.14/z))),(yo+((r-3)*sin(b*3.14/z))));//(開始列127  開始行63)( 結束列127 結束行63) /////00
  128.      //.畫hour時針線  
  129.       u8g.drawLine(xo,yo,(xo+((r-6)*cos(c*3.14/z))),(yo+((r-6)*sin(c*3.14/z))));//(開始列127  開始行63)( 結束列127 結束行63) /////00   
  130.         
  131.        //顯示一個變量  
  132.         u8g.setPrintPos(2,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  133.         u8g.print(hour/10);
  134.         u8g.setPrintPos(7,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )
  135.         u8g.print(hour%10);
  136.         u8g.setPrintPos(14,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  137.         u8g.print(minute/10);
  138.         u8g.setPrintPos(19,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  139.         u8g.print(minute%10);
  140.         u8g.setPrintPos(26,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  141.         u8g.print(second/10);
  142.         u8g.setPrintPos(31,10);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  143.         u8g.print(second%10);
  144.         //畫空心方框
  145.          u8g.drawFrame(0,2,37,10);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )
  146.         //畫縱向軸線
  147.         u8g.drawVLine(12,3,8);//(開始坐標x0 MAX127----y0MAX63 +Z橫軸線長
  148.         //畫縱向軸線
  149.         u8g.drawVLine(24,3,8);//(開始坐標x0 MAX127----y0MAX63 +Z橫軸線長
  150.         //顯示一個變量 ;//溫度
  151.         u8g.setPrintPos(17,55);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )  
  152.         u8g.print(temperature/10);
  153.         u8g.setPrintPos(22,55);//(開始坐標x0 MAX127----y0MAX63()取值>0有向上寫字符 )
  154.         u8g.print(temperature%10);
  155.         //畫空心多邊形+圓形角度
  156.          u8g.drawCircle(21,52,7,15);//(圓中心坐標x0MAX127----y0MAX63 )(z控制大小   h控制角度取15的倍度。MAX60)
  157.          //畫空心方框+圓形角度方框
  158.          u8g.drawRFrame(18,20,7,27,1);//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )+Z圓形角度
  159.         //畫實心方框
  160.         int wd=temperature;//圖形溫度計用變量
  161.         if(wd>56)wd==56;//此處設計圖形溫度計最大顯示57度
  162.         u8g.drawBox(20,(20+((60-wd)/2)),3,27-(((60-wd)/2)));//(開始坐標x0 MAX127----y0MAX63結束坐標x0+ ---y0+ )//溫度
  163.         
  164.    
  165.          
  166.          

  167.      }
  168.    while( u8g.nextPage( ));   
  169. }
復制代碼


評分

參與人數 3黑幣 +70 收起 理由
YJGG + 10 很給力!
深藍遠景 + 10 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2018-7-17 02:25 | 只看該作者
源碼壓縮包能傳一下嗎?頭文件
回復

使用道具 舉報

板凳
ID:358930 發表于 2018-7-17 02:45 來自手機 | 只看該作者
admin 發表于 2018-7-17 02:25
源碼壓縮包能傳一下嗎?頭文件

我試試上傳。頭文件都有的,我總想用摸擬鐘,就自己做了,關鍵是能得黑幣,有了黑幣就能好好學習了。謝謝版主回復。
回復

使用道具 舉報

地板
ID:358930 發表于 2018-7-17 03:01 來自手機 | 只看該作者
admin 發表于 2018-7-17 02:25
源碼壓縮包能傳一下嗎?頭文件

已經上傳了頭文件和源代碼壓縮包。

128顯圖形摸擬鐘OK1.rar

2.42 KB, 下載次數: 84, 下載積分: 黑幣 -5

頭文件與資料.rar

1.35 MB, 下載次數: 81, 下載積分: 黑幣 -5

回復

使用道具 舉報

5#
ID:1 發表于 2018-7-17 04:53 | 只看該作者
能加下我qq嗎,我問下關于上傳錯誤的事情
回復

使用道具 舉報

6#
ID:358930 發表于 2018-7-17 23:09 來自手機 | 只看該作者
冰冰潔潔 發表于 2018-7-17 03:01
已經上傳了頭文件和源代碼壓縮包。

加入中文12X12漢字和日期更美了。

20180717_230502.jpg (30.32 KB, 下載次數: 127)

20180717_230502.jpg
回復

使用道具 舉報

7#
ID:879141 發表于 2021-2-6 21:55 來自手機 | 只看該作者
比較特別的一款時鐘,模擬+數字。多謝分享!
回復

使用道具 舉報

8#
ID:880257 發表于 2021-2-8 09:26 | 只看該作者
Arduino時鐘別樣玩法,贊!
回復

使用道具 舉報

9#
ID:886894 發表于 2021-2-27 17:42 | 只看該作者
按程序引腳接入12864,屏幕沒顯示是怎么回事?搞不懂。
回復

使用道具 舉報

10#
ID:328014 發表于 2021-2-27 18:48 | 只看該作者
12864有好幾種,程序不通用的,還有帶不帶字庫的區別,樓主這個應該是ST7920的
回復

使用道具 舉報

11#
ID:28992 發表于 2021-3-24 07:29 | 只看該作者
thank you so much!
回復

使用道具 舉報

12#
ID:607710 發表于 2021-3-26 20:03 | 只看該作者
時鐘我做了很多種,都不能讓自己滿意
回復

使用道具 舉報

13#
ID:41582 發表于 2021-5-27 15:04 | 只看該作者
謝謝!借鑒思路
回復

使用道具 舉報

14#
ID:64089 發表于 2021-5-31 10:08 | 只看該作者
這個還是很有意思的,獲取時間不是太會,可以參考樓主的資料學習一下。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线看亚洲 | 欧美日韩不卡 | 91精品www| 欧美一区不卡 | 国产一级片久久久 | 亚洲免费观看视频网站 | 欧美一区二区三区在线免费观看 | 久久精品播放 | 久久99精品久久久久蜜桃tv | 天天操天天摸天天干 | 亚洲成人日韩 | 91在线精品秘密一区二区 | 91大神在线资源观看无广告 | 日韩一区二区免费视频 | 国产精品免费看 | 亚洲日韩中文字幕一区 | 亚洲二区在线 | 男女网站免费 | 91精品国产乱码久久久 | 亚洲国产免费 | 日本久久精 | 久久天堂网 | 免费亚洲一区二区 | 国产精品久久久久久久久久妇女 | 国产精品久久久久无码av | 国产高清视频在线观看 | 青青草综合 | 91精品一区二区三区久久久久 | 日韩精品一区二区三区四区 | 亚洲成人三级 | 亚洲二区在线观看 | 精品久久亚洲 | 日韩欧美国产精品 | 亚洲一二三区在线观看 | 五月免费视频 | 超碰成人在线观看 | 日韩中出 | 成人欧美一区二区三区1314 | 久久亚洲一区 | 欧美在线看片 | 国产欧美精品区一区二区三区 |