Thông báo

Collapse
No announcement yet.

Hướng dẫn làm quen với vi điều khiển 8051

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

  • #16
    Chuong trinh quet led 7 seg cua anh kiên

    Code:
    // chương trinh quet led cua anh kiên
    
    // Khai bao cac file header
    #include	<AT89X52.H>
    #include	<Kit8051.h>
    
    // Khai bao cac bien toan cuc
    unsigned char code LED_code[] =  {Number0,
    				  Number1,
    				  Number2,
    				  Number3,
    				  Number4,
    				  Number5,
    				  Number6,
    				  Number7,
    				  Number8,
    				  Number9};
    
    // Khai bao cac ham
    void Delay(unsigned int n);
    void InitSystem(void);
    void Display(unsigned char digit1,
    	     unsigned char digit2,
    	     unsigned char digit3,
    	     unsigned char digit4);
    
    
    // Dinh nghia cac ham
    void Delay(unsigned int n)
    {
    	unsigned int i,j;
    	for(i=0;i<n;i++)
    		for(j=0;j<100;j++);
    }
    void Display(unsigned char digit1,
    	     unsigned char digit2,
    	     unsigned char digit3,
    	     unsigned char digit4)
    {
    	// Hien thi so thu nhat
    	LED = LED_code[digit1];
    	K1 = 0;
    	Delay(1);
    	K1 = 1;
    
    	// Hien thi so thu hai
    	LED = LED_code[digit2];
    	K2 = 0;
    	Delay(1);
    	K2 = 1;
    
    	// Hien thi so thu ba
    	LED = LED_code[digit3];
    	K3 = 0;
    	Delay(1);
    	K3 = 1;
    
    
    	// Hien thi so thu tu
    	LED = LED_code[digit4];
    	K4 = 0;
    	Delay(1);
    	K4 = 1;
    }
    void InitSystem(void)
    {
    	LCD_E = 0;
    }
    // Chuong trinh chinh
    void main(void)
    {
    	// Khoi tao he thong
    	InitSystem();
    	// Vong lap vo tan
    	while(1)
    	{
    		Delay(10);
    		Display(1,2,3,4);
    	}
    }
    Last edited by VNarmy; 12-03-2007, 23:50.
    n
    ĐT: 0986 492 489

    Tham khảo:

    Comment


    • #17
      file thu vien kit8051.h

      Code:
      /* Cac tin hieu su dung cho LED 7 thanh*/
      #define         LED     	P0
      #define         K1      	P1_0
      #define         K2      	P1_1
      #define         K3      	P1_2
      #define         K4      	P1_3
      
      /* Cac ma LED 7 thanh
      P0.7 = DOT
      P0.6 = G
      P0.5 = F
      P0.4 = E
      P0.3 = D
      P0.2 = C
      P0.1 = B
      P0.0 = A
      */
      #define 	Number0         0xc0
      #define 	Number1         0xF9
      #define 	Number2         0xA4
      #define 	Number3         0xB0
      #define 	Number4         0x99
      #define 	Number5         0x92
      #define 	Number6         0x82
      #define 	Number7         0xF8
      #define 	Number8         0x80
      #define 	Number9		0x90
      
      /* Cac tin hieu su dung cho ma tran phim*/
      #define 	ROW_1		P2_0
      #define 	ROW_2		P2_1
      #define 	ROW_3		P2_2
      #define 	COL_1		P2_3
      #define 	COL_2		P2_4
      #define 	COL_3		P2_5
      
      /* Cac tin hieu su dung cho ADC*/
      #define         ADC_DONE        P3_3
      #define         ADC_CS          P3_7
      #define         ADC_RD          P2_6
      #define         ADC_WR          P2_7
      #define         ADC_DATA        P0
      
      /* Cac tin hieu su dung cho LCD*/
      #define         LCD_RS          P2_6
      #define         LCD_RW          P2_7
      #define         LCD_E           P3_5
      #define         LCD_BL          P3_6
      #define         LCD_DATA        P0
      
      /* Cac tin hieu su dung cho LED hong ngoai*/
      #define		IR_LED		P1_4
      
      /* Cac nguong su dung cho viec phan biet ma hong ngoai
      Ma 1 =  80 xung * 25us = ~2000us
      Ma 2 = 160 xung * 25us = ~4000us
      Ma 3 = 240 xung * 25us = ~6000us
      */
      #define		THRESHOLD_1	0x03
      #define		THRESHOLD_2	0x0B
      #define		THRESHOLD_3	0x13
      #define		THRESHOLD_4	0x1F
      Last edited by VNarmy; 12-03-2007, 23:51.
      n
      ĐT: 0986 492 489

      Tham khảo:

      Comment


      • #18
        Code:
        //ct gửi dữ liệu từ máy tính xuống 8051 va gửi trả lại về máy tính.
        // dùng cổng RS232
        // chương trình này mình copy của Mr Kien.nx
        // bac kien không trách thằng em này chứ.
        
        //-------------------------------------------------------------------
        
        // Khai bao cac file header
        #include	<AT89X52.H>
        #include	<Kit8051.h>
        
        // Khai bao cac bien toan cuc
        
        // Khai bao cac ham
        void InitSystem(void);
        
        // Dinh nghia cac ham
        void InitSystem(void)
        {
        	// Cam LCD
        	LCD_E = 0;
        	// Khoi tao cong noi tiep
        	SCON = 0x50;
        	// Khoi tao Timer1 dung de tao Baud Rate
        	TMOD = 0x20;
        	TH1 = 0xFD;
        	TR1 = 1;
        	// Cho phep ngat cong noi tiep
        	ES = 1;
        	EA = 1;
        }
        void SerialPortInterrupt(void) interrupt SIO_VECTOR
        {
        	unsigned char temp;
        	// Kiem tra xem ngat la do nhan duoc du lieu hay truyen xong du lieu?
        	if(RI==1)
        	{
        		RI = 0;
        		// Doc du lieu nhan duoc tu bo dem
        		temp = SBUF;
        		// Truyen tra lai may tinh
        		SBUF = temp;
        	}
        	else
        	{
        		TI = 0;
        	}
        }
        
        // Chuong trinh chinh
        void main(void)
        {
        	// Khoi tao he thong
        	InitSystem();
        	// Vong lap vo tan
        	while(1);
        }
        Last edited by VNarmy; 12-03-2007, 23:52.
        n
        ĐT: 0986 492 489

        Tham khảo:

        Comment


        • #19
          em dang làm về kết nối RAM cho 51 nhưng mà nó chỉ có hiện tượng dùng được RAM ngoài nhưng mà dữ liệu em lấy ra là sai thì đó là do lỗi gì hả các bác? Mong các bác chỉ dùm!!!!!!!!!!!!

          Comment


          • #20
            Cụ thể hơn đi bác. Sao bác biết là sai data. Còn phần cứng của bác thì sao?

            Comment


            • #21
              Nguyên văn bởi levanlong83 Xem bài viết
              em dang làm về kết nối RAM cho 51 nhưng mà nó chỉ có hiện tượng dùng được RAM ngoài nhưng mà dữ liệu em lấy ra là sai thì đó là do lỗi gì hả các bác? Mong các bác chỉ dùm!!!!!!!!!!!!
              Hãy kiểm tra lại BUS data và ADDRESS từ 8051 to RAM.
              Việc kết nối sai dẫn đến READ data sai.
              Chúc vui.

              Comment


              • #22
                các bác có sơ đồ của một số mạch đơn giản sử dụng 8051?
                em có cái mạch nạp 8051 ko biet dung chương trình gì để nạp.

                Comment


                • #23
                  Ban Thử Dùng Cái Này Xem :
                  Attached Files

                  Comment


                  • #24
                    em có cái mạch nạp 8051 ko biet dung chương trình gì để nạp.
                    Bạn gởi hình cái mạch nạp lên đi. Tôi gởi cho bạn chương trình nạp.

                    Comment


                    • #25
                      các bác cho em hỏi được không ?
                      em mới học về vi điều khiển khi viết chương trình sau bằng Raison IDE thì nó báo lỗi empty absolute segment at adress :0000
                      $include (reg51.inc)
                      org 0000h;
                      org 30H
                      main :mov r0,00h;
                      gio:mov r1,00h;
                      phut:mov r2,00h;
                      giay:lcall ht;
                      call delay1s;
                      inc r2;
                      mov a,r2;
                      cjne a,#60,giay;
                      inc r1;
                      mov a,r1;
                      cjne a,#60,phut;
                      inc r0;
                      mov a,r0;
                      cjne r0,#60,gio;
                      sjmp main;
                      ht: mov P0,r0;
                      mov P1,r1;
                      mov P2,r2;
                      ret
                      delay1s:mov r3,250d;
                      lap: mov r4,200d;
                      lap1: mov r5,20d;
                      lap2: djnz r5,lap2;
                      djnz r4,lap1;
                      djnz r3,lap
                      ret
                      end;

                      Comment


                      • #26
                        Bạn dịch cái câu báo lỗi ra tiếng Việt là sẽ hiểu thôi. Cách giải quyết là thêm lệnh ljmp main sau org 0000h.
                        Lần sau bạn post câu hỏi vào 1 thread thôi nhé.
                        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


                        • #27
                          Nguyên văn bởi giaosucan Xem bài viết
                          làm phát này
                          bác giaoucaan ah! bác có thể cho xin cai link khác về mấy tài liệu về 8051 được không? mấy cái link đó die hết rùi

                          Comment


                          • #28
                            xin chao` cac su huynh, su ty,..
                            em la` thanh` vien moi', muon kham pha' su ki` dieu cua dien tu. rat mong duoc su tro giup nhiet tinh` cua cac su huynh, su ty.
                            gio` em dang bat dau nghien cuu ve` dien tu, khong biet nen su dung phan mem nao` de ho tro day.
                            ai co thi` cho em voi!!!

                            Comment


                            • #29
                              Bác nào có sách của Tống VĂn On không cho em với

                              Comment


                              • #30
                                pác blackmoon ơi.pác có thể gửi cho em 255 tập lệnh dc ko.em mới tập tành học 8051 àh.thanks pác.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X