Đồ án 1 thiết kế máy tính bỏ túi sử dụng vi xử lý 89c51

43 1.1K 17
Đồ án 1 thiết kế máy tính bỏ túi sử dụng vi xử lý 89c51

Đ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

Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đặc biệt là ngành vi điều khiển. Đời sống xã hội ngày càng phát triển cao dựa trên những ứng dụng của khoa học vào đời sống. Vì vậy mà những công nghệ điện tử mang tính tự động ngày càng được ứng dụng rộng rãi. Trong số đó có sự đóng góp không nhỏ của kỹ thuật vi điều khiển. Các bộ vi điều khiển đang được ứng dụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết là các thiết bị được điều khiển tự động từ các thiết bị văn phòng cho đến các thiết bị trong gia đình đều dung các bộ vi điều khiển nhằm đem lại sự tiện nghi cho con người trong thời đại công nghiệp hóa, hiện đại hóa. Ngoài ra cùng với sự phát triển của các ngành kinh tế, giáo dục, y học,… làm tăng số lượng công việc tính toán và xử lý số liệu và phải tiếp cận những con số lớn và lẻ mà không thể tính toán bằng tay được. Chính vì vậy chúng em lựa chọn đề tài cho đồ án 1 là :” Thiết kế máy tính bỏ túi sử dụng vi xử lý 89C51 “ này. Tuy đã cố gắng thực hiện đồ án trong sự nghiêm túc và trách nhiệm nhất, nhưng do khả năng nghiên cứu cũng như kiến thức các thành viên còn nhiều hạn chế nên không thể tránh khỏi những lỗi và thiếu sót. Rất mong nhận được những ý kiến đóng góp tích cực từ thầy Nguyễn Tuấn Ninh.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN ĐỒ ÁN Đề tài Thiết kế máy tính bỏ túi sử dụng vi xử lý 89C51 GVHD : Thạc sĩ Nguyễn Tuấn Ninh SVTH : Nguyễn Đức Anh - 20121211 Trần Văn Bắc - 20121269 Máy Tính Bỏ Túi Lời nói đầu Ngày với tiến khoa học kỹ thuật, đặc biệt ngành vi điều khiển Đời sống xã hội ngày phát triển cao dựa ứng dụng khoa học vào đời sống Vì mà công nghệ điện tử mang tính tự động ngày ứng dụng rộng rãi Trong số có đóng góp không nhỏ kỹ thuật vi điều khiển Các vi điều khiển ứng dụng rộng rãi thâm nhập ngày nhiều lĩnh vực kỹ thuật đời sống xã hội Hầu hết thiết bị điều khiển tự động từ thiết bị văn phòng thiết bị gia đình dung vi điều khiển nhằm đem lại tiện nghi cho người thời đại công nghiệp hóa, đại hóa Ngoài với phát triển ngành kinh tế, giáo dục, y học,… làm tăng số lượng công việc tính toán xử lý số liệu phải tiếp cận số lớn lẻ mà tính toán tay Chính chúng em lựa chọn đề tài cho đồ án :” Thiết kế máy tính bỏ túi sử dụng vi xử lý 89C51 “ Tuy cố gắng thực đồ án nghiêm túc trách nhiệm nhất, khả nghiên cứu kiến thức thành viên nhiều hạn chế nên tránh khỏi lỗi thiếu sót Rất mong nhận ý kiến đóng góp tích cực từ thầy Nguyễn Tuấn Ninh Máy Tính Bỏ Túi MỤC LỤC Trang Trang bìa ………………………………………………………………………………….1 Lời nói đầu ……………………………………………………………………………… Phần 1: GIỚI THIỆU …………………………………………………………………… Phần : CƠ SỞ LÝ THUYẾT……………………………………………………………5 I Các linh kiện sử dụng mạch ………………………………………………… … II Đặc điểm, cấu tạo, chức linh kiện …………………………………… Phần : THIẾT KẾ VÀ MÔ PHỎNG …………………………………………… … 16 I Sơ đồ khối ……………………………………………………………………….….…16 Quét bàn phím ………………………………………………………………………… 17 Hàm Num() ………………………………………………………………………… 18 Hàm Dec() …………………………………………………………………………….20 Hàm Sign() ……………………………………………………………………………21 Hàm Calx() ……………………………………………………………………………23 II Mô ……………………………………………………………………….…….24 III Code chương trình ……………………………………………………………… ….29 Phần : KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN ………………………………… … 39 Các tài liệu tham khảo …………………………………………………………….…….39 Máy Tính Bỏ Túi Phần I GIỚI THIỆU I Mục tiêu đề tài: - Ứng dụng vào thực tế Vi Xử Lí 8051 học - Biết cách sử dụng, tương tác, lập trình với VXL - Biết sử dụng, ghép nối bàn phím 4x4 LCD với VXL II Yêu cầu đặt ra: - Thiết kế máy tính bỏ túi sử dụng VXL 8051 - Máy tính bỏ túi có chức sau:  phép tính bản: Cộng “+”, Trừ “-“, Nhân “x”, Chia “/”  Có thể xử lí chữ số sau dấu chấm thập phân “.”  Bàn phím bao gồm 10 phím số (từ đến 9), phím phép tính ( + - x /), phím (=), phím chấm thập phân ( ) => Bàn phím 16 phím nên ta sử dụng ma trận phím 4x4 (Phím ON/Reset tích hợp với chân reset VXL) - Sử dụng LCD 16x2 để thị phép tính kết Máy Tính Bỏ Túi Phần CƠ SỞ LÝ THUYẾT I CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH II - Vi điều khiển AT89C51 - LCD 16x2 - Bàn phím keypad - Các loại tụ điện, điện trở, biến trở… - Thạnh anh 12Mhz - Nguồn chiều 5V ĐẶC ĐIỂM, CẤU TẠO, CHỨC NĂNG CỦA CÁC LINH KIỆN Vi điều khiển AT89C51 a Giới thiệu chung 89C51  Vi điều khiển (VĐK) hệ vi xử lý tổ chức chip IC VĐK AT89C51 tương thích với họ MCS51 có đặc điểm sau : - Có 40 chân - KB EPROM bên - Dải tần số hoạt động từ 0Mhz đến 24 Mhz - Có 128 byte RAM - định thời 16 bit - Mạch giao tiếp nối tiếp - 64 KB vùng nhớ liệu ngoại - 64 KB vùng nhớ mã - Bộ xử lý bit thao tác bit riêng - μs cho hoạt động nhân chia - 210 vị trí nhớ định địa chỉ, vị trí bit - Có ghi chức năng, chế điều khiển ngắt - Các thời gian dung lĩnh vực chia tần số tạp thời gian thực Máy Tính Bỏ Túi  Sơ đồ chân 89C51 89C51 có tất 40 chân có chức đường xuất nhập Trong có 24 chân có tác dụng kép (có nghĩa chân có chức năng), đường hoạt động đường xuất nhập đường điều khiển thành phần bus liệu bus địa GND ( chân 20) : chân nối đất 0V Port port có chức chân 32 – 39 8951 Trong thiết kế cỡ nhỏ không dùng nhớ mở rộng có chức đường IO Đối với thiết kế cỡ lớn có nhớ mở rộng, kết hợp bus địa chỉvà bus dữliệu Port port IO chân 1-8 Các chân ký hiệu P1.0, P1.1, P1.2, … dùng cho giao tiếp với thiết bị cần Port chức khác, chúng dùng cho giao tiếp với thiết bị bên Máy Tính Bỏ Túi Port port có tác dụng kép chân 21 - 28 dùng đường xuất nhập byte cao bus địa thiết bị dùng nhớ mở rộng Port port có tác dụng kép chân 10 - 17 Các chân port có nhiều chức năng, công dụng chuyển đổi có liên hệ với đặc tính đặc biệt 8951 bảng sau: Bit P 3.0 P 3.1 P 3.2 P 3.3 P 3.4 P 3.5 P 3.6 P 3.7 Chức chuyển đổi Tên RxD Ngõ vào liệu nối tiếp TxD Ngõ xuất liệu nối tiếp INT0 Ngõ vào ngắt cứng thứ INT1 Ngõ vào ngắt cứng thứ TO Ngõ vào TIMER/COUNTER thứ T1 Ngõ vào TIMER/COUNTER thứ WR Tín hiệu ghi liệu lên nhớ RD Tín hiệu đọc nhớ liệu PSEN ( Program store enable ): PSEN tín hiệu ngõ chân 29 có tác dụng cho phép đọc nhớ chương trình mở rộng thường nói đến chân 0E\ (output enable) Eprom cho phép đọc byte mã lệnh PSEN mức thấp thời gian Microcontroller 8951 lấy lệnh Các mã lệnh chương trình đọc từ Eprom qua bus liệu chốt vào ghi lệnh bên 8951 đểgiải mã lệnh Khi 8951 thi hành chương trình ROM nội PSEN mức logic ALE ( Address latch enable ) : Khi 8951 truy xuất nhớ bên ngoài, port có chức bus địa bus liệu phải tách đường liệu địa Tín hiệu ALE ởchân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp đường địa chỉvà liệu kết nối chúng với IC chốt Tín hiệu chân ALE xung khoảng thời gian port đóng vai trò địa thấp nên chốt địa hoàn toàn tự động Các xung tín hiệu ALE có tốc độbằng 1/6 lần tần số dao động chip dùng làm tín hiệu clock cho phần khác hệ thống Chân ALE dùng làm ngõ vào xung lập trình cho Eprom 8951 Máy Tính Bỏ Túi EA ( External access) : Chọn nhớ Nếu EA = 5V: chọn ROM nội Nếu EA =0V: chọn ROM RST ( Reset ) : Ngõ vào RST chân ngõ vào Reset 8951 Khi ngõ vào tín hiệu đưa lên cao chu kỳ máy, ghi bên nạp giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset 10 X1, X2 : Bộ dao động tích hợp bên 8951, sử dụng 8951 người thiết kế cần kết nối thêm thạch anh tụ hình vẽ sơ đồ Tần số thạch anh thường sử dụng cho 8951 12Mhz 11 Vcc : chân nguồn nối lên 5V b Tổ chức nhớ Bộ nhớ bên chip bao gồm ROM, RAM EPROM RAM chip bao gồm vùng RAM đa chức năng, vùng RAM với bit định địa chỉ, ghi (bank) ghi chức đặc biệt  Có đặc tính đáng lưu ý: + Các ghi port I/O định địa theo kiểu ánh xạ nhớ truy xuất vị trí nhớ nhớ + Vùng track thường RAM chip thay RAM vi xử lý Vùng RAM đa mục đích : Có 80 byte, địa từ 30H đến 7FH Bất vị trí vùng RAM ta truy xuất tự cách sử dụng định địa trực tiếp gián tiếp Vùng RAM đại chỉ: Chip 8951 chứa 210 vị trí định địa có 128byte chứa byte địa 20H đến 2FH (16bytex8=128bits), phần lại chứa ghi chức đặc biệt - Công dụng: + Truy xuất bit riêng rẽ thông qua phần mềm Máy Tính Bỏ Túi + Các port định địa bit, làm đơn giản việc giao tiếp băng phần mền với thiết bị xuất nhập đơn bit Các ghi chức đặc biệt (SFR): Không phải tất 128 địa từ 80H đến FFH định nghĩa mà chit có 21 địa định nghĩa Các ghi chức đặc biệt bao gồm: + Từ trạng thái chương trình PSW: có địa D0H + Thanh ghi B: Có địa F0H dùng chung với chứa A phép toán nhân chia + Con trỏ Stack (SP): ghi 8bit địa 81H, chứa địa liệu đỉnh stack + Con trỏ liệu DPTR: Dùng để truy xuất nhớ chương trình nhớ liệu DPTR ghi 16bit có địa 82H (bytethấp) 83H (bytecao) + Các ghi port : Port : đại 80H Port : địa 90H Port 2: địa A0H Port 3: địa chi B0H + Các ghi định thời: 89C51có định thời/đếm dùng để định khoảng thời gian đếm kiện - Bộ định thời 0: địa 8AH (TL0) 8CH (TH0) - Bộ định thời 1: địa 8bH (TL1) 8DH (TH1) Hoạt động định thời thiết lập ghi chế độ định thời TMOD địa 89H ghi điều khiển định thời TCON địa 88H (chỉ cóTCON định địa bit) Máy Tính Bỏ Túi + Các ghi port nối tiếp: 89C51 có port nối tiếp để truyền thông với thiết bị thiết bị đầu cuối model + Các nghi ngắt: có cấu trúc ngắt với mức ưu tiên nguyên nhân ngắt Các ngắt bị vô hiệu hóa sau reset hệ thống phép cách vào ghi IE địa A8H Mức ưu tiên ngắt thiết lập ghi IP địa B8H +Thanh ghi điều khiển nguồn: PCON có địa 87H c Tập lệnh 89C51 * Các kiểu định địa chỉ: Trong tập lệnh có chế độ đánh địa - Thanh ghi đại - Địa trực tiếp - Địa gián tiếp - Địa tức thời - Địa tuyệt đối - Địa tương đối - Địa dài - Địa tham chiếu * Các nhóm lệnh 89C51 + Nhóm lệnh số học + Nhóm lệnh logic + Nhóm lệnh di chuyển liệu + Nhóm lệnh xử lý bit + Nhóm lệnh rẽ nhánh 10 Máy Tính Bỏ Túi if(a & 4) D2 = 1; else D2 = 0; if(a & 8) D3 = 1; else D3 = 0; if(a & 16) D4 = 1; else D4 = 0; if(a & 32) D5 = 1; else D5 = 0; if(a & 64) D6 = 1; else D6 = 0; if(a & 128) D7 = 1; else D7 = 0; } void Lcd8_Cmd(char a) { RS = 0; // => RS = Lcd8_Port(a); //Data transfer EN = 1; // => E = Lcd_Delay(5); EN = 0; // => E = } Lcd8_Clear() { Lcd8_Cmd(1); } 29 Máy Tính Bỏ Túi void Lcd8_Set_Cursor(char a, char b) { if(a == 1) Lcd8_Cmd(0x80 + b); else if(a == 2) Lcd8_Cmd(0xC0 + b); } void Lcd8_Init() { Lcd8_Port(0x00); RS = 0; Lcd_Delay(200); ///////////// Reset process from datasheet ///////// Lcd8_Cmd(0x30); Lcd_Delay(50); Lcd8_Cmd(0x30); Lcd_Delay(110); Lcd8_Cmd(0x30); ///////////////////////////////////////////////////// Lcd8_Cmd(0x38); //function set Lcd8_Cmd(0x0C); //display on,cursor off,blink off Lcd8_Cmd(0x01); //clear display Lcd8_Cmd(0x06); //entry mode, set increment } void Lcd8_Wrt_Chr(char a) { RS = 1; // => RS = Lcd8_Port(a); //Data transfer EN = 1; // => E = Lcd_Delay(5); EN = 0; // => E = 04 } void Lcd8_Wrt_Str(char *a) { int i; for(i=0;a[i]!='\0';i++) Lcd8_Wrt_Chr(a[i]); } void Lcd8_Shift_Right() 30 Máy Tính Bỏ Túi { Lcd8_Cmd(0x1C); } void Lcd8_Shift_Left() { Lcd8_Cmd(0x18); } //=====================End LCD Bit Interfacing Functions================ 31 Máy Tính Bỏ Túi b Code chương trình: #include #include #include //LCD Module Connections sbit RS = P0^5; sbit EN = P0^7; sbit D0 = P2^0; sbit D1 = P2^1; sbit D2 = P2^2; sbit D3 = P2^3; sbit D4 = P2^4; sbit D5 = P2^5; sbit D6 = P2^6; sbit D7 = P2^7; //Keypad sbit R1 = P1^0; sbit R2 = P1^1; sbit R3 = P1^2; sbit R4 = P1^3; sbit C1 = P1^4; sbit C2 = P1^5; sbit C3 = P1^6; sbit C4 = P1^7; // -Prototype -// void scan(); void Delay (int a); void Sign(); void Calx(); void Cal(); void Num(); void Dec(); int h,k,N1,N2,i,j,q,e; float a,b,c,s; char d=' '; char t=' '; 32 Máy Tính Bỏ Túi char tx[10]; //Main program// void main() { a=b=c=N1=N2=k=h=s=i=e=0; Lcd8_Clear(); Lcd8_Init(); while(1) { scan(); } } //=================End Main===============// void scan() { if(e==0) { char d=' '; R1=0;R2=R3=R4=1; // grounding row1 if(C1==0){d='7';s=7;Num();} //check for column and wait for debound delay if(C2==0){d='8';s=8;Num();} if(C3==0){d='9';s=9;Num();} if(C4==0){d='+';h=1;Sign();} R2=0;R1=R3=R4=1; if(C1==0){d='4';s=4;Num();} if(C2==0){d='5';s=5;Num();} if(C3==0){d='6';s=6;Num();} if(C4==0){d='-';h=2;Sign();} R3=0;R1=R2=R4=1; if(C1==0){d='1';s=1;Num();} if(C2==0){d='2';s=2;Num();} if(C3==0){d='3';s=3;Num();} if(C4==0){d='x';h=3;Sign();} R4=0;R1=R2=R3=1; 33 Máy Tính Bỏ Túi if(C1==0){d='.';Dec();} if(C2==0){d='0';s=0;Num();} if(C3==0){Cal();} if(C4==0){d='/';h=4;Sign();} if(d!=' ') { Lcd8_Wrt_Chr(d); Delay(300); } } else {Lcd8_Clear();Lcd8_Wrt_Str("Error");Delay(3000);} } //===========================// void Dec() { if(i==0&&h==0){Lcd8_Clear();Lcd8_Wrt_Chr('0');} if(j==0) { i=2; j=1; } else{e=1;} } //===========================// void Numx() { if (i==0){a=s;i=1;} //i=0 state that the previous pressed button was a sign else if(i==1){a=a*10+s;} else if(i==2) { //Lcd8_Wrt_Chr('a'); for(q=0;q[...]... lúc đó được tính như sau: a=a+s *10 ^(-j) 23 Máy Tính Bỏ Túi 2 Hàm Void Dec(): Chức năng chính: nhận biết, lưu, hiển thị chuỗi số thập phân 24 Máy Tính Bỏ Túi 3 Hàm Void Sign(): Chức năng chính: lưu mã dấu để tính toán sau này, hiển thị dấu lên màn LCD - Trong hàm Sign() có sử dụng các cờ: N1; k; h; - Bằng vi c sử dụng cờ “N1” đánh dấu vi c đã bấm một phím số, sử dụng cờ “k” để 25 Máy Tính Bỏ Túi lưu trạng... “s” sẽ được gán giá trị tương ứng với phím đó Mỗi khi một phím dấu dược bấm, “k” sẽ được gán giá trị tương ứng: “+” tương ứng k =1, k=2 với “-“, k=3 với “x” và k=4 với “/” 21 Máy Tính Bỏ Túi 1 Hàm Void Num(): Chức năng chính: phân biệt chuỗi số a hay b, hiển thị ra màn LCD chuỗi số - Trong hàm Num() có sử dụng các cờ: N1; i ; K; j 22 Máy Tính Bỏ Túi - Bằng vi c sử dụng cờ “N2” để đánh dấu vi c người dùng... truyền xong 8bit, BF mới chuyển lên 1 - Bảng mã lệnh trong LCD 16 ×2 : Máy Tính Bỏ Túi 2.Bàn phím 4x4: 14 15 Máy Tính Bỏ Túi Phần 3: THIẾT KẾ VÀ MÔ PHỎNG I: Ghép nối với vi điều khiển: 1 Mạch dao động thạch anh Thạch anh có nhiệm vụ tạo ra dao động cung cấp xung cho VĐK làm vi c Thạch anh thường sử dụng cho 80 51 thường từ 8-24 MHz, nếu thạch anh càng lớn thì tốc độ làm vi c của VĐK sẽ càng nhanh, tuy nhiên... hình vẽ là chuẩn: Một chu kỳ máy của 89x 51 có 12 chu kỳ dao động.Nếu dùng thạch anh dao động chuẩn 12 MHz thì môt chu kỳ máy dài 1us Điện trở treo xuống GND, ổn định mức logic 0 cho VĐK, chống vi c VĐK reset liên tục Có giá trị là 10 k 17 Máy Tính Bỏ Túi 6 Mạch nguồn: - Ở mạch này ta sẽ dùng JAC để cấp nguồn cho toàn bộ mạch, thiết bị cấp cho JAC là adapter 5V 18 Máy Tính Bỏ Túi II: MẠCH MÔ PHỎNG - Dưới... bấm), N1=0(không phải phím số vừa được bấm) 26 Máy Tính Bỏ Túi 4 Hàm Void Calx(): Chắc năng chính: phục vụ thao tác tính toán và in ra màn hình kết quả Trong hàm Calx() có những cờ được sử dụng: k - Có 4 phép tính có thể được thực hiện với máy tính bỏ túi tương ứng với k =1, k=2, k=3, k=4 - Với trường hợp k=4 là phép chia chương trình sẽ kiểm tra số bị chia khác 0 rồi mới thực hiện phép tính 27 28 Máy Tính. .. được nối tới 4 port P1.4 đến P1.7 của VXL - Mỗi tọa độ được xác định bởi số hàng và số cột (Row; Col) sẽ được gán 1 chức năng riêng như trong bảng sau: Col1 Col2 Col3 Col4 Row1 7 8 9 + Row2 4 5 6 - Row3 1 2 3 x Row4 · 0 = / 3 Ghép nối, tương tác LCD16x2: Máy Tính Bỏ Túi LCD 16 x2 có 16 pin, chức năng từng pin đã được nêu trong phần II .1 Cở sở lí thuyết - LCD sẽ được sử dụng ở chế độ 16 bit nên tất cả các... int i; for(i=0;i ... “Thiết kế máy tính bỏ túi sử dụng vi xử lý 89C51 “ cách hoàn chỉnh 41 Máy Tính Bỏ Túi 42 Máy Tính Bỏ Túi II HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN  Hạn chế: Phạm vi tính toàn thấp  Hướng phát triển : Tính. .. liệu phải tiếp cận số lớn lẻ mà tính toán tay Chính chúng em lựa chọn đề tài cho đồ án :” Thiết kế máy tính bỏ túi sử dụng vi xử lý 89C51 “ Tuy cố gắng thực đồ án nghiêm túc trách nhiệm nhất,... cách sử dụng, tương tác, lập trình với VXL - Biết sử dụng, ghép nối bàn phím 4x4 LCD với VXL II Yêu cầu đặt ra: - Thiết kế máy tính bỏ túi sử dụng VXL 8051 - Máy tính bỏ túi có chức sau:  phép tính

Ngày đăng: 24/11/2015, 14:08

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan