Đồ án Thiết kế mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A

68 517 10
Đồ án Thiết kế mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A

Đ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

--------------------------------------------------------------------------------------------- https://www.youtube.com/watch?v=wj5sQc-bunA --------------------------------------------------------------------------------------------- Đồ án Thiết kế mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A. Đồ án mô tả chi tiết cách thiết kế, thi công và kiểm tra mạch hiển thị mức âm lượng qua LCD sử dụng PIC 16F877A. Hệ thống khai thác công cụ ccs của Pic C để kích hoạt ADC và LCD. Hệ thống cũng tích hợp mạch khuyếch đại âm thanh công suất nhỏ nhằm đảm bảo là một sản phẩm hoàn chỉnh.

LỜI CẢM ƠN Lời nói chúng em xin chân thành cảm ơn gửi lời chúc sức khỏe đến Quý Thầy Cô trường Đại học Tiền Giang, Quý Thầy Cô Khoa Kỹ thuật Công Nghiệp Quý Thầy Cô môn Điện - Điện Tử không ngại khó khăn tận tâm với nghề để truyền đạt kiến thức quý báu cho chúng em suốt khoảng thời gian chúng em học Trường Với kiến thức quý báu tảng vững giúp cho chúng em đường lập nghiệp sau Đồng thời chúng em gửi lời cảm ơn thân mến đến tập thể sinh viên lớp Cao đẳng Điện - Điện tử 13 chúng em trao đổi, học tập giải khó khăn suốt trình thực đề tài Chúng em xin trân trọng gửi đến thầy Hoàng Hữu Duy lời cảm ơn chân thành lòng biết ơn sâu sắc Chúng em mong nhận lời nhận xét tận tình đóng góp ý kiến q báu thầy Hồng Hữu Duy, Q Thầy Cơ Trường Đại học Tiền Giang Quý Thầy Cô Khoa Kỹ Thuật Công Nghiệp để đề tài chúng em tốt Chúng em xin chân thành cảm ơn! LỜI NÓI ĐẦU Hiện kỹ thuật vi điều khiển trở nên quen thuộc ngành kỹ thuật dân dụng Các vi điều khiển có khả xử lý nhiều hoạt động phức tạp mà cần chip vi mạch nhỏ, thay mạch điều khiển lớn phức tạp mạch điện gọn nhẹ, dễ dàng thao tác sử dụng Vi điều khiển khơng góp phần vào kỹ thuật điều khiển mà góp phần to lớn vào việc phát triển thơng tin Chính lý trên, việc tìm hiểu, khảo sát vi điều khiển điều mà sinh viên ngành điện mà đặc biệt chuyên ngành kỹ thuật điện – điện tử phải quan tâm Các điều khiển sử dụng vi điều khiển đơn giản để vận hành sử dụng lại điều phức tạp Phần công việc xử lý phụ thuộc vào người, chương trình hay phần mềm Nếu khơng có tham gia người hệ thống vi điều khiển vật vô tri Do nói đến vi điều khiển giống máy tính bao gồm phần phần cứng phần mềm Mặc dù vi điều khiển bước dài để tiếp cận với kỹ thuật việc có sớm chiều Để tìm hiểu vi điều khiển cách khoa học mang lại hiệu cao cho cơng việc sau nhóm em đến định “Thiết kế mạch hiển thị mức âm LCD sử dụng PIC 16F877A” nhằm đáp ứng nhu cầu học hỏi, tìm hiểu thân giúp cho bạn sinh viên dễ tiếp cận hiểu sâu vi điều khiển PIC MỤC LỤC A MỞ ĐẦU .1 Lý chọn đề tài .2 Mục đích mục tiêu nghiên cứu Khách thể đối tượng nghiên cứu Phạm vi giới hạn đề tài .2 Phương pháp nghiên cứu Cấu trúc đề tài B NỘI DUNG Chương Tổng quan sở lý thuyết 1.1 Vi điều khiển PIC16F877A 1.1.1 Giới thiệu họ vi điều khiển PIC 1.1.2 Cấu trúc phần cứng PIC16F877A .5 1.1.2.1 Sơ đồ chân 1.1.2.3 Một số đặc điểm vi điều khiển PIC16F877A 1.1.2.4 Các cổng xuất/nhập 1.1.3 ADC 10 1.2 LCD 12 1.3 TDA2030A .15 1.4 Phần mềm lập trình CCS 16 1.4.1 Giới thiệu trình dịch CCS 16 1.4.2 Chỉ thị tiền xử lý 17 1.4.3 Các hàm Delay 18 1.4.4 Các hàm vào CCS 18 1.4.5 Thư viện hàm LCD CCS 18 1.4.5.1 Khai báo 18 1.4.5.2 Các lệnh ý nghĩa 19 1.4.6 Thư viện hàm ADC CCS 19 1.4.6.1 Khai báo 19 1.4.6.2 Các hàm ý nghĩa 19 1.4.7 Hàm Printf() 21 Chương Thiết kế mạch hiển thị mức âm LCD sử dụng PIC16F877A 2.1 Sơ đồ khối mạch 23 2.2 Chức khối 23 2.2.1 Khối nguồn 23 2.2.2 Khối khuếch đại .24 2.2.2.1 Định nghĩa mạch khuếch đại 24 2.2.2.2 Tầng khuếch đại công suất .25 2.2.2.3 Khối khuếch đại sử dụng TDA2030A 27 2.2.2.4 Nguồn âm .28 2.2.2.5 Loa 28 2.2.4 Khối vi điều khiển 29 2.2.5 Khối hiển thị 30 Chương Sơ đồ nguyên lý mạch cách xây dựng chương trình cho PIC16F877A 3.1 Sơ đồ nguyên lý mạch 32 3.2 Nguyên lý hoạt mạch .33 3.3 Xây dựng chương trình cho PIC16F877A .33 3.3.1 Lưu đồ thuật toán .34 3.3.2 Đọc chuyển đổi giá trị ADC .35 3.3.3 Thành lập chương trình 36 3.3.3.1 Các tiền khai báo 36 3.3.3.2 Chương trình 37 3.4 Thi cơng hồn thành sản phẩm 40 3.5 Nhận xét hoạt động sản phẩm 41 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỀN 42 TÀI LIỆU THAM KHẢO .43 PHỤ LỤC DANH MỤC HÌNH ẢNH Hình 1.1 Sơ đồ chân PIC16F877A Hình 1.2 Sơ đồ khối chuyển đổi ADC 11 Hình 1.3 Các cách lưu kết chuyển đổi ADC .11 Hình 1.4 Hình dáng thực tế LCD 16x2 12 Hình 1.5 Sơ đồ chân LCD 16x2 12 Hình 1.6 Hình ảnh thực tế TDA2030A 15 Hình 1.7 Vị trí chân TDA2030A 16 Hình 2.1 Sơ đồ khối tồn mạch .23 Hình 2.2 Mạch nguồn nuôi 24 Hình 2.3 Sơ đồ tổng quát mạch khuếch đại 24 Hình 2.4 Mô tả việc phân loại mạch khuếch đại cơng suất .26 Hình 2.5 Dạng sóng dòng điện chế độ khuếch đại .27 Hình 2.6 Mạch khuếch đại dùng TDA2030A 27 Hình 2.7 Các thiết bị nguồn âm 28 Hình 2.8 Dây nối tính hiệu âm .28 Hình 2.9 Jack mono audio 3.5mm 28 Hình 2.10 Loa 28 Hình 2.11 Khối vi điều khiển 29 Hình 2.12 Khối hiển thị 30 Hình 2.13 Sơ đồ kết nối vi điều khiển với LCD 31 Hình 3.1 Sơ đồ nguyên lý toàn mạch 32 Hình 3.2 Lưu đồ thuật tốn vi điều khiển 34 Hình 3.3 Lưu đồ giải thuật đọc giá trị ADC 35 Hình 3.4 Mạch in .40 Hình 3.5 Sản phẩm thực tế 40 DANH MỤC BẢN BIỂU Bảng 1.1 Bảng tóm tắt đặc điểm vi điều khiển PIC16F877A .8 Bảng 1.2 Chức chân LCD 13 Bảng 1.3 Bảng tập lệnh LCD 14 Bảng 1.4 Bảng thông số tối đa TDA2030A 15 Bảng 1.5 Bảng thông số nhiệt TDA2030A .16 Bảng 1.6 Các hàm thư viện LCD CCS 19 Bảng 1.7 Mã định dạng liệu hàm printf() .21 Bảng 3.1 Các tiền khai báo bắt buộc chương trình 36 Bảng 3.2 Ý nghĩa config Fuses CCS 36 Bảng 3.3 Các khai báo biến toàn cục .37 Bảng 3.4 Các hàm liên quan đến ADC chương trình 38 Bảng 3.5 Bảng lệnh chuyển đổi hiển thị ADC lên LCD .38 Bảng 3.6 Bảng biểu thể hiển mức điện áp mức âm lượng 41 Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A A Huỳnh Minh Tuấn - Nguyễn Thanh Phúc MỞ ĐẦU -9- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A Lý chọn đề tài Ngày nay, phát triển mạnh mẽ khoa học công nghệ, sống người có thay đổi ngày tốt hơn, mang lại tiện lợi tối ưu phục vụ cơng cơng nghiệp hố, đại hố đất nước Góp phần vào phát triển tích hợp mạch điện – điện tử Trong vi xử lý – vi điều khiển có vai trò quan trọng Vi xử lý – vi điều khiển đời làm nên cách mạng lĩnh vực đời sống đại từ máy giặt, điện thoại… đến máy thu hình, máy ảnh, loa, máy khuếch đại âm thanh, Những thành tựu biến tưởng chừng khơng thể thành Với nhu cầu giải trí mặt tinh thần ngày cao người thúc đẩy hệ thống vui chơi, giải trí máy thu hình, điện thoại di động, máy tính xách tay, hệ thống chiếu phim, âm thanh, hình ảnh ngày phát triển Mỗi người, giới trẻ muốn có hệ thống âm cho riêng với chi phí thấp Dựa vào nhu cầu này, nhóm định “Thiết kế mạch hiển thị mức âm LCD sử dụng PIC16F877A” Mục tiêu nhiệm vụ nghiên cứu Mục tiêu đề tài thiết kế mạch hiển thị mức âm LCD sử dụng PIC16F877A Để đạt mục tiêu này, nhiệm vụ sau phải thực hiện: - Nghiên cứu sử dụng phần mềm lập trình CCS - Nghiên cứu vi điều khiển PIC16F877A lập lệnh có liên quan CCS - Nghiên cứu sử dụng LCD 16x2 - Nghiên cứu mạch khuếch đại âm sử dụng TDA2030A - Nghiên cứu chế hoạt động ADC PIC16F877A - Mô mạch Proteus - Xây dựng chương trình cho vi điều khiển PIC16F877A - Thiết kế thi công phần cứng Khách thể đối tượng nghiên cứu Đối tượng nghiên cứu: Mạch hiển thị mức âm lượng LCD Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -10- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A Hình 3.3 Lưu đồ giải thuật đọc chuyển đổi giá trị ADC Giá trị ADC thay đổi nhờ vào biến trở đôi kết nối khối khuếch đại khối vi điều khiển Chế độ chuyển đổi ADC vi điều khiển sử dụng chế độ 10bit Giải thích lưu đồ thuật tốn chương trình đọc chuyển đổi ADC: Đầu tiên, vi điều khiển đọc giá trị ADC chân (AN0) Phải tạo thời gian trễ cho trình đọc ADC lần 10ms giá trị ADC thay đổi thông qua việc điều chỉnh volume nên cần thời gian để vi điều khiển xử lý Vi điều khiển chuyển đổi giá trị ADC thành mức âm lượng khác lưu vào biến amluong Vi điều khiển liên tục đọc giá trị ADC chuyển đổi giá trị ADC để hiển thị lên LCD 3.3.3 Thành lập chương trình 3.3.3.1 Các tiền khai báo - Các khai báo bắt buộc: Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -54- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A Bảng 3.1 Các tiền khai báo bắt buộc chương trình STT Các lệnh Ý nghĩa #include Khai báo PIC16F877A sử dụng #device ADC=10 Chọn chế độ hoạt động ADC, cụ thể 10bit #FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT Khai báo config sử dụng chương trình #use delay(crystal=12000000) Khai báo tần số dao động thạch anh cấp cho PIC, thạch anh 12MHz Trong config có ý nghĩa cụ thể sau: Bảng 3.2 Ý nghĩa config Fuses CCS STT Các config Ý nghĩa NOWDT Tắt WDT (Watch Dog Timer: đếm thời gian hoạt động liên tục) HS Sử dụng thạch anh tần số cao NOPUT No Power Up Timer (không sử dụng chức Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -55- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A khởi động sau timer cấp nguồn) NOPROTECT Tắt Protect NODEBUG Tắt Debug (khơng dùng chế độ tìm khắc phục lỗi sử dung ICD) NOBROWNOUT Không dùng Brownout Deteced (tự động reset Vdd ngưỡng cho phép khoảng thời gian định) NOLVP No Low Voltag Programming (khơng lập trình điện áp thấp) NOCPD Chống ghi vào EEPROM NOWRT Chống ghi vào nhớ - Khai báo chân vi điều khiển kết nối với LCD: #define LCD_ENABLE_PIN PIN_D3 #define LCD_RS_PIN #define LCD_RW_PIN PIN_D1 PIN_D2 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -56- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A - Gọi thư viện LCD chương trình lập trình CCS hỗ trợ: #include - Khai báo biến toàn cục: Bảng 3.3 Các khai báo biến toàn cục STT Các lệnh Ý nghĩa Các biến int16 Khai báo biến số nguyên 16 bit float Khai báo biến số thực data giatri, amluongcu, amluong; 3.3.3.2 Chương trình - Chọn chân vi điều khiển để đọc giá trị ADC: Bảng 3.4 Các hàm liên quan đến ADC chương trình STT Giá trị c Ý nghĩa setup_adc_ports(c); AN0 Xác định chân lấy tín hiệu analog điện chuẩn sử dụng chân A0 setup_adc(c); ADC_CLOCK_IN TERNAL Xác định thời gian lấy mẫu xung clock IC ( 2-6 us ) set_adc_channel(c); Hàm Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -57- Chọn chân để đọc vào giá trị analog lệnh Read_ADC(), cụ thể GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A chân A0 - Để khởi tạo LCD phải sử dụng hàm: lcd_init(); - Chương trình đọc chuyển đổi ADC để hiển thị LCD: Bảng 3.5 Bảng lệnh chuyển đổi hiển thị ADC lên LCD STT Các hàm Ý nghĩa data = read_adc(); Đọc giá trị ADC lưu vào biến data delay_ms(10); Tạo thời gian trễ 10ms giatri = data*0.0049; Chuyển đổi giá trị ADC sau giá trị ADC đọc gán vào biến giatri amluong = giatri/0.25; Mức âm lượng tính tốn lưu vào biến amluong amluongcu = data; Gắn biến amluongcu với giá trị ADC đọc vào vi điều khiển lcd_gotoxy(6,1); Chọn vị trí hiển thị chuỗi ký tự cột dòng LCD lcd_putc("DO AN 2"); Gửi chuỗi ký tự “DO AN 2” lên LCD lcd_gotoxy(1,2); Chọn vị trí hiển thị chuỗi ký tự cột Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -58- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A dòng LCD delay_ms(10); Tạo thời gian trễ 10ms 10 lcd_putc("MUC AM LUONG: "); Hiển thị chuỗi kỳ tự “MUC AM LUONG:” lên LCD printf (lcd_putc,"%.0f",amluong); In giá trị mức âm lượng hình LCD vị trí phía sau chuỗi ký tự “MUC AM LUONG:” theo kiểu float khơng lấy phần lẽ 11 Để có số 0.0049 lệnh giatri = data*0.0049 phải tính toán sau: sử dụng chế độ ADC 10 bit (0 – 1023) nên Vref chia thành 210 Vref = 1024 mức Mỗi mức ADC cách tương ứng với 1024 Điện áp lấy mẫu = 0.0049 5VDC nên mức tương ứng với 1024 (V) Giá trị tính tốn lưu biến giatri Do mức âm lượng chia thành 20 mức khác nên cần thực việc chuyển đổi amluong = giatri/0.25 để có mức âm lượng tương = 16 0.25 ứng Ví dụ điện áp vào 4V mức âm lượng tương ứng Khởi động vòng lặp while: - while(TRUE) { data = read_adc(); //đọc giá trị điện áp delay_ms(200); Huỳnh Minh Tuấn - Nguyễn Thanh Phúc -59- GVHD: Ths Hoàng Hữu Duy Thiết Kế Mạch Hiển Thị Mức Âm Thanh Trên LCD Sử Dụng PIC16F877A giatri = data*0.0049; // tính tốn giá trị điện áp amluong = giatri/0.25; //chuyển đổi điện áp thành mức âm lượng - Chương trình tạo hàm điều kiện if – esle: if (data != amluongcu) { delay_ms(10); lcd_gotoxy(6,1); // hiển thị cột hàng lcd_putc("DO AN 2"); // hiển thị test lcd delay_ms(10); if (amluong

