找回密码
 立即注册

QQ登录

只需一步,快速开始

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

时钟温室度计1602显示

[复制链接]
跳转到指定楼层
楼主
ID:105206 发表于 2017-6-10 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
干货,上代码。
  1. #include <reg52.h>
  2. #include"1602.h"        
  3. #include"delay.h"
  4. #include "ds1302.h"
  5. #include "key.h"
  6. #include"dh11.h"

  7. #include <intrins.h>

  8. sbit BEEP=P3^7;

  9. extern uchar S1num,flag,second,minute,hour,week,day,month,year;//秒、分、时、星期、日、月、年
  10. extern bit keyflag;

  11. /////////////////////////////////////////////////////
  12. extern uchar RHL,RHH,CL,CH;  
  13. extern uint m,n;
  14. /////////////////////////////////////////////////////////
  15. uchar num;
  16. //uchar fan;
  17. ////////////////////////////////////////////////////////////////
  18. uchar code line1_data[] = {"  :  :       "};                         //定义第2行显示的字符
  19. extern bit k4flag;
  20. extern uchar second1,minute1,hour1;
  21. /////////////////////////////////////////////////////
  22. void beep()
  23. {
  24.         BEEP=!BEEP;
  25.         Delay_ms(200);
  26.         BEEP=!BEEP;
  27.         Delay_ms(200);
  28. }

  29. /*****************读出秒的十进制数***************************/
  30. uchar readsecond()
  31. {
  32.         uchar dat;
  33.         dat=read_1302add(0x81);
  34.         second=((dat&0x70)>>4)*10+(dat&0x0f);
  35.         return second;
  36. }
  37. /*****************读出分的十进制数***************************/
  38. uchar readminute()
  39. {
  40. uchar dat;
  41. dat=read_1302add(0x83);
  42. minute=((dat&0x70)>>4)*10+(dat&0x0f);
  43. return minute;
  44. }
  45. /*****************读出小时的十进制数***************************/
  46. uchar readhour()
  47. {
  48. uchar dat;
  49. dat=read_1302add(0x85);
  50. hour=((dat&0x70)>>4)*10+(dat&0x0f);
  51. return hour;
  52. }
  53. /*****************读出天的十进制数***************************/
  54. uchar readday()
  55. {
  56. uchar dat;
  57. dat=read_1302add(0x87);
  58. day=((dat&0x70)>>4)*10+(dat&0x0f);
  59. return day;
  60. }
  61. /*****************读出月的十进制数***************************/
  62. uchar readmonth()
  63. {
  64. uchar dat;
  65. dat=read_1302add(0x89);
  66. month=((dat&0x70)>>4)*10+(dat&0x0f);
  67. return month;
  68. }
  69. /*****************读出周的十进制数***************************/
  70. //uchar readweek()
  71. //{
  72. //uchar dat;
  73. //dat=read_1302add(0x8b);
  74. //week=((dat&0x70)>>4)*10+(dat&0x0f);
  75. //return week;
  76. //}
  77. /*****************读出年的十进制数***************************/
  78. uchar readyear()
  79. {
  80.         uchar dat;
  81.         dat=read_1302add(0x8d);
  82.         year=((dat&0xf0)>>4)*10+(dat&0x0f);
  83.         return year;
  84. }


  85. /************************读出所有时间**********************/
  86. void readtime()
  87. {
  88.         readsecond();
  89.         readminute();
  90.         readhour();
  91. //        readday();
  92. //        readmonth();
  93. //        readweek();
  94. //        readyear();
  95. }

  96. void Init_Timer0(void)
  97. {
  98. TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     
  99. TH0=0xb0;              //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
  100. TL0=0xc3;
  101. EA=1;            //总中断打开
  102. ET0=1;           //定时器中断打开
  103. // TR0=1;           //定时器开关打开
  104. }


  105. void main()
  106. {
  107.         uchar i;
  108.     Init_Timer0();

  109.         LCD_Init();           //初始化液晶
  110.         Delay_ms(20);          //延时有助于稳定
  111.         LCD_Clear();          //清屏
  112.         init_1302();
  113.         LCD_Write_Com(0x40|0x80);                  //设置显示位置为第2行第0列            
  114.         i = 0;
  115.   while(line1_data[i] != '\0')                  //在第2行0~3列显示"****"
  116.   {                                                                     
  117.           LCD_Write_Data(line1_data[i]);         //显示第2行字符   
  118.              i++;                                       //指向下一字符
  119.         }
  120.         Delay_ms(1000);
  121.         while(1)
  122.         {        
  123.                
  124.                 if(k4==0)
  125.                 {
  126.                         Delay_ms(10);
  127.                         if(k4==0)
  128.                         {
  129.                                 while(!k4);
  130.                                 k4flag=~k4flag;
  131.                         }
  132.                 }
  133.                 if(k4flag==1)
  134.                 {
  135.                         
  136.                         TR0=1;
  137.                         if(((second1==0)&minute1==0)&hour1==0)
  138.                    {
  139.                         
  140.                            beep();
  141.                    }
  142.                         
  143.                 }
  144.                
  145.                 else TR0=0;
  146.                
  147.         


  148.                
  149.                 keyscan();
  150.                 if(keyflag==0)
  151.                 {
  152.                         
  153.                         readtime();   //读取年,月,日,时,分,秒
  154. //                        write_DTC();
  155.                         write_second();  //写秒
  156.                         write_minute();        //写分
  157.                         write_hour();        //写时
  158. //                        write_day();    //写日
  159. //                        write_month();  //写月
  160. //                        write_year();   //写年
  161. //                        write_week();
  162.                         
  163. //                        write_second1();  //写秒
  164. //                        write_minute1();        //写分
  165. //                        write_hour1();        //写时
  166.                         
  167.                         disp_nz();
  168.                
  169.              }
  170.                 Delay_ms(100);
  171.                 receive();
  172.                
  173.      }
  174. }
复制代码

时钟温室度.rar

90.42 KB, 下载次数: 6, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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