Thông báo

Collapse
No announcement yet.

Ai giúp đỡ em đoạn code này với ( AVR-Atmega8 )

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

  • Ai giúp đỡ em đoạn code này với ( AVR-Atmega8 )

    Em mới học về vdk. Sau 1 quá trình tự tìm tòi thì có thử làm 1 bài : dùng vdk atmega8, lcd 16x2, mạch em vẽ trên proteus.Nhưng đến khi viết code cho no' ( dung Codevision AVR ) biên dịch gặp một lỗi sau mà ko biết sửa :

    Error: D:\hoctap\do`an\tu tim hieu\baitap_2\lcd.h(38), included from: baitap_2.c: missing '('

    Các pro giúp em với Đây là code của nó:

    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.04.5b Evaluation
    Automatic Program Generator
    © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date : 1/16/2010
    Author : Freeware, for evaluation and non-commercial use only
    Company :
    Comments:


    Chip type : ATmega8
    Program type : Application
    AVR Core Clock frequency: 1.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega8.h>
    #include "lcd.h"


    char str1[16] = "Do Thanh Hung^.^";
    char str2[16] = "Lop DT1001- HPU ";
    //===============================
    void delay(unsigned int time)
    {
    while(time--)
    {
    int k = 121;
    while(k--){}
    }
    }


    //================================
    void main()
    {
    unsigned int i;
    LCD_Init();

    for(i = 0; i<16;i++)
    {
    LCD_Position(0,i);
    LCD_PutChar(str1[i]);
    delay(150);
    }
    for(i = 0; i<16;i++)
    {
    LCD_Position(1,i);
    LCD_PutChar(str2[i]);
    delay(150);
    }
    delay(2000);

    while(1){}

    }

    Còn đây là thư viện "lcd.h" dùng trên project trên.

    /************************************************** **************************/
    /* */
    /* File: lcd.h */
    /* Author: Vu Ha Linh, Automatic Control Deparment */
    /* Ha Noi university of technology */
    /* */
    /************************************************** **************************/
    /* */
    /* Function: This module is a standard LCD (16x2) functions */
    /* */
    /* Input and Output parameters of those subroutines: */
    /* void LCD_Init(void); */
    /* void LCD_Position(unsigned char, unsigned char); */
    /* void LCD_PutCmd(unsigned char); */
    /* void LCD_PutChar(unsigned char); */
    /* void LCD_PrString(char*); */
    /* void LCD_Clear(void); */
    /* void LCD_PrInteger(int); */
    /* */
    /* Note: Must be call LCD_Init() first at the begining of program */
    /* */
    /************************************************** **************************/
    /* */
    /* History: */
    /* Version: */
    /* Date Writer Remark */
    /* */
    /* 30-07-2006 Vu Ha Linh Creating the first version */
    /* */
    /* */
    /************************************************** **************************/

    /************************************************** ***************************
    define Hardware address
    ************************************************** ***************************/
    #define LCD_PORT P1

    sbit LCD_RS = PD^2;
    sbit LCD_RW = PD^3;
    sbit LCD_EN = PD^4;
    sbit LCD_D7 = PB^7;

    #define ReadCommand {LCD_RS = 0; LCD_RW = 1;}
    #define WriteCommand {LCD_RS = 0; LCD_RW = 0;}
    #define WriteData {LCD_RS = 1; LCD_RW = 0;}
    #define LatchData {LCD_EN = 1; LCD_EN = 0;}

    /************************************************** **************************
    define LCD command
    ************************************************** ***************************/
    #define LCD_CLEAR 0x01 // Clear display
    #define LCD_HOME 0x02 // return cursor and LCD to home position
    #define LCD_OFF 0x08 // turn off display and cursor
    #define LCD_DISPLAY_ON 0x0C // turn on display and turn off cursor
    #define LCD_CURSOR_ON 0x0A // turn on cursor and turn off display
    #define LCD_BLINK_CURSOR 0x0E // turn on display and blink cursor
    #define LCD_FONT_8BIT 0x38 // set interace length: 8bits, 2 lines, font 5x8
    #define LCD_FONT_4BIT 0x28 // set interace length: 4bits, 2 lines, font 5x8
    #define LCD_MOVE_CURSOR 0x06 // Entry mode set: set increments mode, not shift (cursor)
    #define LCD_MDRIGHT 0x1C // Move display to the right
    #define LCD_MDLEFT 0x18 // Move display to the left

    /************************************************** **************************
    WaitReady function
    Wait while LCD in execution time
    ************************************************** ***************************/
    void WaitReady(void)
    {
    ReadCommand; // Set Read command mode
    LCD_D7 = 1; // set bit 7 to 1 initially
    while(LCD_D7){ // if bit 7 high lcd still busy
    LCD_EN = 0;
    LCD_EN = 1; // Read bit D7
    }
    }

    /************************************************** **************************
    LCD_PutCmd function
    Write a control byte to LCD // viet' 1 ky tu dieu khien toi lcd
    Input : control byte
    ************************************************** ***************************/
    void LCD_PutCmd(unsigned char cmd)
    {
    WaitReady(); // Wait for LCD ready
    WriteCommand; // set LCD to send mode
    LCD_PORT = cmd; // Prepare to send
    LatchData; // latch data out
    }

    /************************************************** **************************
    LCD_PutChar function
    Write a ASCII symbol to LCD
    Input: ASCII symbol
    ************************************************** ***************************/
    void LCD_PutChar(unsigned char ch)
    {
    WaitReady();
    WriteData;
    LCD_PORT = ch;
    LatchData;
    }

    /************************************************** ***************************
    LCD_PrString function
    Write a string to LCD
    Input: string
    ************************************************** ****************************/
    void LCD_PrString(char *str)
    {
    while(*str!='\0')
    {
    LCD_PutChar(*str);
    ++str;
    }
    }

    /************************************************** ***************************
    LCD_Position function
    Set the position of cursor on LCD // cai` vi tri con tro len lcd
    Input: row, column
    ************************************************** ****************************/
    void LCD_Position(unsigned char row, unsigned char col)
    {
    LCD_PutCmd( (1<<7)|(row<<6)|col );
    }

    /************************************************** ***************************
    LCD_Clear function
    Clear LCD
    ************************************************** ****************************/
    void LCD_Clear()
    {
    LCD_PutCmd(LCD_CLEAR);
    }

    /************************************************** ***************************
    LCD_Init function
    Prepare for display content. Must be called at first chuan bi cho hien thi noi dung
    ************************************************** ****************************/
    void LCD_Init()
    {
    // LCD_PutCmd(0x30); // Data length setting, 8 bits
    // LCD_PutCmd(0x30); // Data length setting, 8 bits
    // LCD_PutCmd(0x30); // Data length setting, 8bits

    LCD_PutCmd(LCD_FONT_8BIT); // Function set: 8 bits mode and font: 5x8
    // LCD_PutCmd(LCD_OFF); // Display and cursor OFF
    // LCD_PutCmd(LCD_CLEAR); // Clear display
    LCD_PutCmd(LCD_MOVE_CURSOR); // Entry mode set: Increment mode, not shift
    LCD_PutCmd(LCD_DISPLAY_ON); // Display ON
    // LCD_PutCmd(LCD_BLINK_CURSOR); // Blink cursor
    }

    /************************************************** **************************
    LCD_PrInteger function
    Display a integer decimal number on LCD
    Input: a integer number
    ************************************************** ***************************/
    void LCD_PrInteger(int num)
    {
    int temp;
    unsigned char i, c[5];

    temp = num;
    if (temp != 0) {
    if (temp < 0) {
    LCD_PutChar('-');
    temp = -temp;
    }
    i = 0;
    while(temp){
    c[i++] = temp%10;
    temp /= 10;
    }
    while(i) LCD_PutChar(c[--i] + '0');
    }
    else LCD_PutChar('0');
    }

    /************************* END OF FILE *******************************/


    Rất mong nhận các pác giúp đỡ. Em xin cam ơn nhìu.
    Last edited by UpaHung; 17-01-2010, 22:25.

  • #2
    Bạn đã cho file lcd.h vào thư mục code chưa ?

    Comment


    • #3
      Nguyên văn bởi duongbk Xem bài viết
      Bạn đã cho file lcd.h vào thư mục code chưa ?
      Hic. Em cho vào rồi và khi biên dịch nó báo lỗi ở câu lệnh trong thư viện "lcd.h" chứ ko phải ở trong file nguồn : Error: D:\hoctap\do`an\tu tim hieu\baitap_2\lcd.h(38), included from: baitap_2.c: missing '(' .Mà file "lcd.h" đó biên dịch với nhiều bài khác ko có vấn đề gì.Em đã cẩn thận post lên hẳn code của "lcd.h" để cho các bác xem mà.

      Comment


      • #4
        trong codevision có thư viện chuẩn của lcd đấy bạn ạ! mình nghĩ dùng thứ đó là hay hơn cả! chỉ tốn 1 cổng vdk thôi!

        Comment


        • #5
          Nguyên văn bởi fiuzu Xem bài viết
          trong codevision có thư viện chuẩn của lcd đấy bạn ạ! mình nghĩ dùng thứ đó là hay hơn cả! chỉ tốn 1 cổng vdk thôi!
          Thank bạn nha để mình thử.Nhưng bài này ai biết được cách sửa lỗi thì cứ giúp mình với.Học hỏi được càng nhiều càng tốt mà

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • iTron
            Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110V
            bởi iTron
            Em được ông anh cho mạch như hình, nhờ ace trong diễn đàn xem giúp mạch này dùng ổn ko và dùng linh kiện công suất nào thì phù hợp.
            Xin cảm ơn...
            hôm nay, 11:27
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Vì sản phẩm của họ dân mình có dùng, và có lẽ cũng không phải là không phổ biến, nên ĐT quyết định gởi thư điện tử tiếng Anh cho họ như sau, ( đã sửa vài từ như được góp ý, vì nếu lịch sự thì dù vòng vo cũng nên phản hồi, vì...
            Hôm qua, 16:36
          • tuyennhan
            Trả lời cho Tiếng Anh cho người Việt
            bởi tuyennhan
            Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
            Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
            23-02-2025, 07:44
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Cám ơn những lời chúc tốt đẹp của em.

            Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

            Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
            23-02-2025, 02:00
          • nhathung1101
            Trả lời cho Tiếng Anh cho người Việt
            bởi nhathung1101
            Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

            Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

            Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
            22-02-2025, 22:18
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

            Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
            22-02-2025, 14:51
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

            Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
            22-02-2025, 14:39
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

            Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
            22-02-2025, 14:28
          • bqviet
            Trả lời cho Tiếng Anh cho người Việt
            bởi bqviet
            Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
            21-02-2025, 20:26
          • mèomướp
            Trả lời cho Tiếng Anh cho người Việt
            bởi mèomướp
            Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
            21-02-2025, 12:32
          Đang tải...
          X