Ngày đăng: 05/03/2018, 13:59

Từ khóa liên quan

Mục lục

  • Ngày nay, sự phát triển mạnh mẽ của khoa học công nghệ, cuộc sống của con người đã có những thay đổi ngày càng tốt hơn, mang lại sự tiện lợi tối ưu phục vụ công cuộc công nghiệp hoá, hiện đại hoá đất nước. Góp phần vào sự phát triển đó là sự tích hợp các mạch điện – điện tử. Trong đó các bộ vi xử lý – vi điều khiển có vai trò rất quan trọng. Vi xử lý – vi điều khiển ra đời đã và đang làm nên một cuộc cách mạng trong mọi lĩnh vực của đời sống hiện đại từ chiếc máy giặt, điện thoại… đến máy thu hình, máy ảnh, loa, máy khuếch đại âm thanh,.... Những thành tựu này đã biến những cái tưởng chừng như không thể thành những cái có thể.

  • Với nhu cầu giải trí về mặt tinh thần ngày càng cao hơn của con người đã thúc đẩy các hệ thống vui chơi, giải trí như máy thu hình, điện thoại di động, máy tính xách tay, hệ thống chiếu phim, âm thanh, hình ảnh... ngày càng phát triển hơn. Mỗi người, nhất là giới trẻ đều muốn có một hệ thống âm thanh cho riêng mình với chi phí thấp.

  • Dựa vào nhu cầu này, nhóm quyết định “Thiết kế mạch hiển thị mức âm thanh trên LCD sử dụng PIC16F877A”.

  • Mục tiêu của đề tài là thiết kế mạch hiển thị mức âm thanh trên LCD sử dụng PIC16F877A.

  • Để đạt được mục tiêu này, các nhiệm vụ sau đây phải được thực hiện:

  • Giới hạn của đề tài:

  • Đề tài gồm:

  • A. Mở đầu

  • B. Nội dung

  • PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600. Về sau được hãng Microchip mua lại, vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay.

  • Vi điều khiển PIC16F877A thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O. Có 8 kênh chuyển đổi ADC.

  • Các đặc tính ngoại vi bao gồm các khối chức năng sau:

  • Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:

  • Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE. Dưới đây là chi tiết cụ thể từng Port.

  • PORT A

  • PORT A (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều”, nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một chân trong PORT A là input thì phải “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORT A là output thì phải “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRIS A. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORT A là TRIS A, đối với PORT B là TRIS B, đối với PORT C là TRIS C, đối với PORT D là TRIS D và đối với PORT E là TRIS E).

  • Bên cạnh đó PORT A còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port).

  • Các thanh ghi SFR liên quan đến PORT A bao gồm:

  • PORT B

  • PORT B (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng là TRISB. Bên cạnh đó một số chân của PORT B còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORT B còn liên quan đến ngắt ngoại vi và bộ Timer0. PORT B còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.

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

Tài liệu liên quan