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.
Trang 1TRƯỜ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
Trang 2Thiết kế LCD bàn phím điện thoại
II Nội dung báo cáo
• Linh kiện chuẩn bị ………8
• Lưu đồ giải thuật ……… …….
Trang 3LỜI NÓI ĐẦU
Trong một xã hội hiện đại, sự phát triển của ngành điện tử viễn thông là một yêu cầu không thể thiếu để thúc đẩy nền kinh tế phát triển và góp phần nâng cao đời sống xã hội
Ngày nay, trên thế giới, điện tử viễn thông vẫn không ngừng phát triển với tốc
độ rất cao và thâm nhập ngày càng sâu vào tất cả các lĩnh vực của đời sống xã hội Cùng với sự phát triển như vũ bão đó, ngành điện tử viễn thông Việt Nam cũng đang
nỗ lực hết sức lực trên con đường tìm chỗ đứng cho mình Do đó sự ra đời của các dịch vụ điện thoại mà cụ thể mà cụ thể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọi nơi Nhưng để mà hoàn thiện được một sản phẩm như thế, chúng ta mới đặt ra được vấn đề làm sao để hình dung ra được các chức năng cơ bản để sau này nó là nguồn gốc chính để phát triển ra nhiều thứ mới mẻ Từ yêu cầu trên và những kiến thức tiếp thu ở trường, nhóm em đã lựa chọn đề tài: “ Thiết kế LCDbàn phím điện thoại ”
Trong đề tài này, nhóm em sẽ tập trung giải quyết các 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ị 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
Trang 4và 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.
Nhóm em xin chân thành cảm ơn
A PHẦN 1.
I Tìm hiểu về vi điều khiển PIC16F877A.
1 Khái quát về PIC16F877A
1.1 Sơ đồ nguyên lí và mạch thực tế của PIC16F877A.
1.2 Nhận xét
Từ sơ đồ chân và mạch thực tế, ta rút ra các nhận xét ban đầu như sau: PIC16F877A là một Vi điều khiển PIC 40 chân và được sử dụng hầu hết trongcác dự án và ứng dụng nhúng Nó có năm cổng bắt đầu từ cổng A đến cổng E Nó
có ba bộ định thời trong đó có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit Nó
hỗ trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức song song, giaothức I2C PIC16F877A hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời
- 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chânGND, 2 chân thạch anh và một chân dùng để RESET vi điều khiển
- 5 PORT của PIC16f877A bao gồm:
+ PORTB: 8 chân
Sơ đồ chân PIC16F877A Mạch thực tế PIC16F877A
Trang 5+ PORTD: 8 chân+ PORTC: 8 chân+ PORTA: 6 chân+ PORTE: 3 chân
1.3 Khái quát về chức năng của các PORT trong vi xử lí PIC16F877A.
PORTA
PORTA gồm có 6 chân Các chân của PortA, ta lập trình để có thể thực hiện đượcchức năng “hai chiều”: xuất dữ liệu từ vi điều khiển ra ngoại vi và nhập dữ liệu từngoại vi vào vị điều khiển
Việc xuất nhập dữ liệu ở PIC16F877A khác với họ 8051, ở tất cả các PORT củaPIC16F877A, ở mỗi thời điểm chỉ thực hiện được một chức năng xuất hoặc nhập Đểchuyển từ chức năng này nhập qua chức năng xuất hay ngược lại, ta phải xử lý bằngphần mềm, không như 8051 tự hiểu lúc nào là chức năng nhập, lúc nào là chức năngxuất
Trong kiến trúc phần cứng của PIC16F877A, người ta sử dụng thanh ghi TRISA Ởđịa chỉ 85H để điều khiển chức năng IO trên Muốn xác lập các chân nào của PORTA
là nhập (input) thì ta set bit tương ứng chân đó trong thanh ghi TRISA Ngược lại,muốn chân nào là output thì ta clear bit tương ứng chân đó trong thanh ghi TRISA.Điều này hoàn toàn tương tự đối với các PORT còn lại
Ngoài ra, PORTA còn có các chức năng quan trọng sau :
- Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sangDigital
PORTB
PORTB có 8 chân Cũng như PORTA, các chân PORTB cũng thực hiện được 2chức năng: input và output Hai chức năng trên được điều khiển bởi thanh ghi TRISB.Khi muốn chân nào của PORTB là input thì ta set bit tương ứng trong thanh ghi
TRISB, ngược lại muốn chân nào là output thì ta clear bit tương ứng trong TRISB Thanh ghi TRISB còn được tích hợp bộ điện trở kéo lên có thể điều khiển đượcbằng chương trình
PORTC
Trang 6PORTC có 8 chân và cũng thực hiện được chức năng input và output dưới sự điềukhiển của thanh ghi TRISC tương tự như hai thanh ghi trên.
Ngoài ra PORTC còn có các chức năng quan trọng sau:
- Ngõ vào xung clock cho Timer1 trong kiến trúc phần cứng
- Bộ PWM thực hiện chức năng điều xung lập trình được tần số, duty cycle: sử dụngtrong điều khiển tốc độ và vị trí của động cơ v,v ,
- Tích hợp các bộ giao tiếp nối tiếp I2C, SPI, SSP, USART
PORTD
PORTD có 8 chân, Thanh ghi TRISD điều khiển 2 chức năng input và output củaPORTD tương tự như trên PORTD cũng là cổng xuất dữ liệu của chuẩn giao tiếp songsong PSP (Parallel Slave Port)
PORTE
PORTE có 3 chân, Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các châncủa PORTE có ngỏ vào analog Bên cạnh đó PORTE còn là các chân điều khiển củachuẩn giao tiếp PSP
Các loại LCD đơn sắc có thể tìm hiểu để ứng dụng nghiên cứu dưới đây được thiết
kế dưới dạng các mô-đun Các mô-đun gồm phần màn hình LCD, chip điều khiển quy định các tập lệnh tác động lên LCD (mã lệnh dưới dạng các tín hiệu bịt qua các chân điều khiển và chân dữ liệu của LCD), quy định quá trình khởi động LCD hoặc thiết lậpliên kết các vùng màn hình LCD khác nhau, Việc còn lại vẫn đòi hỏi cần có một mạch điều khiển ngoài dùng vi xử lý để lập trình hiển thị và giao tiếp của LCD với các
Trang 7phần cứng khác (như đọc tín hiệu từ bàn phím, ma trận phím, ADC, tính toán, rồi hiển thị lên LCD, hoặc giao tiếp máy tính hiển thị lên LCD,
LCD 7 đoạn, LCD nền xám sáng, được thiết kế từng khu vực riêng, thường được dùng trong các máy tính (Calculator), các đồng hồ đeo tay, treotường, Chúng hiển thị theo các khu vực segment đã được thiết lập trước, hoặc hiển thị như LED 7 đoạn với 7 segment mỗi 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ị bằng cách chia màn hình ra làm nhiều ô, thể hiện được các ký tự chỉ đọc (ROM
character - lưu trong DDRAM) hoặc các biểu tượng (thiết kế trong
CGRAM) trên mỗi ô, độ phân giải của từng ô tùy kích thước do nhà thiết kế quy định Riêng LCD đồ họa ký tự thì có khác đôi chút, như kích thước mànhình lớn hơn, các ô liền nhau như là ma trận điểm toàn màn hình, các ký tự thường có 2 bảng mã ASCII và 1 bảng mã chữ riêng (có kích thước ô lớn hơn, như tiếng Hoa, tiếng Nhật, ); ngoài ra nó được mở rộng để hiện 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 toàn màn hình) thì hoàn toàn không có bảng mã nào trong bộ nhớ, cũng không có tập lệnh cụ thể để thao tác cho các mục đích truy cập mà hình LCD, nhưng có quy định các mã cơ bản để thiết lập các trạng thái tín hiệu cho các điểm ảnh, và có quy định quá trình khởi động cho LCD – đây là điều quan trọng đầu tiên khi điều khiển LCD
Từ những điều đó, mà lập ra các tổ hợp lệnh hay chương trình để kích hoạt các điểm ảnh tương ứng nhãm hiển thị đúng như mong muốn của chương trình
Trang 8B PHẦN 2 (LCD 4 Bits)
I Linh kiện chuẩn bị.
- 1 vi điều khiển PIC16F877A
Trang 9Viết chương trình vi điều khiển PIC.
#include <pic.h>
CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF &
BOREN_ON & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
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();
Trang 13while(C1==0||C2==0||C3==0);
return (keypad[rowloc][colloc]);
}
IV Mạch mô phỏng Proteus
Mạch khi hoàn thiện:
Trang 14Khi chúng ta bấm để chạy chương trình:
- Khi đó màn hình LCD sẽ xuất hiện và hiện lên dòng chữ “ MOI BAN NHAP”
- Muốn bấm được số thì phải bấm Button trước để hiện dòng chờ đợi chúng ta nhâp bấm phím
- Chúng ta nhập số mà ta muốn bấm, kết quả chúng ta bấm nó sẽ xuất hiện trên màn hình LCD
Trang 15Ví dụ ta nhập 0123456789 thì nó sẽ ngay kết quả trên màn hình LCD:
Trang 16C PHẦN 3 ( LCD 8 Bits)
I Chuẩn bị linh kiện
- 1 Vi điều khiển PIC16F877A
Trang 17III Viết chương trình Vi xử lí PIC16F877A
Trang 18void dat(unsigned char b);
void show(unsigned char *s);
CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON
& LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);
Trang 23IV Mạch mô phỏng Proteus.
Mạch khi được hoàn thiện:
Trang 24Khi chúng ta bấm để chạy chương trình:
- Khi đó màn hình LCD sẽ xuất hiện và hiện lên dòng chữ “ MOI BAN NHAP”
- Muốn bấm được số thì phải bấm Button trước để hiện dòng chờ đợi chúng ta nhâp bấm phím
- Chúng ta nhập số mà ta muốn bấm, kết quả chúng ta bấm nó sẽ xuất hiện trên màn hình LCD
Trang 25Ví dụ ta nhập 0123456789 thì nó sẽ ngay kết quả trên màn hình LCD:
Trang 26D Nhận xét của giảng viên
kiện
kiện
kiện
Trang 27Lại Văn Hoàn (Hỗ trợ
code)
Nhận xét của Giáo Viên Hướng Dẫn
Hà Nội, ngày tháng năm 2022 Giáo viên hướng dẫn