12864显示电子万年历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12864显示电子万年历
/***************************************************************
系统名称:电子万年历
创建人:w418781840 日期:2008,7,18
功能描述:LCD12864串行模式显示,DS1302读取时间年月份,
18B20 读取温度
****************************************************************/
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
/*------------LCD12864相关声明-----------------------------*/
#define com 0
#define dat 1
sbit cs =P1^6;
sbit sid=P1^4;
sbit sck=P1^2;
uchar code TAB1[]={"电字钟w418781840"};//第一行初始化.
uchar code TAB2[]={"20 年月日"}; //第二行
uchar code TAB3[]={"星期: : "}; //第三行
uchar code TAB4[]={"室温: ℃"}; //第四行
/*----------------------DS1302相关声明-------------------------*/
char TAB_1302[]={ 0x00,0x29,0x02, //秒:分:时.
0x18,0x06,0x06,0x08}; //日:月:星期:年.
uchar code TAB_XQ[]={"一二三四五六日"};//把DS1302数字日期转换为中文字符. sbit T_CLK=P2^4; /* 实时时钟的时钟线引脚*/
sbit T_IO=P2^5; /* 实时时钟的数据线*/
sbit T_RST=P2^6; /* 实时时钟的复位线引脚*/
uchar bdata datbyte;
sbit datbyte0=datbyte^0;
sbit datbyte7=datbyte^7;
/*--------------18B20相关声明-------------------------------*/
uchar dis1[16];
sbit DQ=P1^0; /*DS18B20温度检测*/
/*----------键盘相关声明-------------------------------------*/
sbit key=P3^2; //功能键
sbit key1=P3^3; //只有加1键
uchar sum,keyflag=0; //调用时,分,秒,标志,调用键盘处理标志. /*--------------以下为LCD12864相关函数--------------------------*/ /**************************************************************
函数名称:void delay1ms(uint x)
函数功能: 延时1MS
***************************************************************/
void delay1ms(uint x)
{
uint i,j;
for(i=0;i for(j=0;j<120;j++); } /************************************************************** 函数名称:void w_12864byte(uchar byte) 函数功能: 写字节 **************************************************************/ void w_12864byte(uchar byte) { uchar i; for(i=0;i<8;i++) { sck=0; byte<<=1; sid=CY; sck=1; } } /************************************************************** 函数名称:uchar r_12864byte(void) 函数功能: 读字节 ***************************************************************/ uchar r_12864byte(void) { uchar i,temp1,temp2; temp1 = 0; temp2 = 0; for(i=0;i<8;i++) { temp1=temp1<<1; sck = 0; sck = 1; sck = 0; if(sid) temp1++; } for(i=0;i<8;i++) { temp2=temp2<<1; sck = 0; sck = 1; sck = 0; if(sid) temp2++; } return ((0xf0&temp1)+(0x0f&temp2)); } /************************************************************** 函数名称:void c_12864busy( void ) 函数功能: 检测忙函数 **************************************************************/ void c_12864busy( void ) { do w_12864byte(0xfc); //11111,RW(1),RS(0),0 while(0x80&r_12864byte()); } /************************************************************** 函数名称:void w_12864(bit dat_com,uchar byt) 函数功能: 写入函数