Thông báo

Collapse
No announcement yet.

đồng hồ số có lỗi !!!!!!!!!!!!! Giúp em với ạ

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

  • đồng hồ số có lỗi !!!!!!!!!!!!! Giúp em với ạ

    EM LÀM CÁI MẠCH ĐỒNG HỒ SỐ DÙNG LED DƠN GHÉP LẠI. MẠCH DÙNG IC DICH 74HC595. EM LÀM MẠCH SONG RÁP VÀO THÌ NÓ HIỆN THỊ SỐ 8 HẾT KHÔNG CHẠY GIÂY. VỚI LẠI CÁI CHÂN 7 CỦA CON DS1307 KHÔNG THẤY CÓ TÍN HIỆU 1HZ XUẤT RA (led ko nháy). MONG CÁC ANH GIÁPR ĐÁP HIỆN TƯỢNG VÀ HƯỚNG GIẢI QUYẾT. THANKS!!!!!!!

  • #2
    Nguyên văn bởi tuyen_evn Xem bài viết
    EM LÀM CÁI MẠCH ĐỒNG HỒ SỐ DÙNG LED DƠN GHÉP LẠI. MẠCH DÙNG IC DICH 74HC595. EM LÀM MẠCH SONG RÁP VÀO THÌ NÓ HIỆN THỊ SỐ 8 HẾT KHÔNG CHẠY GIÂY. VỚI LẠI CÁI CHÂN 7 CỦA CON DS1307 KHÔNG THẤY CÓ TÍN HIỆU 1HZ XUẤT RA (led ko nháy). MONG CÁC ANH GIÁPR ĐÁP HIỆN TƯỢNG VÀ HƯỚNG GIẢI QUYẾT. THANKS!!!!!!!
    em xem lại code+mạch của e ráp có setup cho con ds1307 hay không(có phím bấm chỉnh giờ..p..s )
    có thể up code +mạch lên không,mình giúp cho....

    Comment


    • #3
      Bạn xem lại đã set bit CH trong thanh ghi giây xuống 0 chưa, nhiều bạn làm xong cũng hay quên cái này lắm.

      Comment


      • #4
        Nguyên văn bởi congminh2013 Xem bài viết
        em xem lại code+mạch của e ráp có setup cho con ds1307 hay không(có phím bấm chỉnh giờ..p..s )
        có thể up code +mạch lên không,mình giúp cho....
        đây là mạch anh ạ. còn code thì em mô phỏng trên protues nó chạy rồi ạ!Click image for larger version

