Thông báo

Collapse
No announcement yet.

giup minh lap trinh lcd

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

  • giup minh lap trinh lcd

    minh co 1 doan cose sau nhung luc bat tay vao lam thi ko biet phai sua the nao cac ban giup minh voi
    Code:
    #ifndef __LCD_H__
    #define __LCD_H__
    
    #define Data_LCD P2
    
    sbit RS_LCD = P3^7;
    sbit RW_LCD = P3^6;
    sbit EN_LCD = P1^7;
    
    sbit Data_LCD_7 = P2^7;
    
    ///////////////////////////
    void wait_lcd();
    void init_lcd();
    void clear_lcd();
    void write_lcd(unsigned char character[14]);
    ///////////////////////////
    void movetoxy(unsigned char column, unsigned char row);
    void delay(unsigned char count);
    //////////////////////////////////////////////
    //	CHECKING THE BUSY STATUS OF THE LCD 	//
    //////////////////////////////////////////////
    void wait_lcd()
    {
     while(1)
     {
     //LCD_Busy:
    	RS_LCD = 0;						// It's command
    	RW_LCD = 1;						// It's Read Command
    	Data_LCD = 0xFF;				// P2_x = 1
    	EN_LCD = 1;					// Start LCD command
    
    	if(Data_LCD_7==0)				// If bit 7 low, LCD free
    	 break;//goto LCD_Busy1;
     }
    
    	EN_LCD = 0;					// Finish the command
    	RW_LCD = 0;						// Turn off RW for future commands
    	
    }
    //////////////////////////////////////////
    //		INITIALIZING THE LCD			//
    //////////////////////////////////////////
    void init_lcd()
    {
    	RS_LCD = 0;
    	Data_LCD = 0x38;
    	EN_LCD = 1;
    	EN_LCD = 0;
    
    	wait_lcd();
    
    	RS_LCD = 0;
    	Data_LCD = 0x0C;		// Inititalizing LCD without cursor
    	EN_LCD = 1;
    	EN_LCD = 0;
    
    	wait_lcd();
    
    	RS_LCD = 0;
    	Data_LCD = 0x06;
    	EN_LCD = 1;
    	EN_LCD = 0;
    
    	wait_lcd();
    }
    //////////////////////////////////////
    //		CLEARING THE DISPLAY 		//
    //////////////////////////////////////
    void clear_lcd()
    {
    	RS_LCD = 0;
    	Data_LCD = 0x01;
    	EN_LCD = 1;
    	EN_LCD = 0;
    
    	wait_lcd();
    }
    //////////////////////////////////////////
    //		WRITING TEXT TO THE LCD			//
    //////////////////////////////////////////
    void write_lcd(unsigned char character[41])
    {
    	unsigned char i;
    	for(i=0;i<41;i++)
    	{
    		if(character[i]=='@')
    			break;
    		RS_LCD = 1;
    		Data_LCD = character[i];
    		EN_LCD = 1;
    		EN_LCD = 0;
    
    		wait_lcd();
    	}
    }
    //////////////////////////////////////////////
    //			Setting postition cursor		//
    //////////////////////////////////////////////
    void movetoxy(unsigned char column, unsigned char row)
    {
    	unsigned char pos;
    	switch(row)
    	{
    	case 1:
    	{
    	 	pos = 0x7F + column;
    		RS_LCD = 0;
    		Data_LCD = pos;
    		EN_LCD = 1;
    		EN_LCD = 0;
    		wait_lcd();
    		break;
    	}
    
    	default:
    	{
    	 	pos = 0xBF + column;
    		RS_LCD = 0;
    		Data_LCD = pos;
    		EN_LCD = 1;
    		EN_LCD = 0;
    		wait_lcd();
    		break;
    	}
      }
    }
    ////////////////////////////////////////
    void delay(unsigned char count)
    {
    	int i;
    	for(i=0;i<count*10;i++)
    		;
    }
    ////////////////////////////////////////
    ///////////////// END /////////////////
    #endif


    minh da thay count column row bang 1 so bat ky va thay character bang chu minh muon hien thi nhung ko dc
    minh moun xuat hien chu T tren man lcd hi phia sua j trong cose cua minh dua ra
    Last edited by VNarmy; 21-03-2008, 12:18.

  • #2
    Trước khi trả lời bạn mình muốn nhắc nhở bạn vài điều:
    - Bạn cần viết có dấu nếu không mình sẽ move vào thùng rác
    - Các đoạn code bạn cần phải viết trong tag code để người xem dễ theo dõi

    Về đoạn code này mình thấy có dùng file LCD.H ko biết bạn đã cho vào chưa. Thứ 2 bạn kiểm tra xem phần cứng có đúng như define ở đây ko. Tốt nhất bạn post sơ đồ nguyên lý lên thì mới biết đc.

    Chúc vui.
    AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
    Xem thêm tại Online Store ---> Click here
    Mob: 0982.083.106

    Comment


    • #3
      nhờ các bác chỉ giùm hộ em đoạn chương trình sau sai ở đâu nhé.em đau đầu mãi mà không nghĩ ra được.em mới tìm hiểu về LCD mong các bác thông cảm
      Code:
      #include "regx51.h"
      #include "stdio.h"
      #include "LCD.h"
      sbit	PORT_LCD = P1;
      sbit	E = P3^2;
      sbit	RW = P3^1;
      sbit	RS = P3^0;
       //ham delay
       void delay(unsigned int ms)
       	{
      	 unsigned int i,j;
      	 for (i=0;i<ms;i++)
      	 for (j=0;j<10;j++)
      	 {}
      	 }
      
      //thoi gian cho LCD thuc hien xong lenh
       void wait_LCD (void)
       	{ 
      	  P1_7=1;
      	  RS=0;//gui lenh len LCD
      	  RW=1;//yeu cau doc du lieu tu LCD xuong
      	  while (P1_7==1)//trong khi P1^7 =1 tuc la LCD dang ban cho den khi P1^7=0
      	{
      	 E=0;
      	 E=1;
      	 }
      	 }
      //chuong trinh gui 1 lenh dk len LCD
       void send_command(unsigned char my_command)
       	{
      	 P1=my_command;
      	 RS=0;//RS=0 gui lenh ,RS=1 gui du lieu
      	 RW=0;//RW=0 ghi hoac gui lenh len LCD
      	 E=1;
      	 E=0;
      	 wait_LCD();
      	 }
      //thiet lap ban dau cho LCD
       void init_LCD ()//khoi tao LCD
       	{
      	 delay(500);
      	 send_command(0x38);//dung LCD 2*16,ma tran 5*7
      	 send_command(0x08);//xoa man hinh
      	 send_command(0x0C);//tro ve dau dong;
      	 send_command(0x01);//bat hien thi,tat con tro
      	 send_command(0x02);//dua con tro ve dau dong
      	 }
      //gui 1 ky tu len LCD
       void send_char(char my_char)//my_char o dang hex theo max ASCII
       	{
      	 P1=my_char;
      	 RS=1;//gui du lieu
      	 RW=0;//gui du lieu len LCD
      	 E=1;
      	 E=0;
      	 wait_LCD();
      	 }
       
      main (void)
       {while (1)
        {
        init_LCD();
        delay(250);
         send_char(0x65);
         }
        }
      em mô phỏng bằng proteus ,tần số LCD là 250kHZ, của 8051 là 1MHZ
      các bác giúp em với nhé!
      Last edited by VNarmy; 24-03-2008, 16:14. Lý do: Lần sau nhớ đặt đoạn mã trong tag code

      Comment


      • #4
        Mỗi loại LCD có một đoạn Init khác nhau. Với LCD thì mô phỏng là vô nghĩa. Mà tại sao lại có tần số của LCD nhỉ. Có lẽ bạn đã lấy nhầm loại LCD dạng số.
        AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
        Xem thêm tại Online Store ---> Click here
        Mob: 0982.083.106

        Comment


        • #5
          em mô phỏng bằng lcd loại LM020L mà.anh xem chương trình của em viết như trên liệu có ổn không ạ?em chỉ chạy được có 1 đoạn rồi nó lại báo và dừng chương trình,lcd không hiển thị được gì cả.anh xem giúp em với!

          Comment


          • #6
            cảm ơn các bác nhiều. em lam cho xuất hiên được chữ rồi nhưng lại gạp phải sự cố là khi cho chữ xuất hiện trên LCD thì các ô khác ngoài kỹ tự cũng hiện lên ( các ô vuông màu đen a ) là sao các bác. ( T__T).

            day la truong trinh e viet cac bac sua giup e

            #include <REGX52.H>
            #include "LCD.h"

            void main()
            {
            delay(10);
            init_lcd();
            clear_lcd();
            delay(100);
            write_lcd("ChoQuan");
            movetoxy(5,2);
            delay(10);
            while(1)
            {
            delay(1);
            }
            }

            Comment


            • #7
              Nguyên văn bởi nha_que_goc Xem bài viết
              cảm ơn các bác nhiều. em lam cho xuất hiên được chữ rồi nhưng lại gạp phải sự cố là khi cho chữ xuất hiện trên LCD thì các ô khác ngoài kỹ tự cũng hiện lên ( các ô vuông màu đen a ) là sao các bác. ( T__T).

              day la truong trinh e viet cac bac sua giup e

              Code:
              #include <REGX52.H>
              #include "LCD.h"
              
              void main()
              {   
              	delay(10);    
              	init_lcd();
              	clear_lcd();
              	delay(100);
              	write_lcd("ChoQuan"); 
                	movetoxy(5,2);
              	delay(10);
              	while(1)
              	{
              		delay(1);
              	}
              }
              Bạn chỉnh lại độ tương phản đi. Độ tương phản bạn để đậm quá.
              AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
              Xem thêm tại Online Store ---> Click here
              Mob: 0982.083.106

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • 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 .
                Hôm qua, 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....
                Hôm qua, 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
              • vi van pham
                Trả lời cho Tiếng Anh cho người Việt
                bởi vi van pham
                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                20-02-2025, 21:31
              • bqviet
                Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                bởi bqviet
                Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                20-02-2025, 17:22
              Đang tải...
              X