DS12C887.zip

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 44KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2013-08-28 14:28
    上传日期
基于C51单片机的,使用DS12c887的c语言时钟程序。
DS12C887.zip
  • 时钟模块(完成)
  • STARTUP.LST
    13.7KB
  • 时钟.LST
    23.2KB
  • 时钟.OBJ
    20.6KB
  • 时钟.uvopt
    54.4KB
  • STARTUP.A51
    6.2KB
  • 时钟.uvproj
    13.1KB
  • 时钟.hex
    6KB
  • 时钟.c
    7.1KB
  • 时钟_uvproj.bak
    13.1KB
  • 时钟_uvopt.bak
    54.4KB
  • 时钟.plg
    586B
  • STARTUP.OBJ
    749B
  • 时钟.lnp
    56B
  • 时钟.M51
    25KB
  • 时钟
    17.5KB
内容介绍
#include<reg52.h> #define uchar unsigned char #define uint unsigned int /*DS12C887端口定义*/ sbit DSCS=P3^4; sbit DSAS=P3^5; sbit DSRW=P3^6; sbit DSDS=P3^7; sbit IRQ=P3^3; /*LCD1602端口定义*/ sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; /*功能按键*/ sbit Pgm=P1^0; sbit UP=P1^2; sbit DOWN=P1^3; sbit FUN=P1^4; //函数声明 void write_ds(uchar,uchar); uchar read_ds(uchar); void set_time(); //时间 uchar Time1[]={" 2013-05-10"}; uchar Time2[]={" 16:22:23"}; char miao,fen,shi,day,month,year;//全局变量 /*短延时函数*/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*写控制*/ void write_control(uchar com) { LCD_RS=0; LCD_RW=0; P0=com; delay(5); LCD_EN=1; delay(5); LCD_EN=0; } /*写数据*/ void write_date(uchar date) { LCD_RS=1; LCD_RW=0; P0=date; delay(5); LCD_EN=1; delay(5); LCD_EN=0; } /*LCD初始化*/ void init1() { LCD_EN=1; write_control(0X38);//屏幕显示模式 write_control(0X0c);//开显示,不开光标 write_control(0x06);//写一个字符,地址加1 write_control(0x01);//清屏 write_control(0x80);//DDRAM地址 } /*刷新LCD时分秒*/ void write_sfm(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_control(0x80+0x40+add); write_date(shi+48); write_date(ge+48); } /*刷新LCD年月日*/ void write_nyr(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date%10; write_control(0x80+add); write_date(shi+48); write_date(ge+48); } /*功能键盘*/ void keyscan() { uchar x=0,y=0,z=0; uint a=0,b=0,c=0,time1=0,time2=0,time3=0; while(x==0)//设置年月日 { time1=(Time1[3]-48)*10+(Time1[4]-48); time2=(Time1[6]-48)*10+(Time1[7]-48); time3=(Time1[9]-48)*10+(Time1[10]-48); for(a=0;a<3;) { switch(a) { case 0: write_control(0x0f); write_control(0x80+4); break; case 1: write_control(0x0f); write_control(0x80+7); break; case 2: write_control(0x0f); write_control(0x80+10); break; } if(UP==0) { delay(120); if(UP==0) { switch(a) { case 0: time1++; if(time1==100) { time1=0; b=Time1[2]-48; b++; if(b==10) { b=0; c=Time1[1]-48; c++; if(c==10) c=0; Time1[1]=c+48; } Time1[2]=b+48; } break; case 1: time2++; if(time2==13) time2=1; break; case 2: time3++; if(time3==32) time3=1; break; } } } if(DOWN==0) { delay(120); if(DOWN==0) switch(a) { case 0: time1--; if(time1==-1) { time1=99; b=Time1[2]-48; b--; if(b==-1) { b=9; c=Time1[1]-48; c--; if(c==-1) c=9; Time1[1]=c+48; } Time1[2]=b+48; } break; case 1: time2--; if(time2==0) time2=12; break; case 2: time3--; if(time3==0) time3=31; break; } } Time1[3]=time1/10+48; Time1[4]=time1%10+48; Time1[6]=time2/10+48; Time1[7]=time2%10+48; Time1[9]=time3/10+48; Time1[10]=time3%10+48; write_control(0x0c); write_control(0x80); for(y=0;y<11;y++) write_date(Time1[y]); switch(a) { case 0: write_control(0x80+4); break; case 1: write_control(0x80+7); break; case 2: write_control(0x80+10); break; } if(Pgm==0) { delay(120); if(Pgm==0) a++; } } while(a==3) { if(FUN==0) { delay(120); if(FUN==0) { x++; a++; } } } } while(x==1)//设置时分秒 { time1=(Time2[3]-48)*10+(Time2[4]-48); time2=(Time2[6]-48)*10+(Time2[7]-48); time3=(Time2[9]-48)*10+(Time2[10]-48); for(a=0;a<3;) { switch(a) { case 0: write_control(0x80+0x40+4); write_control(0x0f); break; case 1: write_control(0x80+0x40+7); write_control(0x0f); break; case 2: write_control(0x80+0x40+10); write_control(0x0f); break; } if(UP==0) { delay(120); if(UP==0) { switch(a) { case 0: time1++; if(time1==24) time1=0; break; case 1: time2++; if(time2==60) time2=1; break; case 2: time3++; if(time3==60) time3=1; break; } } } if(DOWN==0) { delay(120); if(DOWN==0) { switch(a) { case 0: time1--; if(time1==-1) time1=23; break; case 1: time2--; if(time2==-1) time2=59; break; case 2: time3--; if(time3==-1) time3=59; break; } } } if(Pgm==0) { delay(120); if(Pgm==0) a++; } Time2[3]=time1/10+48; Time2[4]=time1%10+48; Time2[6]=time2/10+48; Time2[7]=time2%10+48; Time2[9]=time3/10+48; Time2[10]=time3%10+48; write_control(0x0c); write_control(0x80+0x40); for(y=0;y<11;y++) write_date(Time2[y]); switch(a) { case 0: write_control(0x80+0x40+4); break; case 1: write_control(0x80+0x40+7); break; case 2: write_control(0x80+0x40+10); break; } while(a==3) { if(FUN==0) { delay(120); if(FUN==0) { x=2; a++; } } } } } } /*写DS12C887数据*/ void write_ds(uchar add,uchar date) { DSCS=0; DSAS=1; DSDS=1; DSRW=1; P0=add;//写地址 DSAS=0; DSRW=0; P0=date;//写数据 DSRW=1; DSAS=1; DSCS=1; } /*读DS12C887数据*/ uchar read_ds(uchar add) { uchar ds_date; DSCS=0; DSAS=1; DSDS=1; DSRW=1; P0=add; DSAS=0; DSDS=0; P0=0Xff; ds_date=P0; DSDS=1; DSAS=1; DSCS=1; return ds_date; } /*首次操作DS12C887给寄存器初始化*/ void set_time() { write_ds(0,((Time2[9]-48)*10+(Time2[10]-48))); write_ds(2,((Time2[6]-48)*10+(Time2[7]-48))); write_ds(4,((Time2[3]-48)*10+(Time2[4]-48))); write_ds(7,((Time1[9]-48)*10+(Time1[10]-48))); write_ds(8,((Time1[6]-48)*10+(Time1[7]-48))); write_ds(9,((Time1[3]-48)*10+(Time1[4]-48))); } /*DS12C887初始化*/ void init2() { write_ds(0x0A,0x20); write_ds(0x0B,0x06); } void main() { uchar a=0,num; init1(); init2(); while(a==0) { write_control(0x80); for(num=0;num<11;num++) { write_date(Time1[num]); delay(5); } write_control(0x80+0x40); for(num=0;num<11;num++) { write_date(Time2[num]); delay(5); } if(Pgm==0) { delay(120); if(Pgm==0) { a++; } } } while(a==1) { keyscan(); set_time(); write_ds(0x0A,0xa0); while(a==1) { if(FUN==0) { delay(120); if(FUN==0) { a++; } } } } write_control(0x0c); while(a==2) { if(Pgm==0) { delay(120); if(Pgm==0) a=1; } else { year=read_ds(9);//读数据 month=read_ds(8); day=read_ds(7); shi=read_ds(4); fen=read_ds(2); miao=read_ds(0); write_sfm(9,miao);//送显示 write_sfm(6,fen); write_sfm(3,shi); write_nyr(3,year); write_nyr(6,month); write_nyr(9,day); } } }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...