找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2092|回复: 0
打印 上一主题 下一主题
收起左侧

Nokia5110多功能时钟(带温度等级)

[复制链接]
跳转到指定楼层
楼主
这个时钟采用Nokia5110显示屏


单片机源程序如下(带温度等级):
  1. //重庆三峡学院电子与信息工程学院创新实验室唐老鸭
  2. //原创----川流不息
  3. #include<reg52.h>
  4. #include "rset_time.h"
  5. #include "ds18b02.h"
  6. #include "yiwei595.h"
  7. #include "liushuideng.h"
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. sbit beep=P2^5;
  11. uint aa,temperature=0; //温度值
  12. uchar num1,flag1,flag2;
  13. uchar d[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  14. void show(uchar shi,uchar fen,uchar miao)//数码管显示时间及温度
  15. {
  16. //显示温度
  17.     a=0;
  18.     b=1;
  19.     c=1;        //数码管位选择
  20.         duan=d[temperature/1000];
  21.         input_595();
  22.         output_595();
  23.         delay(1);
  24.         //消除阴影            
  25.         duan=d[10];  //数码管显示
  26.     input_595();   
  27.     output_595();

  28.     a=1;
  29.     b=1;
  30.     c=1;        //数码管位选择
  31.         duan=d[temperature%1000/100];
  32.         input_595();
  33.         output_595();
  34.         delay(1);         
  35.     duan=d[10];  //数码管显示
  36.     input_595();   
  37.     output_595();
  38. //显示时间       
  39.     a=0;
  40.     b=0;
  41.     c=0;        //数码管位选择
  42.     duan=d[shi/10];  //数码管显示
  43.     input_595();   
  44.     output_595();
  45.     delay(1);
  46. //消除阴影            
  47.         duan=d[10];  //数码管显示
  48.     input_595();   
  49.     output_595();

  50.     a=1;
  51.     b=0;
  52.     c=0;        //数码管位选择
  53.     duan=d[shi%10];  //数码管显示
  54.     input_595();   
  55.     output_595();
  56.     delay(1);         
  57.     duan=d[10];  //数码管显示
  58.     input_595();   
  59.     output_595();

  60.     a=0;
  61.     b=1;
  62.     c=0;        //数码管位选择
  63.     duan=d[fen/10];  //数码管显示
  64.     input_595();   
  65.     output_595();
  66.     delay(1);
  67.         duan=d[10];  //数码管显示
  68.     input_595();   
  69.     output_595();

  70.     a=1;
  71.     b=1;
  72.     c=0;        //数码管位选择
  73.     duan=d[fen%10];  //数码管显示
  74.     input_595();   
  75.     output_595();
  76.     delay(1);
  77.         duan=d[10];  //数码管显示
  78.     input_595();   
  79.     output_595();

  80.     a=0;
  81.     b=0;
  82.     c=1;        //数码管位选择
  83.     duan=d[miao/10];  //数码管显示
  84.     input_595();   
  85.     output_595();
  86.     delay(1);
  87.         duan=d[10];  //数码管显示
  88.     input_595();   
  89.     output_595();

  90.     a=1;
  91.     b=0;
  92.     c=1;        //数码管位选择
  93.     duan=d[miao%10];  //数码管显示
  94.     input_595();   
  95.     output_595();
  96.     delay(1);
  97.         duan=d[10];  //数码管显示
  98.     input_595();   
  99.     output_595();
  100. }
  101. void show1(uchar nian,uchar yue,uchar ri,uchar xingqi)//数码管显示时间及温度
  102. {

  103.     duan=d[10];  //数码管显示
  104.     input_595();   
  105.     output_595();

  106. //显示时间       
  107.     a=0;
  108.     b=0;
  109.     c=0;        //数码管位选择
  110.     duan=d[nian/10];  //数码管显示
  111.     input_595();   
  112.     output_595();
  113.     delay(1);
  114. //消除阴影            
  115.         duan=d[10];  //数码管显示
  116.     input_595();   
  117.     output_595();

  118.     a=1;
  119.     b=0;
  120.     c=0;        //数码管位选择
  121.     duan=d[nian%10];  //数码管显示
  122.     input_595();   
  123.     output_595();
  124.     delay(1);         
  125.     duan=d[10];  //数码管显示
  126.     input_595();   
  127.     output_595();

  128.     a=0;
  129.     b=1;
  130.     c=0;        //数码管位选择
  131.     duan=d[yue/10];  //数码管显示
  132.     input_595();   
  133.     output_595();
  134.     delay(1);
  135.         duan=d[10];  //数码管显示
  136.     input_595();   
  137.     output_595();

  138.     a=1;
  139.     b=1;
  140.     c=0;        //数码管位选择
  141.     duan=d[yue%10];  //数码管显示
  142.     input_595();   
  143.     output_595();
  144.     delay(1);
  145.         duan=d[10];  //数码管显示
  146.     input_595();   
  147.     output_595();

  148.     a=0;
  149.     b=0;
  150.     c=1;        //数码管位选择
  151.     duan=d[ri/10];  //数码管显示
  152.     input_595();   
  153.     output_595();
  154.     delay(1);
  155.         duan=d[10];  //数码管显示
  156.     input_595();   
  157.     output_595();

  158.     a=1;
  159.     b=0;
  160.     c=1;        //数码管位选择
  161.     duan=d[ri%10];  //数码管显示
  162.     input_595();   
  163.     output_595();
  164.     delay(1);
  165.         duan=d[10];  //数码管显示
  166.     input_595();   
  167.     output_595();
  168. //显示xingqi

  169.     a=1;
  170.     b=1;
  171.     c=1;        //数码管位选择
  172.     duan=d[xingqi];  //数码管显示
  173.     input_595();   
  174.     output_595();
  175.     delay(1);
  176.         duan=d[10];  //数码管显示
  177.     input_595();   
  178.     output_595();
  179. }
  180. void show2()
  181. {
  182. //显示温度
  183.     a=0;
  184.     b=1;
  185.     c=0;        //数码管位选择
  186.         duan=d[temperature/1000];
  187.         input_595();
  188.         output_595();
  189.         delay(1);
  190.         //消除阴影            
  191.         duan=d[10];  //数码管显示
  192.     input_595();   
  193.     output_595();

  194.     a=1;
  195.     b=1;
  196.     c=0;        //数码管位选择
  197.         duan=d[temperature%1000/100];
  198.         input_595();
  199.         output_595();
  200.         delay(1);         
  201.     duan=d[10];  //数码管显示
  202.     input_595();   
  203.     output_595();

  204.     a=0;
  205.     b=0;
  206.     c=1;        //数码管位选择
  207.         duan=d[temperature%100/10];
  208.     input_595();   
  209.     output_595();
  210.     delay(1);
  211.         duan=d[10];  //数码管显示
  212.     input_595();   
  213.     output_595();

  214.     a=1;
  215.     b=0;
  216.     c=1;        //数码管位选择
  217.         duan=d[temperature%10];
  218.     input_595();   
  219.     output_595();
  220.     delay(1);
  221.         duan=d[10];  //数码管显示
  222.     input_595();   
  223.     output_595();
  224.                         temperature=readtemperature();//读温度                                                               
  225. }
  226. void main()
  227. {       
  228.         flag=0;
  229.         flag1=0;
  230.         flag2=0;
  231.         num=0;
  232.         num1=0;
  233.         while(1)  //无限循环
  234.         {
  235.                
  236.                         temperature=readtemperature();//读温度
  237.                 if(flag==0)
  238.                         get_time();//读出时间
  239.                 rset_time();
  240.                 if(flag2==0)               
  241.                 show(shi,fen,miao);
  242. //整点报时
  243.                 if(fen==0&&miao==0&&nian!=0)
  244.                 {
  245.                          beep=0;
  246.                          rjl();         //渐亮
  247.                         beep=1;
  248.                          rja();         //渐暗       
  249.                          flag2=1;                                        
  250.                 }
  251. //整点时闪烁显示日期5次
  252.                 if(flag2==1)
  253.                 {               
  254.                         get_time();
  255.                         if((miao<=6&&miao>=4)||(miao<=11&&miao>=9)||(miao<=16&&miao>=14)||(miao<=21&&miao>=19)||(miao<=26&&miao>=24))
  256.                                 show1(nian,yue,ri,xingqi);
  257.                         else
  258.                                 show(shi,fen,miao);
  259.                         if(miao==27)       
  260.                                 flag2=0;               
  261.                 }
  262. //调日期时显示日期                 
  263.                 while(flag1)
  264.                 {
  265.                         show1(nian,yue,ri,xingqi);
  266.                         rset_time();
  267.                 }
  268. //按上键显示日期
  269.                 if(key_up==0&&num==0)
  270.                 {
  271.                         delay(8);
  272.                         while(!key_up)
  273.                         show1(nian,yue,ri,xingqi);                                       
  274.                 };
  275. //按下键显示温度
  276.                 if(key_down==0&&num==0)
  277.                 {
  278.                         delay(8);
  279.                         while(!key_down)
  280.                         show2();
  281.                 };
  282.          if(shi==12&&fen==0&&miao==28)
  283.          {
  284.                  rdlszy(); //倒流水左移
  285.                  rja();           //渐暗
  286.                  P0=0xff;
  287.                  ys1ms(300); //延时0.3秒
  288.                  rzmyy(); //走马右移
  289.                  P0=0xff;
  290.                  ys1ms(300);         
  291.                  rzmzy(); //走马左移
  292.                  P0=0xff;
  293.                  ys1ms(300);
  294.                  rjl();         //渐亮
  295.                  rja();         //渐暗
  296.                  P0=0xff;
  297.                  ys1ms(300);
  298.                  rzmnwyd(); //走马内外移动
  299.                  P0=0xff;
  300.                  ys1ms(300);
  301.                  rlszy(); //流水左移
  302.                  rja();         //渐暗
  303.                  ys1ms(300);
  304.                  rlsyy(); //流水右移
  305.                  rja();         //渐暗
  306.                  ys1ms(300);
  307.                  rsdzmyy(); //3灯走马右移
  308.                  P0=0xff;
  309.                  ys1ms(300);
  310.                  rsdzmzy(); //3灯走马右移
  311.                  P0=0xff;
  312.                  ys1ms(300);                  
  313.                  rlsnwyd(); //流水内外移动
  314.                   P0=0xff;
  315.                  ys1ms(300);
  316.                  rtbyd(); //跳变7种模式
  317.                  P0=0xff;
  318.                  ys1ms(300);
  319.                 get_time();
  320.         }
  321.          if(k4==0)
  322.          {
  323.                  delay(5);
  324.                  while(1)
  325.                  {      
  326.                  rdlszy(); //倒流水左移
  327. ……………………

  328. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
Nokia 5110多功能时钟(带温度等级).zip (75.05 KB, 下载次数: 33)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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