⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_ds1302.c

📁 该程序详细介绍了实时时钟芯片DS1302的使用编程代码
💻 C
字号:
/**************************************************************************
YB-51-B  DS1302的时钟演示程序
来源: 郑州远博科技   王兴民
0371-66949037  0371-67256036 13949105551
***************************************************************************/
#include <config.h>

data Uchar yjdispbuff[32];    //液晶屏显示缓冲区
data Uchar clockdata2[7];     //时钟数据缓冲区
data Uchar *clockdatain;
data Uchar *clockdataout;
data Uchar cmddata;
data Uchar indata,outdata;
data Uchar houtdatal,houtdatah,moutdatal,moutdatah,soutdatal,soutdatah; //时、分、秒
data Uchar noutdatal,noutdatah,youtdatal,youtdatah,routdatal,routdatah; //年、月、日
data Uchar woutdatal, woutdatah;                                        //星期
void main()                     {
Uchar j;
for(j=0;j<32;j++)  {
 yjdispbuff[j]=32;
                    }
Delayms(100);
Lcdreset();
cmddata=0x8e;
indata=0x00;
v_W1302(cmddata, indata); //init
cmddata=0x80;
indata=0x33;
v_W1302(cmddata, indata);//秒
cmddata=0x82;
indata=0x00;
v_W1302(cmddata, indata);//分
cmddata=0x84;
indata=0x00;
v_W1302(cmddata, indata);//小时
cmddata=0x86;
indata=0x31;
v_W1302(cmddata, indata);//日
cmddata=0x88;
indata=0x03;
v_W1302(cmddata, indata);//月
cmddata=0x8A;
indata=0x03;
v_W1302(cmddata, indata);//星期
cmddata=0x8C;
indata=0x05;
v_W1302(cmddata, indata);//年
while(1)  {
           clockdataout=&clockdata2;     
           v_BurstR1302T(clockdataout);
           soutdatal=clockdata2[0]&0x0f;
           soutdatah=(clockdata2[0]>>4)&0x07;
           moutdatal=clockdata2[1]&0x0f;
           moutdatah=(clockdata2[1]>>4)&0x07;
           houtdatal=clockdata2[2]&0x0f;
           houtdatah=(clockdata2[2]>>4)&0x07; 
           routdatal=clockdata2[3]&0x0f;
           routdatah=(clockdata2[3]>>4)&0x07;
           youtdatal=clockdata2[4]&0x0f;
           youtdatah=(clockdata2[4]>>4)&0x07;
           woutdatal=clockdata2[5]&0x0f;
           woutdatah=(clockdata2[5]>>4)&0x07;
           noutdatal=clockdata2[6]&0x0f;
           noutdatah=(clockdata2[6]>>4)&0x07;
           yjdispbuff[0]=50;          //50代表数字‘2’的ASC码,液晶屏是按照ASC码来显示字符的
           yjdispbuff[1]=48;           //48代表数字‘0’的ASC码
           yjdispbuff[2]=noutdatah+48; //48表示对应数字的实际值和相对应的ASC码的偏移量
           yjdispbuff[3]=noutdatal+48;
           yjdispbuff[5]=youtdatah+48;
           yjdispbuff[6]=youtdatal+48;
           yjdispbuff[8]=routdatah+48;
           yjdispbuff[9]=routdatal+48;
           yjdispbuff[13]=woutdatal+48;
           yjdispbuff[17]=houtdatah+48;
           yjdispbuff[18]=houtdatal+48;
           yjdispbuff[20]=moutdatah+48;
           yjdispbuff[21]=moutdatal+48;
           yjdispbuff[23]=soutdatah+48;
           yjdispbuff[24]=soutdatal+48;
           yjdispbuff[4]=45;      //‘-’的ASC码
           yjdispbuff[7]=45;
           yjdispbuff[10]=32;      //空格的ASC码
           yjdispbuff[11]=32;
           yjdispbuff[12]=32;
           yjdispbuff[14]=32;
           yjdispbuff[15]=32;
           yjdispbuff[16]=32;
           yjdispbuff[19]=45;
           yjdispbuff[22]=45;
           for(j=0;j<32;j++) 
              {
               Disponechar(0,j+2,yjdispbuff[j]);

              }
           }
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -