原创+开源:可任意加长的点阵屏万年历PROTUES DS1302 DS18B20

[复制链接]
6219|25
 楼主| aaron96031 发表于 2016-8-29 23:04 | 显示全部楼层
详细的 点阵屏 万年历 DS1302 18B20 温度显示 滚字源码 这样的可以给我们一点鼓励, 感兴趣 爱好者 进来交流: https://lf-studio.taobao.com/cat ... 3%C6%C1%B7%C2%D5%E6
张栋佳佳 发表于 2016-9-2 09:45 来自手机 | 显示全部楼层
哪个大神能给解释一下这个定时器为什么这样写:   if(s0>50&&s1>50)       {        t0=s0;        t1=s1;        }     else       {         t0=s0*100+(TL0-0x9c);         t1=s1*100+(TL1-0x9c);        } 源程序为:#include"reg51.h" #include"LCM1602_b.c" sbit P32=P3^2; unsigned char fen[1]="/"; unsigned char io;  unsigned  int s0=0,s1=0,t0,t1;   void timer0(void) interrupt 1    //定时器0服务程序 {    s0++; }  void timer1(void)interrupt 3    //定时器1服务程序  {    s1++; }   void main(void) {   unsigned char  word[]="dd1/";   lcd1602_init();   TMOD=0xa2;       //定时器模式,1为2方式,但GATE为1   EA=1;    P32=0;           //p32,int0口先给低电平    ET0=1;   TH0=0x9c;   TL0=0x9c;     ET1=1;   TH1=0x9c;   TL1=0x9c;    display_5numbers(0,t0);   display_chars(5,fen,1);   display_5numbers(6,t1);   display_chars(11,word,4);   display_a_number(15,io);    while(1)   {      while(P32==0);       //这两次是为了去除半沿      while(P32==1);      TR0=1;               //开始计时      TR1=1;      while(P32==0);      TR0=0;               //T0停      while(P32==1);      TR1=0;               //T1停      if(s0>50&&s1>50)       {        t0=s0;        t1=s1;        }     else       {         t0=s0*100+(TL0-0x9c);         t1=s1*100+(TL1-0x9c);        }        io=(t1/t0);       display_5numbers(0,t0);      // 显示       display_chars(5,fen,1);       display_5numbers(6,t1);       display_chars(11,word,4);       display_a_number(15,io);       delay(300);       t0=0,t1=0,s0=0,s1=0;       //清值       TL0=0x9c;       TL0=0x9c;    }  }
tranhunga 发表于 2017-5-10 20:58 | 显示全部楼层
谢谢分享的好资料
cool_coder 发表于 2017-5-26 13:15 | 显示全部楼层
做得不错!
mdjzm 发表于 2022-9-13 10:38 | 显示全部楼层
楼主真棒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部