標(biāo)題: Nokia5110多功能時(shí)鐘(帶溫度等級(jí)) [打印本頁(yè)]

作者: 小娜子    時(shí)間: 2017-6-9 21:10
標(biāo)題: Nokia5110多功能時(shí)鐘(帶溫度等級(jí))
這個(gè)時(shí)鐘采用Nokia5110顯示屏


單片機(jī)源程序如下(帶溫度等級(jí)):
  1. //重慶三峽學(xué)院電子與信息工程學(xué)院創(chuàng)新實(shí)驗(yàn)室唐老鴨
  2. //原創(chuàng)----川流不息
  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)//數(shù)碼管顯示時(shí)間及溫度
  15. {
  16. //顯示溫度
  17.     a=0;
  18.     b=1;
  19.     c=1;        //數(shù)碼管位選擇
  20.         duan=d[temperature/1000];
  21.         input_595();
  22.         output_595();
  23.         delay(1);
  24.         //消除陰影            
  25.         duan=d[10];  //數(shù)碼管顯示
  26.     input_595();   
  27.     output_595();

  28.     a=1;
  29.     b=1;
  30.     c=1;        //數(shù)碼管位選擇
  31.         duan=d[temperature%1000/100];
  32.         input_595();
  33.         output_595();
  34.         delay(1);         
  35.     duan=d[10];  //數(shù)碼管顯示
  36.     input_595();   
  37.     output_595();
  38. //顯示時(shí)間       
  39.     a=0;
  40.     b=0;
  41.     c=0;        //數(shù)碼管位選擇
  42.     duan=d[shi/10];  //數(shù)碼管顯示
  43.     input_595();   
  44.     output_595();
  45.     delay(1);
  46. //消除陰影            
  47.         duan=d[10];  //數(shù)碼管顯示
  48.     input_595();   
  49.     output_595();

  50.     a=1;
  51.     b=0;
  52.     c=0;        //數(shù)碼管位選擇
  53.     duan=d[shi%10];  //數(shù)碼管顯示
  54.     input_595();   
  55.     output_595();
  56.     delay(1);         
  57.     duan=d[10];  //數(shù)碼管顯示
  58.     input_595();   
  59.     output_595();

  60.     a=0;
  61.     b=1;
  62.     c=0;        //數(shù)碼管位選擇
  63.     duan=d[fen/10];  //數(shù)碼管顯示
  64.     input_595();   
  65.     output_595();
  66.     delay(1);
  67.         duan=d[10];  //數(shù)碼管顯示
  68.     input_595();   
  69.     output_595();

  70.     a=1;
  71.     b=1;
  72.     c=0;        //數(shù)碼管位選擇
  73.     duan=d[fen%10];  //數(shù)碼管顯示
  74.     input_595();   
  75.     output_595();
  76.     delay(1);
  77.         duan=d[10];  //數(shù)碼管顯示
  78.     input_595();   
  79.     output_595();

  80.     a=0;
  81.     b=0;
  82.     c=1;        //數(shù)碼管位選擇
  83.     duan=d[miao/10];  //數(shù)碼管顯示
  84.     input_595();   
  85.     output_595();
  86.     delay(1);
  87.         duan=d[10];  //數(shù)碼管顯示
  88.     input_595();   
  89.     output_595();

  90.     a=1;
  91.     b=0;
  92.     c=1;        //數(shù)碼管位選擇
  93.     duan=d[miao%10];  //數(shù)碼管顯示
  94.     input_595();   
  95.     output_595();
  96.     delay(1);
  97.         duan=d[10];  //數(shù)碼管顯示
  98.     input_595();   
  99.     output_595();
  100. }
  101. void show1(uchar nian,uchar yue,uchar ri,uchar xingqi)//數(shù)碼管顯示時(shí)間及溫度
  102. {

  103.     duan=d[10];  //數(shù)碼管顯示
  104.     input_595();   
  105.     output_595();

  106. //顯示時(shí)間       
  107.     a=0;
  108.     b=0;
  109.     c=0;        //數(shù)碼管位選擇
  110.     duan=d[nian/10];  //數(shù)碼管顯示
  111.     input_595();   
  112.     output_595();
  113.     delay(1);
  114. //消除陰影            
  115.         duan=d[10];  //數(shù)碼管顯示
  116.     input_595();   
  117.     output_595();

  118.     a=1;
  119.     b=0;
  120.     c=0;        //數(shù)碼管位選擇
  121.     duan=d[nian%10];  //數(shù)碼管顯示
  122.     input_595();   
  123.     output_595();
  124.     delay(1);         
  125.     duan=d[10];  //數(shù)碼管顯示
  126.     input_595();   
  127.     output_595();

  128.     a=0;
  129.     b=1;
  130.     c=0;        //數(shù)碼管位選擇
  131.     duan=d[yue/10];  //數(shù)碼管顯示
  132.     input_595();   
  133.     output_595();
  134.     delay(1);
  135.         duan=d[10];  //數(shù)碼管顯示
  136.     input_595();   
  137.     output_595();

  138.     a=1;
  139.     b=1;
  140.     c=0;        //數(shù)碼管位選擇
  141.     duan=d[yue%10];  //數(shù)碼管顯示
  142.     input_595();   
  143.     output_595();
  144.     delay(1);
  145.         duan=d[10];  //數(shù)碼管顯示
  146.     input_595();   
  147.     output_595();

  148.     a=0;
  149.     b=0;
  150.     c=1;        //數(shù)碼管位選擇
  151.     duan=d[ri/10];  //數(shù)碼管顯示
  152.     input_595();   
  153.     output_595();
  154.     delay(1);
  155.         duan=d[10];  //數(shù)碼管顯示
  156.     input_595();   
  157.     output_595();

  158.     a=1;
  159.     b=0;
  160.     c=1;        //數(shù)碼管位選擇
  161.     duan=d[ri%10];  //數(shù)碼管顯示
  162.     input_595();   
  163.     output_595();
  164.     delay(1);
  165.         duan=d[10];  //數(shù)碼管顯示
  166.     input_595();   
  167.     output_595();
  168. //顯示xingqi

  169.     a=1;
  170.     b=1;
  171.     c=1;        //數(shù)碼管位選擇
  172.     duan=d[xingqi];  //數(shù)碼管顯示
  173.     input_595();   
  174.     output_595();
  175.     delay(1);
  176.         duan=d[10];  //數(shù)碼管顯示
  177.     input_595();   
  178.     output_595();
  179. }
  180. void show2()
  181. {
  182. //顯示溫度
  183.     a=0;
  184.     b=1;
  185.     c=0;        //數(shù)碼管位選擇
  186.         duan=d[temperature/1000];
  187.         input_595();
  188.         output_595();
  189.         delay(1);
  190.         //消除陰影            
  191.         duan=d[10];  //數(shù)碼管顯示
  192.     input_595();   
  193.     output_595();

  194.     a=1;
  195.     b=1;
  196.     c=0;        //數(shù)碼管位選擇
  197.         duan=d[temperature%1000/100];
  198.         input_595();
  199.         output_595();
  200.         delay(1);         
  201.     duan=d[10];  //數(shù)碼管顯示
  202.     input_595();   
  203.     output_595();

  204.     a=0;
  205.     b=0;
  206.     c=1;        //數(shù)碼管位選擇
  207.         duan=d[temperature%100/10];
  208.     input_595();   
  209.     output_595();
  210.     delay(1);
  211.         duan=d[10];  //數(shù)碼管顯示
  212.     input_595();   
  213.     output_595();

  214.     a=1;
  215.     b=0;
  216.     c=1;        //數(shù)碼管位選擇
  217.         duan=d[temperature%10];
  218.     input_595();   
  219.     output_595();
  220.     delay(1);
  221.         duan=d[10];  //數(shù)碼管顯示
  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)  //無(wú)限循環(huán)
  234.         {
  235.                
  236.                         temperature=readtemperature();//讀溫度
  237.                 if(flag==0)
  238.                         get_time();//讀出時(shí)間
  239.                 rset_time();
  240.                 if(flag2==0)               
  241.                 show(shi,fen,miao);
  242. //整點(diǎn)報(bào)時(shí)
  243.                 if(fen==0&&miao==0&&nian!=0)
  244.                 {
  245.                          beep=0;
  246.                          rjl();         //漸亮
  247.                         beep=1;
  248.                          rja();         //漸暗       
  249.                          flag2=1;                                        
  250.                 }
  251. //整點(diǎn)時(shí)閃爍顯示日期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. //調(diào)日期時(shí)顯示日期                 
  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); //延時(shí)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(); //走馬內(nèi)外移動(dòng)
  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(); //流水內(nèi)外移動(dòng)
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
Nokia 5110多功能時(shí)鐘(帶溫度等級(jí)).zip (75.05 KB, 下載次數(shù): 33)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1