Thông báo

Collapse
No announcement yet.

Newbie xin được các cao thủ chỉ giáo

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

  • Newbie xin được các cao thủ chỉ giáo

    Tình hình là thế này , em năm nay mới bắt đầu học môn AVR ( dùng ngôn ngữ C ) , mới học đến chương LCD thì được thầy giáo giao một bài tập là LCD hiển thị thời gian có các nút điều chỉnh sử dụng ATEMEGA32 . Hix em còn gà lắm nên mong các bác hướng dẫn em làm bài này với về cả thuật toán và Code . Em mới nhập môn mới học đến LCD thôi ạ nên các bác làm ơn đơn giản dùm ạ , chứ em có tìm được vài bài trên diễn đàn về hiển thị thời gian trên LCD nhưng nhiều linh kiên quá , nhìn mà rối tung lên . Mong các bác giúp đỡ ạ !
    Last edited by quyenmovic; 07-03-2012, 00:52.

  • #2
    Mình có Video này hy vọng có thể giúp được cho bạn.
    Attached Files

    Comment


    • #3
      Mình nghĩ bài này có thể giúp được bạn Đồng hồ thời gian thực DS1307

      Giải pháp điện tử của bạn

      Comment


      • #4
        Hix , cảm ơn các bác , em cũng có đọc qua các bài Đồng hồ thời gian thực DS1307 rồi ạ , nhưng vì bọn em chưa học đến bài I2C nên chưa được dùng DS1307 . Bọn em chỉ được dùng 1 con ATEMEGA32 , 1 LCD để hiện thị và các nút điều chỉnh thôi ạ

        Comment


        • #5
          em dùng ngắt timer để đếm thời gian , ví dụ cho timer 50ms ngắt 1 lần thì sau 20 lần ngắt tăng biến giây 1 lần , tuơng tự cho giờ phút. Trong chuơng trình chính em chỉ điều khiển LCD thôi. Đó là thuật toán còn code thì anh ko rành lắm tại chưa viết cho avr.
          còn lcd em xem trong link đưa kèm có hướng dẫn giao tiếp đầy đủ với LCD.
          Link : http://vagam.dieukhien.net//user_upl.../LCD-VAGAM.rar

          Comment


          • #6
            Click image for larger version

