标题: 用STC15F2K60S2单片机和DS1302+DS18B20制作的万年历 [打印本页]

作者: csmyldl    时间: 2020-7-9 01:54
标题: 用STC15F2K60S2单片机和DS1302+DS18B20制作的万年历
/* 液晶演示程序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();                                //调用显示时间程序
  }
}

4.jpg (80.45 KB, 下载次数: 194)

农历温度万年历

农历温度万年历

3.jpg (47.61 KB, 下载次数: 173)

JLX12864液晶屏

JLX12864液晶屏

带农历万年历JLX DS302 DS18B20-3.7z

29.3 KB, 下载次数: 292, 下载积分: 黑币 -5

全部程序


作者: lhpmain    时间: 2020-9-21 16:29
下载了,学习下编程!
作者: zhenzhong    时间: 2020-10-18 22:46
压缩文件有问题,下载多次都是解压出错。提醒完善。
作者: 我选择绿了他    时间: 2021-4-25 16:25
顶一下,手里正好有12864的屏幕
作者: 民盛    时间: 2021-6-3 20:21
挺好,研究一下。十分感谢。
作者: 泰极张山丰    时间: 2021-6-24 22:59
压缩文件有问题
作者: 51hei团团    时间: 2021-6-24 23:56
泰极张山丰 发表于 2021-6-24 22:59
压缩文件

用winrar才能解压,解压后,需要添加stc的头文件:http://www.51hei.com/bbs/dpj-36960-1.html
否则无法编译

51hei.png (58.1 KB, 下载次数: 186)

51hei.png

作者: 依恋晓    时间: 2021-6-28 21:50
程序没写完全
作者: _阿坤    时间: 2022-5-7 15:09
感谢分享有没有原理图啊。
作者: xxx1027    时间: 2022-6-2 09:54
感谢分享,可惜没有仿真,谁能根据楼主的程序画一个仿真图吗?
作者: wokuaisile    时间: 2023-5-12 17:57
感谢分享,可是我装载在开发板上没有效果啊
作者: joyb    时间: 2023-7-18 17:39
界面设计很漂亮
作者: leezll    时间: 2023-9-15 21:46
ZK1.C(1): error C129: missing ';' before 'code'
XIANSHI.C(36): warning C280: 'fb': unreferenced local variable
XIANSHI.C(47): warning C280: 'fb': unreferenced local variable
编译出错。怎么解决
作者: leezll    时间: 2023-9-22 04:17
很多警告是怎么回事
作者: leezll    时间: 2023-11-24 02:18
XIANSHI.C(36): warning C280: 'fb': unreferenced local variable
XIANSHI.C(47): warning C280: 'fb': unreferenced local variable
ZK1.C(1): error C129: missing ';' before 'code'
求大神解惑,是什么问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1