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

    • nhathung1101
      Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
      bởi nhathung1101
      Vừa thử lại, con loa kẹo kéo Tầu giá 1tr2 và loa Pionner.

      Thử đọc chứ chưa hát:

      - Ủa ái ni thì loa tàu ra đúng.

      - Ủa ái ni trên con Pionner thành Ùa ái ni. Mà từ "ái" lại rõ to.

      Thử "chèm...
      hôm nay, 00:23
    • nhathung1101
      Trả lời cho Sửa bộ nguồn DC 60V 45A
      bởi nhathung1101
      Nhưng anh em nào còn đam mê sửa nguồn thì cứ cố gắng.
      Tiền số đang có giá, mà nguồn cho bọn "trâu cày" toàn vài Kw.
      Làm được vẫn sống tốt. Tôi thì nghỉ hưu rồi.

      Hôm trước có ku em năn nỉ tôi sửa cho nó cái nguồn 12V/170Amp. Tôi bảo đi mua cái mới.
      hôm nay, 00:02
    • nhathung1101
      Trả lời cho Sửa bộ nguồn DC 60V 45A
      bởi nhathung1101
      Ngày xưa, còn làm với bên viễn thông (giờ chẳng thèm làm vì công bèo).
      Tôi sửa nguồn, tối thiểu phải đủ công cụ:
      - Osciloscope.
      - Logic Analyzer (để làm với chuẩn truyền thông)
      - Đồng hồ đo dòng. Đồng hồ đo áp. Đồng...
      Hôm qua, 23:43
    • nhathung1101
      Trả lời cho Sửa bộ nguồn DC 60V 45A
      bởi nhathung1101
      Thì không cấp nguồn là an toàn nhất rồi còn gì? Lo gì cháy nổ.
      Còn đo đạc thì kiểm tra huyết áp hay nhịp tim ở cô hàng xóm vậy.

      Còn Mèo thì toàn xúi thâm, thằng nào nghe cứ lãnh đủ. Chuyên lừa chuột non....
      Hôm qua, 23:32
    • nhathung1101
      Trả lời cho Trình điều khiển bước rời rạc
      bởi nhathung1101
      "Chú ấy" ở bên Quảng Đông đấy. Đang bị "rã rời" rồi, nên đừng hướng vào con đường tội lỗi nữa....
      Hôm qua, 23:26
    • nhathung1101
      Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
      bởi nhathung1101
      Loa Tầu nó đáp ứng được tiếng VN, vì mấy câu hát kiểu "oăng oẳng như sủa" Nhật nó không có. Nó chỉ hát kiểu "đục đục chạc chạc" thôi.
      Nếu thấy loa Tầu hay, thì gỡ cái mác SONY gắn vào là xong. Còn cái loa Nhật thì vứt luôn, chỉnh làm quái gì.
      ...
      Hôm qua, 23:17
    • 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 qua, 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ế...
      10-01-2025, 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 .
      10-01-2025, 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ở ....
      10-01-2025, 09:10
    Đang tải...
    X