Thông báo

Collapse
No announcement yet.

Cần giúp đỡ về code hiển thị trên LCD

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

  • Cần giúp đỡ về code hiển thị trên LCD

    chào các bác, tui đang tìm hiểu tới phần lập trình avr sử dụng LCD 16x2 nhưng code có vấn đề ko chạy được, mong các bác giúp đỡ:

    PHP Code:
    char name[] = "Lê Minh Phuoc";
    char welcome[] = "Welcome to you";
    char learn[] = "AVR Programming";
    unsigned char i;
    unsigned char j;
    float second;
    char *temp = &welcome[0];

    char *substring(char str[], unsigned char startunsigned char length)
    {
        
    char val[17] = "";
        
    char c[1];
        
        while(
    start strlen(str) && start length)
        {
            
    c[0] = str[start++];
            
    strcat(valc);
        }
        return &
    val[0];
    }

    void main(void)
    {
    lcd_init(16);

    0;
    0;
    second 0;

    while (
    1)
          {
          
    // Place your code here      
                
                
    lcd_gotoxy(15 i0);  
                
                if (
    == 15)
                {
                    if (
    16)
                        
    lcd_puts(substring(namej++, i)); 
                    else
                    {
                        
    0;   
                    }
                }  
                else
                    
    lcd_puts(substring(name0, ++i)); 
                
                
    lcd_gotoxy(01);
                if (
    second >= 3)
                {
                    
    second 0;
                    if (
    temp == &welcome[0])
                        
    temp = &learn[0];
                    else
                        
    temp = &welcome[0];
                }
                else
                    
    second += 0.5;
                    
                
    lcd_puts(temp);  
     
                
    delay_ms(500);   
                
    lcd_clear();
          }

    Các đoạn trên đã bỏ các phần ko trọng tâm. Code trên dùng để hiển thị biến name chạy từ phải sang trái liên tục với delay là 200 ms (chạy ở hàng 0), đồng thời hàng 1 hiển thị biến welcome, sau 3 giây hàng 1 sẽ thay đổi thành biến learn, cứ như vậy sau 3s sẽ thay đổi giữa 2 biến welcome và learn.
    Last edited by lion080889; 04-01-2014, 19:13.

  • #2
    Sau 1 ngày tìm tòi, đã khắc phục được, tiện thể share code cho những ai giống mình để tham khảo cho biết ^^

    PHP Code:
    #include <mega8.h>
    #include <string.h>
    #include <delay.h>

    // Alphanumeric LCD Module functions
    #include <alcd.h>

    // Declare your global variables here
    char name[] = "Le Minh Phuoc  ";
    char welcome[] = "Welcome to you";
    char learn[] = "AVR Programming";
    unsigned char i;
    unsigned char j;
    float second;
    char *temp = &welcome[0];
    char text[17] = "";

    void main(void)
    {
    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTB Bit 0
    // RD - PORTB Bit 1
    // EN - PORTB Bit 2
    // D4 - PORTB Bit 4
    // D5 - PORTB Bit 5
    // D6 - PORTB Bit 6
    // D7 - PORTB Bit 7
    // Characters/line: 16
    lcd_init(16);

    0;
    0;
    second 0;

    while (
    1)
          {
          
    // Place your code here      
                 
                
    text[0] = 0;    
                
    lcd_gotoxy(15 i0);  
                
                if (
    strlen(name))   
                {        
                    
    strncat(textname, ++i);
                    
    lcd_puts(text);
                }
                else
                {
                    if (
    strlen(name))
                    {   
                        
    strncat(text, &name[++j], j);  
                        
    lcd_puts(text);  
                    }
                    else
                        
    0;
                }                
                
                
    lcd_gotoxy(01);
                if (
    second >= 3)
                {
                    
    second 0;
                    if (
    temp == &welcome[0])
                        
    temp = &learn[0];
                    else
                        
    temp = &welcome[0];
                }
                else
                    
    second += 0.6;
                    
                
    lcd_puts(temp);  
     
                
    delay_ms(600);   
                
    lcd_clear();
          }

    FIle source code và hex:
    LCD.zip

    Clip em nó đây

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X