Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
1,89 MB
File đính kèm
Đồ án vi điều khiển Atmega16 (ADC).rar
(2 MB)
Nội dung
Đồ án công nghệ cdk10lc L ớp : Mục lục Chương : Tổng quan vi điều khiển Atmega16 1.1 Đặc điểm , tính 1.2 Cấu trúc tổng quát 1.3 Thanh ghi trạng thái .10 1.4 Các ghi chức 11 1.5 Con trỏ ngăn xếp ( SP ) 11 1.6 Bộ nhớ chương trình ( Bộ nhớ Flash) 12 1.7 Bộ nhớ liệu ram 13 Chương : Sơ đồ khối , cấu trúc modul analog to digital converter (ADC) .14 Đặc điểm .14 2 Các ghi ADC .16 2.2.1 Độ xác ADC .16 2.2.2 Kết chuyển đổi ADC 18 2.2.3 ADMUX – Multiplexer select register .19 2.2.4 ADCSRA – ADC control and status register .20 2.2.5 ADCL ADCH – ADC data register .22 2.2.6 SFIOR - Special functionIO register 22 2.3 Bộ đếm Thời gian chuyển đổi ADC 23 2.4 Dang tín hiệu đầu vào đầu ADC 27 Chương : Lập trình ứng dụng ADC 28 3.1 Nội dung lập trình 28 3.2 Lập trình C CodeVisionAVR 30 3.3 Phần lập trình 33 3.4 Mô Proteus 40 Kết luận .44 GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : MỞ ĐẦU Vi điều khiển lĩnh vực lý thú Cùng với phát triển ngành điện tử họ vi điều khiển hãng sản xuất chip cho đời : Z80 Zilog , AT89 Almel , Pic Microchip , AVR Atmel … Họ vi điều khiển AVR Atmel Corp bước phát triển Vi điều khiển AT89 quen thuộc Nếu AT89 có CPU CISC AVR RISC, với kiến trúc Havard tốc độ nhanh Ngoài AVR tích hợp sẵn chip mạch ADC , PWM … hỗ chợ chuẩn giao tiếp thông dụng UART/USART, I2C , 2-wires , … nên việc thiết kế thực phần cứng cho ứng dụng thuận tiện, nhanh chóng , nhỏ gọn Về ngơn ngữ lập trình cho Avr có nhiều , : assembly, C , Basic , Pascal , … phần mềm miễn phí Atmel cung cấp , hay hãng khác nhiều , điển hình số có CodevisionAVR Hơn thế, chế độ mô phỏng, debug hỗ chợ từ A-Z , nhiều phần mềm simulator , emulator : AVRstudio , proteus, … Trong phạm vi đồ án em nghiên vi điểu khiển Atmega16 tìm hiểu đề tài “ Lập trình analog to digital converter vi điều khiển Atmega16 “ ( chuyển đổi tín hiệu tương tự sang tín hiệu số ) thầy Lê Ngọc Trúc hướng dẫn Trong trình tìm hiểu em có sử dụng tài liệu datasheet hãng Atmel ( www.atmel.com ), số tài liệu thầy hưỡng dẫn cung cấp Tuy vậy, trình làm làm đồ án em cịn nhiều thiếu sót GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : Em mong góp ý thầy để em hồn thiện đề tài đồ án Em xin chân thành cảm ơn ! Chương : Tổng quan vi điều khiển Atmega16 1.1 Đặc điểm , tính + Hiệu suất cao , tiết kiệm điện + Hoàn thiện cấu trúc RISC - 131 lệnh hiệu - thực thi chu kỳ đồng hồ đơn - 32 x Thanh ghi chung đa + ghi điều khiển ngoại vi - Đầy đủ trình điều khiển tĩnh - Nâng lên 16 MIPS liệu 16 MHz - Chíp nhân + Độ bền , sức chịu đựng cao , không thay đổi phân vùng nhớ - 16 KBytes nhớ Flash lập trình hệ thống - 512 Bytes EEPROM - Kbytes nhớ SRAM bên - Chu kỳ ghi/xóa : 10000Flash / 100000EEPROM - Độ bền giữ liệu: 20 năm / 100 năm - Đoạn mã lựa chọn chế độ khởi động với bit khóa độc lập chương trình hệ thống chương trình khởi động đọc thật trình ghi diễn - Lập trình khóa cho phần mềm bảo mật + Giao diện JTAG ( phù hợp với tiêu chuẩn IEEE 1149.1) - Khả quét biên theo tiêu chuẩn JTAG - Hỗ chợ chế độ sửa tạm ( debug ) chíp - Lập trình Flash, EEPROM , bảo vệ ( FUSE ) bít khóa ( Lock bits) thông qua giao diện JTAG GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : + Đặc điểm ngoại vi : - Hai timer/counter bít với đếm gộp trước riêng biệt chế độ so sánh mẫu - Một timer/counter 16 bit mở rộng với đếm gộp trước chế độ so sánh mẫu chế độ thu thập ( bắt liệu ) - Bộ counter thời gian thực với giao động ( oscillator) riêng biệt - Bộ điều chế so sánh tín hiệu - 8-kênh , 10-bit ADC: kênh đầu cuối đơn kênh khác (vi phân) kênh khác với khuyếch đại lập trình 1x, 10x , 200x - Bit định hướng với hai dây giao diện nối tiếp - Lập trình kép USARTs nối tiếp - Giao diện nối tiếp SPI chủ/tớ - Lập trình timer Watchdog với dao động chip - Bộ so sánh tương tự ( Analog ) chip + Các tính đặc biệt vi sử lý: - Thiết lập bật lại nguồn lập trình lại phát nguồn yếu (Brown – out) - Hiệu chỉnh độ dao động RS bên - Ngắt nguồn - Sáu chế độ chờ ( Sleep ): Idle , giảm ồn ADC , tiết kiệm điện ( Power – saver), ngắt điện , chế độ chờ ( Standby) , chế độ chờ mở rộng + Cổng vào/ra dạng đóng gói - 32 đường vào/ra lập trình - 40 chân PDIP, 44 đường dẫn TQFP 44 khối QFN/MLF + Điện áp hoạt động - 2,7 – 5,5V Atmega16L - 4,5 – 5,5V Atmega 16 GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : + Mức độ xung nhịp - – MHz Atmega 16L - – 16 MHz Atmega 16 GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : Hình 0.1: Các chân vi điều khiển Atmega16 Atmega16 vi sử lý bit CMOS điên áp thấp dựa kiến trúc AVR RISC nâng cao Bằng cách thi hành lệnh cách mạnh mẽ chu kỳ đồng hồ , Atmega16 cho phép tốc độ đạt MPIS/MHz từ giúp người thiết kế hệ thống có khả tối ưu hóa điện sử dụng so với tốc độ sử lý GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : Hình 0.2: Sơ đồ khối vi điều khiển AVR bao gồm tập hợp lệnh cài đặt với 32 ghi chung đa Tất 32 ghi nối trực tiếp với khối số học logic ( ALU ) cho phép ghi độc lập truy cập lệnh thực thi chu kỳ quét xung đồng hồ, GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : kết cấu trúc có nhiều kiểu chế độ hiệu đạt tốc độ tối đa nhanh 10 vi sử lý CISC thơng thường Atmega16 cung cấp tính sau : 16 Kbytes nhớ lập trình Flash hệ thống với khả đọc ghi , 512 Bytes EEPROM , Kbytes SROM , 32 đường vào/ra đa , 32 ghi chung đa , giao diện kiểm tra JTAG , timer/counter tiện dụng , đếm thời gian thực , USART, byte định hướng dây giao diện nối tiếp , kênh , 10 bit ADC với lựa chọn cổng vào riêng biệt với khả lập trình khuếch đại , lập trình timer Watchdog với giao động bên , cổng SPI nối tiếp , phần mềm lựa chọn chế độ tiết kiệm điện Chế độ IDLE dừng CPU chu phép USART , giao diện , chuyển đổi Tương tự/Số , SRAM , Timer/counter , cổng SPI , ngắt hệ thông tiếp tục vận hành Chế độ tắt nguồn tiết kiệm dung lượng ghi làm đóng băng dao động bên , vơ hiệu hóa tất chức chip có ngắt reset lại phần cứng Trong chế độ tiết kiệm điện , timer tiếp tục chạy , điều cho phép người sử dụng bảo dưỡng khoảng thời gian phần cịn lại thiết bị q trình nghỉ ( Sleeping) Kiểu giảm nhiễu ADC dừng CPU tất modul vào/ra trừ timer dị ADC làm cực tiểu nhiễu chuyển mạch xuốt trình chuyển đổi ADC Trong chế độ chờ Standby tạo dao động thạch anh cộng hưởng chạy phần lại thiết bị trạng thái ngủ Điều cho phép nhiều khởi tạo nhanh tiêu thụ điện áp thấp Trong chế độ chờ mở rộng , hai tạo dao động timer dị chạy Thiết bị sản xuất dựa cơng nghệ chíp nhớ độ đặc cao ATMEL Bộ nhớ flash ISP chip cho phép nhớ chương trình lập trình lại hệ thống thơng qua giao diện ISP nối tiếp , chương trình lập trình nhớ cố định thông thường chương trình khởi động chạy lõi AVR Chương trình khởi động sử dụng giao diện để tải chương trình ứng dụng vào nhớ chương trình ứng dụng ( Flash ) Phần mềm phần vùng khởi động nhớ Flash tiếp tục chạy ứng dụng phân GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : vùng cập nhật , cung cấp hoạt động đọc ghi Bằng việc kết hợp CPU- cấu trúc bit RISC với nhớ flash lập trình hệ thống chip đơn , Atmega 16 vi sử lý mạnh , cung cấp linh hoạt cao mơi trường làm việc có ích cho nhiều úng dụng điều khiển nhúng Atmega 16 hỗ trợ với thích hợp đầy đủ chương trình cơng cụ phát triển hệ thống bao gồm : trình biên dịch C , macro Asemmbler , chương trìnhc hạy thử mơ , mô mạch điện , công cụ đánh giá so sánh GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang Đồ án công nghệ cdk10lc L ớp : 1.2 Cấu trúc tổng quát Hình 0.3: Sơ đồ cấu trúc CPU Atmega16 Thấy 32 ghi Register File kết nối trực tiếp với Arithmetic Logic Unit -ALU (ALU xem CPU AVR) line, ALU truy xuất trực tiếp lúc ghi RF chu kỳ xung clock GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 10 Đồ án công nghệ cdk10lc L ớp : 3.2 Lập trình C CodeVisionAVR Các bước khởi tạo code : Trong giao diện CodeVisionAVR chọn File New Một menu xuất , nhấp chọn Project OK YES GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 33 Đồ án công nghệ cdk10lc L ớp : Ta lập trình cho Atmega , menu ta để mặc định nhấn OK Một cửa sổ : GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 34 Đồ án công nghệ cdk10lc L ớp : Trong tab ADC , nhấp vào ADC Enabled GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 35 Đồ án công nghệ cdk10lc L ớp : Ta thiết lập hình ảnh GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 36 Đồ án công nghệ cdk10lc L ớp : 3.3 Phần lập trình #include #include #include // Alphanumeric LCD Module functions #include #define ADC_VREF_TYPE 0x00 // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { // Chon kenh, dien ap tham chieu, che hoat dong cua ADC ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Bat dau chuyen doi ADCSRA|=0x40; // Cho qua trinh chuyen doi ket thuc while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 37 Đồ án công nghệ cdk10lc L ớp : // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0xff; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer1 Stopped GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 38 Đồ án công nghệ cdk10lc L ớp : // Mode: Normal top=0xFFFF // OC1A output: Discon // OC1B output: Discon // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 39 Đồ án công nghệ cdk10lc L ớp : // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 500.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: ADC Stopped ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections specified in the GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 40 Đồ án công nghệ cdk10lc L ớp : // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTA Bit // RD - PORTA Bit // EN - PORTA Bit // D4 - PORTA Bit // D5 - PORTA Bit // D6 - PORTA Bit // D7 - PORTA Bit // Characters/line: 16 lcd_init(16); lcd_clear(); lcd_gotoxy(0,0); lcd_puts("Quoc Minh"); lcd_gotoxy(0,1); lcd_puts("^^^^^^^^^^^^^^^^^"); delay_ms(3000); lcd_clear(); PORTC=0x00; while (1) { adc(); } } GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 41 Đồ án công nghệ cdk10lc L ớp : Hàm adc : #ifndef ADC_H #define ADC_H #include #include #include // Alphanumeric LCD Module functions #include //#include // Ham chuyen doi ADC unsigned int read_adc(unsigned char adc_input); // Ham hien thi so LCD1602 void lcd_putnum(unsigned int N); // Ham doc va hien thi gia tri ADC len LCD1602 void adc(); //========================================= //========================================= void lcd_putnum(unsigned int N) { unsigned int Nghin, Tram, Chuc, Donvi; Nghin = N/1000; Tram = (N%1000)/100; Chuc = (N%100)/10; Donvi = N%10; lcd_putchar(Nghin + 48); lcd_putchar(Tram + 48); lcd_putchar(Chuc + 48); GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 42 Đồ án công nghệ cdk10lc L ớp : lcd_putchar(Donvi + 48); } // ============================================================== void adc() { unsigned int i,j=632; i = read_adc(3); delay_ms(10); if(i>j) { PORTC=0x08; delay_ms(500); } else PORTC=0x00; lcd_gotoxy(0,0); lcd_puts(" GIA TRI ADC:"); lcd_gotoxy(6,1); lcd_putnum(i); } //========================================= #endif // END OF FILE // GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 43 Đồ án công nghệ cdk10lc L ớp : 3.4 Mô Proteus Giá trị ban đầu sau nạp chương trình , điện áp lằm khoảng từ 0V đến 3,5V đèn Led không sáng : GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 44 Đồ án công nghệ cdk10lc GVHD: Lê Ngọc Trúc L ớp : SVTH : Phạm Quốc Minh Trang 45 Đồ án công nghệ cdk10lc L ớp : Giá trị điện áp đầu vào điện áp lớn 3,5V đèn Led sáng : GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 46 Đồ án công nghệ cdk10lc L ớp : Kết luận Trong giới hạn phạm vi đề tài, đồ án sâu tìm hiểu lập trình C cho vi điểu khiển chip Atmega16 đặc biệt lập trình chuyển đổi tín hiệu tương tự ( Analog ) sang tín hiệu số ( Digital) - ADC Trong trình tìm hiểu làm đồ án , em biết thêm nhiều điều cấu trúc chip Atmega16 cụ thể cấu trúc ghi ADC ( analog to digital converter ) Mặc dù đọc ,tìm hiểu lập trình thời gian hồn thiện đồ án có giới hạn lên nội dung đồ án cịn nhiều thiếu sót , chưa cập nhật đầy đủ tính vi điều khiển Nhưng em nghĩ sau khoảng thời gian làm đề tài đồ án em tiếp tục tìm hiều nghiên cứu đề tài , mở rộng khả lập trình C cho AVR để bắt nhịp xu hướng GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 47 ... sử lý ( Chíp Atmega16) Tín hiệu đầu vào so Bộ điều khiển sánh ( Biến trở ) Sơ đồ chuyển đổi từ khối vi điều khiển sang khối mô GVHD: Lê Ngọc Trúc SVTH : Phạm Quốc Minh Trang 32 Đồ án công nghệ... Đồ án công nghệ cdk10lc L ớp : Hình 0.1: Các chân vi điều khiển Atmega16 Atmega16 vi sử lý bit CMOS điên áp thấp dựa kiến trúc AVR RISC nâng cao Bằng cách thi hành lệnh cách mạnh mẽ chu kỳ đồng.. .Đồ án công nghệ cdk10lc L ớp : MỞ ĐẦU Vi điều khiển lĩnh vực lý thú Cùng với phát triển ngành điện tử họ vi điều khiển hãng sản xuất chip cho đời : Z80