1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giáo trình Vi điều khiển: Phần 2 - Lâm Quang Chuyên

56 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 56
Dung lượng 5,54 MB

Nội dung

Tiếp phần 1, Giáo trình Vi điều khiển: Phần 2 cung cấp cho người học những kiến thức như: Hoạt động ADC; Hoạt động USART; Hoạt động SPI; Hoạt động I2C. Mời các bạn cùng tham khảo!

Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 Chương BỘ BIẾN ĐỔI TƯƠNG TỰ SANG SỐ (ANALOG TO DIGITAL CONVERTER) -57/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 6.1 GIỚI THIỆU 6.1.1 Giới thiệu Bộ biến đổi ADC biến đổi tín hiệu từ tương tự sang tín hiệu số, tùy thuộc vào độ phân giải (số bit biến đổi) tốc độ biến đổi độ sai số mà ta có chất lượng biến đổi khác nhau, tùy vào ứng dụng cụ thể mà ta chọn biến đổi ADC cho phù hợp với cơng việc Việc biến đổi tín hiệu từ tương tự sang số có nhiều ứng dụng thực tế: Đo lường nhiệt độ, độ ẩm, cân điện tử, biến đổi tín hiệu âm để lưu trữ sang dạng số… Đối với vi điều khiển atmega16 ta có thơng số sau:  Là biến đổi tín hiệu tương tự (0 – VCC) sang tín hiệu số với giá trị tương ứng, độ phân giải tối đa 10 bit ~ 1023 bước  Độ xác ± 2LSB  Các chân biến đổi ADC từ PA.0 đến PA.7 thời điểm có chân biến đổi  Mối quan hệ điện áp ngõ vào (điện áp cần biến đổi), điện áp tham chiếu độ phân giải: a Vin b Vref (6.1) Trong đó: o a: Giá trị số sau biến đổi (thay đổi từ đến 1023) o Vin: Điện áp ngõ vào (0 – 5VDC) o Vref: Điện áp tham chiếu (0 – 5VDC) o b: số bit biên đổi (độ phân giải) atmega b = 10 -58/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 Việc chọn điện áp tham chiếu phụ thuộc vào độ phân giải số bit thiết bị tính sau: Vref  dpg.2b Với: (6.2) dpg: độ phân giải thiết bị, cảm biến Hình 6.1 Tín hiệu tương tự tín hiệu số 6.1.2 Bài tập ví dụ Ví dụ 1: Một biến đổi ADC có điện áp ngõ vào 1,35 volt, độ phân giải 5mv, số bit biến đổi 10 bit, hỏi giá trị ngõ điện áp tham chiếu bao nhiêu? Giải: Dựa vào công thức 6.2 ta có điện áp tham chiếu là: Vref = dpg.2b = 0.005.210 = 5.12 (volt) Giá trị ngõ theo công thức 6.1 là: a Vin b 1.35  *1024  270 Vref 5.12 Ví dụ 2: Sau biến đổi ADC, ngõ nhận là: 0x253, hỏi điện áp tham chiếu giá trị điện áp ngõ vào bao nhiêu, biết số bit sử dụng bit, độ phân giải 10mVolt Giải: Điện áp tham chiếu theo công thức 6.2 là: Vref = dpg.2b = 0.01.28 = 2.56 (volt) Điện áp ngõ vào theo công thức 6.1 là: Vin  a.Vref b  595 * 2.56  1.49 volt 1024 -59/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 6.2 CÁC THANH GHI LIÊN QUAN 6.2.1 Thanh ghi ADMUX Bit Read/ Write Giá trị ban đầu REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 RW RW RW RW RW RW RW RW 0 0 0 0 Hình 6.2 Thanh ghi ADMUX  Bit – 6: REFS0.1 chọn điện áp tham chiếu xem bảng bên Stt REFS1 REFS0 Nguồn điện áp tham chiếu 0 AREF, không sử dụng điện áp tham chiếu nội 1 AVCC với tụ đặt chân AREF Không sử dụng 1 Điện áp tham chiếu nội 2.56V với tụ chân AREF BẢNG 6.1 Chọn điện áp tham chiếu  Bit 5: ADLAR (ADC Left Adjust Result): bit dùng để chọn byte cao, byte thấp liệu, ADLAR = 0, ADCL lưu bit0 7, ADCH lưu bit8.9 Khi ADLAR = ngược lại Hình 6.3 Thanh ghi liệu ADC ADLAR = Hình 6.4 Thanh ghi liệu ADC ADLAR = -60/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16  Bit 4:0 MUX4:0 Dùng chọn kênh ngõ vào độ lợi biến đổi ADC MUX4 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 Single Positive Negative Ended Input Differential Differential Input Input ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 KHÔNG SỬ DỤNG Gain KHÔNG SỬ DỤNG ADC0 ADC1 ADC0 ADC1 ADC2 ADC3 ADC2 ADC3 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC0 ADC0 ADC0 ADC0 ADC2 ADC2 ADC2 ADC2 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC2 ADC2 ADC2 ADC2 ADC2 ADC2 10x 10x 200x 200x 10x 10x 200x 200x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1.22V (VBG) KHÔNG SỬ DỤNG 0V (GND) Bảng 6.2 Các chân ngõ vào độ lợi -61/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 6.2.2 Thanh ghi ADCSRA Bit Read/ Write Giá trị ban đầu ADEN ADSC ADATE RW RW RW 0 ADIF RW ADIE ADPS2 ADPS1 ADPS0 RW RW RW RW 0 0 Hình 6.5 Thanh ghi ADCSRA  Bit (ADEN): Bit cho phép hoạt động ADC, không không cho phép hoạt động Nếu bit viết vào giá trị khơng lúc biến đổi ADC hoạt động ADC bị hủy bỏ  Bit 6(ADSC): Bắt đầu hoạt động ADC, bit bắt đầu biến đổi ADC, trở mức logic không sau biến đổi xong, viết logic vào bit khơng có giá trị  Bit 5(ADATE): Khi bit cho phép nguồn kích hoạt ADC  Bit 4(ADIF): Cờ ngắt hoạt động ADC, sử dụng ngắt cờ bật lên biến đổi ADC hoàn tất, hoạt động ngắt cờ tự động xóa khơng, khơng sử dụng ngắt muốn xóa cờ phải ghi mức logic vào  Bit 3(ADIE): Cho phép ngắt hoạt động ADC, bit cho phép hoạt động ADC, hoạt động ADC hồn thành kiện ngắt kích hoạt  Bit – (ADPS2 0): Chọn chia (thời gian biến đổi ADC) hoạt động ADC Stt ADPS2 ADPS1 ADPS0 Hệ số chia 0 2 0 4 1 0 16 1 32 1 64 1 128 BẢNG 6.3 Chọn tần suất lấy mẫu -62/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 Hình 6.6 Bộ chia hoạt động ADC Hình 6.7 Giản đồ thời gian cho lần biến đổi ADC Hình 6.8 Giản đồ thời gian cho lần biến đổi ADC thứ -63/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 6.2.3 Thanh ghi SFIOR Bit Read/ Write Giá trị ban đầu ADTS2 ADTS1 RW RW 0 ADTS0 RW RW ACME RW PUD RW PSR2 RW PSR10 RW 0 0 0 Hình 6.9 Thanh ghi SFIOR  Bit – (ADTS2 0) Các nguồn kích hoạt ADC Stt ADTS2 ADTS1 ADTS0 0 0 1 1 0 1 0 1 1 1 Nguồn kích hoạt Biến đổi ADC liên tục So sánh điện áp chân AIN0 AIN1 Tác động chân ngắt vi điều khiển Khi OCR0 = TCNT0 Khi Timer/Counter0 tràn Khi OCR1B = TCNT1 Khi Timer/Counter1 tràn Khi đọc giá trị ghi TCNT1 Bảng 6.4 Các nguồn kích hoạt ADC Hình 6.10 Các tác nhân kích hoạt ADC  Bit – 0: Các bit không sử dụng hoạt động ADC -64/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 6.3 BÀI TẬP VÍ DỤ Ví dụ 1: Cho ghi ADMUX có giá trị 0xED, điện áp chân ADC3 300mV, ADC2 = 500mV, hỏi giá trị ADCH, ADCL bao nhiêu? Giải: Ta có gán bit vào ghi ADMUX hình vẽ sau Bit Read/ Write Giá trị REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 RW RW RW RW RW RW RW RW 1 1 1 Bit – 6: REFS1=1; REFS0=1 dựa vào bảng 6.2, ta thấy điện áp tham chiếu điện áp nội có giá trị 2.56 volt Bit 5: ADLAR = nên giá trị lưu ghi ADCH ADCL là: ADCH = bit9 ADCL = bit1.0 Bit – 0: MUX = 01101 dựa vào bảng 6.3 trang ta nhận thấy độ lợi GIAN = 10 = ( − ) 512 Như giá trị ghi ADCR ADC = 512*10*(300-500)/2560= -400 = 1024 – 400 = 0x270 = 0b1001110000 Vậy ADCH = 0b10011100 = 0x9C ADCL = 0b00 . .=0x00 Ví dụ 2: Viết chương trình nhấn nút SW chân 16 (INT0 – PB2) vi điều khiển biến đổi tín hiệu ADC từ chân PA5 sau hiển thị kết PORTD cho byte cao (bit9.8) PORTC cho byte thấp (bit7 0) Giải: Các bước thực hiện:  Xác định tác nhân kích hoạt ADC  Xác định điện áp tham chiếu  Xác định liệu lưu ghi ADCL, ADCH  Xác định tần suất lấy mẫu  Xác định chân cần biến đổi ADC  Xác định xem có ngắt hay khơng Tác nhân kích hoạt ADC: Ngắt ngồi INT0 ADTS2.0 = 010 ADATE = Điện áp tham chiếu: -65/115- Biên soạn: Lâm Quang Chuyên Chương Biến đổi tương tự sang số Bài giảng vi điều khiển Atmega16 Ta chọn Vref = 2.56v (internal reference) nên REFS1.0 = 11 Xác định liệu ghi Vì PORTB = bit9.8 PORTC = bit7.00 nên bit ADLAR = Tần suất lấy mẫu: Trong đề không đề cập đến tần suất biến đổi ADC nên ta chọn tùy ý, ta chọn thời gian nhanh fadc = fck / 2, ADPS2.0 = 000 Chân cần biến đổi ADC: PA5 nên MUX4 0: 00101 Xác định ngắt: Có sử dụng ngắt nến ADIE = Dựa vào phân tích ta có ghi có nội dung sau: ADMUX, ADCH, ADCL, ADCSRA, SFIOR ADMUX = 0b1100.0101 ADSRA = 0b1011.1000 bit ADSC = điều khiển ngắt ngồi để kích hoạt biến đổi ADC SFIOR = 0b0101.0000 Ví dụ 3: Tính thời gian biến đổi ADC cho lần đầu lần thứ 2, biết tần số thạch anh Mhz, sử dụng chia 32 Giải: Tính tần số CK = Sử dụng chia 32 nên =4 ℎ = = 125 ℎ Lần biến đổi ADC 25 ADCCLK nên thời gian biến đổi là: = 25 ∗ = 200 Lần biến đổi ADC 25 ADCCLK nên thời gian biến đổi là: = 12.5 ∗ = 100 6.4 CÂU HỎI ƠN TẬP HẾT CHƯƠNG Câu 1: Atmega có chân biến đổi ADC, chân nhận tín hiệu biến đổi ADC Port nào, số chân? Câu 2: Atmega16 có nguồn điện áp tham chiếu, nêu khác việc chọn điện áp tham chiếu -66/115- Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bài giảng vi điều khiển Atmega16 BEGIN Khi Master nhận NACK, Master gởi lại Start bit Stop bit để kết thúc trình gởi Khởi động START bit SDA từ mức cao chuyển sang mức thấp SCL mức cao Gởi bit địa tới Slave Master gởi địa (7 bit) tới Slave chân SDA Gởi bit Read/ Write Master gởi yêu cầu Read/ Write tới Slave Read = 1, Write = Kiểm tra ACK Khi ACK = 0, Slave nhận địa chỉ, ACK = Slave khơng nhận địa Gởi/ Nhận bit liệu Master gởi liệu (8 bit) tới Slave nhận liệu từ Slave Kiểm tra ACK Master kiểm tra bit ACK, ACK Slave nhận liệu, NACK Slave khơng nhận liệu Master gởi/ nhận tiếp liệu tới/ từ Slave gởi Stop bit tới Slave để kết thúc trình gởi/ nhận liệu STOP Hình 9.6 Lưu đồ giải thuật gởi liệu từ Master đến Slaver - 100/115- Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bài giảng vi điều khiển Atmega16 9.3 CÁC THANH GHI LIÊN QUAN 9.3.1 Thanh ghi TWBR (TWI bit rate register) dùng để chọn tần số phát xung clock chân SCL Bit Read/ Write Giá trị ban đầu TWB7 RW TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 RW RW RW RW RW RW 0 0 0 TWBR0 RW Hình 9.7 Thanh ghi tạo tần số TWBR 9.3.2 Thanh ghi TWCR (TWI Control Register): Dùng để điều khiển hoạt động TWI Bit TWINT TWEA TWSTA TWSTO TWWC TWEN Read/ Write RW RW RW RW R RW Giá trị ban đầu 0 0 0 R TWIE RW 0 Hình 9.8 Thanh ghi điều khiển TWCR Bit7 – TWINT: (cờ ngắt TWI) bit hoạt động TWI hoàn tất, bit I ghi (SREG) bit TWIE ghi (TWCR) cài đặc 1, vi điều khiển nhảy tới vector ngắt TWI Chân SCL trì mức thấp cờ TWINT bậc lên Cờ TWINT xóa viết mức logic lên bit này, tự động xóa sử dụng hoạt động ngắt Bit6 – TWEA: (TWI Enable Acknowledge bit, bit cho phép bắt tay) bit điều khiển việc phát xung ACK Nếu bit TWEA viết lên 1, xung ACK phát lên đường bus thỏa mãn điều kiện sau:  Cấu hình bên Slave xác định địa  Hoạt động nhiều Slave nhận bit TWGCE ghi TWAR viết logic  byte liệu nhận Master Slave Khi bit viết mức logic 0, cấu hình tạm thời không kết nối với đường bus TWI, bit kết nối với bus TWI Bit5 – TWSTA: (TWI Start Condition Bit, bit kiểm tra điều kiện Master) vi điều khiển muốn trở thành Master viết mức logic lên bit (TWSTA), phần cứng kiểm tra xem đường truyền bus có rãnh hay không phát sinh xung Start đường bus, nhiên đường bus bận TWI chờ bit Stop - 101/115- Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bài giảng vi điều khiển Atmega16 phát lại xung Start để giành quyền Master, bit TWSTA phải xóa phần mềm xung Start truyền Bit4 – TWSTO: (TWI Stop Condition Bit, bit kết thúc vai tò Master) Master bit viết logic phát điều kiện Stop đường bus Khi điều kiện Stop thực đường Bus xong bit TWSTO xóa tự động Cịn Slave, bit = dùng để khắc phục lỗi, không phát sinh điều kiện Stop đường Bus Bit3 – TWWC: (TWI Write Collision Flag, cờ báo lỗi viết liệu) cờ có logic viết liệu vào ghi liệu (TWDR) TWINT mức logic Cờ viết liệu vào ghi TWDR bit TWINT mức Bit2 – TWEN: (TWI Enable bit, bit cho phép TWI) bit viết logic cho phép hoạt động TWI, bit có mức logic không cho phép hoạt động TWI Bit1 – Res: (Bit dự trữ) Bit0 – TWIE: (TWI Interrupt Enable, cho phép ngắt TWI) bit bit I ghi SREG cho phép hoạt động ngắt TWI 9.3.3 Thanh ghi TWSR (TWI Status Register) Thanh ghi trạng thái TWI Bit Read/ Write Giá trị ban đầu TWS7 TWS6 TWS5 R R R 1 TWS4 TWS3 R R 1 R TWPS1 TWPS0 RW RW 0 Hình 9.9 Thanh ghi trạng thái TWSR Bit7 – TWS7: (TWI Status) bit kết hợp với bit Bit2 – Res (bit dự trữ) bit viết logic ầ ố = ầ ố ℎạ ℎ ℎ ( )∗4 16 + 2( ) (9.1) Bit1.0 – TWPS (TWI Prescaler Bit) bit dùng để xác định tốc độ truyền liệu TWI  TWBR : Giá trị ghi TWBR  TWPS : Giá trị bit cuối ghi TWSR 9.3.4 Thanh ghi TWDR (TWI Data Register) Trong hoạt động truyền byte chứa liệu để truyền hoạt động nhận ghi chứa byte vừa nhận - 102/115- Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bit Read/ Write Giá trị ban đầu Bài giảng vi điều khiển Atmega16 TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD1 RW RW RW RW RW RW RW 1 1 1 TWD0 RW Hình 9.10 Thanh ghi liệu TWDR 9.3.5 Thanh ghi TWAR (TWI Address Register) Bit Read/ Write Giá trị ban đầu TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE RW RW RW RW RW RW RW RW 1 1 1 Hình 9.11 Thanh ghi địa TWAR Thanh ghi dùng để xác định địa vi điều khiển vai trò Slave, bit cuối TWGCE dùng hoạt động đa Master 9.4 BÀI TẬP VÍ DỤ Câu 1: Cài đặt tần số hoạt động 125Khz theo nghi thức I2C với tần số thạch anh Mhz Giải: Dựa vào cơng thức (9.1) ta có: ầ ố = ầ ố ℎạ ℎ ℎ ( )∗4 16 + 2( )  Để tần số 125 khz mẫu số có giá trị 32  Vậy ta chọn TWBR = 1, TWPS = Câu 2: Vẽ sơ đồ mạch giao tiếp atmega16 với DS1307, IC nhớ 24C32 cảm biến nhiệt độ, độ ẩm STH10 - 103/115- Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bài giảng vi điều khiển Atmega16 U1 10 11 12 13 14 15 16 17 18 19 20 PB.0 PB.1 PB.2 INT2 PB.3 OC0 PB.4 PB.5 PB.6 PB.7 RESET VCC GND XTAL2 XTAL1 PD.0 RxD PD.1 TxD PD.2 INT0 PD.3 INT1 PD.4 PD.5 PD.6 PA.0 PA.1 PA.2 PA.3 PA.4 PA.5 PA.6 PA.7 AVREF GND AVCC PC.7 PC.6 PC.5 PC.4 PC.3 PC.2 SDA PC.1 SCL PC.0 OC2 PD.7 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Atmega16 DATA X1 SDA X2 SCL ZTA 3 VBAT SQW A0 U2 VCC GND SCK GND VCC Y1 VCC5 SDA A1 A2 SCL GND U3 VCC5 VCC5 VCC VCC5 WP BATTERY DS1307 SHT10 BT1 U4 24AA32A Hình 9.12 Sơ đồ giao tiếp I2C thiết bị 9.5 CÂU HỎI ÔN TẬP HẾT CHƯƠNG Câu 1: Trong trình hoạt động, thiết bị Slaver trở thành Master hay không, nêu nghi thức giải Câu 2: Khi giao nghi thức I2C số thiết bị cho Slaver bao nhiêu? Câu 3: Hãy cho biết tần số tối đa giao nghi thức I2C bao nhiêu? Câu 4: Hãy cài đặc tần số SCL 50Khz, tần số thạch anh Mhz Câu 5: Hãy cho biết chức bit ACK Câu 6: Hãy trình bày giống khác nghi thức giao tiếp I2C, USART, SPI - 104/115- Biên soạn: Lâm Quang Chuyên Phụ luc Các chuẩn giao tiếp Bài giảng vi điều khiển Atmega16 PHỤ LỤC (Các chuẩn giao tiếp bit chẵn lẻ) Các chuẩn giao tiếp Master Số Salver lượng Hoán dây Star, stop bit đổi Tiếp Tốc cận độ tối dài đa địa Độ Đồng Bất Khung liệu giao đồng tiếp I2C x x x x - SPI - >3 - - x - USART - x - x x 5-9 Bảng 10.1 So sánh chuẩn giao tiếp Kiểm tra chẵn lẻ (parity): kiểm tra số lượng bit bit gói liệu, có dạng kiểm tra: kiểm tra chẵn (Even) kiểm tra lẻ (Odd)  Kiểm tra chẵn: Nếu số lượng bit khung liệu chẵn bit parity (P) 0, ngược lại o Ví dụ 1: Khi gói liệu bit (10101101) gởi bit P 1, cụ thể liệu gởi đường truyền là: 101011011 o Ví dụ 2: Khi gói liệu bit (11000101) gởi bit P 0, cụ thể liệu gởi đường truyền là: 110001010  Kiểm tra lẻ: Nếu số lượng bit khung liệu chẵn bit parity (P) 1, ngược lại o Ví dụ 1: Khi gói liệu bit (10101101) gởi bit P 0, cụ thể liệu gởi đường truyền là: 101011010 o Ví dụ 2: Khi gói liệu bit (11000101) gởi bit P 1, cụ thể liệu gởi đường truyền là: 110001011 - 106/115- Biên soạn: Lâm Quang Chuyên Phụ luc IC thời gian thực DS1307 Bài giảng vi điều khiển Atmega16 PHỤ LỤC (IC thời gian thực DS1307) DS1307: IC thời gian thực giao tiếp liệu theo nghi thức I2C, chip có ghi chứa thời gian là: giây, phút, giờ, thứ, ngày, tháng, năm Ngồi cịn 56 byte Ram dùng để chứa liệu, sơ đồ chân DS1307 sau: Hình 10.1 Sơ đồ chân IC DS1307 Với:  Chân (1,2) X1, X2: Chân tạo dao động nối với thạch anh có tần số 32.768Khz,  Chân (Vbat): Nối nguồn Pin nuôi 3,3 volt giữ cho DS chạy thời gian khơng có nguồn ni DS1307  Chân GND: Nguồn Mass cho DS nguồn nuôi 3,3v  Chân SDA: Chân truyền nhận liệu  Chân SCL: Chân tạo xung clock để giao tiếp liệu  Chân SQW: Tạo tần số dao động xung vuông 1Hz, 4.096Khz, 8.192Khz, 32.768Khz  Chân Vcc: Chân nguồn cung cấp cho DS, nguồn cung cấp DS hoạt động chức thời gian nhờ vào nguồn nuôi 3,3 volt Thanh ghi nhớ DS1307: Thanh ghi điều khiển Hình 10.2 Thanh ghi điều khiển Control Register Bit 7: (Out) Nếu bit SQWE = thì:  Bit OUT = 0, chân (SQW/OUT) có mức logic - 107/115- Biên soạn: Lâm Quang Chuyên Phụ luc IC thời gian thực DS1307 Bài giảng vi điều khiển Atmega16  Bit OUT = 1, chân (SQW/OUT) có mức logic Bit 4: (SQWE) Nếu bit SQWE = 1, cho phép xuất xung vng chân số (SQW/OUT), tần số xung vuông phụ thuộc vào chân RS1, RS0 Bit 1-0: Dùng chọn tần số dao động chân (SQWE/OUT) Bảng 10 Chọn tần số ngõ chân SQW Hình 10.3 Sơ đồ nguyên lý kết nối DS1307 với LCD4x20 - 108/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 PHỤ LỤC (Điều khiển nhiều led ma trận) 10.1 GIỚI THIỆU VỀ IC THANH GHI DỊCH 10.1.1 Giới thiệu chung IC NC6B595 ghi dịch bit vào nối tiếp song song lưu liệu flip – flop D, liệu đưa tác động cạnh lên xung clock, ngõ mức thấp cực C để hở, transistor loại TTL, chịu áp 15 volt dòng 200 mA, IC cấu tạo gồm tầng, Tầng 1: Chuyển liệu từ nối tiếp song song nhờ vào flip – flop D hình vẽ 10.2, nhờ vào chân CLK Tầng 2: Lưu bit liệu vào flip – flop D nhờ vào chân STR hình 10.2 Tầng 3: Xuất liệu bên nhờ vào chân OE 10.1.2 Chức chân nguyên lý hoạt động Sơ đồ chân IC sau: Hình 10.4 Sơ đồ chân IC NC6B595 Chân Vcc: Nguồn cung cấp volt Chân Sin: tín hiệu ngõ vào dạng nối tiếp - 109/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 Chân Q0-Q7 tín hiệu ngõ dạng song song Chân R Dùng reset ghi dịch, tác động mức thấp Chân OE (Output Enable) chân có mức logic thấp cho liệu xuất ngoài, mức logic cao khơng cho phép xuất liệu bên Chân STR (Store) chân có tác dụng chân clock dùng chốt liệu bên sau dịch xong bit liệu Chân CLK (clock) tạo xung nhịp dịch liệu nối tiếp từ chân Sin vào flip – flop D, tác động cạnh lên Chân Sout: Ngõ dạng nối tiếp cho IC dịch kế tiếp, nối với chân Sin IC kế Chân NC (No Connection) khơng sử dụng Hình 10.5 Sơ đồ ngun lý hoạt động IC NC6B595 - 110/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 10.2 ĐIỂU KHIỂN NHIỀU LED MA TRẬN Để điều khiển nhiều led ma trận ta phải sử dụng ghi dịch, led ma trận kết nối với IC ghi dịch hình vẽ 10.3, chương trình điều khiển xem phần phụ lục Hình 10.6 Sơ đồ nguyên lý điều khiển led ma trận - 111/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 Chương trình CodeVision /***************************************************** This program was produced by the CodeWizardAVR V2.03.4 Standard Date : 5/12/2010 Chip type : ATmega16 Clock frequency : 4.000000 MHz *****************************************************/ #include #include // SPI functions #include #define STR PORTB.3 // Declare your global variables here unsigned char i,j; unsigned char flash addr[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char flash Ma[8][8]={ 0b01000001,0b01111101,0b00000111,0b00011100,0b10001011,0b11100011,0b11100111,0b0000 0000, 0b01000001,0b01000001,0b00001000,0b10100010,0b11011010,0b00000000,0b10001000,0b1000 0000, 0b01000001,0b01000001,0b00001000,0b00100010,0b10101010,0b00000000,0b10001000,0b1000 0000, 0b01000001,0b01111101,0b00001000,0b00100010,0b10001011,0b11100000,0b10001000,0b1000 0000, 0b01001001,0b01000001,0b00001000,0b00100010,0b10001010,0b00000000,0b10001000,0b1000 0000, 0b01010101,0b01000001,0b00001000,0b10100010,0b10001010,0b00000000,0b10001000,0b1000 0000, 0b00100010,0b01111101,0b11100111,0b00011100,0b10001011,0b11100000,0b10000111,0b0000 0000, 0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b0000 0000 }; void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xff; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0xff; // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // SPI initialization // SPI Type: Master // SPI Clock Rate: 1000.000 kHz - 112/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 // SPI Clock Phase: Cycle Half // SPI Clock Polarity: Low // SPI Data Order: LSB First SPCR=0x70; SPSR=0x00; while (1) { // Place your code here //====================1 j = 0; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================2 j = 1; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================3 j = 2; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================4 j = 3; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; - 113/115- Biên soạn: Lâm Quang Chuyên Phụ luc Điều khiển nhiều led ma trận Bài giảng vi điều khiển Atmega16 //====================5 j = 4; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================6 j = 5; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================7 j = 6; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //====================8 j = 7; i = 8; while(i ) { spi(Ma[j][i]); } STR = 0; STR = 1; PORTD = addr[j]; delay_us(100); PORTD = 0xff; //==================== }; } - 114/115- Biên soạn: Lâm Quang Chuyên Tài liệu tham khảo Bài giảng vi điều khiển Atmega16 TÀI LIỆU THAM KHẢO Họ vi điều khiển 8051 – Tống Văn On, Hoàng Đức Hải – NXB Lao Động XH Vi điều khiển với lập trình C – Ngơ Diên Tập, NXB Khoa học Kỹ thuật Đo lường điều khiển máy tính – Ngơ Diên Tập, NXB Khoa học Kỹ thuật Đo lường điều khiển máy tính – Nguyễn Đức Thành, ĐH Bách Khoa TP HCM Hướng dẫn lập trình Vi điều khiển PIC – Lê Duy Phi The 8051 Microcontroller - Kenneth J Ayala http://www.hocavr.com http://www.hpinfotech.ro/html/download.htm http://www.atmel.com - 115/115- Biên soạn: Lâm Quang Chuyên ... ADC0 ADC0 ADC2 ADC2 ADC2 ADC2 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC1 ADC2 ADC2 ADC2 ADC2 ADC2 ADC2 10x 10x 20 0x 20 0x 10x 10x 20 0x 20 0x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1 .22 V (VBG) KHÔNG... PC.3 PC .2 SDA PC.1 SCL PC.0 OC2 PD.7 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Atmega16 DATA X1 SDA X2 SCL ZTA 3 VBAT SQW A0 U2 VCC GND SCK GND VCC Y1 VCC5 SDA A1 A2 SCL GND... Biên soạn: Lâm Quang Chuyên Chương Giao tiếp I2C Bài giảng vi điều khiển Atmega16 Chương GIAO TIẾP THIẾT BỊ THEO NGHI THỨC I2C (TWO WIRE SERIAL INTERFACE) - 97/11 5- Biên soạn: Lâm Quang Chuyên Chương

Ngày đăng: 20/08/2021, 13:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN