ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx

上传人:b****8 文档编号:22518234 上传时间:2023-02-04 格式:DOCX 页数:21 大小:93.21KB
下载 相关 举报
ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx_第1页
第1页 / 共21页
ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx_第2页
第2页 / 共21页
ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx_第3页
第3页 / 共21页
ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx_第4页
第4页 / 共21页
ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx

《ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx》由会员分享,可在线阅读,更多相关《ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx(21页珍藏版)》请在冰豆网上搜索。

ds1302的12864液晶按键可调显示实时时钟程序Word格式.docx

reg52.h>

ABSACC.h>

intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

/********各种指令的宏定义********/

#defineLLCD_CMD_WRPBYTE[0x10]//LCD左半部写的命令rs=0,wr=0

#defineLLCD_CMD_RDPBYTE[0x11]//读命令rs=0,wr=0

#defineLLCD_DATA_WRPBYTE[0x12]//写数据rs=1,wr=0

#defineLLCD_DATA_RDPBYTE[0x13]//读数据rs=1,wr=1

#defineRLCD_CMD_WRPBYTE[0x20]//LCD右半部部分

#defineRLCD_CMD_RDPBYTE[0x21]//

#defineRLCD_DATA_WRPBYTE[0x22]//

#defineRLCD_DATA_RDPBYTE[0x23]//

#defineWRITE_SECOND0x80

#defineWRITE_MINUTE0x82

#defineWRITE_HOUR0x84

#defineWRITE_DAY0x86

#defineWRITE_MOUTH0x88

#defineWRITE_YEAR0x8c

#defineREAD_SECOND0x81

#defineREAD_MINUTE0x83

#defineREAD_HOUR0x85

#defineREAD_DAY0x87

#defineREAD_MOUTH0x89

#defineREAD_YEAR0x8d

#defineWRITE_PROTECT0x8E

/*************************/

sbitSCK=P1^1;

sbitDIO=P1^0;

sbitCE=P1^2;

sbitK1=P1^5;

sbitK2=P1^6;

sbitK3=P1^7;

sbitbusy=P0^7;

ucharsec,min,hour,day,mouth,year,print;

ucharbuffer[16];

codeucharshuzi1[]={

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//-

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//.

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空

};

