完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是程序部分
#include #define uint unsigned int #define uchar unsigned char ***it lcdrs=P2^4; ***it lcden=P2^6; ***it key1=P3^0; ***it key2=P3^1; ***it key3=P3^2; ***it dscs=P1^4; ***it dsas=P1^5; ***it dsrw=P1^6; ***it dsds=P1^7; ***it dsirq=P3^3; ***it beep=P2^3; uchar count,key1_num,flag,flag1; char shi,fen,miao; uchar read_ds(uchar); void set_time(); void write_ds(uchar,uchar); void set_alarm(uchar a_shi,uchar a_fen,uchar a_miao); uchar code table[]=" 2015-10-14 Wed"; uchar code table1[]=" : : ";//第十二步 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { lcdrs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) { lcdrs=1; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void init() { uchar num; EA=1;//第十七步 EX0=1; IT0=1; flag1=0; lcdrs=1; lcden=0; // set_time();//第六步 set_alarm(10,32,55);//第十五步 write_ds(0x0A,0x20);//打开振荡器 write_ds(0x0B,0x26);//启动闹钟,第十三步 read_ds(0x0c);//第十八步 write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<16;num++) { write_data(table[num]); delay(5); } write_com(0xc0); for(num=0;num<12;num++) { write_data(table1[num]); delay(5); } } void write_time(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_com(0xc0+add); write_data(0x30+shi); write_data(0x30+ge); } void keyscan() { if(flag1==1)//二十三 { if(key2==0)//关闭闹钟,二十三步 { delay(10); if(key2==0) { while(!key2); flag1=0; } } if(key3==0)//关闭闹钟,二十三步 { delay(10); if(key3==0) { while(!key3); flag1=0; } } } if(key1==0) { delay(10); if(key1==0) { key1_num++; flag=1;//第九步 flag1=0;//关闭闹钟,二十二步 while(!key1); TR0=0; write_com(0x0f); if(key1_num==1) write_com(0xc0+10); if(key1_num==2) write_com(0xc0+7); if(key1_num==3) write_com(0xc0+4); if(key1_num==4) { key1_num=0; write_com(0x0c); flag=0;//第十步 write_ds(0,miao);//按下确认键,重新继续显示时钟,第十一步 write_ds(2,fen); write_ds(4,shi); } } } if(key1_num!=0) { if(key2==0) { delay(10); if(key2==0) { while(!key2); if(key1_num==1) { miao++; if(miao==60) miao=0; write_time(10,miao); write_com(0xc0+10); } if(key1_num==2) { fen++; if(fen==60) fen=0; write_time(7,fen); write_com(0xc0+7); } if(key1_num==3) { shi++; if(shi==24) shi=0; write_time(4,shi); write_com(0xc0+4); } } } if(key3==0) { delay(10); if(key3==0) { while(!key3); if(key1_num==1) { miao--; if(miao==-1) miao=59; write_time(10,miao); write_com(0xc0+10); } if(key1_num==2) { fen--; if(fen==-1) fen=59; write_time(7,fen); write_com(0xc0+7); } if(key1_num==3) { shi--; if(shi==-1) shi=23; write_time(4,shi); write_com(0xc0+4); } } } } } void write_ds(uchar add,uchar date)//向ds12c887写数据,第一步 { dsas=1; dsds=1; dsrw=1; dscs=0;//选通片选 P0=add;//地址写进来 dsas=0;//地址信息锁存至ds12c887 dsrw=0; P0=date;//数据写到ds12c887 dsrw=1; dsas=1; dscs=1; } uchar read_ds(uchar add)//读ds12c887中数据,第二步 { uchar ds_data; dsas=1; dsds=1; dsrw=1; dscs=0; P0=add;//建立地址 dsas=0;//地址联通 dsds=0; P0=0xff;//读数据前将I/O拉高 ds_data=P0;//读走数据 dsds=1; dsas=1; dscs=1; return ds_data; } /*void set_time()//设置时间,第五步 { write_ds(4,10); write_ds(2,32); write_ds(0,30); }*/ void set_alarm(uchar a_shi,uchar a_fen,uchar a_miao)//设置闹钟,第十四步 { write_ds(1,a_miao); write_ds(3,a_fen); write_ds(5,a_shi); } void didi()//第二十一步 { beep=0; delay(50); beep=1; delay(50); beep=0; delay(50); beep=1; } void main() { init(); while(1) { keyscan();//第七步 if(flag1==1)//第二十步 didi(); if(flag==0)//第八步 { miao=read_ds(0);//读秒,第三步 fen=read_ds(2); shi=read_ds(4); write_time(10,miao);//把秒显示在液晶中,第四步 write_time(7,fen); write_time(4,shi); } } } void exter() interrupt 2//第十六步 { uchar c; flag1=1;//第十九步 c=read_ds(0x0c); } |
|
|
|
仿真图在这了,麻烦大家给看看
|
|
|
|
哪位好心大神能看看指导一下小弟吗
|
|
|
|
求大神啊,小弟快要炸了
|
|
|
|
求助啊,有大神能帮帮忙吗
|
|
|
|
求助啊,有大神能帮帮忙吗
|
|
|
|
void write_time(uchar add,uchar date)
{ uchar shi,ge; shi=date/10; ge=date%10; write_com(0xc0+add); write_data(0x30+shi); write_data(0x30+ge); } 这里的 uchar shi,ge;与char shi,fen,miao;有重名,你试试修改下。不知行不行! |
|
|
|
多谢了,但是不是这个问题啊 |
|
|
|
解决没?这两天有点忙,没看到,没解决就上次源代码和仿真文件,记得是文件哦,我帮你调一下。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
5965 浏览 3 评论
7235 浏览 1 评论
7479 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9266 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1266 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 13:40 , Processed in 0.920855 second(s), Total 92, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号