myhmz

    1. 电子钟数码管很闪 12/13940 单片机 2007-08-17
      我用的是MODE 2方式自动装载,0.2us中断5000次,到1s,这样做不对吗? 还有一个问题就是时间走的不准,和电脑上比慢了,难道是初值的问题?
    2. 电子钟数码管很闪 12/13940 单片机 2007-08-17
      程序在这里啊?是用的中断 #include<at89x51.h> #include<intrins.h> #define  unchar unsigned char #define  unint unsigned int #define nop _nop_() sbit clk=P2^0  ; sbit din=P2^1    ; sbit en=P2^2     ; unchar dispbuf[9]; void delay(unint value) {     while(value!=0) value--;                       } unsigned char second,min,hou; unsigned char keycnt;   unsigned int tcnt;      unchar keyscan() {  unchar row,col,i;    P1=0xf0;   row=P1&0xf0;   row=row&0xf0;   P1=0x0f;   col=P1&0x0f;   col=col&0x0f;   i=~(col|row);        return  i;} void tsled(void) { unchar ts0,i,j;   clk=0;   en=0;   delay(10);     for(j=0;j<9;j++)        {  ts0=dispbuf[j];                     for(i=0;i<4;i++)            { clk=1;               ts0=ts0<<1;              if(AC==1)                  din=1;         else din=0;                 clk=0;                 nop;                 delay(3);          }          }              en=1;            } void main(void) {                    unsigned char key;   TMOD=0x2;                 ET0=1;     EA=1;      second=0;   dispbuf[2]=second/10;   dispbuf[1]=second%10;   while(1)        {       if(keyscan()!=0)           {                 if(key!=keyscan())                { P0=0xff;}               key=keyscan();                                           switch(key)                 {                              case 0x18:                       TH0=0x47;                       TL0=0x47;                     TR0=1;                           break;                         case  0x14:                     TR0=0;                     break;                   case  0x12:                       TR0=0;                     keycnt=0;                     second=0;                     dispbuf[6]=0x0;                    dispbuf[5]=0x0;                  dispbuf[4]=0x0;                  dispbuf[3]=0x0;                     dispbuf[2]=0;                     dispbuf[1]=0;                     break;                  case 0x38:                 dispbuf[1]=dispbuf[1]+1;                     break;                 case 0x34:                 dispbuf[2]=dispbuf[2]+1;                 break;                                                                                                         }                     }              dispbuf[8]=0x1;           dispbuf[7]=0x01;       dispbuf[0]=0x1;         tsled();                                                     }                                        }    void t0(void) interrupt 1 using 0 {               tcnt++;   if(tcnt==5000)     {         tcnt=0;       second++;       if(second==60)         {   second=0;            min++;                        if(min==60)             {  min=0 ;                hou++;                if(hou==24)                  { hou=0;}                  }                                           }                dispbuf[6]=hou/10;       dispbuf[5]=hou%10;        dispbuf[4]=min/10;       dispbuf[3]=min%10;        dispbuf[2]=second/10;       dispbuf[1]=second%10;     }      }
    3. 电子钟数码管很闪 12/13940 单片机 2007-08-17
      我自己写的程序,在实验板上验证,硬件不能改啊。。。
    4. 电子钟数码管很闪 12/13940 单片机 2007-08-17
      用软件调频率吗?怎么调高啊?晶振是实验板上自带的11.059

最近访客

< 1/1 >

统计信息

已有38人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言