Thuật toán lập trình chỉnh giờ cho đồng hồ số !???

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • AKA_QUAN
    Thành viên chính thức
    • Jul 2011
    • 77

    #1

    Thuật toán lập trình chỉnh giờ cho đồng hồ số !???

    Mình có mạch đồng hồ như sau, có 6 led giờ phút giây . Quét led dùng timer0 còn tăng tăng giờ phút giây thì dùng timer 1. Có 4 nút trên Port P3.2 ->P3.5. Bạn nào đã từng lập trình chỉnh giờ trên đồng hồ rồi cho xin code (C hay ASM) hoặc lưu đồ thuật toán cũng được.
  • quangtung112
    Thành viên tích cực
    • Mar 2011
    • 214

    #2
    ở đây cũng có các đồng hồ số, b đọc tham khảo.
    WS:
    Blog:

    Comment

    • AKA_QUAN
      Thành viên chính thức
      • Jul 2011
      • 77

      #3
      Nguyên văn bởi quangtung112 Xem bài viết
      ở đây cũng có các đồng hồ số, b đọc tham khảo.
      http://www.dientuvietnam.net/forums/...14/index2.html
      Chả có gì hết !!

      Comment

      • mast090
        Thành viên tích cực
        • Oct 2010
        • 1018

        #4
        ko ai người ta làm đồng hồ = timer cả, 1 ngày sai vài phút là may, tham khảo các ic giờ mà làm thêm vào
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment

        • chung1608
          Thành viên tích cực
          • Sep 2009
          • 4160

          #5
          Nguyên văn bởi AKA_QUAN Xem bài viết
          Mình có mạch đồng hồ như sau, có 6 led giờ phút giây . Quét led dùng timer0 còn tăng tăng giờ phút giây thì dùng timer 1. Có 4 nút trên Port P3.2 ->P3.5. Bạn nào đã từng lập trình chỉnh giờ trên đồng hồ rồi cho xin code (C hay ASM) hoặc lưu đồ thuật toán cũng được.
          - Gán các giá trị giờ-phút- giây và bank thanh ghi.
          - Định giá trị của R0 để giá trị của R0 là địa chỉ theo thứ tự của giờ-phút- giây.
          - Ngắt ngoài 0 sẽ tăng tuần hoàn các giá trị địa chỉ của R0
          - Ngắt ngoài 1 tăng giá trị được gán vào R0 và kiểm soát ko cho quá 60 phút, 60 giây và 24 giờ

          Comment

          • AKA_QUAN
            Thành viên chính thức
            • Jul 2011
            • 77

            #6
            Nguyên văn bởi mast090 Xem bài viết
            ko ai người ta làm đồng hồ = timer cả, 1 ngày sai vài phút là may, tham khảo các ic giờ mà làm thêm vào
            Mình làm đồng hồ số không nhớ nên chưa dùng IC nhớ giờ, thầy mình bảo là vào chế độ chỉnh giờ MODE trong hàm main() vì quét led và tính giờ đã do ngắt timer đảm nhận.
            Tuy nhiên mình chưa rành lằm về thuật toán quét phím mà thôi !

            Comment

            • mast090
              Thành viên tích cực
              • Oct 2010
              • 1018

              #7
              như đồng hồ mình đã làm thì cũng như bạn nói, bạn đã nhét hết quét led và tính giờ vào ngắt timer rồi thì việc quét phím nhấn cứ để nó vào 1 hàm lặp vô hạn trong main là đc, lúc nào nó cũng ở chế độ chờ bạn nhấn phím, mà hiển thị led vs tính giờ vẫn đc đảm bảo
              Website chính thức đổi địa chỉ website thành
              Mời các bạn ghé thăm !!!

              Comment

              • AKA_QUAN
                Thành viên chính thức
                • Jul 2011
                • 77

                #8
                Nguyên văn bởi mast090 Xem bài viết
                như đồng hồ mình đã làm thì cũng như bạn nói, bạn đã nhét hết quét led và tính giờ vào ngắt timer rồi thì việc quét phím nhấn cứ để nó vào 1 hàm lặp vô hạn trong main là đc, lúc nào nó cũng ở chế độ chờ bạn nhấn phím, mà hiển thị led vs tính giờ vẫn đc đảm bảo
                Vậy bạn có lưu đồ thuật toán không cho xin cái !!

                Comment

                • tuanvu9490
                  Thành viên mới
                  • Nov 2009
                  • 3

                  #9
                  Không nên dùng timer vì không chính xác, và không lưu thời gian khi mất điện, khuyên bạn nên xài các IC thời gian thực như DS1307, DS12C887.... nhưng tớ khuyên nên xài 12C887 vì chính xác hơn, còn thằng 1307 thì 1 ngày sai vài giây
                  |

                  Comment

                  • chung1608
                    Thành viên tích cực
                    • Sep 2009
                    • 4160

                    #10
                    Nguyên văn bởi tuanvu9490 Xem bài viết
                    Không nên dùng timer vì không chính xác, và không lưu thời gian khi mất điện, khuyên bạn nên xài các IC thời gian thực như DS1307, DS12C887.... nhưng tớ khuyên nên xài 12C887 vì chính xác hơn, còn thằng 1307 thì 1 ngày sai vài giây
                    chính xác hay ko phụ thuộc trình độ thiết kế mạch và linh kiện người mua xịn hay dỏm

                    Comment

                    • AKA_QUAN
                      Thành viên chính thức
                      • Jul 2011
                      • 77

                      #11
                      Xin mọi người tập trung vào vấn đề 1 chút, mình làm đồng hồ không nhớ nên không cần IC, cái mình cần làm một thuật toán chỉnh giờ trong đồng hồ mà thôi !

                      Comment

                      • OoMrBayoO
                        Thành viên chính thức
                        • Jul 2011
                        • 88

                        #12
                        Ví dụ bạn có 3 nút chỉnh là: set, up, down (tùy bạn ghép nối và định nghĩa). Thuật toán là ấn set lần 1 chỉnh giờ, lần 2 chỉnh phút, lần 3...
                        Code:
                        void chinhgio()
                        {
                                delay_ms(15);
                        	//set
                        	if(!set)
                        	{
                        	mode++;                       //mode=1 chỉnh gio, mode=2 chinh phut
                        	if(mode>2) mode=0;
                        	while(!set);
                        	delay_ms(15);
                        	}
                        	//up
                        	if(!up)
                        	{
                        	switch(mode)
                        	{
                        	case 1: gio++;if(gio>12) gio=1;break;
                        	case 2: phut++;if(phut>59) phut=0;break;
                        	}
                        	while(!up);
                        	delay_ms(15);
                        	}
                        	//down
                        	if(!down)
                        	{
                        	switch(mode)
                        	{
                        	case 1: gio--;if(gio<0) gio=12;break;
                        	case 2: phut--;if(phut<0) phut=59;break;
                        	}
                        	while(!down);
                        	delay_ms(15);
                        	}
                        }

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...