Đồ án asembly :thiết kế bộ đếm sản phẩm 6 kênh dùng on chip 89c51
HỌC VIỆN KĨ THUẬT QUÂN SỰ KHOA VÔ TUYẾN-ĐIỆN TỬ ĐỒ ÁN MÔN HỌC Kỹ thuật vi xử lý lập trình assembly cho hệ VXL Đề tài: Thiết kế đếm sản phẩm sáu kênh với số lượng xung tích lũy tối đa kênh 5000 xung, hệ thống hiển thị sử dụng LCD 16:2 với thông tin hiển thị lên hình gồm số hiệu kênh số lượng xung tích lũy kênh Việc lựa chọn kênh hiển thị qua bàn phím, sử dụng bàn phím điện thoại, VXL sử dụng 80c51 Giảng viên hướng dẫn: Sinh viên thực : Nguyễn Hải Dương Nguyễn Mạnh CườngĐktđ10 Nguyễn Văn Thạch – Đktđ 10 Đồ án Kĩ thuật vi xử lý GVHD:Nguyễn Hải Dương Hà Nội 2012 I Phân tích đề tài Thơng qua trình tìm hiểu đề tài hướng dẫn thầy giáo em mơ hình hóa đề tài sau: đề tài tương tự chương trình đếm sản phẩm Với sản phẩm tương ứng xung Có băng chuyền đặt cảm biến Cứ sản phẩm qua cảm biến thông báo cho VĐK Việc người quản lý sử dụng bàn phím điện thoại để kiểm soát xem số sản phẩm băng chuyền thông qua thông tin hiển thị LCD 16:2 Các kênh đếm sản phẩm đủ 5000 sản phẩm quay đếm lại từ Qua ta có nhận xét: Cảm biến cho sản phẩm có sườn lên xung, ngược lại khơng phải sản phẩm hồn chỉnh bỏ qua Mỗi sản phẩm qua cảm biến khoảng thời gian định, điều phụ thuộc vào tốc độ băng truyền kích thước sản phẩm (tốc độ băng truyền ta điều chỉnh được) sản phẩm liên tiếp ln có khoảng cách định hay nói cách khác, xung liên tiếp tồn khoảng thời gian Vì kênh hoạt động độc lập nên cảm biến gửi tín hiệu VĐK thời điểm bất kì, khơng biết trước Bằng phân tích ta xây dựng ý tưởng, từ xây dựng lên phần cứng sau Ý tưởng thực tốn: tín hiệu VĐK nên ta “bấm thời gian” Sau khoảng thời gian ta lại dừng kiểm tra xem khoảng thời gian có sản phẩm qua.Công việc thực liên tục VĐK lấy sản phẩm khoảng thời gian sau cộng thêm vào với sản phẩm khoảng thời gian trước Ta quy định có sườn lên xung tín hiệu gửi đến nên ta chọn flip- flop D để làm khối thu tin Đầu D đặt mức cao Tín hiệu xung đưa vào chân Clk Mỗi có sườn lên chân Clk đầu Q set lên ta đọc giá trị đầu Q Thời gian timer0 quy định, cờ tràn TF0 set lên báo có ngắt chạy chương trình kiểm tra tín hiệu vào kênh Kênh có tín hiệu tăng biến đếm kênh lên 1, sau phát lệnh reset flip flop kênh để sẵn sàng thu xung II Các linh kiện mạch Onchip 80c51 80c51 vi xử lý có bit Tức làm việc tối đa với bit liệu thời điểm 80c51 có cồng vào Mỗi cổng rộng bit Cấu trúc vi điều khiển 80c51 Đồ án Kĩ thuật vi xử lý GVHD:Nguyễn Hải Dương 80c51 loại IC đóng vỏ DIP Có 40 chân Mỗi chân có kí hiệu chức sau: Chân 40 nối với nguồn nuôi (Vcc) Chân 20 nối với đất (GND) Chân 29 (PSEN) tín hiệu điều khiển xuất 8051, cho phép chọn nhớ nối với chân OE EPROM phép đọc byte chương trình Chân 30 (ALE) tín hiệu điều khiển xuất 8051 cho phép phân kênh bus địa bus liệu cổng P0 Chân 31 (EA) cho phép chọn nhớ Chân 18,19 nối với thạch anh Chân (rst) reset chương trình 32 chân lại chia thành cổng vào từ P0 đến P3 Flip flop D Sở dĩ chọn flip-flop làm hệ thu tin flip-flop đồng sườn Do việc nhận biết tín hiệu xung vào xác Phương trình hàm flip flop có dạng Q=D Khi đặt D mức 1, có sườn lên chân Clk Q set từ lên Và thơng tin mà ta cần thu LCD 16:2 Đồ án Kĩ thuật vi xử lý GVHD:Nguyễn Hải Dương LCD có 16 chân chức sau chân Kí hiệu I/O Mơ tả VSS - Đất VCC - Nguồn VEE - Nguồn điều khiển tương phản RS I RS=0 chọn ghi lệnh RS=1 chọn ghi liệu R/W I R/W = đọc liệu, R/W = ghi liệu E I/O Cho phép đọc ghi DB0 I/O Bit liệu DB1 I/O Nt DB2 I/O Nt 10 DB3 I/O Nt 11 DB4 I/O Nt 12 DB5 I/O Nt 13 DB6 I/O Nt 14 DB7 I/O Nt Nguyên lý hoạt động LCD: Chân chọn ghi RS: có ghi LCD Nếu RS=0 ghi lệnh chọn Cho phép người lập trình gửi lệnh đến LCD xóa trỏ, xóa hiển thị v v Nếu RS=1 ghi liệu chọn cho phép người lập trình gửi thơng tin cần hiển thị lên LCD Chân đọc ghi R/Wcho phép người lập trình đọc liệu từ LCD R/W=1 ghi liệu lên LCD R/W=0 Đồ án Kĩ thuật vi xử lý GVHD:Nguyễn Hải Dương Chân cho phép E chân dùng để chốt liệu Khi liệu gửi đến chân liệu LCD chân E phải có sườn xuống xung để chốt liệu Chân DB0-DB7 chân liệu Dùng để gửi thông tin vào LCD hay đọc thơng tin từ ghi bên chân cuối 15 16 dùng để sáng LED, giúp người điều khiển nhìn thấy thơng tin LCD bóng tối Chú ý: sử dụng RS =0 để kiểm tra bit cờ bận BD7 Nếu R/W =1 BD7=0 LCD bận khơng nhận thơng tin từ ngồi vào Khi DB7= LCD bắt đầu nhận thông tin Dưới sơ đồ phần cứng cho LCD Sau phần lập trình hiển thị LCD #include #include //thu vien xau C de hien thi LCD sfr LCDdata = 0xA0; //cong 2, bit du lieu sbit RS = P3^5; sbit RW = P3^6; sbit EN = P3^7; sbit BF = 0xA7; //********* KIEM TRA CLD CO BAN HAY KHONG ************* void wait(void) { long n=0; EN=1; //dua chan cho phep len cao RS=0; //chon ghi lenh RW=1; //doc du lieu tu LCD LCDdata=0xFF; //gia tri 0xFF if (BF==1) //kiem tra co ban { Đồ án Kĩ thuật vi xử lý GVHD:Nguyễn Hải Dương delay(200);// neu co BF=1 thi cho luc roi thoat khoi vong if } EN=0; //dua xung cao xuong thap de chot RW=0; //ghi du lieu tu bus vao ghi ben } //*********HAM DIEU KHIEN CLD THUC HIEN LENH********* void LCDcontrol(unsigned char x) { EN=1; //dua chan cho phep len cao RS=0; //chon ghi lenh RW=0; //ghi len LCD LCDdata = x;//gan gia tri hex cho PORT2, khac voi khai bao chon PORT2 lam bus du lieu vao EN=0;//xung cao xuong thap de chap nhan cho du lieu ghi vao ben wait();//doi LCD san sang } //*******************KHOI TAO LCD********************* void LCDinit(void) { LCDcontrol(0x30); //che bit LCDcontrol(0x38); //2 dong ma tran 2x7 LCDcontrol(0x01); //xoa man hinh LCDcontrol(0x0C); //tat tro } //****************LCD HIEN THI KI TU **************** void LCDwrite(unsigned char c) { EN=1;//cho phep RS=1;//ghi du lieu RW=0;//ghi len LCD LCDdata = c; EN=0;//xung cao xuong thap wait(); } //******** CHO LCD HIEN THI DONG CHU **************** void LCDputs(char *s,unsigned char row) //'*s' la tro tro toi bien s { unsigned char len,k; if (row==1) LCDcontrol(0x80);//ep tro ve dau dong else LCDcontrol(0xC0); //ep tro ve dau dong for (k=0;k