Thông báo

Collapse
No announcement yet.

đồng hồ số hiển thị led 7 thanh

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nguyên văn bởi CONGMINHfs
    ...Không biết bạn có rành phần cứng không chứ cái này mạch thật khác nhiều so với mạch mô phỏng(về phân công xuất led) nhé...
    Nguyên văn bởi dtvnssm Xem bài viết
    Nhìn cái đồng hồ Anh làm thì thích thật nhưng ngâm cứu mãi vẫn chưa ra anh ạ. ( Anh cho em danh mục tất cả các linh kiện của nó được không? cả phần linh kiện của mạch nhiệt độ nữa) trên cơ sở đó ngâm cứu chắc là được.
    Cám ơn anh.
    Có ai biết thì giúp em với!

    Comment


    • Nản quá, hỏi mà không được ai giúp đỡ. Chỉ nghe nói ngoài lề nhiều hơn.

      Comment


      • Hxhx, em muốn xin các cao thủ trợ giúp ạ, em đã đọc hàng trăm bài trong 4r trước khi đặt câu hỏi nhưng vẫn ko thể tìm ra lời giải thích

        Mạch em dùng con Atmega 8 + DS1307 + 4 led 7 thanh.

        Con DS1307 em đã lắp 2 trở treo 4.7k vào chân 5,6; đã lắp thạch anh vào chân 1,2; đã lắp chân 3 vào pin còn 2 chân SDA với SCL thì nối vào 2 chân SDA với SCL của con Atmega 8.

        Code em trình bày bên dưới. Mạch của em chạy trên proteus 7.8 thì không sao cả nhưng khi đem ra mạch thật thì nó chỉ hiện 65.65 một khác khó hiểu .

        Các cao thủ giúp em với ạ Cuối tuần này em phải nạp cái mạch này rồi

        (mạch của em còn chạy cả con LM35 nên 1 số chỗ code để //)


        Code:
        #include <mega8.h>
        #include <delay.h>
        #define  dl 100      
        
        #define ADC_VREF_TYPE 0xE0
        
        #define DDR_SPI DDRB
        #define DD_MOSI  3
        #define DD_SCK   5
        #define DD_SS    2
        #define SPE 6
        #define MSTR    4
        #define SPR0    0
        #define SPIF    7
        
        #define SPI_ST      PORTB.2
        
        #asm
           .equ __i2c_port=0x15 ;PORTC
           .equ __sda_bit=4
           .equ __scl_bit=5
        #endasm
        #include <i2c.h>
        
        // DS1307 Real Time Clock functions
        #include <ds1307.h>
        
        unsigned char hour,min,sec,day,month,year;  
        unsigned char x;
        
        unsigned char adc_value; 
                float vin;
                int a,b,i;
        
        unsigned char read_adc(unsigned char adc_input)
        {
        ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
        delay_us(10);    
        ADCSRA|=0x40;  
        while ((ADCSRA & 0x10)==0);
        ADCSRA|=0x10;
        return ADCH;
        }
        
        
        void SpiMasterInit(void);
        void SpiShiftByte(unsigned char nData);
        void SpiWriteByte(unsigned char nData);
        void SpiWrite4Bytes(unsigned char *pData);
        
        void PutDigit(unsigned char nPos, unsigned nDigit, unsigned char nPt);
        void PutByte(unsigned char nPos,unsigned char nByte);
        
        
        
        void HienThiDoC(unsigned char nPos,unsigned char nByte);
        void HienThiTG(unsigned char nPos,unsigned char Phut,unsigned char Giay );
        
        void CH_Clear(void)
        {
        
        
        i2c_start();
        i2c_write(0xd0);
        i2c_write(0);
        i2c_write(0);
        i2c_stop();
        }
        void check(void) 
        {    
         rtc_get_date(&day,&month,&year);    
         if(day==0)                                                 // Neu ngay bang 0 
         {
          day=1;
          rtc_set_time(12,59,59);     
          
         }
        } 
                     
                                                                  
        unsigned char mDigits[4];
        unsigned char mFont[13] = {63,6,91,79,102,109,125,7,127,111,0,99,57};       //Font digit       // 0=63=0111111 ; 6=110;   do= gfba= 1100011=99  C=feda=0111001
                                                                 //[11]= do; [12]=C;
        /**********************************************************************************/
        void main(void)
        {
             SpiMasterInit();
            
        
        // Timer(s)/Counter(s) Interrupt(s) initialization
        
        
        // Analog Comparator initialization
        // Analog Comparator: Off
        // Analog Comparator Input Capture by Timer/Counter 1: Off
        
        
        
        i2c_init();
        rtc_init(3,1,0);    
        rtc_set_time(0,0,0,); 
        rtc_set_date(1,1,11);
        CH_Clear();
        
        ADMUX=ADC_VREF_TYPE & 0xff;
        ADCSRA=0x83;
        
        
        #asm("sei")        
            while (1)      
            {            
        //     adc_value=read_adc(3);     
        //              // Doc gia tri adc
        //        vin=((float)adc_value*256)/255;    
        //             
        //        a = (int) vin;
        //        HienThiDoC(0,a);
        //        SpiWrite4Bytes(mDigits);                              
        //        delay_ms(100);         
              
                
                rtc_get_time(&hour,&min,&sec);                   
                //if(sec>60) {sec=0;}
                //if(min>60) {min=0;}           
                HienThiTG(0,min,sec);  
                 
                SpiWrite4Bytes(mDigits);            
                delay_ms(100);
                
            }     //while
        }
        /**********************************************************************************/
        void SpiMasterInit(void)
        {
            //set MOSI,SCK output, all other input
            DDR_SPI = (1<<DD_MOSI) | (1<<DD_SCK) | (1<<DD_SS);
            //enable SPI, Master, set clock rate as fck/16
            SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0);
        }
        /**********************************************************************************/
        void SpiShiftByte(unsigned char nData)
        {
            SPDR = nData;
            while(!(SPSR & (1<<SPIF)));
        }
        /**********************************************************************************/
        void SpiWriteByte(unsigned char nData)
        {
        	SPI_ST = 0;
        	SpiShiftByte(nData);
        	SPI_ST = 1;
        }
        /**********************************************************************************/
        void SpiWrite4Bytes(unsigned char *pData)
        {
        	SPI_ST = 0;
        	SpiShiftByte(~*pData);
        	pData++;
        	SpiShiftByte(~*pData);
        	pData++;
        	SpiShiftByte(~*pData);
        	pData++;
        	SpiShiftByte(~*pData);
        	SPI_ST = 1;
        }
        /**********************************************************************************/
        /**********************************************************************************/
        void PutDigit(unsigned char nPos, unsigned nDigit, unsigned char nPt)     // npt=128 => bat point, npt =0 => ko co point
        {
            mDigits[nPos] = mFont[nDigit];    
            mDigits[nPos] = mDigits[nPos] | (nPt & 128);
        }
        /**********************************************************************************/
        void PutByte(unsigned char nPos,unsigned char nByte)
        {
            unsigned char nDg;
            
            //don vi
            nDg = nByte % 100;
            nDg = nDg % 10;
            PutDigit(nPos,nDg,0);    
            
            //chuc
            nDg = nByte/10;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);
            
            //tram
            nDg = nByte/100;
            PutDigit(++nPos,nDg,0);    
        }
        /**********************************************************************************/
        void HienThiDoC(unsigned char nPos,unsigned char nByte)
        {
            unsigned char nDg;
            //C
            PutDigit(nPos,12,0);
            //Do
            PutDigit(++nPos,11,0);    
              
            //don vi
            nDg = nByte % 100;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);    
            
            //chuc
            nDg = nByte/10;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);     
            
          
                
              
        }
        /**********************************************************************************/
        void HienThiTG(unsigned char nPos,unsigned char Phut,unsigned char Giay  )
        {
          unsigned char nDg;
            
            //don vi     Giay
            nDg = Giay % 100;
            nDg = nDg % 10;
            PutDigit(nPos,nDg,0);    
            
            //chuc    Giay
            nDg = Giay/10;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);
               
            //don vi   Phut
            nDg = Phut % 100;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);    
            
            //chuc    Phut
            nDg = Phut/10;
            nDg = nDg % 10;
            PutDigit(++nPos,nDg,0);
            
               
                 
              
        }
        /**********************************************************************************/

        Comment


        • UPPPPPPPPPPPPPpp

          Em sắp phải nộp bài tập rồi, ai có lòng hảo tâm giúp em với

          Comment


          • Nguyên văn bởi miehaui Xem bài viết
            tôi làm đồ án VDK 8051 đồng hồ số hiển thị trên led 7 thanh. đề tài yêu cầu có một nguồn chính và một nguồn phụ.khi nguồn chính mất thì nguồn phụ đáp ứng ngay, đồng hồ vẫn hoạt dộng bình thường. nguồn chính tôi dùng nguồn USB, nguồn phụ dùng pin 9V qua LM7805 về 5V. xin hỏi mọi người thiết kế mạch như thế nào để đáp ứng được. mọi người chỉ giùm tôi nhé!
            PS. thiết kế chỗ 2 nguồn đó nhé. còn mạch đồng hồ thì chạy ok rồi
            chỉ cần giữa nguồn usb va nguồn 5 V bạn dung relay là được chứ j....khi có diện thì relay ở nguồn usb và khi mất điện thì nhảy vào nguồn 5v

            Comment


            • bac oi sao em ko thay gi de dowload vay
              bac xem lai xem con cho nao de em dơload ko ah
              thank bac truoc

              Comment


              • các pro giúp em vụ này với.Tình hình là em có mạch đồng hồ láy trên diễn đàn mình về làm giờ em mún bỏ ngày tháng năm trong chương trình và chỉ cho tác động nút nhấn là set và up nhưng không biết bỏ chỗ nào.Các bác giúp em với.trong mạch này nhấn nút set sẽ ra kép d m y như kiểu đồng hồ đeo tay ấy e muốn bỏ nó đi.
                GIO.zip
                .......SPKTNĐ////tandatvip@gmail.com...........

                Comment


                • khônh ai giúp em à
                  .......SPKTNĐ////tandatvip@gmail.com...........

                  Comment


                  • Nguyên văn bởi ailopviu Xem bài viết
                    các bác xem dùm cái mạch đồng hồ số này xem nó bị sao mà nó lại đứng yên như trong hình. Mình chỉnh h m s thì được nhưng khi không chỉnh nữa thì nó lại đứng yên ko chạy, mà ko hiểu sao số hàng chục của giây thì nó lại hiện thị số 8. Đây là mạch nguyên lý + file mô phỏng + mạch in các bác xem dùm nó có bị sai chỗ nào không mà khi mình lắp nó ko chạy mach dong ho so.rar

                    bạn thử xem nó chập chân g với nguồn không,,,chập với quét nào không
                    .......SPKTNĐ////tandatvip@gmail.com...........

                    Comment


                    • cái ông này chơi pass thỳ sao mà sửa hộ cho đựoc chứ nhỉ
                      .......SPKTNĐ////tandatvip@gmail.com...........

                      Comment


                      • mà sao không cao thủ nào jup em thế nhỉ
                        .......SPKTNĐ////tandatvip@gmail.com...........

                        Comment


                        • các bác cho em hỏi mạch này với cấp nguồn toàn lên số 8 luôn
                          .......SPKTNĐ////tandatvip@gmail.com...........

                          Comment


                          • bác PCTOM ơi bác giúp em vụ này với mạch toàn số 8///em dùng led anode chung,mạch này em lấy trên diễn đàn nghiên cứu làm đò án
                            .......SPKTNĐ////tandatvip@gmail.com...........

                            Comment


                            • SCL BIT P3.0
                              SDA BIT P3.1
                              SETUP BIT P3.2
                              UP BIT P3.3
                              DOWN BIT P3.4
                              GIO_1 BIT P2.0
                              GIO_2 BIT P2.1
                              PHUT_1 BIT P2.2
                              PHUT_2 BIT P2.3
                              GIAY_1 BIT P2.4
                              GIAY_2 BIT P2.5
                              ADD_DATA EQU 7FH
                              DATA_DS EQU 7EH
                              GIO EQU 70H
                              PHUT EQU 71H
                              GIAY EQU 72H
                              THU EQU 73H
                              NGAY EQU 74H
                              THANG EQU 75H
                              NAM EQU 76H
                              GIO_TEST EQU 77H
                              PHUT_TEST EQU 78H
                              KQ EQU 2FH
                              ;======================================
                              ORG 00H
                              LJMP MAIN
                              ;==============================================
                              ORG 0B0H
                              CLR TR0
                              MOV TH0,#3CH
                              MOV TL0,0B0H
                              INC R0
                              CJNE R0,#20,CONTINUE_1
                              CPL P3.5
                              CONTINUE_1:
                              CJNE R0,#30,CONTINUE_2
                              CPL P3.5
                              CONTINUE_2:
                              CJNE R0,#50,CONTINUE
                              CLR P3.5
                              MOV R0,#0H
                              RETI
                              CONTINUE:
                              SETB TR0
                              RETI
                              ;==============================================
                              MAIN:
                              CLR P3.5
                              MOV R0,#0
                              MOV IE,#82H
                              MOV TMOD,#00000001B
                              MOV TH0,#3CH
                              MOV TL0,#0B0H
                              MOV P2,#0
                              MOV ADD_DATA,#8H
                              ACALL START_DS
                              ACALL READ_DATA
                              ACALL STOP_DS
                              CJNE A,#15H,SETUP_T
                              SJMP NO_SET
                              SETUP_T:
                              ACALL SETUP_TIME
                              NO_SET:
                              MOV A,THU
                              CJNE A,#01H,OK
                              LJMP READ_SEC
                              OK:
                              MOV A,GIAY
                              CJNE A,#00H,READ_SEC_1
                              SJMP CMP_GIO_1
                              READ_SEC_1:
                              LJMP READ_SEC
                              CMP_GIO_1:
                              MOV GIO_TEST,#07H
                              MOV PHUT_TEST,#00H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_2
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_2:
                              MOV GIO_TEST,#07H
                              MOV PHUT_TEST,#05H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_3
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_3:
                              MOV GIO_TEST,#07H
                              MOV PHUT_TEST,#45H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_4
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_4:
                              MOV GIO_TEST,#07H
                              MOV PHUT_TEST,#50H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_5
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_5:
                              MOV GIO_TEST,#08H
                              MOV PHUT_TEST,#35H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_6
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_6:
                              MOV GIO_TEST,#08H
                              MOV PHUT_TEST,#40H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_7
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_7:
                              MOV GIO_TEST,#09H
                              MOV PHUT_TEST,#25H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_8
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_8:
                              MOV GIO_TEST,#09H
                              MOV PHUT_TEST,#30H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_9
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_9:
                              MOV GIO_TEST,#10H
                              MOV PHUT_TEST,#15H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_10
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_10:
                              MOV GIO_TEST,#10H
                              MOV PHUT_TEST,#20H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_11
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_11:
                              MOV GIO_TEST,#11H
                              MOV PHUT_TEST,#05H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_12
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_12:
                              MOV GIO_TEST,#13H
                              MOV PHUT_TEST,#15H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_13
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_13:
                              MOV GIO_TEST,#14H
                              MOV PHUT_TEST,#00H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_14
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_14:
                              MOV GIO_TEST,#14H
                              MOV PHUT_TEST,#05H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_15
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_15:
                              MOV GIO_TEST,#14H
                              MOV PHUT_TEST,#50H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_16
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_16:
                              MOV GIO_TEST,#14H
                              MOV PHUT_TEST,#55H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_17
                              ACALL BAT_CHUONG
                              LJMP READ_SEC
                              CMP_GIO_17:
                              MOV GIO_TEST,#15H
                              MOV PHUT_TEST,#40H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_18
                              ACALL BAT_CHUONG
                              SJMP READ_SEC
                              CMP_GIO_18:
                              MOV GIO_TEST,#15H
                              MOV PHUT_TEST,#45H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_19
                              ACALL BAT_CHUONG
                              SJMP READ_SEC
                              CMP_GIO_19:
                              MOV GIO_TEST,#16H
                              MOV PHUT_TEST,#30H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_20
                              ACALL BAT_CHUONG
                              SJMP READ_SEC
                              CMP_GIO_20:
                              MOV GIO_TEST,#16H
                              MOV PHUT_TEST,#35H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,CMP_GIO_21
                              ACALL BAT_CHUONG
                              SJMP READ_SEC
                              CMP_GIO_21:
                              MOV GIO_TEST,#17H
                              MOV PHUT_TEST,#20H
                              ACALL CMP
                              MOV R2,KQ
                              CJNE R2,#3,READ_SEC
                              ACALL BAT_CHUONG
                              READ_SEC:
                              MOV A,GIAY
                              CJNE A,#10H,HIENTHI_TG_1
                              HIENTHI_DATE:
                              ACALL HIENTHI_NGAY
                              ACALL HIENTHI_THANG
                              ACALL HIENTHI_NAM
                              JNB SETUP,HIENTHI_TG_1
                              ACALL READ
                              MOV A,GIAY
                              CJNE A,#20H,HIENTHI_DATE
                              SJMP HIENTHI_TG_1
                              HIENTHI_DAY:
                              ACALL HIENTHI_THU
                              JNB SETUP,HIENTHI_TG_1
                              ACALL READ
                              MOV A,GIAY
                              CJNE A,#50H,HIENTHI_DAY
                              HIENTHI_TG_1:
                              CJNE A,#40H,HIENTHI_TG_2
                              SJMP HIENTHI_DAY
                              HIENTHI_TG_2:
                              ACALL READ
                              ACALL HIENTHI_S
                              ACALL HIENTHI_MIN
                              ACALL HIENTHI_HOU
                              ACALL SCAN_KEY
                              LJMP NO_SET
                              ;================================================= =
                              READ:
                              ACALL START_DS
                              MOV ADD_DATA,#00H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV GIAY,DATA_DS
                              READ_MIN:
                              ACALL START_DS
                              MOV ADD_DATA,#01H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV PHUT,DATA_DS
                              READ_HOU:
                              ACALL START_DS
                              MOV ADD_DATA,#02H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV GIO,DATA_DS
                              READ_DAY:
                              ACALL START_DS
                              MOV ADD_DATA,#03H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV THU,DATA_DS
                              READ_NGAY:
                              ACALL START_DS
                              MOV ADD_DATA,#04H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV NGAY,DATA_DS
                              READ_THANG:
                              ACALL START_DS
                              MOV ADD_DATA,#05H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV THANG,DATA_DS
                              READ_NAM:
                              ACALL START_DS
                              MOV ADD_DATA,#06H
                              ACALL READ_DATA
                              ACALL STOP_DS
                              MOV NAM,DATA_DS
                              RET
                              ;================================================= ==========
                              CMP:
                              MOV KQ,#0
                              MOV A,PHUT_TEST
                              CJNE A,PHUT,THOAT
                              SETB KQ.0
                              MOV A,GIO_TEST
                              CJNE A,GIO,THOAT
                              SETB KQ.1
                              THOAT:
                              RET
                              ;==========================================
                              SETUP_TIME: ;12H-00M-00S THU CN NGAY 14-11-2010
                              MOV GIAY,#00H
                              MOV PHUT,#00H
                              MOV GIO,#12H
                              MOV THU,#01H
                              MOV NGAY,#14H
                              MOV THANG,#11H
                              MOV NAM,#10H
                              ACALL SET_TIME
                              RET
                              ;================================================= ===
                              HIENTHI_D_M_Y:
                              ACALL HIENTHI_NGAY
                              ACALL HIENTHI_THANG
                              ACALL HIENTHI_NAM
                              RET
                              ;================================================= ====
                              HIENTHI_S:
                              MOV A,GIAY ;
                              SWAP A ; HIEN THI
                              ANL A,#00001111B ; CHUC GIAY
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR
                              MOV P0,A
                              SETB GIAY_1
                              LCALL DELAY
                              CLR GIAY_1

                              MOV A,GIAY ;
                              ANL A,#00001111B ;
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR ;
                              MOV P0,A ; HIEN THI
                              SETB GIAY_2 ; DV GIAY
                              LCALL DELAY ;
                              CLR GIAY_2 ;
                              RET
                              HIENTHI_MIN:
                              MOV A,PHUT ;
                              SWAP A ; HIEN THI
                              ANL A,#00001111B ; CHUC PHUT
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR
                              MOV P0,A
                              SETB PHUT_1
                              LCALL DELAY
                              CLR PHUT_1

                              MOV A,PHUT ;
                              ANL A,#00001111B ;
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR ;
                              MOV P0,A ; HIEN THI
                              SETB PHUT_2 ; DV PHUT
                              LCALL DELAY
                              CLR PHUT_2
                              RET
                              HIENTHI_HOU:
                              MOV A,GIO ;
                              SWAP A ; HIEN THI
                              ANL A,#00001111B ; CHUC GIO
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR
                              MOV P0,A
                              SETB GIO_1
                              LCALL DELAY
                              CLR GIO_1

                              MOV A,GIO ;
                              ANL A,#00001111B ;
                              MOV DPTR,#MALED ;
                              MOVC A,@A+DPTR ;
                              MOV P0,A ; HIEN THI
                              SETB GIO_2 ; DV GIO
                              LCALL DELAY
                              CLR GIO_2
                              RET
                              ;============================================
                              HIENTHI_NGAY:
                              MOV R4,GIO
                              MOV GIO,NGAY
                              ACALL HIENTHI_HOU
                              MOV GIO,R4
                              RET
                              HIENTHI_THANG:
                              MOV R4,PHUT
                              MOV PHUT,THANG
                              ACALL HIENTHI_MIN
                              MOV PHUT,R4
                              RET
                              HIENTHI_NAM:
                              MOV R4,GIAY
                              MOV GIAY,NAM
                              ACALL HIENTHI_S
                              MOV GIAY,R4
                              RET
                              HIENTHI_THU:
                              MOV R4,GIAY
                              MOV GIAY,THU
                              MOV A,THU
                              CJNE A,#01H,CN
                              MOV GIAY,#0EFH
                              CN:
                              ACALL HIENTHI_S
                              MOV GIAY,R4
                              MOV R4,GIO
                              MOV GIO,#0ABH
                              ACALL HIENTHI_HOU
                              MOV GIO,R4
                              MOV R4,PHUT
                              MOV PHUT,#0CDH
                              ACALL HIENTHI_MIN
                              MOV PHUT,R4
                              RET
                              ;==========================================
                              SET_TIME:
                              ACALL START_DS

                              MOV A,#0D0H
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,#00H
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,GIAY
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,PHUT
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,GIO
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,THU
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,NGAY
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,THANG
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,NAM
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,#10H ;OUT: 1Hz
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,#15H ;GIA TRI KIEM TRA DS
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              ACALL STOP_DS
                              RET
                              ;==========================================
                              START_DS:
                              CLR SCL
                              SETB SCL
                              SETB SDA
                              SETB SCL
                              NOP
                              CLR SDA
                              CLR SCL
                              RET
                              ;==========================================
                              STOP_DS:
                              SETB SCL
                              CLR SCL
                              CLR SDA
                              SETB SCL
                              NOP
                              SETB SDA
                              RET
                              ;============================================
                              READ_DATA:
                              MOV A,#0D0H
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              MOV A,ADD_DATA
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              ACALL STOP_DS
                              ACALL START_DS
                              MOV A,#0D1H
                              ACALL LOOP_SEND
                              SETB SCL
                              CLR SCL

                              ACALL LOOP_RECEIVE
                              ACALL STOP_DS
                              RET
                              ;===========================================
                              LOOP_SEND:
                              MOV R1,#8
                              LOOP_S:
                              RLC A
                              MOV SDA,C
                              SETB SCL
                              CLR SCL
                              DJNZ R1,LOOP_S
                              RET
                              ;===========================================
                              LOOP_RECEIVE:
                              MOV A,#0
                              MOV R1,#8
                              LOOP_R:
                              MOV C,SDA
                              SETB SCL
                              CLR SCL
                              RLC A
                              DJNZ R1,LOOP_R
                              MOV DATA_DS,A
                              RET
                              ;========================================
                              BAT_CHUONG:
                              SETB P3.5
                              SETB TR0
                              RET
                              ;========================================
                              SCAN_KEY:
                              JB SETUP,EXIT_SCAN
                              ACALL DELAY
                              JNB SETUP,$
                              SJMP SET_GIO
                              EXIT_SCAN:
                              LJMP EXIT
                              SET_GIO:
                              JB UP,SCAN_DOWN_1
                              JNB UP,$
                              INC GIO
                              MOV A,GIO
                              CJNE A,#24H,SCAN_DOWN_1
                              MOV GIO,#00H
                              SCAN_DOWN_1:
                              JB DOWN,HIEN_GIO
                              JNB DOWN,$
                              DEC GIO
                              MOV A,GIO
                              CJNE A,#0FFH,HIEN_GIO
                              MOV GIO,#23H
                              HIEN_GIO:
                              MOV R5,GIO
                              ACALL GIAI_MA
                              MOV GIO,R5
                              ACALL HIENTHI_HOU
                              JB SETUP,SET_GIO
                              ACALL DELAY
                              JNB SETUP,$

                              SET_PHUT:
                              JB UP,SCAN_DOWN_2
                              JNB UP,$
                              INC PHUT
                              MOV A,PHUT
                              CJNE A,#5AH,SCAN_DOWN_2
                              MOV PHUT,#00H
                              SCAN_DOWN_2:
                              JB DOWN,HIEN_PHUT
                              JNB DOWN,$
                              DEC PHUT
                              MOV A,PHUT
                              CJNE A,#0FFH,HIEN_PHUT
                              MOV PHUT,#59H
                              HIEN_PHUT:
                              MOV R5,PHUT
                              ACALL GIAI_MA
                              MOV PHUT,R5
                              ACALL HIENTHI_MIN
                              JB SETUP,SET_PHUT
                              ACALL DELAY
                              JNB SETUP,$

                              SET_GIAY:
                              JB UP,SCAN_DOWN_3
                              JNB UP,$
                              INC GIAY
                              MOV A,GIAY
                              CJNE A,#5AH,SCAN_DOWN_3
                              MOV GIAY,#00H
                              SCAN_DOWN_3:
                              JB DOWN,HIEN_GIAY
                              JNB DOWN,$
                              DEC GIAY
                              MOV A,GIAY
                              CJNE A,#0FFH,HIEN_GIAY
                              MOV GIAY,#59H
                              HIEN_GIAY:
                              MOV R5,GIAY
                              ACALL GIAI_MA
                              MOV GIAY,R5
                              ACALL HIENTHI_S
                              JB SETUP,SET_GIAY
                              ACALL DELAY
                              JNB SETUP,$

                              SET_NGAY:
                              JB UP,SCAN_DOWN_4
                              JNB UP,$
                              INC NGAY
                              MOV A,NGAY
                              CJNE A,#32H,SCAN_DOWN_4
                              MOV NGAY,#01H
                              SCAN_DOWN_4:
                              JB DOWN,HIEN_NGAY
                              JNB DOWN,$
                              DEC NGAY
                              MOV A,NGAY
                              CJNE A,#00H,HIEN_NGAY
                              MOV NGAY,#31H
                              HIEN_NGAY:
                              MOV R5,NGAY
                              ACALL GIAI_MA
                              MOV NGAY,R5
                              ACALL HIENTHI_NGAY
                              JB SETUP,SET_NGAY
                              ACALL DELAY
                              JNB SETUP,$

                              SET_THANG:
                              JB UP,SCAN_DOWN_5
                              JNB UP,$
                              INC THANG
                              MOV A,THANG
                              CJNE A,#13H,SCAN_DOWN_5
                              MOV THANG,#01H
                              SCAN_DOWN_5:
                              JB DOWN,HIEN_THANG
                              JNB DOWN,$
                              DEC THANG
                              MOV A,THANG
                              CJNE A,#00H,HIEN_THANG
                              MOV THANG,#12H
                              HIEN_THANG:
                              MOV R5,THANG
                              ACALL GIAI_MA
                              MOV THANG,R5
                              ACALL HIENTHI_THANG
                              JB SETUP,SET_THANG
                              ACALL DELAY
                              JNB SETUP,$

                              SET_NAM:
                              JB UP,SCAN_DOWN_6
                              JNB UP,$
                              INC NAM
                              MOV A,NAM
                              CJNE A,#9AH,SCAN_DOWN_6
                              MOV NAM,#00H
                              SCAN_DOWN_6:
                              JB DOWN,HIEN_NAM
                              JNB DOWN,$
                              DEC NAM
                              MOV A,NAM
                              CJNE A,#0FFH,HIEN_NAM
                              MOV NAM,#99H
                              HIEN_NAM:
                              MOV R5,NAM
                              ACALL GIAI_MA
                              MOV NAM,R5
                              MOV R4,PHUT
                              MOV PHUT,#20H
                              ACALL HIENTHI_MIN
                              MOV PHUT,R4
                              ACALL HIENTHI_NAM
                              JB SETUP,SET_NAM
                              ACALL DELAY
                              JNB SETUP,$

                              SET_THU:
                              JB UP,SCAN_DOWN_7
                              JNB UP,$
                              INC THU
                              MOV A,THU
                              CJNE A,#08H,SCAN_DOWN_7
                              MOV THU,#01H
                              SCAN_DOWN_7:
                              JB DOWN,HIEN_THU
                              JNB DOWN,$
                              DEC THU
                              MOV A,THU
                              CJNE A,#00H,HIEN_THU
                              MOV THU,#07H
                              HIEN_THU:
                              ACALL HIENTHI_THU
                              JB SETUP,SET_THU
                              ACALL DELAY
                              JNB SETUP,$

                              ACALL SET_TIME
                              EXIT:
                              RET
                              ;=======================================
                              GIAI_MA:
                              CJNE R5,#0AH,TEST_1
                              MOV R5,#10H
                              SJMP THOAT_TEST
                              TEST_1:
                              CJNE R5,#1AH,TEST_2
                              MOV R5,#20H
                              SJMP THOAT_TEST
                              TEST_2:
                              CJNE R5,#2AH,TEST_3
                              MOV R5,#30H
                              SJMP THOAT_TEST
                              TEST_3:
                              CJNE R5,#3AH,TEST_4
                              MOV R5,#40H
                              SJMP THOAT_TEST
                              TEST_4:
                              CJNE R5,#4AH,TEST_5
                              MOV R5,#50H
                              SJMP THOAT_TEST
                              TEST_5:
                              CJNE R5,#5AH,TEST_6
                              MOV R5,#60H
                              SJMP THOAT_TEST
                              TEST_6:
                              CJNE R5,#6AH,TEST_7
                              MOV R5,#70H
                              SJMP THOAT_TEST
                              TEST_7:
                              CJNE R5,#7AH,TEST_8
                              MOV R5,#80H
                              SJMP THOAT_TEST
                              TEST_8:
                              CJNE R5,#8AH,TEST_9
                              MOV R5,#90H
                              SJMP THOAT_TEST
                              TEST_9:
                              CJNE R5,#8FH,TEST_10
                              MOV R5,#89H
                              SJMP THOAT_TEST
                              TEST_10:
                              CJNE R5,#7FH,TEST_11
                              MOV R5,#79H
                              SJMP THOAT_TEST
                              TEST_11:
                              CJNE R5,#6FH,TEST_12
                              MOV R5,#69H
                              SJMP THOAT_TEST
                              TEST_12:
                              CJNE R5,#5FH,TEST_13
                              MOV R5,#59H
                              SJMP THOAT_TEST
                              TEST_13:
                              CJNE R5,#4FH,TEST_14
                              MOV R5,#49H
                              SJMP THOAT_TEST
                              TEST_14:
                              CJNE R5,#3FH,TEST_15
                              MOV R5,#39H
                              SJMP THOAT_TEST
                              TEST_15:
                              CJNE R5,#2FH,TEST_16
                              MOV R5,#29H
                              SJMP THOAT_TEST
                              TEST_16:
                              CJNE R5,#1FH,TEST_17
                              MOV R5,#19H
                              SJMP THOAT_TEST
                              TEST_17:
                              CJNE R5,#0FH,THOAT_TEST
                              MOV R5,#09H
                              THOAT_TEST:
                              RET
                              ;=========================================
                              DELAY:
                              MOV R3,#255
                              DJNZ R3,$
                              RET
                              ;===========================================
                              MALED:
                              DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,21H,08H,11 H,7FH,46H,48H
                              ;===========================================
                              END
                              Attached Files
                              Last edited by tandat_dt21; 18-06-2013, 16:29.
                              .......SPKTNĐ////tandatvip@gmail.com...........

                              Comment


                              • đồng hồ số hiển thị led 7 thanh

                                [QUOTE=pctcom;280758]Mạch đồng hồ dùng 8951 và IC thời gian thực DS1307 dùng pin 3v rời:
                                Em mới tham gia diễn đàn và cũng muốn tìm hiểu về vi xử lý mong bác cho em xin mạch nguyên lý và code về em tìm hiểu nhé bác.
                                Em cảm ơn nhiều
                                mail của em là: quade1981@gmail.com
                                |

                                Comment

                                Về tác giả

                                Collapse

                                miehaui Tìm hiểu thêm về miehaui

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X