BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI: THIẾT KẾ HỆ MẠCH HIỂN THỊ LED

20 21 0
BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI: THIẾT KẾ HỆ MẠCH HIỂN THỊ LED

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI THIẾT KẾ HỆ MẠCH HIỂN THỊ LED Giáo viên hướng dẫn TS Nguyễn Huy Hoàng Mã lớp 124829 Nhóm. LỜI MỞ ĐẦU Với sự phát triển không ngừng của khoa học kỹ thuật đặc biệt là ngành điện tử đã được ứng dụng rất nhiều trong công nghiệp. Trong lĩnh vực điều khiển, từ khi công nghệ chế tạo loại vi mạch lập trình phát triển đã đem đến các kỹ thuật điều khiển hiện đại có nhiều ưu điểm hơn so với việc sử dụng các mạch điều khiển lắp ráp các linh kiện rời kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ. Ngày nay, trong lĩnh vực điều khiển đã được ứng dụng rộng rãi trong các thiết bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày của con người như máy giặt, đồng hồ báo thức,… đã giúp cho đời sống của chúng ta càng hiện đại và tiện nghi hơn. Chúng em đã chọn đề tài “Thiết kế mạch hiển thị LCD đơn giản, sử dụng vi điều khiển ATmega328P” để hoàn thành bài tập lớn môn Kỹ thuật vi xử lý, cũng như để đáp ứng mong muốn tìm hiểu và làm một sản phẩm điện tử cụ thể từ một dòng vi điều khiển. Đề tài “Thiết kế mạch hiển thị LCD” là một đề tài quen thuộc, có thể thực hiện trên rất nhiều dòng vi điều khiển nhưng do kiến thức còn hạn chế nên đề tài chúng em làm còn nhiều thiếu sót. Chúng em mong nhận được những ý kiến nhận xét từ phía thầy cũng như các bạn để góp phần hoàn thiện sản phẩm hơn.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ***** BÁO CÁO BÀI TẬP LỚN MÔN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI: THIẾT KẾ HỆ MẠCH HIỂN THỊ LED Giáo viên hướng dẫn: TS Nguyễn Huy Hồng Mã lớp: 124829 Nhóm: 14 Họ tên Lớp MSSV Ngơ Hồng Phong đtvt 20163142 Dỗn Đình Phấn Đt 07_k63 20182718 Nông Thị Oanh Đt 06_k63 20182717 HÀ NỘI – 6/2021 MỤC LỤC LỜI MỞ ĐẦU DANH MỤC HÌNH ẢNH .4 DANH MỤC BẢNG CHƯƠNG 1: MÔ TẢ ĐỀ TÀI CHƯƠNG 2: LẬP KẾ HOẠCH .6 2.1 Bảng công việc 2.2 Bảng phân công công việc .6 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 3.1 Sơ đồ khối chức 3.2 Giới thiệu vi điều khiển atmega328p 3.3 Giới thiệu LCD 16x2 10 3.4 Mô proteus 12 3.5 Code 12 3.6 Kết 18 CHƯƠNG 4: KẾT LUẬN .19 TÀI LIỆU THAM KHẢO .20 LỜI MỞ ĐẦU Với phát triển không ngừng khoa học kỹ thuật đặc biệt ngành điện tử ứng dụng nhiều công nghiệp Trong lĩnh vực điều khiển, từ công nghệ chế tạo loại vi mạch lập trình phát triển đem đến kỹ thuật điều khiển đại có nhiều ưu điểm so với việc sử dụng mạch điều khiển lắp ráp linh kiện rời kích thước nhỏ, giá thành rẻ, độ làm việc tin cậy, công suất tiêu thụ nhỏ Ngày nay, lĩnh vực điều khiển ứng dụng rộng rãi thiết bị, sản phẩm phục vụ cho nhu cầu sinh hoạt hàng ngày người máy giặt, đồng hồ báo thức,… giúp cho đời sống đại tiện nghi Chúng em chọn đề tài “Thiết kế mạch hiển thị LCD đơn giản, sử dụng vi điều khiển ATmega328P” để hoàn thành tập lớn môn Kỹ thuật vi xử lý, để đáp ứng mong muốn tìm hiểu làm sản phẩm điện tử cụ thể từ dòng vi điều khiển Đề tài “Thiết kế mạch hiển thị LCD” đề tài quen thuộc, thực nhiều dòng vi điều khiển kiến thức hạn chế nên đề tài chúng em làm cịn nhiều thiếu sót Chúng em mong nhận ý kiến nhận xét từ phía thầy bạn để góp phần hồn thiện sản phẩm DANH MỤC HÌNH ẢNH Hình 1: Sơ đồ khối chức Hình 2:Vi điều khiển ATmega328P Hình 3: LCD16x2 10 Hình 4: Mơ Proteus 12 Hình 5: Kết mơ mạch .18 DANH MỤC BẢNG Bảng 1: Bảng thời gian thực công việc Bảng 2: Bảng phân công công việc Bảng 3: Chức chân Bảng 4: Chức chân LCD16x2 11 CHƯƠNG 1: MÔ TẢ ĐỀ TÀI  Đặt vấn đề Bài toán đặt thiết kế mạch hiển thị LCD, sử dụng vi điều khiển ATmega328P Đây toán quen thuộc, có nhiều cách giải tốn Vi điều khiển có tác dụng nhận tín hiệu xử lý thơng tin hiển thị hình LCD Từ việc phân tích khảo sát đây, nhóm đưa vấn đề cần giải tốn đặt là: - Tìm hiểu kiến thức ATmega328P, LED LCD - Xây dựng sơ đồ khối - Mô mạch phần mềm proteus - Nạp code cho vi xử lý - Tổng hợp viết báo cáo CHƯƠNG 2: LẬP KẾ HOẠCH 2.1 Bảng công việc Thời gian Công việc Mô tả 20/4 - 5/5 Xác định ý tưởng Lên ý tưởng tìm kiếm thơng tin vi điều khiển ATmega328P 6/5 - 15/5 Mô tả sản phẩm Xác định yêu cầu chức mạch 16/5 - 18/5 Thiết kế sơ đồ khối Liệt kê thể khối có mạch 19/5 - 30/5 Thiết kế sản phẩm Mô code cho mạch hiển thị đèn giao thông 31/5 – 3/6 Hoản thiện sản phẩm Kiểm tra code mà mô lại mạch Bảng 1: Bảng thời gian thực công việc 2.2 Bảng phân công công việc Nội dung Công việc Thành viên thực Tìm hiểu đề tài Thiết kế hệ thống Hồn thiện sản phẩm Bảng 2: Bảng phân cơng cơng việc CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 3.1 Sơ đồ khối chức Hình 1: Sơ đồ khối chức 3.2 Giới thiệu vi điều khiển ATmega328P ATmega328P vi điều khiển tiên tiến nhiều tính Nó vi điều khiển tiếng Atmel sử dụng bo mạch arduino UNO Nó vi điều khiển thuộc họ vi điều khiển megaMVR Atmel (Cuối năm 2016, Atmel Microchip Technology Inc mua lại) Các vi điều khiển sản xuất họ megaMVR thiết kế để xử lý nhớ chương trình lớn vi điều khiển họ chứa lượng ROM, RAM, chân I / O tính khác sản xuất với chân đầu khác nhau, từ chân đến hàng trăm chân Mạch bên ATmega328P thiết kế với tính tiêu thụ dịng điện thấp Con chip chứa 32 kilobyte nhớ flash trong, kilobyte EEPROM kilobyte SRAM EEPROM nhớ flash nhớ lưu thơng tin thơng tin thoát nguồn điện bị ngắt SRAM nhớ lưu thông tin có điện ngắt nguồn điện tất thơng tin lưu SRAM bị xóa Hình 2:Vi điều khiển ATmega328P Đặc tính / Thơng số kỹ thuật ATmega328P Thiết kế hiệu suất cao Tiêu thụ điện Tổng số chân ngõ vào Analog Chứa 32 kilobyte nhớ flash Chứa kilobyte SRAM Chứa kilobyte EEPROM Tốc độ xung nhịp 16 megahertz Nhiệt độ tối thiểu tối đa -40 độ C đến 105 độ C Tổng số chân I / O kỹ thuật số 14 chân RISC tiên tiến Khóa chức chương trình để bảo mật mã lập trình Chứa tổng cộng ba định thời, hai 8bit 16 bit Tổng số chân I / O 23 chân Tổng số kênh PWM Điện áp hoạt động tối thiểu tối đa từ 1.8V DC đến 5.5V DC Sơ đồ chân Số thứ tự Mô tả chân Chức Mô tả chức Khi chân reset mức thấp, vi điều khiển chương trình reset PC6 reset PD0 Chân kỹ thuật số (RX) Chân đầu vào cho giao tiếp nối tiếp PD1 Chân kỹ thuật số (TX) Chân đầu cho giao tiếp nối tiếp PD2 Chân kỹ thuật số Chân sử dụng làm ngắt PD3 Chân kỹ (PWM) PD4 Chân kỹ thuật số Chân sử dụng cho nguồn đếm bên Timer0 Vcc Điện áp dương Nguồn dương hệ thống GND Nối đất Nối đất hệ thống Dao động tinh thể Chân nối với châncủa dao động tinh thể để cung cấp xung nhịp bên ngồi cho chip Chân nối với chân cịn lại dao động tinh thể để cung cấp xung nhịp bên cho chip XTAL thuật số Chân sử dụng làm ngắt 10 XTAL Dao động tinh thể 11 PD5 Chân kỹ (PWM) thuật số Chân 11 sử dụng cho nguồn đếm bên Timer1 12 PD6 Chân kỹ (PWM) thuật số 13 PD7 Chân kỹ thuật số  Bộ so sánh analog âm i / ps 14 PB0 Chân kỹ thuật số  Nguồn đầu vào đếm hẹn PB1 Chân kỹ (PWM) thuật số PB2 Chân kỹ (PWM) thuật số Chân hoạt động lựa chọn slave i / p PB3 Chân kỹ (PWM) thuật số 15 16 17 18 PB4 Chân kỹ thuật số  Bộ so sánh analog dương i / ps Bộ đếm hẹn so sánh khớp A Chân sử dụng làm đầu liệu master đầu vào liệu slave cho SPI Chân hoạt động đầu vào xung nhịp master đầu xung nhịp Bảng 3: Chức chân 3.3 Giới thiệu LCD 16x2 Hình 3: LCD16x2 Thứ tự chân Tên chân Chức VSS GND LCD VCC Nguồn cấp cho LCD VEE Điều chỉnh độ tương phản ( cần gắn với biến trở) RS Chọn ghi RS = 0: Đưa LCD vào chế độ ghi lệnh RS = 1: Đưa LCD vào chế độ ghi liệu(dữ liệu xuất lên hình) RW Chọn chế độ đọc/ghi LCD RW = 0: Vi điều khiển truyền liệu vào LCD 10 RW =1: Vi điều khiển đọc liệu từ LCD E E = 0: Vơ hiệu hóa đọc/ghi E = 1: Cho phép LCD đọc/ghi E chuyển từ mức 0(hoặc 1): bắt đầu đọc/ghi LCD D0 Dữ liệu bit thứ D1 Dữ liệu bit thứ D2 Dữ liệu bit thứ 10 D3 Dữ liệu bit thứ 11 D4 Dữ liệu bit thứ 12 D5 Dữ liệu bit thứ 13 D6 Dữ liệu bit thứ 14 D7 Dữ liệu bit thứ 15 LED+ Nguồn dương cấp cho LED 16 LED- Nguồn âm cấp cho LED Bảng 4: Chức chân LCD16x2 11 3.4 Mơ proteus Hình 4: Mơ Proteus 3.5 Code /* * AssemblerApplication1.asm * * Created: 6/10/2021 7:26:25 AM * Author: DELL */ ;//////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// equ def equ equ equ equ equ equ equ equ equ equ fclk temp lcd_D7_port lcd_D7_bit lcd_D7_ddr lcd_D6_port lcd_D6_bit lcd_D6_ddr lcd_D5_port lcd_D5_bit lcd_D5_ddr lcd_D4_port = = = = = = = = = = = = 16000000 R16 PORTD PORTD7 DDRD PORTD PORTD6 DDRD PORTD PORTD5 DDRD PORTD 12 .equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ lcd_D4_bit lcd_D4_ddr lcd_D3_port lcd_D3_bit lcd_D3_ddr lcd_D2_port lcd_D2_bit lcd_D2_ddr lcd_D1_port lcd_D1_bit lcd_D1_ddr lcd_D0_port lcd_D0_bit lcd_D0_ddr lcd_E_port lcd_E_bit lcd_E_ddr lcd_RS_port lcd_RS_bit lcd_RS_ddr = = = = = = = = = = = = = = = = = = = = PORTD4 DDRD PORTD PORTD3 DDRD PORTD PORTD2 DDRD PORTD PORTD1 DDRD PORTD PORTD0 DDRD PORTB PORTB1 DDRB PORTB PORTB0 DDRB ; LCD module information equ lcd_LineOne equ lcd_LineTwo = 0x00 = 0x40 ; LCD instructions equ lcd_Clear equ lcd_Home equ lcd_EntryMode equ lcd_DisplayOff equ lcd_DisplayOn equ lcd_FunctionReset equ lcd_FunctionSet8bit equ lcd_SetCursor = = = = = = = = ; start of line ; start of line 0b00000001 0b00000010 0b00000110 0b00001000 0b00001100 0b00110000 0b00111000 0b10000000 ;//////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// org org jmp 0x0000 start INT_VECTORS_SIZE title1: db mssv1: db mssv2: db mssv3: db author1: db author2: db author3: db "BTL VXL- Nhom 14",0 "Mssv : 20163142 ",0 "Mssv : 20182718 ",0 "Mssv : 20182717 ",0 "1 : NgoHongPhong",0,0 "2 : DoanDinhPhan",0,0 " : NongThiOanh",0,0 start: 13 ldi out ldi out temp,low(RAMEND) SPL,temp temp,high(RAMEND) SPH,temp ; C?u hình c?ng giao ti?p sbi lcd_D7_ddr, lcd_D7_bit sbi lcd_D6_ddr, lcd_D6_bit sbi lcd_D5_ddr, lcd_D5_bit sbi lcd_D4_ddr, lcd_D4_bit sbi lcd_D3_ddr, lcd_D3_bit sbi lcd_D2_ddr, lcd_D2_bit sbi lcd_D1_ddr, lcd_D1_bit sbi lcd_D0_ddr, lcd_D0_bit sbi lcd_E_ddr, lcd_E_bit sbi lcd_RS_ddr, lcd_RS_bit ; lcd_init_8d(void) call lcd_init_8d ; lcd_write_string(title) ldi ZH, high(title1) ldi ZL, low(title1) ldi temp, lcd_LineOne call lcd_write_string_8d call delayTx1mS ; lcd_write_string(author) ldi ZH, high(author1) ldi ZL, low(author1) ldi temp, lcd_LineOne call lcd_write_string_8d //call delayTx1mS ldi ldi ldi call call ZH, high(mssv1) ZL, low(mssv1) temp, lcd_LineTwo lcd_write_string_8d delayTx1mS ldi ZH, high(author2) ldi ZL, low(author2) ldi temp, lcd_LineOne call lcd_write_string_8d //call delayTx1mS ldi ldi ldi call call ZH, high(mssv2) ZL, low(mssv2) temp, lcd_LineTwo lcd_write_string_8d delayTx1mS ldi ldi ldi call ZH, high(author3) ZL, low(author3) temp, lcd_LineOne lcd_write_string_8d 14 //call ldi ldi ldi call call loop: rjmp delayTx1mS ZH, high(mssv3) ZL, low(mssv3) temp, lcd_LineTwo lcd_write_string_8d delayTx1mS loop ;//////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// lcd_init_8d: ; Power-up delay ldi temp, 100 call delayTx1mS ; Reset the ldi call ldi call LCD controller temp, lcd_FunctionReset lcd_write_instruction_8d temp, 10 delayTx1mS ldi call ldi call temp, lcd_FunctionReset lcd_write_instruction_8d temp, 200 delayTx1uS ldi call ldi call temp, lcd_FunctionReset lcd_write_instruction_8d temp, 200 delayTx1uS ; Function Set instruction ldi temp, lcd_FunctionSet8bit call lcd_write_instruction_8d ldi temp, 80 call delayTx1uS ; Display On/Off Control instruction ldi temp, lcd_DisplayOff call lcd_write_instruction_8d ldi temp, 80 call delayTx1uS ; Clear Display instruction ldi temp, lcd_Clear call lcd_write_instruction_8d ldi temp, call delayTx1mS ; Entry Mode Set instruction ldi temp, lcd_EntryMode call lcd_write_instruction_8d 15 ldi temp, 80 call delayTx1uS ; Display On/Off Control instruction ldi temp, lcd_DisplayOn call lcd_write_instruction_8d ldi temp, 80 call delayTx1uS ret lcd_write_string_8d: push ZH push ZL lsl ZL rol ZH ori temp, lcd_SetCursor call lcd_write_instruction_8d ldi temp, 80 call delayTx1uS lcd_write_string_8d_01: lpm temp, Z+ cpi temp, breq lcd_write_string_8d_02 call ldi call rjmp ; get a character ; check for end of string lcd_write_character_8d temp, 80 delayTx1uS lcd_write_string_8d_01 lcd_write_string_8d_02: pop ZL pop ZH ret lcd_write_character_8d: sbi lcd_RS_port, lcd_RS_bit cbi lcd_E_port, lcd_E_bit call lcd_write_8 ret lcd_write_instruction_8d: cbi lcd_RS_port, lcd_RS_bit cbi lcd_E_port, lcd_E_bit call lcd_write_8 ret lcd_write_8: sbi lcd_D7_port, sbrs temp, cbi lcd_D7_port, sbi lcd_D6_port, sbrs temp, cbi lcd_D6_port, sbi lcd_D5_port, sbrs temp, cbi lcd_D5_port, sbi lcd_D4_port, sbrs temp, lcd_D7_bit lcd_D7_bit lcd_D6_bit lcd_D6_bit lcd_D5_bit lcd_D5_bit lcd_D4_bit 16 cbi sbi sbrs cbi sbi sbrs cbi sbi sbrs cbi sbi sbrs cbi lcd_D4_port, lcd_D3_port, temp, lcd_D3_port, lcd_D2_port, temp, lcd_D2_port, lcd_D1_port, temp, lcd_D1_port, lcd_D0_port, temp, lcd_D0_port, lcd_D4_bit lcd_D3_bit sbi call cbi call ret lcd_E_port, lcd_E_bit delay1uS lcd_E_port, lcd_E_bit delay1uS lcd_D3_bit lcd_D2_bit lcd_D2_bit lcd_D1_bit lcd_D1_bit lcd_D0_bit lcd_D0_bit ;//////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// delayYx1mS: call sbiw brne delayTx1mS: call dec brne delay1mS: push push ldi ldi delay1mS YH:YL, delayYx1mS ; delay for mS ; update the the delay counter ; counter is not zero delay1mS temp delayTx1mS YL YH YL, low (((fclk/1000)-18)/4) YH, high(((fclk/1000)-18)/4) delay1mS_01: sbiw YH:YL, brne delay1mS_01 ; arrive here when delay counter is zero pop YH pop YL ret delayTx1uS: call delay1uS dec temp brne delayTx1uS delay1uS: push pop push pop ret temp temp temp temp 17 ;//////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// 3.6 Kết Hình 5: Kết mô mạch Mạch hiển thị tên mã số sinh viên thành viên nhóm hình LCD CHƯƠNG 4: KẾT LUẬN Sau thời gian tìm hiểu hướng dẫn tận tình thầy Nguyễn Huy Hoàng chúng em hoàn thành tập lớn “Thiết kế mạch hiển thị LED” Với đề tài chúng em ứng dụng phần nhỏ kiến thức vi điều khiển ATmega328P Trong thời gian thực tập lớn chúng em thu kết sau: 18 - Học hỏi nhiều có thêm nhiều kiến thức Có khả phân tích, thiết kế làm sản phẩm hoàn chỉnh - Tuy nhiên với thời gian cho phép kiến thức hạn chế sản phẩm cịn thiếu sót chưa đạt kết mong muốn Chúng em xin chân thành cảm ơn thầy Nguyễn Huy Hồng nhiệt tình hướng dẫn, truyền đạt kiến thức suốt trình học tập thực tập lớn - 19 TÀI LIỆU THAM KHẢO [1] https://www.alldatasheet.com/datasheet-pdf/pdf/240685/ATMEL/AT89C52.html [2] http://dammedientu.vn/bai-10-lap-trinh-hien-thi-lcd-16x2-voi-8051/ [3] http://dammedientu.vn/lap-trinh-led-7-thanh-voi-8051/ 20 ... đồng hồ báo thức,… giúp cho đời sống đại tiện nghi Chúng em chọn đề tài ? ?Thiết kế mạch hiển thị LCD đơn giản, sử dụng vi điều khiển ATmega328P” để hồn thành tập lớn mơn Kỹ thuật vi xử lý, để đáp... làm sản phẩm điện tử cụ thể từ dòng vi điều khiển Đề tài ? ?Thiết kế mạch hiển thị LCD” đề tài quen thuộc, thực nhiều dòng vi điều khiển kiến thức hạn chế nên đề tài chúng em làm nhiều thiếu sót... Nó vi điều khiển thuộc họ vi điều khiển megaMVR Atmel (Cuối năm 2016, Atmel Microchip Technology Inc mua lại) Các vi điều khiển sản xuất họ megaMVR thiết kế để xử lý nhớ chương trình lớn vi điều

Ngày đăng: 02/03/2023, 03:05

Tài liệu cùng người dùng

Tài liệu liên quan