Thông báo

Collapse
No announcement yet.

đồng hồ ma trận cơ bản

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

  • đồng hồ ma trận cơ bản

    đồng hồ ma trận cơ bản
    Attached Files

  • #2
    Nguyên văn bởi rierie Xem bài viết
    đồng hồ ma trận cơ bản
    sao phần hiển thị không rõ vậy anh. anh có thể xử lý lại được không ạ
    caoson.vnatr@gmail.com
    Thiết kế mạch điện tử
    0914024690

    Comment


    • #3
      Nguyên văn bởi rierie Xem bài viết
      đồng hồ ma trận cơ bản
      Bác cho em xin cái code về tham khảo được không?

      Comment


      • #4
        Nguyên văn bởi caoson_vnatr Xem bài viết
        sao phần hiển thị không rõ vậy anh. anh có thể xử lý lại được không ạ
        đổi led mầu khác là nhìn rõ ngay thôi mà

        Email:
        Gmail:

        Comment


        • #5
          Nguyên văn bởi tuankep6 Xem bài viết
          đổi led mầu khác là nhìn rõ ngay thôi mà
          Em đổi rồi mà vẫn thế bác àh. Phải căng mắt ra mới nhìn được. nhưng không rõ lắm.Chủ topic cố gắng sửa lại để em tiến hành làm xem sao
          caoson.vnatr@gmail.com
          Thiết kế mạch điện tử
          0914024690

          Comment


          • #6
            mã nguồn cơ bản bằng cách sử dụng Keil uVision3



            #include "reg52.h"
            //------------------------------------------------------------------------------------------
            #define uchar unsigned char
            #define uint unsigned int

            //
            sbit S_DIO = P3^0;
            sbit S_CLK = P3^1;
            sbit R_CLK = P3^2;

            //
            sbit KEY_1 = P1^1;
            sbit KEY_2 = P1^2;
            sbit KEY_3 = P1^0;

            //
            sbit BEEP = P2^7;

            //
            sbit T_CLK = P3^5;
            sbit T_IO = P3^6;
            sbit T_RST = P3^7;


            sbit ACC0 = ACC^0;
            sbit ACC1 = ACC^1;
            sbit ACC2 = ACC^2;
            sbit ACC3 = ACC^3;
            sbit ACC4 = ACC^4;
            sbit ACC5 = ACC^5;
            sbit ACC6 = ACC^6;
            sbit ACC7 = ACC^7;
            //------------------------------------------------------------------------------------------
            unsigned char code font[][7]={
            0x38,0x44,0x64,0x54,0x4C,0x44,0x38,//0xF8,0x88,0x88,0x88,0x88,0x88,0xF8, //-----------'0'
            0x10,0x18,0x10,0x10,0x10,0x10,0x38,//0x20,0x30,0x28,0x20,0x20,0x20,0xF8, //-----------'1'
            0x38,0x44,0x40,0x20,0x10,0x08,0x7C,//0xF8,0x80,0x80,0xF8,0x08,0x08,0xF8, //-----------'2'
            0x7C,0x20,0x10,0x20,0x40,0x44,0x38,//0xF8,0x80,0x80,0xF8,0x80,0x80,0xF8, //-----------'3'
            0x20,0x30,0x28,0x24,0x7C,0x20,0x20,//0x48,0x48,0x48,0x48,0xF8,0x40,0x40, //-----------'4'
            0x7C,0x04,0x3C,0x40,0x40,0x44,0x38,//0xF8,0x08,0x08,0xF8,0x80,0x80,0xF8, //-----------'5'
            0x70,0x08,0x04,0x3C,0x44,0x44,0x38,//0xF8,0x08,0x08,0xF8,0x88,0x88,0xF8, //-----------'6'
            0x7C,0x40,0x20,0x10,0x08,0x08,0x08,//0xF8,0x80,0x80,0x80,0x80,0x80,0x80, //-----------'7'
            0x38,0x44,0x44,0x38,0x44,0x44,0x38,//0xF8,0x88,0x88,0xF8,0x88,0x88,0xF8, //-----------'8'
            0x38,0x44,0x44,0x78,0x40,0x20,0x1C,//0xF8,0x88,0x88,0xF8,0x80,0x80,0x80, //-----------'9'
            0x00,0x30,0x30,0x00,0x30,0x30,0x00, //-----10----':'
            0x00,0x00,0x00,0x00,0x00,0x00,0x00, //-----11----' '
            };

            unsigned char idata DisTemp[5][7];

            unsigned char idata Dis[5]={1,2,10,0,0};
            //------------------------------------------------------------------------------------------
            //-----------------------------
            unsigned char idata Time[7];

            //------------------------------------------------------------------------------------------
            unsigned char idata CSRow[7]={0x01,0x02,0x04,0x08,0x10,0x20,0x40};

            unsigned char idata second,minute,hour,day,month,week,year;

            unsigned long int idata Disbuf[5];

            unsigned long int idata Disbuftemp[7];
            //------------------------------------------------------------------------------------------
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void Delay(unsigned int i)
            {
            unsigned int j;
            for(j=0;j<i;j++);
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void OutData(unsigned char Data)
            {
            SBUF=~Data;
            while(TI==0);
            TI=0;
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            unsigned char BCD2HEX(unsigned char BCDChar)
            {
            unsigned char temp;
            temp=(BCDChar/16*10+BCDChar%16);
            return temp;
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            unsigned char HEX2BCD(unsigned char HEXChar)
            {
            unsigned char temp;
            temp=(HEXChar/10*16+HEXChar%10);
            return temp;
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void WriteByteDS1302(unsigned char Data)
            {
            unsigned char i;
            ACC = Data;
            for(i=8; i>0; i--)
            {
            T_IO = ACC0;
            T_CLK = 1;
            T_CLK = 0;
            ACC = ACC >> 1;
            }
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            unsigned char ReadByteDS1302(void)
            {
            unsigned char i;
            for(i=8; i>0; i--)
            {
            ACC = ACC >>1;
            ACC7 = T_IO;
            T_CLK = 1;
            T_CLK = 0;
            }
            return(ACC);
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void WriteDS1302(unsigned char Addr,unsigned char Data)
            {
            T_RST = 0;
            T_CLK = 0;
            T_RST = 1;
            WriteByteDS1302(Addr);
            WriteByteDS1302(Data);
            T_CLK = 1;
            T_RST = 0;
            }
            /************************************************** *****************************************

            ************************************************** *****************************************/
            unsigned char ReadDS1302(unsigned char Addr)
            {
            unsigned char Data;
            T_RST = 0;
            T_CLK = 0;
            T_RST = 1;
            WriteByteDS1302(Addr);
            Data = ReadByteDS1302();
            T_CLK = 1;
            T_RST = 0;
            return(Data);
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void Set(unsigned char sel,unsigned char selby)
            {
            unsigned char address,item;
            unsigned char max,min;

            if(sel==0) {address=0x80; max=59;min=0;} //
            if(sel==1) {address=0x82; max=59;min=0;} //
            if(sel==2) {address=0x84; max=23;min=0;} //
            if(sel==3) {address=0x86; max=31;min=1;} //
            if(sel==4) {address=0x88; max=12;min=1;} //
            if(sel==5) {address=0x8a; max=7; min=1;} //
            if(sel==6) {address=0x8c; max=99;min=0;} //
            if(sel==7) {address=0xc0; max=59;min=0;} //
            if(sel==8) {address=0xc2; max=23;min=0;} //

            item=ReadDS1302(address+1)/16*10+ReadDS1302(address+1)%16;
            if (selby==0) item++; else item--;
            if(item>max) item=min;
            if(item<min) item=max;

            WriteDS1302(0x8e,0x00);
            WriteDS1302(address,item/10*16+item%10);
            WriteDS1302(0x90,0xa5);
            WriteDS1302(0x8e,0x80);
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void SetTime(unsigned char *pClock)
            {
            unsigned char h;
            unsigned char Addr=0x80;
            WriteDS1302(0x8e,0x00);
            for(h=7; h>0; h--)
            {
            WriteDS1302(Addr,*pClock);
            pClock++;
            Addr+=2;
            }
            WriteDS1302(0x90,0xa5);
            WriteDS1302(0x8e,0x80);
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void ReadTime()
            {
            second = BCD2HEX(Time[0]=ReadDS1302(0x81));
            minute = BCD2HEX(Time[1]=ReadDS1302(0x83));
            hour = BCD2HEX(Time[2]=ReadDS1302(0x85));
            day = BCD2HEX(Time[3]=ReadDS1302(0x87));
            month = BCD2HEX(Time[4]=ReadDS1302(0x89));
            year = BCD2HEX(Time[5]=ReadDS1302(0x8d));
            week = BCD2HEX(Time[6]=ReadDS1302(0x8b));
            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void WriteTime()
            {
            WriteDS1302(0x8e,0x00);
            WriteDS1302(0x80,HEX2BCD(second));
            WriteDS1302(0x82,HEX2BCD(minute));
            WriteDS1302(0x84,HEX2BCD(hour));
            WriteDS1302(0x86,HEX2BCD(day));
            WriteDS1302(0x88,HEX2BCD(month));
            WriteDS1302(0x8A,HEX2BCD(week));
            WriteDS1302(0x8C,HEX2BCD(year));
            WriteDS1302(0x90,0xa5);
            WriteDS1302(0x8e,0x80);
            }

            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void DisProcess()
            {
            unsigned char i,j;
            for(i=0;i<5;i++)
            for(j=0;j<7;j++)
            DisTemp[i][j]=font[Dis[i]][j];
            for(i=0;i<7;i++)
            {
            Disbuf[0]=DisTemp[4][i];
            Disbuf[1]=DisTemp[3][i];
            Disbuf[2]=DisTemp[2][i];
            Disbuf[3]=DisTemp[1][i];
            Disbuf[4]=DisTemp[0][i];
            Disbuftemp[i]=Disbuf[0]<<24|Disbuf[1]<<18|Disbuf[2]<<12|Disbuf[3]<<6|Disbuf[4];
            }
            }

            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void DisPlay()
            {
            unsigned char i,j;
            for(i=0;i<7;i++)
            {
            P2=~0x00;
            BEEP=1;
            for(j=0;j<4;j++)
            OutData(0x00);
            R_CLK=1;R_CLK=0;

            P2=~CSRow[i];
            BEEP=1;
            for(j=0;j<4;j++)
            OutData(((unsigned char *)&Disbuftemp[i])[3-j]);
            R_CLK=1;R_CLK=0;
            Delay(350);
            }
            P2=~0x00;
            BEEP=1;
            for(j=0;j<4;j++)
            OutData(0x00);
            R_CLK=1;R_CLK=0;

            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void init(void)
            {
            EA=1;
            SCON=0;//
            ReadTime();//
            DisPlay();
            Dis[0]=hour/10;
            Dis[1]=hour%10;
            Dis[3]=minute/10;
            Dis[4]=minute%10;
            Dis[2]=10;
            DisProcess();

            }
            /************************************************** *****************************************
            *
            ************************************************** *****************************************/
            void main()
            {
            init();
            while(1)
            {
            ReadTime();
            DisPlay();
            if((hour/10)==0)
            {
            Dis[0]=11;
            }
            else
            {
            Dis[0]=hour/10;
            }
            Dis[1]=hour%10;
            Dis[3]=minute/10;
            Dis[4]=minute%10;
            if((second%10)%2)
            Dis[2]=11;
            else
            Dis[2]=10;
            DisProcess();
            if(KEY_1==0)
            {
            DisPlay();
            if(KEY_1==0)
            {
            Set(2,0);
            }
            while(KEY_1==0)DisPlay();
            }
            if(KEY_2==0)
            {
            DisPlay();
            if(KEY_2==0)
            {
            Set(1,0);
            }
            while(KEY_2==0)DisPlay();
            }
            if(KEY_3==0)
            {
            DisPlay();
            if(KEY_3==0)
            {
            WriteDS1302(0x8e,0x00);//
            WriteDS1302(0x80,0x00);//
            WriteDS1302(0x90,0xa5);//
            WriteDS1302(0x8e,0x80);//
            }
            while(KEY_3==0)DisPlay();
            }
            }
            }

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • since0501
              Trả lời cho Pin Li-FePO4 (pin sắt) rất dể hỏng! Các biện pháp ngăn ngừa.
              bởi since0501
              Mình đào mộ xíu, cho mình hỏi là pin của bác vẫn ok chứ? Mình vừa đóng khối pin 16 cell 40135 thì khi chạy điện áp nó sụt so với khi nghỉ như video mình dẫn link, vậy cho mình hỏi là dung lượng pin sẽ tính khi áp nghỉ hay áp đang hoạt động, và pin sụt áp như vậy là bình thường hay pin kém?
              ht...
              hôm nay, 17:56
            • mèomướp
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi mèomướp
              Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
              Hôm qua, 13:11
            • tuyennhan
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi tuyennhan
              Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
              Hôm qua, 09:25
            • tuyennhan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi tuyennhan
              Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
              Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
              Hôm qua, 09:10
            • Ng.Phuong.5
              Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
              bởi Ng.Phuong.5
              Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
              Mấy con...
              09-01-2025, 19:44
            • viettinh
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi viettinh
              Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
              Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
              09-01-2025, 18:12
            • nguyendinhvan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi nguyendinhvan
              Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
              Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
              Cách đơn giản...
              09-01-2025, 00:04
            • mèomướp
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi mèomướp
              Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
              08-01-2025, 19:02
            • tuyennhan
              Trả lời cho Sửa bộ nguồn DC 60V 45A
              bởi tuyennhan
              Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
              08-01-2025, 15:43
            • tuyennhan
              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
              bởi tuyennhan
              Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
              08-01-2025, 15:28
            Đang tải...
            X