1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Mô phỏng 8051 trên proteus 8051 & LCD

Thảo luận trong 'Vi điều khiển - Mạch Số' bắt đầu bởi admin, 11 Tháng mười một 2010.

  1. admin Administrator

    Số bài viết: 683
    Đã được thích: 64
    Điểm thành tích: 28
    LCD (Liquid crystal display) tạm dịch là màn hình tinh thể lỏng. Để làm việc với 1 LCD ta cần biết các lệnh của nó, và sau đây là các chân của LCD:

    [IMG]

    Chân 15, 16 là A, K . Nó được nối với 2 chân của 1 con led dùng để sáng LCD trong bóng tối nhưng ở đây kô dùng đến!
    Tiếp đó là bảng lệnh:

    [IMG]

    Còn đây là hình ảnh trong proteus:

    [IMG]

    Đây là sơ đồ mình dùng luôn giao tiếp máy tính để truyền dữ liệu ra LCD mình sẽ nói chi tiết ở bài sau, các bạn chỉ cần quan tâm đến LCD hiện dòng chữ:
    “ Bai4: 8051 VA LCD “
    Dưới đây là đoạn code:
    Mã:
    #include <at89x51.h>
    
    #define RS P3_5
    #define RW P3_6        //RW=0 => ghi
    #define EN P3_7        //RW=1 => doc
                        //RS=0 => code
                        //RS=1 => data
    #define LCD_PORT P1
    
    void delay_5ms(){
    int i,j;
    for(i=0;i<250;i++)
        for(j=0;j<4;j++){}
    }
    
    void delay_15ms(){
    int i,j;
    for(i=0;i<250;i++)
        for(j=0;j<100;j++){}
    }
    void LCDWriteCmd(unsigned char c)     //CT con ghi du lieu len LCD
    {
     RS=0;
     RW=0;
     LCD_PORT=c;
     EN=1;
     EN=0;
     delay_5ms();
    }
    
    void LCDWriteData(unsigned char c)     //CT con doc du lieu tu LCD
    {
     RS=1;
     RW=0;
     LCD_PORT=c;
     EN=1;
     EN=0;
     delay_5ms();
    }
    
    void LCD_init()          // Khoi tao LCD
    {
     delay_15ms();
    
     LCDWriteCmd(0x38);
     LCDWriteCmd(0x0C);
    // LCDWriteCmd(0x06);
     LCDWriteCmd(0x01);      // Xoa man hinh LCD
    }
    
    void LCD_clear()
    {
     LCDWriteCmd(0x01);
    }
    
    void LCD_home()
    {
     LCDWriteCmd(0x80);
    }
    
    void LCD_putstr(unsigned char *s)
    {
     while (*s)
     {
      LCDWriteData(*s);
      s++;
     }
    }
    
    void main()
    {
    
    LCD_init();
    LCDWriteCmd(0x01); //Xoa man hinh
    LCDWriteCmd(0x80); // Dua con tro ve dau dong 1
    LCDWriteData('B');
    LCDWriteData('A');
    LCDWriteData('I');
    LCDWriteData('4');
    LCDWriteData(':');
    
    LCDWriteCmd(0xC0);
    LCD_putstr("8051 VA LCD");
    while (1)  {}
    }
    Và cuối cùng là link dow file mô phỏng + file hex:
    http://www.mediafire.com/?sharekey=2857f12fe3e5d90be5c3dee5769931ece04e75f6e8ebb871
    xuanlienbk thích bài này.
  2. chukhoadau New Member

    Số bài viết: 74
    Đã được thích: 0
    Điểm thành tích: 0
  3. alonecrjs New Member

    Số bài viết: 7
    Đã được thích: 0
    Điểm thành tích: 1
  4. spktptitet New Member

    Số bài viết: 35
    Đã được thích: 0
    Điểm thành tích: 0
  5. hailua64 New Member

    Số bài viết: 10
    Đã được thích: 0
    Điểm thành tích: 0
  6. lvvinh89 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
  7. minhduc9x11 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
  8. xuanlienbk New Member

    Số bài viết: 3
    Đã được thích: 0
    Điểm thành tích: 1
    Giới tính: Nam

Chia sẻ trang này