LCD12862+DS12C887万年历.docx
- 文档编号:28376690
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:37
- 大小:20.48KB
LCD12862+DS12C887万年历.docx
《LCD12862+DS12C887万年历.docx》由会员分享,可在线阅读,更多相关《LCD12862+DS12C887万年历.docx(37页珍藏版)》请在冰豆网上搜索。
LCD12862+DS12C887万年历
/**************************************************************
***项目:
DS12C887时钟芯片可调+温度+闹钟+方波万年历*************
***创建人:
小彬************************************************
***时间:
2014年7月25日22:
52:
25*********************************
***完成:
2014年8月11日17:
08:
09*********************************
***说明:
K4:
菜单选择K3:
光标选择********初级版本************
******K2:
上调K1:
下调**********背光随光线可调*********
**************************************************************/
#include<12864.h>
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLCD_ON0x0d
#defineLCD_OFF0x0c
#defineDSAPOWER_ON0x20
#defineDSASWQ_ON0x30//开启方波输出
#defineDS_year0x09
#defineDS_month0x08
#defineDS_day0x07
#defineDS_zhou0x06
#defineDS_hour0x04
#defineDS_minute0x02
#defineDS_second0x00
#defineDSCLK_hour0x05
#defineDSCLK_minute0x03
#defineDSCLK_second0x01
ucharcodePhoto1[]={
//图片数字0高电平有效PCtoLCD2002取模:
顺向,逐行式32*16
0x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x40,0x02,0x00,0x00,
0x40,0x02,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00,
//图片数字1
0x00,0x00,0x00,0x20,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,
0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x60,0x00,0x20,0x00,0x00,0x00,0x20,
0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,
0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x60,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
//图片数字2
0x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x1F,0xFA,0x3F,0xFC,
0x5F,0xF8,0x60,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,
0x70,0x00,0x70,0x00,0x70,0x00,0x6F,0xF8,0x5F,0xFC,0x3F,0xFE,0x00,0x00,0x00,0x00,
//图片数字3
0x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x1F,0xFA,0x3F,0xFC,
0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x0F,0xF6,0x1F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00,
//图片数字4
0x00,0x00,0x40,0x02,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,
0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,
//图片数字5
0x00,0x00,0x3F,0xFC,0x5F,0xF8,0x6F,0xF0,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,
0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x5F,0xF8,0x3F,0xFC,
0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x0F,0xF6,0x1F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00,
//图片数字6
0x00,0x00,0x3F,0xFC,0x5F,0xF8,0x6F,0xF0,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,
0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x5F,0xF8,0x3F,0xFC,
0x5F,0xFA,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00,
//图片数字7
0x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,
0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
//图片数字8
0x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,
0x5F,0xFA,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00,
//图片数字9
0x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,
0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,
0x00,0x0E,0x00,0x0E,0x00,0x0E,0x1F,0xF6,0x3F,0xFA,0x7F,0xFC,0x00,0x00,0x00,0x00
};
ucharnian,yue,ri,shi,fen,miao,zhou,clkshi,clkfen,clkmiao,flg1=0,flg2=0,flg3=0,clk=1;
intup=0;
voidds_write(ucharadd,uchardate);
uchards_read(ucharadd);
voiddisply_clock(void);
voidled1(void);
voidsearch_time(void);
voidDS18b20_reset(void);
voidwrite_byte(uintval);
uintread_byte(void);
bitmatch_rom(uchar*rom);
voidstart_temp_sensor(void);
voidget1_ds18b20(void);
/*******************************************************************/
/**/
/*延时函数*/
/**/
/*******************************************************************/
voiddelay_ds18b20(uintn)
{
while(n--);
}
voiddelay(intms)
{
while(ms--)
{
uchari;
for(i=0;i<150;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
voidbeep()
{
BEEP=1;
delay(30);
BEEP=0;
}/*******************************************************************/
/**/
/*检查LCD忙状态*/
/*lcd_busy为1时,忙,等待。
lcd-busy为0时,闲,可写指令与数据。
*/
/**/
/*******************************************************************/
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
NOP();
result=(bit)(P0&0x80);
LCD_EN=0;
return(result);
}
/*******************************************************************/
/**/
/*写指令数据到LCD*/
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。
*/
/**/
/*******************************************************************/
voidlcd_wcmd(ucharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
NOP();
LCD_EN=1;
NOP();
LCD_EN=0;
}
voidlcd_wdat(uchardat)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
NOP();
LCD_EN=1;
NOP();
LCD_EN=0;
}
voidlcd_init()
{
LCD_PSB=1;//并口方式
//LCD_RST=0;//液晶复位
//delay(3);
//LCD_RST=1;
//delay(3);
lcd_wcmd(0x34);//扩充指令操作
delay(5);
lcd_wcmd(0x30);//基本指令操作
delay(5);
lcd_wcmd(0x0C);//显示开,关光标
delay(5);
lcd_wcmd(0x01);//清除LCD的显示内容
delay(5);
}
voidlcd_pos(ucharX,ucharY)
{
ucharpos;
if(X==1)
{X=0x80;}
elseif(X==2)
{X=0x90;}
elseif(X==3)
{X=0x88;}
elseif(X==4)
{X=0x98;}
pos=X+Y;
lcd_wcmd(pos);//显示地址
}
voidlcd_posdat(ucharposx,ucharposy,ucharsfm)
{
ucharshi,ge;
shi=sfm/10;
ge=sfm%10;
lcd_pos(posx,posy);
lcd_wdat(0x30+shi);
lcd_wdat(0x30+ge);
}
/*********************************************************
*
*调入图像函数
*
*********************************************************/
voidphotodisplay(ucharx,y,uchar*bmp)
{
uchari,j;
lcd_wcmd(0x34);//写数据时,关闭图形显示
for(i=0;i<32;i++)
{
lcd_wcmd(0x80+y+i);//先写入水平坐标值
lcd_wcmd(0x80+x);//写入垂直坐标值
for(j=0;j<16;j++)//再写入两个8位元的数据
lcd_wdat(*bmp++);
delay
(1);
}
for(i=0;i<32;i++)
{
lcd_wcmd(0x80+i);
lcd_wcmd(0x88);
for(j=0;j<16;j++)
lcd_wdat(*bmp++);
delay
(1);
}
lcd_wcmd(0x36);//写完数据,开图形显示
}
voidsetclock()
{
ds_write(9,14);//年
ds_write(8,8);//月
ds_write(7,4);//日
ds_write(4,15);//时
ds_write(2,50);//分
ds_write(0,0);//秒
ds_write(6,2);//周
}
voidlcdflag()
{
lcd_wcmd(0x08);
delay(400);
lcd_wcmd(0x0c);
delay(400);
lcd_wcmd(0x08);
delay(400);
lcd_wcmd(0x0c);
delay(500);
lcd_wcmd(0x08);
delay(400);
lcd_wcmd(0x0c);
delay(400);
}
voidclr_screen()
{
lcd_wcmd(0x34);//扩充指令操作
delay(5);
lcd_wcmd(0x30);//基本指令操作
delay(5);
lcd_wcmd(0x01);//清屏
delay(5);
}
voiddisplay_logo()
{
uchari;
lcd_pos(1,0);//设置显示位置为第一行
while(DIS1[i]!
='\0')
{
lcd_wdat(DIS1[i]);
delay(60);
i++;
}
delay(10);
i=0;
lcd_pos(2,0);//设置显示位置为第二行
while(DIS2[i]!
='\0')
{
lcd_wdat(DIS2[i]);
delay(60);
i++;
}
delay(10);
i=0;
lcd_pos(3,0);//设置显示位置为第三行
while(DIS3[i]!
='\0')
{
lcd_wdat(DIS3[i]);
delay(55);
i++;
}
delay(10);
i=0;
lcd_pos(4,0);//设置显示位置为第四行
while(DIS4[i]!
='\0')
{
lcd_wdat(DIS4[i]);
delay(50);
i++;
}
i=0;
}
voiddisplay_timeinit()
{
uchari;
clr_screen();
ds_write(0x0b,0x36);
//ds_write(0x0a,DSAPOWER_ON);//setclock();
lcd_pos(1,0);
while(DIS5[i]!
='\0')
{
lcd_wdat(DIS5[i]);
i++;
}
i=0;
lcd_pos(2,0);
while(DIS6[i]!
='\0')
{
lcd_wdat(DIS6[i]);
i++;
}
i=0;
lcd_pos(3,0);
while(DIS7[i]!
='\0')
{
lcd_wdat(DIS7[i]);
i++;
}
i=0;
lcd_pos(2,1);
lcd_wdat(0x1a);
lcd_wdat(0x01);
lcd_pos(3,5);
lcd_wdat(0x1a);
lcd_wdat(0x03);
lcd_pos(4,0);
while(DIS8[i]!
='\0')
{
lcd_wdat(DIS8[i]);
i++;
}
i=0;
lcd_pos(4,4);
lcd_wdat(0x03);
lcd_wdat(0x03);
}
voiddisplay_time()
{
nian=ds_read(9);
yue=ds_read(8);
ri=ds_read(7);
shi=ds_read(4);
fen=ds_read
(2);
miao=ds_read(0);
zhou=ds_read(6);
lcd_posdat(1,1,nian);
lcd_posdat(1,3,yue);
lcd_posdat(1,5,ri);
lcd_posdat(2,2,shi);
lcd_posdat(2,4,fen);
lcd_posdat(2,6,miao);
lcd_posdat(3,1,zhou);
if(shi>12)
{
lcd_pos(2,0);
lcd_wdat(0x50);
lcd_wdat(0x4d);//显示PM
}
else
{
lcd_pos(2,0);
lcd_wdat(0x41);
lcd_wdat(0x4d);//显示AM
}
get1_ds18b20();
}
voiddisplay_mode()
{
uchari;
i=0;
lcd_pos(1,0);
while(DIS9[i]!
='\0')
{
lcd_wdat(DIS9[i]);
i++;
}
i=0;
lcd_pos(2,0);
while(DIS10[i]!
='\0')
{
lcd_wdat(DIS10[i]);
i++;
}
i=0;
lcd_pos(3,0);
while(DIS11[i]!
='\0')
{
lcd_wdat(DIS11[i]);
i++;
}
i=0;
lcd_pos(4,0);
while(DIS12[i]!
='\0')
{
lcd_wdat(DIS12[i]);
i++;
}
i=0;
}
voiddisplay_settime()
{
uchari;
i=0;
lcd_pos(1,0);
while(DIS13[i]!
='\0')
{
lcd_wdat(DIS13[i]);
i++;
}
i=0;
lcd_pos(2,0);
while(DIS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD12862 DS12C887 万年历
![提示](https://static.bdocx.com/images/bang_tan.gif)