找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2456|回复: 2
收起左侧

感动自己很久的精美液晶秒表摸拟&数码结合 附Arduino源码

[复制链接]
ID:358930 发表于 2018-11-23 22:20 | 显示全部楼层 |阅读模式
初学Arduino时写的感动自己很久的一个小秒表。我是先学的51后来好奇学的这个,感觉很适合新手学习,但是用惯了N多口的51总感觉这个口不够用,嘿嘿,关键是做小实验不想去扩展下,本来就不太专业,问题只会越来越多,后来买了个2560感觉找到彼岸了,终于可以像51一样任性了,我就喜欢一个口干一件事,就像IIC没人真一个口挂几十个18B20温度传感器。有点不现实。学习吗,只能自己找乐趣,再后来了解点STM32,妈呀,我发财了,这下有用不完的IO了,但是现实又回到原点,做点小改造吧,这个IO口早就是板子做好了,写个程序还得看“原电路”的脸色。不说了,上个源代码

全部资料51hei下载地址:
O128显示图形秒针OK2.zip (1.86 KB, 下载次数: 19)

评分

参与人数 2黑币 +110 收起 理由
azi197417 + 10 共享资料的黑币奖励!
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:358930 发表于 2018-11-23 22:34 | 显示全部楼层
上个图片。
20181123_210714.jpg 20181123_210728.jpg

程序源码:
  1. /*
  2. * 16X16点阵显示 取模方式 阴码+逐行式+顺向
  3. **/
  4. #include <Wire.h>
  5. #include <Adafruit_GFX.h>
  6. #include <Adafruit_SSD1306.h>

  7. #define OLED_RESET 4
  8. Adafruit_SSD1306 display(OLED_RESET);

  9. #define NUMFLAKES 10
  10. #define XPOS 0
  11. #define YPOS 1
  12. #define DELTAY 2

  13. #define LOGO16_GLCD_HEIGHT 16
  14. #define LOGO16_GLCD_WIDTH  16

  15. #if (SSD1306_LCDHEIGHT != 64)
  16. #error("Height incorrect, please fix Adafruit_SSD1306.h!");
  17. #endif
  18. int r,xo,yo,a,z;//动画变量不能用char型变量无法计算
  19. int sec;//动画变量不能用char型变量无法计算
  20. void setup()   {               
  21.   Serial.begin(115200);
  22.   delay(500);
  23.   display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  24. }

  25. void loop() {
  26.      
  27.     sec++;
  28.    if(sec==60)sec=0;
  29.   //1.检测全屏显示(看看有没有大面积坏点)
  30.   display.fillScreen(WHITE);//检测全屏显示(看看有没有大面积坏点)
  31.   display.clearDisplay();   // clears the screen and buffer

  32. //14.显示数字变量
  33.   display.setTextSize(3);//设置字体大小  
  34.   display.setTextColor(WHITE);//设置字体不反白
  35.   display.setCursor(0,20);// 列127  行63    坐标
  36.   display.println(sec/10);
  37.   display.setCursor(22,20);//  列127  行63    坐标
  38.   display.println(sec%10);
  39.     //6.画空心圆
  40. display.drawCircle(xo,yo,25,WHITE);//(控制圆心位置列0/127   控制圆心位置行0/63  )(控制大小=0+x )
  41.   
  42.   //不能用char型变量无法计算
  43.   r=16;//指针半径
  44.   xo=70;//圆心坐标
  45.   yo=28;//圆心坐标
  46. // a=6;//圆角度
  47.   z=180;//圆
  48.   a=sec*6;//圆角度
  49.   //3. 画线 从(0,0)到(50,50
  50.   if(sec==0 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  51.   if(sec==1 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  52.   if(sec==2 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  53.   if(sec==3 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  54.   if(sec==4 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  55.   if(sec==5 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  56.   if(sec==6 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  57.   if(sec==7 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  58.   if(sec==8 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  59.   if(sec==9 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  60.    
  61.   if(sec==10 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  62.   if(sec==11 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  63.   if(sec==12 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  64.   if(sec==13 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  65.   if(sec==14 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  66.   if(sec==15 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  67.   if(sec==16 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  68.   if(sec==17 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  69.   if(sec==18 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  70.   if(sec==19 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  71.   
  72.   if(sec==20 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  73.   if(sec==21 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  74.   if(sec==22 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  75.   if(sec==23 ){ ;display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  76.   if(sec==24 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  77.   if(sec==25 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  78.   if(sec==26 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  79.   if(sec==27 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  80.   if(sec==28 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  81.   if(sec==29 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  82.   
  83.   if(sec==30 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  84.   if(sec==31 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  85.   if(sec==32 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  86.   if(sec==33 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  87.   if(sec==34 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  88.   if(sec==35 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  89.   if(sec==36 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  90.   if(sec==37 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  91.   if(sec==38 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  92.   if(sec==39 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  93.   
  94.   if(sec==40 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  95.   if(sec==41 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  96.   if(sec==42 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  97.   if(sec==43 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  98.   if(sec==44 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  99.   if(sec==45 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  100.   if(sec==46 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  101.   if(sec==47 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  102.   if(sec==48 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00   
  103.   if(sec==49 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  104.   
  105.   if(sec==50 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  106.   if(sec==51 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  107.   if(sec==52 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  108.   if(sec==53 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  109.   if(sec==54 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  110.   if(sec==55 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  111.   if(sec==56 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  112.   if(sec==57 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  113.   if(sec==58 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  114.   if(sec==59 ){ display.drawLine((xo+(r*cos(a*3.14/z))),(yo+(r*sin(a*3.14/z))),xo,yo, WHITE);}//(开始列127  开始行63)( 结束列127 结束行63) /////00
  115.   
  116.    //13.显示英文
  117.   display.setTextSize(1);//设置字体大小
  118.   display.setTextColor(WHITE);//设置字体不反白
  119.   display.setCursor(xo-5,yo-22);//列127 行63     坐标
  120.   display.println("12");
  121.   display.setCursor(xo+18,yo-5);//列127 行63     坐标
  122.   display.println("3");
  123.   display.setCursor(xo-2,yo+15);//列127 行63     坐标
  124.   display.println("6");
  125.   display.setCursor(xo-22,yo-5);//列127 行63     坐标
  126.   display.println("9");
  127.   
  128.   display.display();
  129.   //delay(2000);
  130.    
  131.   
  132. }
复制代码


回复

使用道具 举报

ID:452731 发表于 2019-1-20 23:21 | 显示全部楼层
很是喜欢!这个很有学习的价值
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表