DS1302读写程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include"p24Fxxxx.h"

#define uchar unsigned char

#define uint unsigned int

/////////////////////////////////////////////

#define USER_DEINED_1 0x00

#define USER_DEINED_2 0x02

#define USER_DEINED_3 0x04

#define USER_DEINED_4 0x06

#define RS TD5//串口时为CS 2^6;

#define RW TD7//串口为SID 2^5;

#define E TF0 //串口为时钟SCLK 2^4; #define PSB TD6

#define RST TB5 // P2^0;

#define Lcm_Data LATE

////////////////////////////////////////////

unsigned char jicunqi,jicun,second,min,hour;

uchar table_shizhong[7];

#define RST_1302 TD11

#define SCLK TD9

//#define IO TD10

#define IO PORTDbits.RD10

void delay(void)

{

unsigned int i=10000;

while(i--);

}

void delay_us(void)

{

unsigned int i=1000;

while(i--);

}

//////////////////////////////////////////////

void Delay_1ms(uint x)//1ms延时

{

unsigned char j;

while(x--)

{

for(j=0;j<125;j++)

{;}

}

}

void Lcm_Delay(void)

{

uchar i=100;

while(i--);

}

void Lcm_Rd_Status(void) //读忙状态

{

RS=0;

RW=1;

E=0;

Lcm_Delay();

E=1;

Lcm_Data=(LATE&0xFF00);

while(PORTEbits.RE7==1);

//while(1)

//{

//break;

//}

}

void Lcm_Wr_Data(uchar wrdata) //写数据

{

Lcm_Rd_Status();

RS=1;

RW=0;

Lcm_Data=wrdata;

E=1;

Lcm_Delay();

E=0;

}

void Lcm_Wr_Command(uchar wrcommand) //写指令{

Lcm_Rd_Status();

RS=0;

RW=0;

Lcm_Data=wrcommand;

E=1;

Lcm_Delay();

E=0;

}

void Wr_Cgram(uchar addr,uchar *table)

{

uchar i;

Lcm_Wr_Command(addr); //设定CGRAM地址

for(i=0;i<32;i++)

Lcm_Wr_Data(*table++);

}

//选定坐标

void Lcm_GotoXY(uchar pos_X,uchar pos_y)

{

uchar addr;

if((pos_X>7)||(pos_y>3))

return;

if(pos_y==0)

addr=0x80+pos_X;

else if(pos_y==1)

addr=0x90+pos_X;

else if(pos_y==2)

addr=0x88+pos_X;

else if(pos_y==3)

addr=0x98+pos_X;

Lcm_Wr_Command(addr);//设定DDRAM地址

}

//显示字符串

void Lcm_Disp_String(uchar *string)

{

while (*string != '\0')

Lcm_Wr_Data(*string++);

}

void Wr_Gdram(uchar pos_x,uchar pos_y,uint length,uchar width,uchar *table) {

uchar i,j;

Lcm_Wr_Command(0x34);//选择扩充指令

Lcm_Wr_Command(0x36);

for(j=pos_y;j

{

Lcm_Wr_Command(0x80+j); //Y总坐标,即第几行

Lcm_Wr_Command(0x80+pos_x);//X坐标,16个点进1

for(i=0;i

Lcm_Wr_Data(*table++);

}

Lcm_Wr_Command(0x30);//返回基本指令

}

//显示单个字符

相关文档
最新文档