微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 帮忙看看代码错在哪儿呢

帮忙看看代码错在哪儿呢

时间:10-02 整理:3721RD 点击:
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
sbit lcden=P1^6;
sbit ds1302scl=P3^4;
sbit ds1302rst=P3^5;
sbit ds1302dat=P3^6;

uchar num,shi,fen,miao;
uchar code table1[]="2013-05-02 Tue";
uchar code table2[]="   00:00:00";

void delay(uchar z)
{
        uchar x,y;
        for(x=110;x>0;x--)
                for(y=z;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 dat)
{
        lcdrs=1;
        lcden=0;
        P0=dat;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void reset1302()
{
        ds1302rst=0;
        ds1302scl=0;
        ds1302rst=1;
}
void write1302_byte(uchar dat)
{
        uchar i;
        reset1302();
        for(i=0;i<8;i++)
        {
                ds1302dat=dat&0x01;
                ds1302scl=1;
                delay(1);
                ds1302scl=0;
                dat=dat>>1;
        }       
}

void write1302_real(uchar com, uchar dat)
{
        reset1302();
        write1302_byte(com);
        delay(1);
        write1302_byte(dat);
}

uchar read1302_byte()
{
        uchar i,j;
        reset1302();
        ds1302scl=1;
        for(i=0;i<8;i++)
        {
                ds1302scl=0;
                j=j>>1;
                if(ds1302dat==1)
                        j=j|0x80;
                else
                        j=j&0x7f;
                delay(1);
                ds1302scl=1;
        }
        return j;

}
uchar read1302_real(uchar add)
{
        uchar dsdat;
        reset1302();
        write1302_byte(add);
        dsdat=read1302_byte();
        return dsdat;       
}

void ds1302_init()
{
write1302_real(0x8e,0X00); //禁止写保护
write1302_real(0x80,0x22); //秒位初始化
write1302_real(0x82,0x00); //分钟初始化
write1302_real(0x84,0x00); //小时初始化
write1302_real(0x8e,0x80); //允许写保护
}
void write_sfm(uchar add,uchar dat)
{
        uchar shi,ge;
        shi=dat/10;
        ge=dat%10;
        write_com(0x80+0x40+add);
        write_data(0x30+shi);
        write_data(0x30+ge);
}
void init()
{       
        wela=0;
        dula=0;
        lcdrw=0;
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
        for(num=0;num<14;num++)
        {
                write_data(table1[num]);
                delay(2);
        }
        write_com(0x80+0x40);
        for(num=0;num<11;num++)
        {
                write_data(table2[num]);
                delay(2);
        }       
}


void main()
{
        init();
        ds1302_init();
        while(1)
        {
        miao=read1302_real(0x81);
        fen=read1302_real(0x83);
        shi=read1302_real(0x85);
        write_sfm(9,miao);
        write_sfm(6,fen);
        write_sfm(3,shi);
        }
}
显示内容是<7:<7:<7

  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit wela=P2^7;
  5. sbit dula=P2^6;
  6. sbit lcdrs=P2^1;
  7. sbit lcdrw=P1^5;
  8. sbit lcden=P1^6;
  9. sbit scl=P3^4;
  10. sbit rst=P3^5;
  11. sbit sdat=P3^6;

  12. uchar num,shi,fen,miao;
  13. uchar code table1[]="2013-05-02 Tue";
  14. uchar code table2[]="   00:00:00";

  15. void delay(uchar z)
  16. {
  17.         uchar x,y;
  18.         for(x=110;x>0;x--)
  19.                 for(y=z;y>0;y--);
  20. }
  21. void delayus(uchar z)
  22. {
  23.         while(z--);
  24. }

  25. void write_com(uchar com)
  26. {
  27.         lcdrs=0;
  28.         lcden=0;
  29.         P0=com;
  30.         delay(5);
  31.         lcden=1;
  32.         delay(5);
  33.         lcden=0;
  34. }
  35. void write_data(uchar dat)
  36. {
  37.         lcdrs=1;
  38.         lcden=0;
  39.         P0=dat;
  40.         delay(5);
  41.         lcden=1;
  42.         delay(5);
  43.         lcden=0;
  44. }


  45. void write_1302(uchar com, uchar dat)
  46. {
  47.        
  48.         uchar i;
  49.         rst=0;
  50.         scl=0;
  51.         rst=1;
  52.         for(i=0;i<8;i++)
  53.         {
  54.                 sdat=com&0x01;
  55.                 scl=1;
  56.                 delayus(3);
  57.                 scl=0;
  58.                 com=com>>1;
  59.         }
  60.         delayus(2);
  61.                 for(i=0;i<8;i++)
  62.         {
  63.                 sdat=dat&0x01;
  64.                 scl=1;
  65.                 delayus(3);
  66.                 scl=0;
  67.                 dat=dat>>1;
  68.         }
  69.        
  70. }

  71. uchar read_1302(uchar com)
  72. {
  73.         uchar i,dsdat,temp;
  74.         rst=0;
  75.         scl=0;
  76.         rst=1;
  77.         for(i=0;i<8;i++)
  78.         {
  79.                 sdat=com&0x01;
  80.                 scl=1;
  81.                 delayus(3);
  82.                 scl=0;
  83.                 com=com>>1;
  84.         }
  85.         scl=1;
  86.         delayus(2);
  87.         for(i=0;i<8;i++)
  88.         {
  89.                 scl=0;
  90.                 dsdat=dsdat>>1;
  91.                 if(sdat==1)
  92.                         dsdat=dsdat|0x80;
  93.                 else
  94.                         dsdat=dsdat&0x7f;
  95.                 delayus(3);
  96.                 scl=1;
  97.         }
  98.         scl=0;
  99.         temp=dsdat/10;
  100.         dsdat=dsdat%10;
  101.         dsdat=temp*16+dsdat;
  102.         return dsdat;
  103. }


  104. void ds1302_init()
  105. {
  106. write_1302(0x8e,0X00); //禁止写保护
  107. write_1302(0x80,0x22); //秒位初始化
  108. write_1302(0x82,0x01); //分钟初始化
  109. write_1302(0x84,0x22); //小时初始化
  110. write_1302(0x8e,0x80); //允许写保护
  111. }
  112. void write_sfm(uchar add,uchar dat)
  113. {
  114.         uchar shi,ge;
  115.         shi=dat/10;
  116.         ge=dat%10;
  117.         write_com(0x80+0x40+add);
  118.         write_data(0x30+shi);
  119.         write_data(0x30+ge);
  120. }
  121. void init()
  122. {       
  123.         wela=0;
  124.         dula=0;
  125.         lcdrw=0;
  126.         lcden=0;
  127.         write_com(0x38);
  128.         write_com(0x0c);
  129.         write_com(0x06);
  130.         write_com(0x01);
  131.         write_com(0x80);
  132.         for(num=0;num<14;num++)
  133.         {
  134.                 write_data(table1[num]);
  135.                 delay(2);
  136.         }
  137.         write_com(0x80+0x40);
  138.         for(num=0;num<11;num++)
  139.         {
  140.                 write_data(table2[num]);
  141.                 delay(2);
  142.         }       
  143. }


  144. void main()
  145. {
  146.         init();
  147.         ds1302_init();
  148.         while(1)
  149.         {
  150.         miao=read_1302(0x81);
  151.         fen=read_1302(0x83);
  152.         shi=read_1302(0x85);
  153.         write_sfm(9,miao);
  154.         write_sfm(6,fen);
  155.         write_sfm(3,shi);
  156.         }
  157. }

复制代码

#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcdrs=P2^1;
sbit lcdrw=P1^5;
sbit lcden=P1^6;
sbit scl=P3^4;
sbit rst=P3^5;
sbit sdat=P3^6;
uchar num,shi,fen,miao;
uchar code table1[]="2013-05-02 Tue";
uchar code table2[]="   00:00:00";
void delay(uchar z)
{
        uchar x,y;
        for(x=110;x>0;x--)
                for(y=z;y>0;y--);
}
void delayus(uchar z)
{
        while(z--);
}
void write_com(uchar com)
{
        lcdrs=0;
        lcden=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar dat)
{
        lcdrs=1;
        lcden=0;
        P0=dat;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}

void write_1302(uchar com, uchar dat)
{
       
        uchar i;
        rst=0;
        scl=0;
        rst=1;
        for(i=0;i<8;i++)
        {
                sdat=com&0x01;
                scl=1;
                delayus(3);
                scl=0;
                com=com>>1;
        }
        delayus(2);
                for(i=0;i<8;i++)
        {
                sdat=dat&0x01;
                scl=1;
                delayus(3);
                scl=0;
                dat=dat>>1;
        }
       
}
uchar read_1302(uchar com)
{
        uchar i,dsdat,temp;
        rst=0;
        scl=0;
        rst=1;
        for(i=0;i<8;i++)
        {
                sdat=com&0x01;
                scl=1;
                delayus(3);
                scl=0;
                com=com>>1;
        }
        scl=1;
        delayus(2);
        for(i=0;i<8;i++)
        {
                scl=0;
                dsdat=dsdat>>1;
                if(sdat==1)
                        dsdat=dsdat|0x80;
                else
                        dsdat=dsdat&0x7f;
                delayus(3);
                scl=1;
        }
        scl=0;
        temp=dsdat/10;
        dsdat=dsdat%10;
        dsdat=temp*16+dsdat;
        return dsdat;
}

void ds1302_init()
{
write_1302(0x8e,0X00); //禁止写保护
write_1302(0x80,0x22); //秒位初始化
write_1302(0x82,0x01); //分钟初始化
write_1302(0x84,0x22); //小时初始化
write_1302(0x8e,0x80); //允许写保护
}
void write_sfm(uchar add,uchar dat)
{
        uchar shi,ge;
        shi=dat/10;
        ge=dat%10;
        write_com(0x80+0x40+add);
        write_data(0x30+shi);
        write_data(0x30+ge);
}
void init()
{       
        wela=0;
        dula=0;
        lcdrw=0;
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
        for(num=0;num<14;num++)
        {
                write_data(table1[num]);
                delay(2);
        }
        write_com(0x80+0x40);
        for(num=0;num<11;num++)
        {
                write_data(table2[num]);
                delay(2);
        }       
}

void main()
{
        init();
        ds1302_init();
        while(1)
        {
        miao=read_1302(0x81);
        fen=read_1302(0x83);
        shi=read_1302(0x85);
        write_sfm(9,miao);
        write_sfm(6,fen);
        write_sfm(3,shi);
        }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top