PHẦN 1: PHÂN TÍCH BÀI TOÁN1.Linh kiện cần dùnga.ONCHIP 89c51. b.LCD 162.c.KEYPAD_PHONE.d.Các linh kiện cần dùng khác như điện trở, tụ điện, thạch anh,…2.Chức năng của từng phần tửChức năng của từng phần tử được mô tả như sau:Bộ vi xử lý 89c51:Thuộc họ VXL 8051.Có khả năng chứa chương trình lên đến 4kB dung lượng.Hoạt động ở tần số 12MHz.Có 2 bộ định thời.Chứa giao tiếp UART.Các cổng giao tiếp:Onchip 89c51 gồm có 4 Port 8 bit vào ra 2 chiều Port 0.x: Cổng giao tiếp vàora trực tiếp 8 bit. Port 1.x: Cổng giao tiếp vàora trực tiếp 8 bit.Port 2.x: Cổng giao tiếp vàora trực tiếp 8 bit.Port 3.x: Cổng giao tiếp vàora trực tiếp 8 bit. Port 3 có chân P3.0 và P3.1 là chân RXD và TXD, 2 chân này sẽ giúp ta thực hiện việc truyền tin nối tiếp trong đề tài này.Các Port của 89c51 đều có thể được điều khiển thông qua chương trình nạp vào 89c51.Các chân còn lại: XTAL1: Chân vào mạch khuếch đại dao động.XTLA2: Chân ra từ mạch khuếch đại dao động.PSEN: Chân cho phép đọc bộ nhớ chương trình ngoài. Khi onchip làm việc với bộ nhớ chương trình ngoài, chân này phát tín hiệu kích hoạt ở mức thấp và được kích hoạt ở mức thấp và được kích hoạt 2 lần trong mỗi chu kì máy. Chân này không được kích hoạt khi onchip làm việc với bộ nhớ chương trình bên trong.ALE(PROG): Chân tín hiệu cho phép chốt địa chỉ khi onchip xuất ra byte thấp của địa chỉ để truy cập bộ nhớ ngoài, tín hiệu chốt kích hoạt ở mức cao, tần số xung chốt 16 fosc. Đây còn là chân nhận xung vào để nạp chương trình cho EPROM bên trong khi nó ở mức thấp.EA(Vpp): Chân cho phép lựa chọn làm việc với bộ chương trình + Khi EA=1 : cho phép onchip làm việc với bộ nhớ chương trình bên trong + Khi EA=0: cho phép onchip làm việc với bộ nhớ chương trình bên ngoàiKhi nó được cấp nguồn +21V thì onchip đảm nhiệm chức năng nạp chương trình cho EPROM.VCC : Chân cấp dương nguồn cho onchip (+5V)VSS : Chân cấp âm nguồn, được nối đất.Bộ hiển thị LCDSơ đồ chân của LCDChân sốKý hiệuMức logicIOChức năng1VssĐất ( GND)2VddNguồn cung cấp (+5v)3VeeINguồn điều khiển tương phản4RS01IRS= 0: chọn thanh ghi lệnh RS=1: chọn thanh ghi dữ liệu5RW01IRW =0 : ghi dữ liệu vào LCD RW =1đọc từ LCD module6E1,1 =>0ITín hiệu cho phép7DB001IOBus dữ liệu 8 bit8DB101IOBus dữ liệu 8 bit9DB201IOBus dữ liệu 8 bit10DB301IOBus dữ liệu 8 bit11DB401IOBus dữ liệu 8 bit12DB501IOBus dữ liệu 8 bit13DB601IOBus dữ liệu 8 bit14DB701IOBus dữ liệu 8 bitBảng lệnh đến thanh ghi của LCDMã(Hexa)Lệnh đến thanh ghi của LCD1Xóa màn hình hiển thị2Trở về đầu dòng4Giả con trỏ ( dịch con trỏ sang trái)6Tăng con trỏ (dịch con trỏ sang phải)5Dịch hiển thị sang phải7Dịch hiển thị sang trái8Tắt con trỏ, tắt hiển thịATắt hiển thị, bật con trỏCBật hiển thị, tắt con trỏEBật hiển thị ,nhấp nháy con trỏFTắt con trỏ, nhấp nháy con trỏ10Dịch vị trí con trỏ sang trái14Dịch vị trí con trỏ sang phải18Dịch toàn bộ hiển thị sang trái1CDịch toàn bộ hiển thị sang phải80Đưa con trỏ về đầu dòng thứ nhấtC0Đưa con trỏ về đầu dòng thứ hai38Hai dòng và ma trận 5 7 KEYPAD_ PHONELà bàn phím điện thoại di động được sử dụng theo yêu cầu của đề tài. Bàn phím gồm có 3 cột 4 hàng, tương đương với đó là các phím bấm từ 0 đến 9, phím và . PHẦN 2: THIẾT KẾ MẠCH Sơ đồ thuật toán Mô tả chi tiết cho trường hợp ONC 1 xuất, ONC 2 nhận: B1: Dữ liệu sẽ được đưa vào P1.x qua bàn phím điện thoại.B2: Đưa dữ liệu vừa nhận được vào LCD. B3: Truyền dữ liệu sang ONC thứ 2 thông qua 2 cổng RXD và TXD.B4: ONC2 đưa dữ liệu lên LCD. Kết thúc quá trình truyền – nhận từ ONC 1 sang ONC 2.Toàn bộ code mã hoá để đưa vào ONC 89c51 như sau:includeincludedefine data_out P0define RS P2_0define RW P2_1define E P2_2define row_1 P3_4define row_2 P3_5define row_3 P3_6define row_4 P3_7define col_1 P2_7define col_2 P2_6define col_3 P2_5define BF P0_7unsigned char send,receive;unsigned int counter_send=0x85; counter_receive=0xc8; delayvoid delay(unsigned int delay){ int a=0; for(a=0; a0 0/1 0/1 0/1 0/1 I/O I/O I/O I/O Chức Đất ( GND) Nguồn cung cấp (+5v) Nguồn điều khiển tương phản RS= 0: chọn ghi lệnh RS=1: chọn ghi liệu R/W =0 : ghi liệu vào LCD R/W =1đọc từ LCD module Tín hiệu cho phép Bus liệu bit Bus liệu bit Bus liệu bit Bus liệu bit 11 12 13 14 DB4 DB5 DB6 DB7 0/1 0/1 0/1 0/1 I/O I/O I/O I/O Bus liệu bit Bus liệu bit Bus liệu bit Bus liệu bit Bảng lệnh đến ghi LCD Mã(Hexa) A C E F 10 14 18 1C 80 C0 38 Lệnh đến ghi LCD Xóa hình hiển thị Trở đầu dòng Giả trỏ ( dịch trỏ sang trái) Tăng trỏ (dịch trỏ sang phải) Dịch hiển thị sang phải Dịch hiển thị sang trái Tắt trỏ, tắt hiển thị Tắt hiển thị, bật trỏ Bật hiển thị, tắt trỏ Bật hiển thị ,nhấp nháy trỏ Tắt trỏ, nhấp nháy trỏ Dịch vị trí trỏ sang trái Dịch vị trí trỏ sang phải Dịch toàn hiển thị sang trái Dịch toàn hiển thị sang phải Đưa trỏ đầu dòng thứ Đưa trỏ đầu dòng thứ hai Hai dòng ma trận *7 KEYPAD_ PHONE Là bàn phím điện thoại di động sử dụng theo yêu cầu đề tài Bàn phím gồm có cột hàng, tương đương với phím bấm từ đến 9, phím # * A B C # D PHẦN 2: THIẾT KẾ MẠCH Sơ đồ thuật toán Nhập số cần từ bàn phím Quét bàn phím Sai Không thực Sai Không thực Đúng Đưa liệu vừa nhận vào Port 0, xuất LCD dòng Đồng thời, liệu chuyển sang P3.1 để truyền sang ONC Nhận liệu ONC cổng P3.0 Ngắt truyền ONC hiển thị liệu nhận lên LCD dòng Qt bàn phím Mơ tả chi tiết cho trường hợp ONC xuất, ONC nhận: B1: Dữ liệu đưa vào P1.x qua bàn phím điện thoại B2: Đưa liệu vừa nhận vào LCD B3: Truyền liệu sang ONC thứ thông qua cổng RXD TXD B4: ONC2 đưa liệu lên LCD Kết thúc trình truyền – nhận từ ONC sang ONC Tồn code mã hố để đưa vào ONC 89c51 sau: #include #include #define data_out P0 #define RS P2_0 #define RW P2_1 #define E P2_2 #define row_1 P3_4 #define row_2 P3_5 #define row_3 P3_6 #define row_4 P3_7 #define col_1 P2_7 #define col_2 P2_6 #define col_3 P2_5 #define BF P0_7 unsigned char send,receive; unsigned int counter_send=0x85; counter_receive=0xc8; // delay// void delay(unsigned int delay) { int a=0; for(a=0; a