STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx

上传人:b****1 文档编号:4126657 上传时间:2023-05-02 格式:DOCX 页数:25 大小:233.53KB
下载 相关 举报
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第1页
第1页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第2页
第2页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第3页
第3页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第4页
第4页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第5页
第5页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第6页
第6页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第7页
第7页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第8页
第8页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第9页
第9页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第10页
第10页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第11页
第11页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第12页
第12页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第13页
第13页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第14页
第14页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第15页
第15页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第16页
第16页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第17页
第17页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第18页
第18页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第19页
第19页 / 共25页
STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx

《STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx》由会员分享,可在线阅读,更多相关《STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx(25页珍藏版)》请在冰点文库上搜索。

STC89C52 DS12C887 1602液晶引脚连接以及C程序DOCWord下载.docx

sbitrd=P3^6;

sbitcs=P2^4;

sbitas=P2^0;

sbitwr=P2^1;

sbitds=P2^2;

ucharcodesz1[]={"

20--"

};

//初始化时候显示

ucharcodesz2[]={"

:

"

ucharcodeaa[10]={"

0123456789"

//定义一个液晶的数字字符数组

ucharcodedd[]={"

MONTUEWEDTHUFRISATSUN"

//定义一个星期显示数组

ucharcodezz[]={0,1,2,1,0,1,0,1,1,0,1,0,1};

//定义一个区别大月小月和二月的数组

ucharnum,bb;

//定义全局变量

uintcc;

//该变量用于功能键的自动退出

charshi,fen,miao,yue,ri,xq,nian1,yue1,ri1,wc,hh,nian,nm,tnnd;

//定义带符号的变量

voidds_write(uchara,ucharb)//向DS12C887写入数据

{

cs=0;

as=1;

ds=1;

wr=1;

P1=a;

as=0;

wr=0;

P1=b;

cs=1;

}

voidys(uintx)//延时函数

{

uintz,y;

for(z=x;

z>

0;

z--)

for(y=110;

y>

y--);

voidxqsd(chara)//星期设定函数,在调整月份和年份的时候刷新星期的数字

if(a==8)

xq=1;

elseif(a==9)

xq=2;

elseif(a==10)

xq=3;

elseif(a==11)

xq=4;

elseif(a==12)

xq=5;

elseif(a==13)

xq=6;

elseif(a==0)

xq=7;

elseif(a==-1)

elseif(a==-2)

elseif(a==-3)

elseif(a==-4)

elseif(a==-5)

elseif(a==-6)

ri1=1;

voidfmq()//蜂鸣器小小的响一下函数

fm=0;

ys(100);

fm=1;

voidlcdsd(uchartemp)//设定子函数

lcdrs=0;

//当lcdrs=0时,允许写入指令

P0=temp;

ys(5);

lcden=1;

lcden=0;

voidlcdxs(uchartemp)//显示子函数

lcdrs=1;

//当lcdrs=1时,允许写入显示

//lcden高脉冲将P0口数据读走

voidsr_sj(uchara,ucharb)//输入时间函数,第一个参数为光标指针,第二个为数字

lcdsd(0x80+0x40+a-1);

lcdxs(aa[b/10]);

lcdxs(aa[b%10]);

voidsr_rq(uchara,ucharb)//输入日期函数

lcdsd(0x80+a-1);

voidsr_xq(uchara,ucharb)//输入星期

{

if(b==1)

b=0;

elseif(b==2)

b=3;

elseif(b==3)

b=6;

elseif(b==4)

b=9;

elseif(b==5)

b=12;

elseif(b==6)

b=15;

elseif(b==7)

b=18;

lcdxs(dd[b]);

lcdxs(dd[b+1]);

lcdxs(dd[b+2]);

voidkey()//按键检测函数

if(s1==0)//检测功能键是否被按下

{

ys(5);

//去抖延时

if(s1==0)//再次检测功能键是否被按下

{

bb++;

//记录功能键被按下多少次

cc=0;

//当有按键按下时将cc清零

tnnd=1;

//有按键按下的时候让tnnd等于1,等退出时间设定的时候向时钟芯片写入数据

while(!

s1)//按键松手检测

{

ys(10);

//去抖延时

}

fmq();

//蜂鸣器小小的响一下

if(bb==1)//当功能键被按下一次时

TR0=0;

//关闭定时器

lcdsd(0x80+0x40+0x0b);

//光标指针指向秒的个位

lcdsd(0x0f);

//显示光标并且闪烁

if(bb==2)//当功能键被按下两次时

lcdsd(0x80+0x40+0x08);

//光标指针指向分的个位

if(bb==3)//当功能键被按下三次时

lcdsd(0x80+0x40+0x05);

//光标指针指向时的个位

if(bb==4)//当功能键被按下四次时

lcdsd(0x80+0x0a);

//光标指针指向日的个位

if(bb==5)//当功能键被按下五次时

lcdsd(0x80+0x07);

//光标指针指向月的个月

if(bb==6)//当功能键被按下六次时

lcdsd(0x80+0x04);

//光标指针指向年的个位

if(bb==7)//当功能键被按下七次时

lcdsd(0x0c);

//不显示光标

TR0=1;

//启动定时器

bb=0;

//将bb清零

}

}

}

if(bb!

=0)//当检测到功能键被按下时进入,才能检测到加减按钮

if(s1&

&

s2&

s3==1)//定时自动退出功能键

cc++;

//每进入一次cc自加一

if(cc==65535)//当cc被加到65535的时候

cc=0;

//将cc清零

if(s2==0)//检测(加)是否被按下

ys(5);

//去抖延时

if(s2==0)//再次检测(加)是否被按下

//当有按键按下时将cc清零

while(!

s2)//松手检测

{

ys(10);

//去抖延时

}

fmq();

//蜂鸣器小小的响一下

if(bb==1)//当功能键被按下一次时

miao++;

//miao加一

if(miao==60)//当miao被加到60的时候将其清零

miao=0;

sr_sj(0x0b,miao);

//改变秒的数字

lcdsd(0x80+0x40+0x0b);

//设定光标指针位置

if(bb==2)//当功能键被按下两次时

fen++;

//fen加一

if(fen==60)//当fen被加到60的时候将其清零

fen=0;

sr_sj(0x08,fen);

//改变分的数字

lcdsd(0x80+0x40+0x08);

if(bb==3)//当功能键被按下三次时

shi++;

//shi加一

if(shi==24)//当shi被加到24的时候将其清零

shi=0;

sr_sj(0x05,shi);

//改变时的数字

lcdsd(0x80+0x40+0x05);

if(bb==4)//当功能键被按下三次时

hh=ri;

//记录ri的初值

ri++;

//ri加一

if((zz[yue]==0)&

(ri==31)==1)//当小月ri被加到了31时,还原ri的值

{

ri=hh;

}

if((zz[yue]==1)&

(ri==32)==1)//当大月ri被加到32时,还原ri的值

if((zz[yue]==2)&

(nian%4==0)&

(ri==30)==1)//当闰年二月ri被加到30时,还原ri的值

(nian%4!

=0)&

(ri==29)==1)//当平年二月ri被加到29时,还原ri的值

if(hh!

=ri)//当ri发生改变时

xq++;

//xq(星期)加一

if(xq==8)//当xq被加到8的时候将其置一

xq=1;

ri1=1;

//在显示日期函数中刷新一下液晶上ri的数字

if(bb==5)//当功能键被按下五次时

wc=yue;

//先将yue的值记录下来

yue++;

//yue加一

yue1=1;

//在显示日期函数中刷新一下液晶上yue的数字

if(yue==13)//当yue被加到13时,还原yue的值

yue=wc;

(ri>

30)==1)//当小月ri大于30时

//还原yue的值

yue1=0;

//禁止液晶的刷新

29)==1)//当闰年二月ri大于29时