codeucharhanzi1[]={

0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,

0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,

0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,

0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x08,0x28,0x49,0x8A,0x0C,0xC8,0x38,0x08,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,

0x40,0x20,0x10,0x08,0x04,0x03,0x06,0x38,0x10,0x00,0x07,0x20,0x40,0x3F,0x00,0x00,

0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x60,0x90,0x08,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x21,0x40,0x78,0x00,

/*******姓名:

刘飞***********/

codeucharshijian1[]={

0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,

0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,

0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,

0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00,

codeucharriqi1[]={

0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,

0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,

0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,

codeucharhanzi2[]={

0x00,0x02,0x02,0xF2,0x12,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x02,0x02,0x00,

0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x07,0x10,0x20,0x40,0x3F,0x00,0x00,0x00,

0x20,0x21,0xEE,0x04,0x00,0x00,0xFF,0x29,0xA9,0xBF,0xA9,0xA9,0x01,0xFF,0x00,0x00,

0x00,0x00,0x1F,0x88,0x44,0x30,0x0F,0x00,0x0F,0x04,0x04,0x4F,0x80,0x7F,0x00,0x00,

0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,

0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,

0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,

0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

0x40,0x30,0x2C,0xEB,0x28,0x28,0x00,0xF8,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,

0x01,0x01,0x01,0xFF,0x41,0x21,0x00,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x00,0x00,

/******检测LCD忙函数*********/

voidlcd_busy_rd(ucharright)

{

if(right==1)

RLCD_CMD_RD;

else

LLCD_CMD_RD;

while(busy);

}

/**********写指令***********/

voidlcd_comd_wr(ucharcmdcode,ucharright)//写指令

lcd_busy_rd(right);

RLCD_CMD_WR=cmdcode;

LLCD_CMD_WR=cmdcode;

/********对LCD进行读写***********/

voidlcd_data_wr(ucharldata,ucharright)//

RLCD_DATA_WR=ldata;

LLCD_DATA_WR=ldata;

/********延时函数*******/

voiddelay(uintnms)

uinti;

while(nms--)

for(i=0;

i<

500;

i++);

/****lcd初始化*******/

voidlcd_init(void)

uintk;

lcd_comd_wr(0x3e+1,0);

//左半部显示开

lcd_comd_wr(0xc0+0,0);

//左半部顶行为第0行

lcd_comd_wr(0xb0+0,0);

//设置左半部页的地址

lcd_comd_wr(0x40+0,0);

//设置左列得地址

lcd_comd_wr(0x3e+1,1);

lcd_comd_wr(0xc0+0,1);

lcd_comd_wr(0x40+0,1);

lcd_comd_wr(0xb0+0,1);

for(k=0;

k<

256;

k++)

{

lcd_data_wr(0x00,0);

lcd_data_wr(0x00,1);

}

lcd_comd_wr(0xb8+4,0);

lcd_comd_wr(0xb8+4,1);

k++)//这个for循环是为清楚不显示字的地方

}

/**********显示汉字****************/

/*********置入单个数字*********/

voidlcd_shuzi_wr(ucharposx,ucharposy,uchar*shuzi)

uchari1;

if(posy<

8)

lcd_comd_wr(0xb8+2*posx,0);

//左半部页的地址,相当于行扫描上半部分

lcd_comd_wr(0x40+8*posy,0);

//左半部列的地址

for(i1=0;

i1<

8;

i1++)

lcd_data_wr(shuzi[i1],0);

lcd_comd_wr(0xb8+2*posx+1,0);

//同上下部分的汉字

for(i1=8;

16;

else//否则右半部写

lcd_comd_wr(0xb8+2*posx,1);

lcd_comd_wr(0x40+8*(posy-8),1);

lcd_data_wr(shuzi[i1],1);

lcd_comd_wr(0xb8+2*posx+1,1);

/**********输出方式**************/

/****row=写入的行,col=写入的字,*/

/****n=空几格的数************/

voidlcd_num_wr(ucharrow,ucharcol,ucharn,uchar*str)

uchari2;

for(i2=print;

i2<

n;

i2++)

if(col>

15)

row++;

col=col-16;

lcd_shuzi_wr(row,col,str+buffer[i2]*16);

//i2=写入的数字

col++;

/*********置入单个汉字**********/

voidlcd_hanzi_wr(ucharposx,ucharposy,uchar*hanzi)

4)

lcd_comd_wr(0x40+16*posy,0);

lcd_data_wr(hanzi[i1],0);

for(i1=16;

32;

lcd_comd_wr(0x40+16*(posy-4),1);

lcd_data_wr(hanzi[i1],1);

voidlcd_str_wr(ucharrow,ucharcol,ucharn,uchar*str)

for(i2=0;

7)

col=col-8;

lcd_hanzi_wr(row,col,str+i2*32);

/***读出一个字节**********/

ucharRead1302_byte(ucharaddr)

uchari3,dat1,dat2;

CE=0;

_nop_();

SCK=0;

CE=1;

for(i3=0;

i3<

i3++)//写入要读的字节的地址

DIO=addr&

0x01;

addr=addr>

>

1;

SCK=1;

for(i3=0;

i3++)//读数据

dat1=dat1>

if(DIO)

dat1=dat1|0x80;

DIO=1;

dat2=dat1/16;

//将16进制转化为10进制

dat1=dat1%16;

dat1=dat2*10+dat1;

return(dat1);

/***x写入一个字节**********/

voidwrite_ds1302(ucharaddr,uchardat)

i2++)//写入要写的字节的地址

i2++)//写数据

DIO=dat&

dat=dat>

/*****将ds1302的数据分离**********/

voidzh()

buffer[0]=year/10;

buffer[1]=year%10;

buffer[2]=11;

buffer[3]=mouth/10;

buffer[4]=mout

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1