Thiết kế phần cứng điều khiển thiết bị thông qua PIC16F877A.Điều khiển bậttắt thiết bịBấm phím Hiển thị trên LCD mã điều khiển để kiểm tra.Trong quá trình thực hiện đề tài, tuy đã rất cố gắng xong do những hạn chế về thời gian tìm hiểu, kiến thức cũng như kinh nghiệm thực tế nên chúng em không tránh khỏi nhiều thiết xót. Chúng em rất mong nhận được những ý kiến đóng góp của thầy và các bạn để đề tài của chúng em ngày càng được hoàn thiện hơn, với nhiều chức năng hơn.
BT Vi xử lí LCD Bàn phím điện thoại TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA ĐIỆN – ĐIỆN TỬ Bài tập lớn mơn Vi xử lí Giảng viên : Ngơ Thanh Nhóm :3 Thành viên : Nhóm 1(LCD bit) Lại Văn Hồn Thng Trung Nguyễn Văn Mạnh Phạm Mạnh Linh Lớp KTVT Hà Nội, Năm 2022 I Yêu cầu: Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại Thiết kế LCD bàn phím điện thoại II Nội dung báo cáo A PHẦN • Lời mở đầu ……………………………………………………………………… … • Tìm hiểu vi điều khiển PIC16F877A …………………………………………… • Giới thiệu LCD ………………………………………………………………… B PHẦN • Linh kiện chuẩn bị ……………………………………………………………………8 • Lưu đồ giải thuật ……………………………………………………… …… …….8 • Viết chương trình cho vi điều khiển ………………………………………………… • Mạch mơ Proteus …………………………………………………………… 13 C PHẦN • Linh kiện chuẩn bị ………………………………………………………………… 16 • Lưu đồ giải thuật ……………………………………………………… …… … 16 • Viết chương trình cho vi điều khiển ……………………………………………… 17 • Mạch mơ Proteus …………………………………………………………… 23 D PHẦN • Nhận xét giảng viên 26 Nhóm Lớp KTVT – K61 Giảng viên: Ngô Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại LỜI NÓI ĐẦU Trong xã hội đại, phát triển ngành điện tử viễn thông yêu cầu thiếu để thúc đẩy kinh tế phát triển góp phần nâng cao đời sống xã hội Ngày nay, giới, điện tử viễn thông không ngừng phát triển với tốc độ cao thâm nhập ngày sâu vào tất lĩnh vực đời sống xã hội Cùng với phát triển vũ bão đó, ngành điện tử viễn thông Việt Nam nỗ lực lực đường tìm chỗ đứng cho Do đời dịch vụ điện thoại mà cụ thể mà cụ thể điện thoại di động với ưu dễ dàng hoạt động di chuyển lúc nơi Nhưng hoàn thiện sản phẩm thế, đặt vấn đề để hình dung chức để sau nguồn gốc để phát triển nhiều thứ mẻ Từ yêu cầu kiến thức tiếp thu trường, nhóm em lựa chọn đề tài: “ Thiết kế LCD bàn phím điện thoại ” Trong đề tài này, nhóm em tập trung giải vấn đề chính: Thiết kế phần cứng điều khiển thiết bị thông qua PIC16F877A Điều khiển bật/tắt thiết bị Bấm phím Hiển thị LCD mã điều khiển để kiểm tra Trong trình thực đề tài, cố gắng xong hạn chế thời gian tìm hiểu, kiến thức kinh nghiệm thực tế nên chúng em khơng tránh khỏi nhiều thiết xót Chúng em mong nhận ý kiến đóng góp thầy Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại bạn để đề tài chúng em ngày hoàn thiện hơn, với nhiều chức Nhóm em xin chân thành cảm ơn A PHẦN I Tìm hiểu vi điều khiển PIC16F877A Khái quát PIC16F877A 1.1 Sơ đồ nguyên lí mạch thực tế PIC16F877A Sơ đồ chân PIC16F877A Mạch thực tế PIC16F877A 1.2 Nhận xét Từ sơ đồ chân mạch thực tế, ta rút nhận xét ban đầu sau: PIC16F877A Vi điều khiển PIC 40 chân sử dụng hầu hết dự án ứng dụng nhúng Nó có năm cổng cổng A đến cổng E Nó có ba định thời có định thời bit định thời 16 Bit Nó hỗ trợ nhiều giao thức giao tiếp giao thức nối tiếp, giao thức song song, giao thức I2C PIC16F877A hỗ trợ ngắt chân phần cứng ngắt định thời - 40 chân chia thành PORT, chân cấp nguồn, chân GND, chân thạch anh chân dùng để RESET vi điều khiển PORT PIC16f877A bao gồm: + PORTB: chân Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại + PORTD: chân + PORTC: chân + PORTA: chân + PORTE: chân 1.3 Khái quát chức PORT vi xử lí PIC16F877A PORTA PORTA gồm có chân Các chân PortA, ta lập trình để thực chức “hai chiều”: xuất liệu từ vi điều khiển ngoại vi nhập liệu từ ngoại vi vào vị điều khiển Việc xuất nhập liệu PIC16F877A khác với họ 8051, tất PORT PIC16F877A, thời điểm thực chức xuất nhập Để chuyển từ chức nhập qua chức xuất hay ngược lại, ta phải xử lý phần mềm, không 8051 tự hiểu lúc chức nhập, lúc chức xuất Trong kiến trúc phần cứng PIC16F877A, người ta sử dụng ghi TRISA Ở địa 85H để điều khiển chức IO Muốn xác lập chân PORTA nhập (input) ta set bit tương ứng chân ghi TRISA Ngược lại, muốn chân output ta clear bit tương ứng chân ghi TRISA Điều hồn tồn tương tự PORT cịn lại Ngồi ra, PORTA cịn có chức quan trọng sau : - Ngõ vào Analog ADC : thực chức chuyển từ Analog sang Digital PORTB PORTB có chân Cũng PORTA, chân PORTB thực chức năng: input output Hai chức điều khiển ghi TRISB Khi muốn chân PORTB input ta set bit tương ứng ghi TRISB, ngược lại muốn chân output ta clear bit tương ứng TRISB Thanh ghi TRISB cịn tích hợp điện trở kéo lên điều khiển chương trình PORTC Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại PORTC có chân thực chức input output điều khiển ghi TRISC tương tự hai ghi Ngồi PORTC cịn có chức quan trọng sau: - Ngõ vào xung clock cho Timer1 kiến trúc phần cứng - Bộ PWM thực chức điều xung lập trình tần số, duty cycle: sử dụng điều khiển tốc độ vị trí động v,v , - Tích hợp giao tiếp nối tiếp I2C, SPI, SSP, USART PORTD PORTD có chân, Thanh ghi TRISD điều khiển chức input output PORTD tương tự PORTD cổng xuất liệu chuẩn giao tiếp song song PSP (Parallel Slave Port) PORTE PORTE có chân, Thanh ghi điều khiển xuất nhập tương ứng TRISE Các chân PORTE có ngỏ vào analog Bên cạnh PORTE cịn chân điều khiển chuẩn giao tiếp PSP II Tìm hiểu LCD 1.1 Khái quát Màn hình LCD có đa dạng ứng dụng nhiều lĩnh vực khác từ công nghiệp dân dụng Các LCD cấp thấp đơn sắc (có màu xám, xanh vàng, xanh dương, ), trung cao cấp có loại hình LCD theo chuẩn VGA, với độ phân giải điểm ảnh độ phân giải màu cao, ngồi cịn có nhiều loại LCD ứng dụng làm hình cảm ứng hay Các loại LCD đơn sắc tìm hiểu để ứng dụng nghiên cứu thiết kế dạng mô-đun Các mô-đun gồm phần hình LCD, chip điều khiển quy định tập lệnh tác động lên LCD (mã lệnh dạng tín hiệu bịt qua chân điều khiển chân liệu LCD), quy định trình khởi động LCD thiết lập liên kết vùng hình LCD khác nhau, Việc cịn lại địi hỏi cần có mạch điều khiển ngồi dùng vi xử lý để lập trình hiển thị giao tiếp LCD với Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại phần cứng khác (như đọc tín hiệu từ bàn phím, ma trận phím, ADC, tính tốn, hiển thị lên LCD, giao tiếp máy tính hiển thị lên LCD, LCD đoạn, LCD xám sáng, thiết kế khu vực riêng, thường dùng máy tính (Calculator), đồng hồ đeo tay, treo tường, Chúng hiển thị theo khu vực segment thiết lập trước, hiển thị LED đoạn với segment khu vực Thường khơng có mơ-đun LCD hiển thị ký tự theo dòng hay đồ họa ký tự, chúng hiển thị cách chia hình làm nhiều ơ, thể ký tự đọc (ROM character - lưu DDRAM) biểu tượng (thiết kế CGRAM) ô, độ phân giải tùy kích thước nhà thiết kế quy định Riêng LCD đồ họa ký tự có khác đơi chút, kích thước hình lớn hơn, liền ma trận điểm tồn hình, ký tự thường có bảng mã ASCII bảng mã chữ riêng (có kích thước lớn hơn, tiếng Hoa, tiếng Nhật, ); ngồi mở rộng để thị đồ họa (chế độ mở rộng - thiết kế hiển thị qua GDRAM) LCD đồ họa điểm ảnh (ma trận điểm tồn hình) hồn tồn khơng có bảng mã nhớ, khơng có tập lệnh cụ thể để thao tác cho mục đích truy cập mà hình LCD, có quy định mã để thiết lập trạng thái tín hiệu cho điểm ảnh, có quy định trình khởi động cho LCD – điều quan trọng điều khiển LCD Từ điều đó, mà lập tổ hợp lệnh hay chương trình để kích hoạt điểm ảnh tương ứng nhãm hiển thị mong muốn chương trình Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại B PHẦN (LCD Bits) I Linh kiện chuẩn bị - vi điều khiển PIC16F877A - Thạch anh 20MHz - nút bấm button - tụ điện nF - tụ hóa - Bàn phím KEYPAD-PHONE - LCD LM016L - biến trở 5k - điện trở 10k - power - ground II Lưu đồ thuật tốn Nhóm Lớp KTVT – K61 Giảng viên: Ngô Thanh Bình BT Vi xử lí III LCD Bàn phím điện thoại Viết chương trình vi điều khiển PIC #include CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF); #define rs RD2 #define en RD3 #define R1 RB0 #define R2 RB1 #define R3 RB2 #define R4 RB3 #define C1 RB4 #define C2 RB5 #define C3 RB6 #define sw RB7 void lcd_init(); void cmd(unsigned char a); void dat(unsigned char b); void show(unsigned char *s); void lcd_delay(); unsigned int i=0; unsigned char key(); void keyinit(); unsigned char keypad[4][3]={{'1','2','3'},{'4','5','6'},{'7','8','9'},{'*','0','#'}}; unsigned char rowloc,colloc; void main() { TRISD=0; TRISC=0xff; Nhóm Lớp KTVT – K61 Giảng viên: Ngơ Thanh Bình BT Vi xử lí } LCD Bàn phím điện thoại lcd_init(); keyinit(); unsigned char b; unsigned char c=0xc0;// dia chi o hang cot LCD cmd(0x80); show(" MOI BAN NHAP "); while(1) { if(sw==0){ i++; } if(i==1){ cmd(c); b=key(); dat(b); c=c+1; // sau moi lan hien thi thi dich vi tri sang ben phai if(c==0xCF) c=0xc0;// dich het cua so cua lcd thi tro ve ban dau } PORTB=0; if(i==2){ i==0; } } void lcd_init() { cmd(0x02); cmd(0x28); cmd(0x0e); cmd(0x06); cmd(0x80); } void cmd(unsigned char a) { rs=0; PORTD&=0x0F; PORTD|=(a&0xf0); en=1; lcd_delay(); en=0; Nhóm Lớp KTVT – K61 10 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại while(C1==0||C2==0||C3==0); return (keypad[rowloc][colloc]); } IV Mạch mơ Proteus Mạch hồn thiện: Nhóm Lớp KTVT – K61 13 Giảng viên: Ngô Thanh Bình BT Vi xử lí Khi bấm LCD Bàn phím điện thoại để chạy chương trình: - Khi hình LCD xuất lên dòng chữ “ MOI BAN NHAP” - Muốn bấm số phải bấm Button trước để dịng chờ đợi nhâp bấm phím - Chúng ta nhập số mà ta muốn bấm, kết bấm xuất hình LCD Nhóm Lớp KTVT – K61 14 Giảng viên: Ngô Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại Ví dụ ta nhập 0123456789 kết hình LCD: Nhóm Lớp KTVT – K61 15 Giảng viên: Ngơ Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại C PHẦN ( LCD Bits) I Chuẩn bị linh kiện - Vi điều khiển PIC16F877A - Tụ điện 1nF - Tụ điện 330 Ohm - Thạch anh 1MHz - Keypad- Phone - hình LCD LM016L - Motor - nút Button - tụ hóa II Lưu đồ thuật tốn Nhóm Lớp KTVT – K61 16 Giảng viên: Ngô Thanh Bình BT Vi xử lí LCD Bàn phím điện thoại III Viết chương trình Vi xử lí PIC16F877A #include #define rs RD0 #define rw RD1 #define en RD2 #define delay for(i=0;i