Name:	LCD gio phut giay.jpg
Views:	1
Size:	267.4 KB
ID:	1358327
            Giúp em với các anh ơi , chả hiểu sao cái con số hiển thị giây nó không chạy nữa , chỉ phần giờ thôi các anh ạ , phần ngày tháng em đang nghĩ dở
            HTML Code:
            *****************************************************
            This program was produced by the
            CodeWizardAVR V2.03.9 Standard
            Automatic Program Generator
            © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.com
            
            Project : 
            Version : 
            Date    : 3/7/2012
            Author  : Tita Titon
            Company : 
            Comments: 
            
            
            Chip type               : ATmega32
            Program type            : Application
            AVR Core Clock frequency: 8.000000 MHz
            Memory model            : Small
            External RAM size       : 0
            Data Stack size         : 512
            *****************************************************/
            
            #include <mega32.h>
            #include <delay.h>
             
            
            // Alphanumeric LCD Module functions
            #asm
               .equ __lcd_port=0x12 ;PORTD
            #endasm
            #include <lcd.h>
            
            
            // Declare your global variables here
            
            #define UPG PINA.0
            #define UPP PINA.1
            #define UPS PINA.2
            #define UPD PINA.3
            #define UPM PINA.4
            #define UPY PINA.5
            
            unsigned char gio=0,phut=0,giay=0,ngay=1,thang=1,nam=10;
            unsigned int dinhthoi;
            
            interrupt [TIM0_OVF] void timer0_ovf_isr(void)
            
            {
            #asm("cli")
            dinhthoi++;
            if(dinhthoi == 100)
             {
              dinhthoi=0;
              giay++;
               {
                if(giay==100)
                 {
                  giay=0;
                  phut++;
                  {
                   if(phut==60)
                   {
                    phut=0;
                    gio++;
                    {
                     if(gio==24)
                     {
                      gio=0;
                      ngay++;
                      {
                       if(ngay==31)
                       {
                        ngay=1;
                        thang++;
                        {
                         if(thang==12)
                         {               
                          thang=1;
                          nam++;
                          }
                         }
                        }
                       }
                      }
                     }
                    }
                   }
                  }
                 }
                }
                TCNT0=6;
            #asm("sei")
               }
               void hienthi (void)
            {
            lcd_gotoxy(0,0);
            lcd_putsf("TIME: ");
            lcd_gotoxy(6,0);
            lcd_putchar(48+gio/10);
            lcd_gotoxy(7,0);
            lcd_putchar(48+gio%10);
            lcd_gotoxy(8,0);
            lcd_putsf(":");
            lcd_gotoxy(9,0);
            lcd_putchar(48+phut/10);
            lcd_gotoxy(10,0);
            lcd_putchar(48+phut%10);
            lcd_gotoxy(11,0);
            lcd_putsf(":");
            lcd_gotoxy(12,0);
            lcd_putchar(48+giay/10);
            lcd_gotoxy(13,0);
            lcd_putchar(48+giay%10);
            lcd_gotoxy(0,1);
            lcd_putsf("DATE:");
            lcd_gotoxy(5,1);
            lcd_putchar(48+ngay/10);
            lcd_gotoxy(6,1);
            lcd_putchar(48+ngay%10);
            lcd_gotoxy(7,1);
            lcd_putsf("-");
            lcd_gotoxy(8,1);
            lcd_putchar(48+thang/10);
            lcd_gotoxy(9,1);
            lcd_putchar(48+thang%10);
            lcd_gotoxy(10,1);
            lcd_putsf("-");
            lcd_gotoxy(11,1);
            lcd_putsf("2");
            lcd_gotoxy(12,1);
            lcd_putsf("0");
            lcd_gotoxy(13,1);
            lcd_putchar(48+nam/10);
            lcd_gotoxy(14,1);
            lcd_putchar(48+nam%10);
            }
            
                      
                        
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port A initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTA=0xFF;
            DDRA=0x00;
            
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTB=0x00;
            DDRB=0x00;
            
            // Port C initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTC=0x00;
            DDRC=0x00;
            
            // Port D initialization
            // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
            // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
            PORTD=0x00;
            DDRD=0xFF;
            
            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: 1000.000 kHz
            // Mode: Normal top=FFh
            // OC0 output: Disconnected
            TCCR0=0x03;
            TCNT0=0x00;
            OCR0=0x00;
            
            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer 1 Stopped
            // Mode: Normal top=FFFFh
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer 1 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            
            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer 2 Stopped
            // Mode: Normal top=FFh
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            // INT2: Off
            MCUCR=0x00;
            MCUCSR=0x00;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x01;
            
            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;
            
            // LCD module initialization
            lcd_init(16);
            
            #asm("sei")
            
            while (1)
                  {
                  // Place your code here
                  hienthi();
                  if(!UPG)
                  {delay_ms(50);
                   gio++;
                   if(gio>23) gio=0; 
                  }
                  if(!UPP)
                  {delay_ms(50);
                   phut++;
                   if(phut>59) phut=0;
                  }
                  if(!UPS)
                  {delay_ms(50);
                  giay++;
                  if(giay>59) giay=0;
                  }
                  if(!UPD)
                  {delay_ms(50);
                  ngay++;
                  if(ngay>31) ngay=1;
                  }
                  if(!UPM)
                  {delay_ms(50);
                  thang++;
                  if(thang>12) thang=1;
                  }
                  if(!UPY)
                  {delay_ms(50);
                  nam++;
                  if(nam>99) nam=0;
                  };
                  }
            
            
            }
            Last edited by quyenmovic; 08-03-2012, 03:58.

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X