28)==1)//当平年二月ri大于28时

if(wc!

=yue)//检测yue的值是否发生改变

if(zz[wc]==0)//改变前是小月

{

xq=xq+2;

//星期加二

}

if(zz[wc]==1)//改变前是大月

xq=xq+3;

//星期加三

if((zz[wc]==2)&

(nian%4==0)==1)//改变前是闰年二月

xq=xq+1;

//星期加一

xqsd(xq);

//设定一下星期的值(因为有可能是星期天再加上N天)

if(bb==6)//当功能键被按下六次时

nm=nian;

//先将nian的值记录下来

nian++;

//nian加一

nian1=1;

//在显示日期函数中刷新一下液晶上nian的数字

nian=nm;

//还原nian的值

nian1=0;

//禁止液晶的刷新

if(nm!

=nian)//如果nian的值发生了改变

if(nm%4==0)//改变前是闰年

if(nm%4!

=0)//改变前是平年

//设定一下星期的值

}

if(s3==0)//检测(减)是否被按下

if(s3==0)//再次检测减是否被按下

s3)//松手检测

miao--;

//miao减一

if(miao<

0)//当miao被减过头的时候(嘿嘿),给它重新赋值

miao=59;

//改变miao的数字

//设定光标位置

fen--;

//fen减一

if(fen<

0)//当fen被减过头的时候(嘿嘿),给它重新赋值

fen=59;

//改变fen的数字

shi--;

//shi减一

if(shi<

0)//当shi被剪过头的时候(嘿嘿),给它重新赋值

shi=23;

//改变shi的数字

if(bb==4)

ri--;

(ri==0)==1)

=ri)

xq--;

if(xq==0)

xq=7;

if(bb==5)

yue--;

if(yue==0)

30)==1)

29)==1)

28)==1)

=yue)

if(zz[yue]==0)

xq=xq-2;

if(zz[yue]==1)

xq=xq-3;

if((zz[yue]==2)&

(nian%4==0)==1)

xq=xq-1;

if(bb==6)

nian--;

=nian)

if(nian%4==0)

if(nian%4!

=0)

}

uchards_read(uchara)//读取时钟芯片数据

ucharbbb;

ds=0;

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2