Thông báo

Collapse
No announcement yet.

Giúp Chươnng Trình Hiển Thị Chữ A

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

  • Giúp Chươnng Trình Hiển Thị Chữ A

    chào các bác!
    em có một chương trình nhỏ này mong được các bác giúp đỡ. đó là chương trình cho hiển thị chữ "A" trên led matrrix 8*8.phần cứng em làm như thế này:
    - VDK atmega16
    - PORTC để xuất dữ liệu ra cột thông qua 74hc595
    - PORTB nối với 74hc154 để quét hàng
    sơ đồ:
    Click image for larger version

Name:	chu_A.JPG
Views:	4
Size:	125.8 KB
ID:	1404096

    còn đây là chương trình em viết ma van chưa được mong các bác giúp:
    code_chu_A:

    Code:
    #include <mega16.h>
    #include <delay.h>
    // dinh nghia cac chan cuar 595
    #define Data	PORTC.0
    #define Clk	PORTC.1
    #define Latch	PORTC.2
    // Dinh nghia chan don kenh quet Matran
    #define Rowth	PORTB 
    unsigned int Buff[8][1];
     char  const Font[5]=
    /*0 	A */    {248,36,34,36,248};
    
    void Delay(unsigned int i)
    {
    	while(--i){};
    }
    
    //Check bit5 cua mot bien
    unsigned int  CheckBit5(unsigned int x)
    {
    	return (x>>5);
    }
    
    
    // Gui du lieu ra 595. 
    void Send_1_595(unsigned int a1)
    {
    	unsigned char i;
    	unsigned int Temp;
    	
    	Clk=0;
    
    	Temp=a1;
    	for (i=0;i<=5;i++)
    	  {
    		if (CheckBit5(Temp)==1) Data=1;
    		else Data=0;
    		Temp<<=1;
    		Clk=1;
    		Clk=0;   
    		//delay_ms(10);
    	  }
              Latch=1;//day du lieu ra
    	  Latch=0;//suon len chot du lieu ra	
    }
    
    // chuong trinh con hien thi du lieu trong bo nho dem
    
    void Display(void)
    {
    	unsigned char i,j;
    
    	for (i=1;i<=60;i++)
    	  {
    	  	for (j=0;j<=7;j++)
    		  {
    		  	Send_1_595(Buff[j][0]);// Day du lieu ra
    			Rowth=0; // Tat toan bo  hien thi	
    			Delay(150);
    			Latch=1;// day du lieu ra
    			Latch=0; //suon len chot du lieu ra
    			Rowth=0;
    			Delay(100);
    			Rowth=0b1<<j;		
    			
    			Delay(1);	
    		  }		
     	  }
    }
    
    //////////////////////////////////////////////////////////////////////////////
    //main program
    //////////////////////////////////////////////////////////////////////////////
    void main(void)
    {	
    	
    	DDRC=0xFF;
    	PORTC=0xFF;
    	DDRB=0xff;
    	PORTB=0xff;
    	//Clk=0;
    	//Data=0;
    	//Latch=0;
    	while(1)
    	{
    	  unsigned char  Rowth,col;
    	    for(Rowth=0;Rowth<8;Rowth<<=1)
    	       for(col=0;col<8;col++)
    	       
    	          {  PORTC=Font[col];
    	             PORTC=1<<col;
    	             PORTB=Rowth++;
    	             delay_ms(1);
    	          }  
    
    	};
    
    }
    /////////////////////////////////////////////////////
    // end of main program
    /////////////////////////////////////////////////////
    Last edited by VNarmy; 28-03-2008, 20:22.

  • #2
    một vài góp ý với bạn nè:
    1.xài con 138 để điều khiển 8 hàng thay vì 154 dk 16 hàng
    2.xài spi luôn cho tiện
    Hôm nay phải hơn hôm qua và thua ngày mai!

    Comment


    • #3
      Nguyên văn bởi dinhthai Xem bài viết
      còn đây là chương trình em viết ma van chưa được mong các bác giúp:
      Chưa được? Chưa được ở đâu? Chưa được ntn? Bạn cứ quẳng một đống code lên thì
      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


      • #4
        Nguyên văn bởi stone_fman Xem bài viết
        một vài góp ý với bạn nè:
        1.xài con 138 để điều khiển 8 hàng thay vì 154 dk 16 hàng
        2.xài spi luôn cho tiện
        Em cam ơn anh stone_fman!
        - ý của em là em muón xài con 154 để còn mở rộng về sau .
        - ý của anh là xài spi để quét à? em vừa mới tập tọe được chút ít nên chưa biết xài spi. anh đã có lòng thì giúp em luôn phần này với nhé.
        một lần nưa cảm ơn anh nhé.

        Comment


        • #5
          Nguyên văn bởi VNarmy Xem bài viết
          Chưa được? Chưa được ở đâu? Chưa được ntn? Bạn cứ quẳng một đống code lên thì
          cảm ơn anh đã quan tâm. anh nói đúng quá.theo như em thấy thì :
          - phần gửi dữ liệu ra 595 là tạm được
          - phần quét và cho hiển thị chữ A chắc là có vấn đề.
          em thử mãi mà vẫn không được. anh giúp em với, emcamr ơn anh nhiều.

          Comment


          • #6
            Tui cũng đang bắt đầu ti toe con ATmega16.

            Trong cái phần code, ở hàm main() ghi "unsigned char Rowth" mà phía trên lại khai báo "#define Rowth PORTB" như vậy code có chạy được không ? (tui về C lắm ^_^)

            Tui cũng mới làm xong cái mạch led 8x8 chạy chữ "I (trái tim) U", ko dùng 74138 và 74158, ko dùng lun trans, chạy được nhưng ... hi vọng ko hư led
            PORTA 0->7 : Điều khiển hàng
            PORTC 0->7 : Điều khiển côt
            Nhưng ko hiểu sao ... cái PORTC 3,4,5,6 ko chạy đành phải ... chuyển 4 chân điều khiển đó wa 4 chân PORTD 0->3 (ko bít chíp có hư 4 chân đó ko...Amen )

            Quảng cáo dùm cái mạch nạp AVR của anh Tường lun ^_^ mới mua mấy hum trước chạy ok

            Code:
            #include <mega16.h>
            #include <delay.h>
            
            int text[21]={0b01111110,0b00000000,0b00000000,0b01111110,
                         0b11111111,0b11111111,
                         0b11110011,0b11100001,0b11011110,0b10111110,0b01111101,0b10111110,0b11011110,0b11101101,0b11110011,
                         0b11111111,0b11111111,
                         0b10000000,0b00000000,0b01111111,0b10000000};/**/
                        0b10010110,0b00000000,0b01111111,0b01111111,0b10000000,0b11111111,0b01111111};/**/
                            
            int post[8] ={0b00000001,0b00000010,0b00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};
             
            void main(void)
            {                
                    int i;
                    int count;
                    DDRA=0xFF;
                    DDRC=0xFF;
                    DDRD=0xFF;                  
                    i=0;
                    count = 0;
            	while (1)
            	{           
            	        //1
            	        PORTC = post[0];
            	        PORTA = text[i];
            	        delay_ms(1);
            	        //2
            	        PORTC = post[1];
            	        PORTA = text[i+1];
            	        delay_ms(1);
            	        PORTC = 0x00;
            	          
            	        //3
            	        PORTD = post[0];
            	        PORTA = text[i+2];
            	        delay_ms(1);
            	        
            	        //4
            	        PORTD = post[1];
            	        PORTA = text[i+3]; 
            	        delay_ms(1);
            	        
            	        //5
            	        PORTD = post[2];
            	        PORTA = text[i+4];
            	        delay_ms(1);
            	        
            	        //6
            	        PORTD = post[3];
            	        PORTA = text[i+5];
            	        delay_ms(1);
            	        PORTD = 0x00;
            	        
            	        //7
            	        PORTC = post[6];
            	        PORTA = text[i+6];
            	        delay_ms(1);
            	        
            	        //8
            	        PORTC = post[7];
            	        PORTA = text[i+7];
            	        delay_ms(1);
            	        
            	        count++;
            	        if(count>7)
            	        {       
            	                count=0;
            	                i++;
            	        };
            	        if(i>13)
            	        {
            	                i=0;
            	        }
            	};
            }

            Do PORTC 3,4,5,6 ko xài được nên ko xài được hàm for, phải viết 8 mã cho 8 cái cột led.
            Attached Files
            Last edited by tusat; 31-03-2008, 00:01.

            Comment


            • #7
              Nguyên văn bởi dinhthai Xem bài viết
              - phần gửi dữ liệu ra 595 là tạm được
              - phần quét và cho hiển thị chữ A chắc là có vấn đề.
              em thử mãi mà vẫn không được. anh giúp em với, emcamr ơn anh nhiều.
              Trong code của bạn có khai báo hàm display mà trong main lại không sử dụng nhỉ?

              Comment


              • #8
                Nguyên văn bởi lamour Xem bài viết
                Trong code của bạn có khai báo hàm display mà trong main lại không sử dụng nhỉ?
                cảm ơn bạn!
                mình cũng đã làm theo bạn chỉ dẫn rồi mà vẫn không được. xin bạn chỉ giúp
                thanks!

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X