找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用STC15F2K60S2单片机和DS1302+DS18B20制作的万年历

[复制链接]
csmyldl 发表于 2020-7-9 01:54 | 显示全部楼层 |阅读模式
/* 液晶演示程序DV12864G-COG,串行接口!
   驱动IC是:UC1701X或兼容的IC,比如ST7565R
*/
#include <stc15f2k60s2.H>
#include "common.h"
#include "JLX12864.h"           //液晶显示
#include "delay.h"              //延时函数
#include <intrins.h>
#include <Ctype.h>
#include "nongli.h"             //农历转换
#include "zk.c"                 //字库文件
#include "zk1.c"                //字库文件
#include "xianshi.h"            //显示处理
#include "ds18B20.h"            //温度读取
#include "key.h"                //按键处理
#include "ds1302.h"             //时钟芯片

sbit cs1=P2^0;        
sbit reset=P2^1;
sbit rs=P2^2;
sbit sclk=P2^4;
sbit sid=P2^3;

extern char sec,min,hour,day,month,year,week;    //定义全局变量,秒,分,时,日,月,年和星期
extern bit century;                              //定义世纪位:0为20世纪,1为19世纪。
extern uchar setflag;                                  //时钟设置状态

bit timeset=0;                                     //1302时间设置标志

uint tvalue;   //温度值
bit tflag;     //负温度标志

void waitkey()
{
repeat:        
        if(key==1) goto repeat;
        else delay(1000);
}

void main(void)
{
        initial_lcd();                               //初始化JLX2864
        if (timeset)
        init1302();                                  //时间初始化
        clear_screen();                                                                         //清屏
        century=0;
        
        while(1)
        {
                tvalue=Ds18b20_Temp();                       //读取温度
    sec=read1302(0x81);                          //读秒
          min=read1302(0x83);                          //读分
          hour=read1302(0x85);                         //读时
          day=read1302(0x87);                          //读日期
          month=read1302(0x89);                        //读月
          week=read1302(0x8b);                         //读星期
          year=read1302(0x8d);                         //读年
//需把以上数据转换为十进制存储
    sec=(sec>>4)*10+sec%16;
    min=(min>>4)*10+min%16;
    hour=(hour>>4)*10+hour%16;
                day=(day>>4)*10+day%16;
                month=(month>>4)*10+month%16;
                year=(year>>4)*10+year%16;
          Conversion(century,year,month,day);          //转换为阴历数据

//    read_temp();                               //读出温度值
               
          ds1820disp();                               //温度值显示
          key();                                      //扫描按键
          if(setflag==0)
    disp_time();                                //调用显示时间程序
  }
}

农历温度万年历

农历温度万年历

JLX12864液晶屏

JLX12864液晶屏

带农历万年历JLX DS302 DS18B20.rar

37.29 KB, 下载次数: 72, 下载积分: 黑币 -5

全部程序

评分

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

查看全部评分

回复

使用道具 举报

lhpmain 发表于 2020-9-21 16:29 | 显示全部楼层
下载了,学习下编程!
回复

使用道具 举报

zhenzhong 发表于 2020-10-18 22:46 | 显示全部楼层
压缩文件有问题,下载多次都是解压出错。提醒完善。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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