DS12C887实时时钟winbond接口程序.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 18
    下载次数
  • 2005-01-18 10:20
    上传日期
DS12C887实时时钟winbond接口程序
DS12C887实时时钟winbond接口程序.rar
  • time.c
    6.1KB
  • www.pudn.com.txt
    218B
内容介绍
#include<reg51.h> #include<absacc.h rel='nofollow' onclick='return false;'> #define uchar unsigned char #define uint unsigned int #define timer_a XBYTE[0xff0a] /*ds12c887时钟寄存器A*/ #define timer_b XBYTE[0xff0b] /*时钟寄存器B*/ #define timer_y XBYTE[0xff09] /*年*/ #define timer_m XBYTE[0xff08] /*月*/ #define timer_d XBYTE[0xff07] /*日*/ #define timer_h XBYTE[0xff04] /*时*/ #define timer_mi XBYTE[0xff02] /*分*/ #define timer_s XBYTE[0xff00] /*秒*/ #define timer_k XBYTE[0xff32] /*世纪*/ uchar bdata acc; /*可位寻址的内部RAM */ sbit a00=acc^0; /*写液晶屏*/ sbit a01=acc^1; sbit a02=acc^2; sbit a03=acc^3; sbit a04=acc^4; sbit a05=acc^5; sbit a06=acc^6; sbit a07=acc^7; sbit cs2=P1^2;/*12887片选*/ sbit len=P1^4; sbit rst=P3^4; sbit di=P3^5; delay(uchar num) { while(num--); } void lw(uchar x,uchar y,uchar dd) { if(x<64) { di=0;len=1;XBYTE[0xfff8]=0xb8|y;delay(1); di=0;len=1;XBYTE[0xfff8]=0x40|x;delay(1); di=1;len=1;XBYTE[0xfff8]=dd;delay(1); } if(x>=64&&x<128) { x=x-64; di=0;len=1;XBYTE[0xfff9]=0xb8|y;delay(2); di=0;len=1;XBYTE[0xfff9]=0x40|x;delay(2); di=1;len=1;XBYTE[0xfff9]=dd;delay(2); } if(x>=128) { x=x-128; di=0;len=1;XBYTE[0xfffa]=0xb8|y;delay(1); di=0;len=1;XBYTE[0xfffa]=0x40|x;delay(1); di=1;len=1;XBYTE[0xfffa]=dd;delay(1); } } void initlcd() { uchar x, y; rst=0; rst=1; di=0;len=1;XBYTE[0xfff8]=0x3f;delay(1); di=0;len=1;XBYTE[0xfff8]=0xc0;delay(1); di=0;len=1;XBYTE[0xfff9]=0x3f;delay(1); di=0;len=1;XBYTE[0xfff9]=0xc0;delay(1); di=0;len=1;XBYTE[0xfffA]=0x3f;delay(1); di=0;len=1;XBYTE[0xfffA]=0xc0;delay(1); for(y=0;y<8;y++) { for(x=0;x<192;x++) { lw(x,y,0); } } } uchar code nian[32]={/*-- 文字: 年 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00, 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00}; uchar code yue[32]={ /*-- 文字: 月 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00, 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00}; uchar code ri[32]={ /*-- 文字: 日 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 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}; uchar t_year,t_month,t_day,t_hour,t_minute,t_second,time_bcd;/*定义年月日时分秒*/ void wchin(uchar a,uchar b,uchar arry[]) { uchar j,dd; for(j=0;j<32;j++) { dd=arry[j]; if(j<16){lw(a+j,b,dd);} else{lw(a+j-16,b+1,dd);} } } void int_time_para() /*时间初始化*/ { timer_a=0x20;/*时钟振荡器开启保持时钟运行*/ timer_b=0x80;/**/ timer_y=0x03;timer_m=0x01;timer_d=0x01;timer_h=0x01;timer_mi=0x01;timer_s=0x00; timer_b=0x02; } void time_read() /*读取时间*/ { uchar i=0,j=0; //timer_b=0x80; acc=timer_a; while(a07==1) /*时间寄存器不忙时,读取时间*/ {acc=timer_a;} //timer_b=0x80; t_year=timer_y; /*读年*/ t_month=timer_m; /*读月*/ t_day=timer_d; /*读日*/ t_hour=timer_h; /*读时*/ t_minute=timer_mi; /*读分*/ t_second=timer_s; /*读秒*/ } /*-------------------系统时间设置(普通设置)-------------------------*/ void t_year_dis(uchar w,uchar c) /*显示年*/ { if(w==0) {/*此出添加显示年*/} } /*----------------------------*/ void t_month_dis(uchar w,uchar c) /*显示月*/ { if(w==0) {/*此出添加显示月*/} } /*----------------------------*/ void t_day_dis(uchar w,uchar c) /*显示日*/ { if(w==0) {/*此出添加显示日*/} } /*----------------------------*/ void t_hour_dis(uchar w,uchar c) /*显示时*/ { if(w==0) {/*此出添加显示时*/} } /*----------------------------*/ void t_minute_dis(uchar w,uchar c) /*显示分*/ { if(w==0) {/*此出添加显示分*/} } /*----------------------------*/ void t_second_dis(uchar w,uchar c) /*显示秒*/ { if(w==0) {/*秒*/} } /*---------------------*/ void hex_bcd(uchar c) /*16进制转BCD码*/ {uchar i=0,j=0; i=c&0x0f; switch(i) {case 0x0a:{i=0x10;time_bcd=(c&0xf0)+i;}break; case 0x0f:{i=0x06;time_bcd=c-i;}break; default:time_bcd=c;} i=c&0xf0; switch(i) {case 0xf0:time_bcd=time_bcd-0x60;break;} } /*-------------------------设置时间-----------------------------------------*/ void t_year_set() /*设置年*/ {uchar i=0,j=0; hex_bcd(t_year); t_year=time_bcd; if (t_year==0xa0) {t_year=0x00;} if (t_year==0xff) {t_year=0x99;} t_year_dis(0x01,t_year); } /*------------------------------*/ void t_month_set() /*设置月*/ {uchar i=0,j=0; hex_bcd(t_month); t_month=time_bcd; if (t_month==0x13) {t_month=0x01;} if (t_month==0x00) {t_month=0x12;} t_month_dis(0x01,t_month); } /*-----------------------------*/ void t_day_set() /*设置日*/ {uchar i=0,j=0; hex_bcd(t_day); t_day=time_bcd; if (t_day==0x32) {t_day=0x01;} if (t_day==0x00) {t_day=0x31;} t_day_dis(0x01,t_day); } /*-----------------------------*/ void t_hour_set() /*设置时*/ {uchar i=0,j=0; hex_bcd(t_hour); t_hour=time_bcd; if (t_hour==0x24) {t_hour=0x00;} if (t_hour==0x99) {t_hour=0x23;} t_hour_dis(0x01,t_hour); } /*---------------------------*/ void t_minute_set() /*设置分*/ {uchar i=0,j=0; hex_bcd(t_minute); t_minute=time_bcd; if (t_minute==0x60) {t_minute=0x00;} if (t_minute==0x99) {t_minute=0x59;} t_minute_dis(0x01,t_minute); } /*----------------------------*/ void t_second_set() /*设置秒*/ {uchar i=0,j=0; hex_bcd(t_second); t_second=time_bcd; if (t_second==0x60) {t_second=0x00;} if (t_second==0x99) {t_second=0x59;} t_second_dis(0x01,t_second); } void main() { } 
评论
    相关推荐
    • DS12C887.rar
      该程序基于STC89C52的DS12C887时钟程序,测试通过,且能稳定运行,请放心使用。
    • ds12c887.rar
      DS12c887电子时钟,1602液晶屏显示,
    • DS12C887.rar
      ds12cr887源程序,亲测可用。可以实现精确计时,闹钟定时等功能。
    • ds12c887时钟.rar
      51单片机驱动DS12C887时钟芯片制作的LCD时钟,有温湿度,农历显示
    • ds12c887.zip
      实时时钟ds12c887驱动程序,atmega128平台测试通过
    • DS12c887.zip
      C51程序运用stc12c5a系列的单片机即可驱动,DS12c887时钟芯片的正常工作,利用共阴数码管显示。已测试完成。
    • ds12c887.rar
      ds12c887 interfacing with 8051.the code just initialises ,reads and displays it in the serial port.
    • ds12c887.rar
      ds12c887 interfacing with 8051.the code just initialises ,reads and displays it in the serial port.
    • DS12C887.zip
      DS12C887是一款时钟芯片,精度高,误差小。驱动简单。
    • DS12C887程序
      DS12C887程序.可以助你一臂之力。C语言更能懂