Name:	DONG_HO_THOI_GIAN_THUC.jpg
Views:	1
Size:	113.5 KB
ID:	1374299

        Comment


        • #5
          Nguyên văn bởi tuyen_evn Xem bài viết
          đây là mạch anh ạ. còn code thì em mô phỏng trên protues nó chạy rồi ạ![ATTACH=CONFIG]60421[/ATTACH]
          mô phỏng trong proteus VSM sẽ lấy thời gian của máy tính nên lúc nào nó cũng chạy, mạch thực tế còn nhiều thứ phải làm thì mới chạy đc. Quan trọng là code đã xóa bit CH trong thanh ghi giây của 1307 hay chưa, VDK đã giao tiếp hiểu đc bus I2C hay chưa,.......

          Comment


          • #6
            Nguyên văn bởi tuyen_evn Xem bài viết
            đây là mạch anh ạ. còn code thì em mô phỏng trên protues nó chạy rồi ạ![ATTACH=CONFIG]60421[/ATTACH]
            bấm nút set xem có chỉnh giây được không,chắc chắn là không có đúng không..

            Comment


            • #7
              tặng cho em cái này đã làm mạch thật nhưng với vdk 89c2051
              dongho_595.hex

              nhưng chả sao cả em sửa lại mấy chân phím bấm rồi nạp vào 89cxx là chạy.....

              Comment


              • #8
                #include<reg52.h>
                sbit DATA1 = P3^0;
                sbit SCK1 = P3^1;
                sbit LACH1 = P3^2;
                sbit set=P3^4;
                sbit up=P3^5;
                sbit down=P3^6;
                unsigned char hour, minute, second,c;
                unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
                unsigned char kt=0,a=0,i,k,x=0;
                bit set0=1,set1=1,up1=1,up0=1,down0=1,down1=1;
                sbit SCL = P1^0;
                sbit SDA = P1^1;
                void delay(){
                unsigned char i;
                for (i = 0; i < 4; i++){};
                }

                //-----------------------------------------
                void SCL_high(){
                SCL = 1;
                delay();
                }

                //------------------------------------------
                void SCL_low(){
                SCL = 0;
                delay();
                }

                //-------------------------------------------
                void I2C_Start(){
                SDA = 1;
                SCL = 1;
                SDA = 0;
                delay();
                SCL = 0;
                SDA = 1;
                }

                //--------------------------------------------
                void I2C_Stop(){
                SDA = 0;
                SCL_high();
                SDA = 1;
                }

                //----------------------------------------------
                bit I2C_Write(unsigned char dat){
                unsigned char i;
                bit outbit;
                for (i = 1; i <= 8; i++){
                outbit=dat&0x80;
                SDA = outbit;
                dat = dat << 1;
                SCL_high();
                SCL_low();
                }
                SDA = 1;
                SCL_high();
                outbit = SDA;
                SCL_low();
                return(outbit);
                }

                //----------------------------------------------------
                unsigned char I2C_Read(bit ack){
                unsigned char i, dat;
                bit inbit;

                dat = 0;
                for(i=1;i<=8;i++) {
                SCL_high();
                inbit = SDA;
                dat = dat << 1;
                dat = dat | inbit;
                SCL_low();
                }
                if (ack) SDA = 0;
                else SDA = 1;
                SCL_high();
                SCL = 0;
                SDA = 1;
                delay();
                return(dat);
                }

                //-------------------------------------------------------------
                void rtc_write(unsigned char add, unsigned char dat){
                I2C_Start();
                I2C_Write(0xd0);
                I2C_Write(add);
                I2C_Write(((dat/10)<<4)|(dat%10));
                I2C_Stop();
                }

                unsigned char rtc_read(unsigned char add){
                unsigned char dat;
                I2C_Start();
                I2C_Write(0xd0);
                I2C_Write(add);
                I2C_Start();
                I2C_Write(0xd1);
                dat = I2C_Read(0);
                I2C_Stop();
                dat = (dat & 0x0f) + (dat>>4)*10;
                return (dat);
                }
                void writeds(){
                rtc_write(0x00, second);
                rtc_write(0x01, minute);
                rtc_write(0x02, hour);
                }

                void readds()
                {
                if(kt==0)
                {
                if(a==1)
                {writeds();a=0;
                }
                second = rtc_read(0x00);
                minute = rtc_read(0x01);
                hour = rtc_read(0x02);
                }
                }

                void hienthi(unsigned char x)
                {
                unsigned int i,temp;
                for(i=0;i<8;i++)
                {
                temp=x;
                temp=temp&0x80;
                if(temp==0x80)
                DATA1=1;
                else
                DATA1=0;
                x*=2;
                SCK1=0;
                SCK1=1;
                }
                }
                void quetled()
                {

                if(kt==0)
                {
                hienthi(ma[second%10]);
                hienthi(ma[second/10]);
                hienthi(ma[minute%10]);
                hienthi(ma[minute/10]);
                hienthi(ma[hour%10]);
                hienthi(ma[hour/10]);
                LACH1=0;
                LACH1=1;
                }
                if(kt==1)
                {
                hienthi(0xff);
                hienthi(0xff);
                hienthi(0xff);
                hienthi(0xff);
                hienthi(ma[hour%10]);
                hienthi(ma[hour/10]);
                LACH1=0;
                LACH1=1;
                }
                if(kt==2)
                {
                hienthi(0xff);
                hienthi(0xff);
                hienthi(ma[minute%10]);
                hienthi(ma[minute/10]);
                hienthi(0xff);
                hienthi(0xff);
                LACH1=0;
                LACH1=1;
                }
                if(kt==3)
                {
                hienthi(ma[second%10]);
                hienthi(ma[second/10]);
                hienthi(0xff);
                hienthi(0xff);
                hienthi(0xff);
                hienthi(0xff);
                LACH1=0;
                LACH1=1;
                }
                }
                void ktphim()
                {
                set0=set1;set1=set;
                if((set0==1)&&(set1==0))
                {
                kt++;
                if(kt>3)kt=0;
                }
                switch(kt)
                {
                case 0:break;
                case 1:
                {
                up0=up1;up1=up; a=1;
                if((up0==1)&&(up1==0))
                {
                hour++;
                if(hour>23)hour=0;
                }
                down0=down1;down1=down;
                if((down0==1)&&(down1==0))
                {
                hour--;
                if(hour==-1)
                hour=23;
                }
                break;
                }
                case 2:
                {
                up0=up1;up1=up; a=1;
                if((up0==1)&&(up1==0))
                {
                minute++;
                if(minute>59)
                minute=0;
                }
                down0=down1;down1=down;
                if((down0==1)&&(down1==0))
                {
                minute--;
                if(minute==-1)
                minute=59;
                }
                break;
                }

                case 3:
                {
                up0=up1;up1=up;a=1;
                if((up0==1)&&(up1==0))
                {
                second++;
                if(second>59)
                second++;
                }
                down0=down1;down1=down;
                if((down0==1)&&(down1==0))
                {
                second=0;
                }
                break;
                }
                }
                }

                void main()
                {
                I2C_Start();
                I2C_Write(0xD0);
                I2C_Write(0x07);
                I2C_Write(0x10);
                I2C_Stop();
                while(1)
                {
                ktphim();
                readds();
                quetled();
                }
                }
                còn đây là code anh ak

                Comment


                • #9
                  Nguyên văn bởi congminh2013 Xem bài viết
                  tặng cho em cái này đã làm mạch thật nhưng với vdk 89c2051
                  dongho_595.hex

                  nhưng chả sao cả em sửa lại mấy chân phím bấm rồi nạp vào 89cxx là chạy.....
                  cho em mạch luôn đc ko ạ!

                  Comment


                  • #10
                    Nguyên văn bởi tuyen_evn Xem bài viết
                    cho em mạch luôn đc ko ạ!
                    Của mình bạn tham khảo thử

                    Download: http://www.mediafire.com/?34gxv6tfgq3oib8
                    Attached Files
                    Last edited by minhthanh29; 22-02-2013, 22:28.
                    Nhận vẽ mạch in ^_^
                    TEL: 0167 4500 365
                    Mail:

                    Comment


                    • #11
                      Khi làm xong! Chạy phà phà
                      Attached Files
                      Nhận vẽ mạch in ^_^
                      TEL: 0167 4500 365
                      Mail:

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X