Vì thời gian có hạn nên chúng em chỉ có thế hoàn thành một máy tính bỏ túi đơn giản thực hiện các phép tính đơn giản như cộng, trừ, nhân, chia sử dụng IC 89C51.. Hiện nay trên thị trường
Trang 1LỜI MỞ ĐẦU
Máy tính bỏ túi là một công cụ học tập quen thuộc của học sinh, sinh viên, đặt biệt là sinh viên kỹ thuật Trong đời sống hàng ngày, nó là một vật cần thiết cho việc tính tiền trong các vụ mua bán Trong sản xuất, nó được dùng để tính toán số sản phẩm làm ra Và còn rất nhiều ứng dụng khác của máy tính bỏ túi, cho thấy sự phổ biến, cần thiết của nó
Nhận thấy vai trò của máy tính bỏ túi trong học tập, lao động và đời sống nên nhóm em quyết định chọn đề tài “Máy tính bỏ túi”
Vì thời gian có hạn nên chúng em chỉ có thế hoàn thành một máy tính bỏ túi đơn giản thực hiện các phép tính đơn giản như cộng, trừ, nhân, chia sử dụng IC 89C51
Em xin chân thành cám ơn thầy Trần Trung Tín đã giúp đỡ nhóm em trong
suốt quá trình làm đồ án Vì còn nhiều bở ngỡ nên không thiếu phần sai sót nên rất mong thầy và các bạn góp ý thêm cho nhóm chúng em Một lần nữa nhóm chúng em xin chân thành cảm ơn
Đà nẵng, tháng 12, năm 2013
Trang 2MỤC LỤC
LỜI MỞ ĐẦU i
MỤC LỤC ii
DANH MỤC HÌNH ẢNH v
CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1
1.1 Giới thiệu về máy tính bỏ túi 1
1.2 Các giải pháp và cách xác định bài toán 1
1.2.1 Yêu cầu của hệ thống 1
1.2.2 Lựa chọn phương án 2
CHƯƠNG II: GIỚI THIỆU VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN TRONG MẠCH 3
2.1 Vi điều khiển AT89C51 3
2.1.1 Giới thiệu tổng quan về họ vi điều khiển 8051 3
2.1.1.1 Sơ đồ khối và sơ đồ chân của AT89C51 3
2.1.1.2 Chức năng các chân của AT89C51 4
2.1.1.2.1 Port 0 4
2.1.1.2.2 Port 1 4
2.1.1.2.3 Port 2 5
2.1.1.2.4 Port 3 5
2.1.1.2.5 Chân RST 6
2.1.1.2.6 Chân XTAL 6
2.1.1.2.7 Chân EA 6
2.1.1.2.8 Chân ALE 6
2.1.1.2.9 Chân PSEN 6
2.1.1.2.10 Chân nguồn 7
2.1.2 Hoạt động định thời, cổng nối tiếp ,ngắt và xử lý ngắt của họ 8051 7
2.1.2.1 Hoạt động định thời 7
2.1.2.2 Cổng nối tiếp 7
2.1.2.3 Ngắt và xử lý ngắt 7
Trang 32.1.3 Các thanh ghi đặc biệt của 89C51 (SFR – Special Function Registers) 7
2.1.3.1 Thanh ghi tích luỹ (Accumulator) 7
2.1.3.2 Thanh ghi B 7
2.1.3.3 Thanh ghi từ trạng thái chương trình (PSW - Program Status Word) 8
2.1.3.4 Thanh ghi con trỏ stack (SP – Stack Pointer) 8
2.1.3.5 Con trỏ dữ liệu DPTR (Data Pointer) 9
2.1.3.6 Các thanh ghi Port 9
2.1.3.7 Các thanh ghi bộ định thời (Timer) 9
2.1.3.8 Các thanh ghi port nối tiếp (Serial port) 10
2.1.3.8.1 Thanh ghi SBUF (Serial Buffer) 10
2.1.3.8.2 Thanh ghi điều khiển port nối tiếp SCON 10
2.1.3.9 Các Thanh Ghi Ngắt (Interrupt) 11
2.1.3.10 Hoạt động reset 11
2.2 LCD hiển thị 11
2.2.1 Hình dáng và kích thước 11
2.2.2 Chức năng các chân 12
2.2.3 Các ký tự LCD LMB162A hiển thị được 13
2.2.4 Cách hiển thị các ký tự 13
2.3 Bàn phím 14
2.3.1 Số lượng và chức năng phím nhấn 15
2.3.2 Xác định cách kết nối với VĐK 15
2.3.4 Sơ đồ nguyên lý 15
2.3.5 Nguyên tắc hoạt động 16
2.4 Tụ điện 17
2.5.Điện trở 18
2.6.Nút bấm button 18
2.7.Biến trở 18
2.8.Thạch anh 19
CHƯƠNG III CÁC SƠ ĐỒ MẠCH 20
Trang 43.1 Khối LCD 20
3.2 Khối bàn phím 20
3.3 Khối nguồn 21
3.4 Khối trung tâm 21
3.5 Sơ đồ mạch in 22
3.6 Mô phỏng bằng proteus 23
3.7 Hình ảnh thức tế 24
CHƯƠNG IV LẬP TRÌNH CHO VI XỬ LÝ 25
4.1 Tóm lược cách làm 25
4.2 Chương trình 25
LỜI CẢM ƠN 32
TÀI LIỆU THAM KHẢO 33
Trang 5DANH MỤC HÌNH ẢNH
Hình 1.1: Máy tính bỏ túi 1
Hình 2.1 Sơ đồ khối của AC89C51 3
Hình 2.2 Sơ đồ chân của AC89C51 4
Hình 2.3 Port 0 4
Hình 2.4 Port 1 5
Hình 2.5 Port 2 5
Hình 2.6 Port 3 6
Hình 2.9: Cấu tạo của một phím 15
Hình 2.10 Bàn phím với mã phím 16
Hình 2.11 Các loại tụ 18
Hình 2.12 Điện trở 18
Hình 2.13 Nút bấm 18
Hình 2.14 Biến trở 18
Hình 2.15 Thạch anh 12 Mhz 19
Hình 3.1 khối LCD 20
Hình 3.2 khối bàn phím 20
Hình 3.3 khối nguồn 21
Hình 3.4 khối trung tâm 21
Hình 3.5 sơ đồ mạch in 22
Hình 3.6 Mô phỏng proteus 23
Hình 3.7 Hình ảnh thực tế 24
Trang 6CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 1.1 Giới thiệu về máy tính bỏ túi
Với mỗi gia đình, cơ quan, xí nghiệp, trường học hay bất cứ nơi đâu ta cũng bắt gặp được máy tính bỏ túi Hiện nay trên thị trường có rất nhiều các nhà sản xuất máy tính bỏ túi khác nhau, với nhiều chức năng, kiểu dáng đa dang
Máy tính bỏ túi nói chung là một thiết bị dùng để tính toán các công thức toán học mà người lập trình đã lập trình sẵn cho nó
Hình 1.1: Máy tính bỏ túi
Nhìn chung thì máy tính đước sản xuất từ các nhà sản xuất lớn như TOSHIBA, VNC,CASIO…
1.2 Các giải pháp và cách xác định bài toán
1.2.1 Yêu cầu của hệ thống
Qua tham khảo các sản phẩm máy tính bỏ túi trên thị trường thì yêu cầu của một bộ sản phẩm máy tính bỏ túi thông thường:
Dạo diện người dung dễ sử dụng
Thực hiện một số phép tính đơn giản như cộng trừ nhân chia
Yêu cầu kết quả luôn luôn đúng
Điện áp hoạt động của hệ thống không gây nguy hiểm đến người sử dụng
Trang 71.2.2 Lựa chọn phương án
Với yêu cầu về tính năng như trên, chúng em chọn các thiết bị chính:
Vi điều khiển AT89C51
Màn hình LCD 16x2 với mục đích hiển thị thông tin, giao tiếp vi điều khiển với người dùng
Bàn phím 16 phím có các phím số và phím chức năng đưa đầu vào là các số và các phép tính
Nguồn điện là nguồn USB máy vi tính
Trang 8CHƯƠNG II: GIỚI THIỆU VI ĐIỀU KHIỂN 8051 VÀ CÁC
LINH KIỆN TRONG MẠCH 2.1 Vi điều khiển AT89C51
2.1.1 Giới thiệu tổng quan về họ vi điều khiển 8051
AT89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS chất lượng cao, công suất thấp với 4 KB PEROM (Flash Programeable and erasable read only memory)
Các đặc điểm của 8951 được tóm tắt như sau:
4KB bộ nhớ, có thể lập trình lại nhanh, có khả năng ghi xóa tới 1000 chu kỳ
Tần số hoạt động từ 0 Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
2 bộ Timer/Counter 16 bit
128 Byte RAM nội
4 Port xuất/nhập (I/O) 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoài
Xử lý Boolean (hoạt động trên bit đơn)
210 vị trí nhớ có thể định vị bit
2.1.1.1 Sơ đồ khối và sơ đồ chân của AT89C51
Hình 2.1 Sơ đồ khối của AC89C51
Trang 9Hình 2.2 Sơ đồ chân của AC89C51
2.1.1.2 Chức năng các chân của AT89C51
2.1.1.2.1 Port 0
Port 0 (P0.0 – P0.7 hay chân 32 – 39): Ngoài chức năng xuất nhập ra, port 0 còn
là bus đa hợp dữ liệu và địa chỉ (AD0 – AD7), chức năng này sẽ được sử dụng khi AT89C51 giao tiếp với thiết bị ngoài có kiến trúc bus
Trang 10Hình 2.4 Port 1 2.1.1.2.3 Port 2
Port 2 (P2.0 – P2.7 hay chân 21 – 28): là một port có công dụng kép Là đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết kế dùng bộ nhớ mở rộng
Hình 2.5 Port 2
2.1.1.2.4 Port 3
Port 3 (P3.0 – P3.7 hay chân 10 – 17): mỗi chân trên port 3 ngoài chức năng xuất nhập ra còn có một số chức năng đặc biệt
Bảng 2.1 Các chức năng đặc biệt của port 3
P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho port nối tiếp
P3.4 T0 Ngõ vào của Timer/Counter 0
Trang 11P3.5 T1 Ngõ vào của Timer/Counter 1 P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài
Hình 2.6 Port 3
2.1.1.2.5 Chân RST
RST (Reset – chân 9): mức tích cực của chân này là mức 1, để reset ta phải đưa mức 1 (5V) đến chân này với thời gian tối thiểu 2 chu kỳ máy (tương đương 2µs đối với thạch anh 12MHz
2.1.1.2.6 Chân XTAL
XTAL 1, XTAL 2: AT89S52 có một bộ dao động trên chip, nó thường được nối với một bộ dao động thạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz 2.1.1.2.7 Chân EA
EA (External Access): EA thường được mắc lên mức cao (+5V) hoặc mức thấp (GND) Nếu ở mức cao, bộ vi điều khiển thi hành chương trình từ ROM nội Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng
2.1.1.2.8 Chân ALE
ALE (Address Latch Enable): ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ Sau đó các đường port 0 dùng để xuất hoặc nhập dữ liệu trong nửa chu kỳ sau của bộ nhớ
2.1.1.2.9 Chân PSEN
PSEN (Program Store Enable): PSEN là chân điều khiển cho phép bộ nhớ chương trình mở rộng và thường được nối với đến chân OE (Output Enable) của một EPROM để cho phép đọc các bytes mã lệnh PSEN sẽ ở mức thấp trong thời gian đọc lệnh Các mã nhị phân của chương trình được đọc từ EPROM qua Bus và được chốt vào thanh ghi lệnh của bộ vi điều khiển để giải mã lệnh Khi thi hành chương trình trong ROM nội, PSEN sẽ ở mức thụ động (mức cao)
Trang 12Với 8051 ta chỉ có 2 timer đó là timer 0 và timer 1 còn đối với 8052 thì có thêm
bộ định thời thứ 3 là timer 2,các timer này có rất nhiều ứng dụng quan trọng trong các lĩnh vực như đo lường, điều khiển
2.1.2.2 Cổng nối tiếp
AT89S52 có một cổng nối tiếp trên chip có thể hoạt động ở nhiều chế độ khác nhau Chức năng chủ yếu của cổng nối tiếp là chuyển đổi song song sang nối tiếp và chuyển đổi nối tiếp sang song song với dữ liệu nhập để có thể giao tiếp với máy tính qua cổng nối tiếp hoặc các thiết bị tương tự
2.1.2.3 Ngắt và xử lý ngắt
Để tận dụng khả năng của cpu chúng ta phải sử dụng đến ngắt, ngắt giúp ta tạm ngừng công việc của CPU để phục vụ việc trao đổi giữ liệu Sau khi hoàn thành việc trao đổi dữ liệu thì CPU phải quay về làm nốt công việc đang bị gián đoạn Điều này giúp cho CPU làm việc hiệu quả hơn rất nhiều
Với AT89S52 ta có 6 nguồn ngắt:
Ngắt ngoài đến từ chân #INT0
Ngắt ngoài đến từ chân #INT1
Ngắt do bộ timer 0
Ngắt do bộ timer 1
Ngắt do bộ timer 2
Ngắt do port nối tiếp
2.1.3 Các thanh ghi đặc biệt của 89C51 (SFR – Special Function Registers)
2.1.3.1 Thanh ghi tích luỹ (Accumulator)
Thanh ghi tích luỹ là thanh ghi sử dụng nhiều nhất trong AT89C51, được ký hiệu trong câu lệnh là A Ngoài ra, trong các lệnh xử lý bit, thanh ghi tích luỹ được ký hiệu là ACC
2.1.3.2 Thanh ghi B
Thanh ghi tích luỹ có thể truy xuất trực tiếp thông qua địa chỉ E0H (byte) hay truy xuất từng bit thông qua địa chỉ bit từ E0H đến E7H
Trang 132.1.3.3 Thanh ghi từ trạng thái chương trình (PSW - Program Status Word)
Thanh ghi từ trạng thái chương trình PSW nằm tại địa chỉ D0H và có các địa chỉ bit từ D0H – D7H, bao gồm 7 bit (1 bit không sử dụng) có các chức năng như sau: Bit 7 6 5 4 3 2 1 0 Chức
năng CY AC F0 RS1 RS0 OV - P
CY (Carry): cờ nhớ, thường được dùng cho các lệnh toán học (C = 1 khi có
nhớ trong phép cộng hay mượn trong phép trừ)
AC (Auxiliary Carry): cờ nhớ phụ (thường dùng cho các phép toán BCD) F0 (Flag 0): được sử dụng tuỳ theo yêu cầu của người sử dụng
RS1, RS0: dùng để chọn bank thanh ghi sử dụng Khi reset hệ thống, bank 0 sẽ
được sử dụng
OV (Overflow): cờ tràn Cờ OV = 1 khi có hiện tượng tràn số học xảy ra (dùng
cho số nguyên có dấu)
P (Parity): kiểm tra parity (chẵn) Cờ P = 1 khi tổng số bit 1 trong thanh ghi A
là số lẻ (nghĩa là tổng số bit 1 của thanh ghi A cộng thêm cờ P là số chẵn)
Chọn bank thanh ghi:
2.1.3.4 Thanh ghi con trỏ stack (SP – Stack Pointer)
Con trỏ stack SP nằm tại địa chỉ 81H và không cho phép định địa chỉ bit SP dùng để chỉ đến đỉnh của stack Stack là một dạng bộ nhớ lưu trữ dạng LIFO (Last In First Out) thường dùng lưu trữ địa chỉ trả về khi gọi một chương trình con Ngoài ra,
stack còn dùng như bộ nhớ tạm để lưu lại và khôi phục các giá trị cần thiết
Trang 14Đối với AT89C51, stack được chứa trong RAM nội (128 byte đối với 8031/8051 hay 256 byte đối với 8032/8052) Mặc định khi khởi động, giá trị của SP là 07H, nghĩa là stack bắt đầu từ địa chỉ 08H (do hoạt động lưu giá trị vào stack yêu cầu phải tăng nội dung thanh ghi SP trước khi lưu
2.1.3.5 Con trỏ dữ liệu DPTR (Data Pointer)
Con trỏ dữ liệu DPTR là thanh ghi 16 bit bao gồm 2 thanh ghi 8 bit: DPH (High) nằm tại địa chỉ 83h và DPL (Low) nằm tại địa chỉ 82H Các thanh ghi này không cho phép định địa chỉ bit DPTR được dùng khi truy xuất đến bộ nhớ có địa chỉ
16 bit
2.1.3.6 Các thanh ghi Port
Gồm 4 thanh ghi tương ứng với 4 port:
P0 Port 0 : ở địa chỉ 80H đến dịa chỉ 87H
P1 Port 1 : ở địa chỉ 90H đến địa chỉ 97H
P2 Port 2 : ở địa chỉ A0H đến địa chỉ A7H
P3 Port 3 : ở địa chỉ B0H đến địa chỉ B7H
Nếu truy suất Port ta truy suất các thanh ghi Port tương ứng Các thanh ghi này được định địa chỉ từng Bit
2.1.3.7 Các thanh ghi bộ định thời (Timer)
89c51 có hai thanh ghi bộ định thời/đếm 16 bit được dùng cho định thời hoặc đếm sự kiên
Thanh ghi chế độ định thời (TMOD):
Không được định địa chỉ bit
Dùng để định chế độ hoạt động cho TIMER
Chức năng từng bit
Thanh ghi điều khiển định thời (TCON):
Trang 15 Chứa các bit điều khiển và trạng thái của Timer 0, 1 ở 4 bit cao, 4 bit thấp được dùng cho chức năng ngắt (interrupt)
Chức năng từng bit:
2.1.3.8 Các thanh ghi port nối tiếp (Serial port)
2.1.3.8.1 Thanh ghi SBUF (Serial Buffer)
Ở địa chỉ 99H là bộ đệm nhập/xuất nối tiếp, khi xuất dữ liệu thì ghi lên SBUF, khi nhập dữ liệu thì đọc từ SBUF
Các chế độ hoạt động khác nhau của port nối tiếp được lập trình thông qua thanh ghi điều khiển port nối tiếp SCON (Serial Control) ở địa chỉ 98H Đây
là thanh ghi được địa chỉ từng bit
2.1.3.8.2 Thanh ghi điều khiển port nối tiếp SCON
SM2: chọn chế độ hoạt động của port nối tiếp
SM2 = 1: cho phép truyền thông đa xử lý ở các chế độ 2 và 3; bit RI
sẽ không được tích cực nếu bit thứ 9 nhận được là 0
REN: bit cho phép thu
REN = 1: cho phép thu
REN = 0: không cho phép thu
TB8: bit phát thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm
RB8: bit thu thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm
Trang 162.1.3.9 Các Thanh Ghi Ngắt (Interrupt)
8031/8051 có 5 nguồn ngắt:
2 ngắt ngoài: ngắt ngoài 0: qua chân INT0 (P3.2)
ngắt ngoài 1: qua chân INT1 (P3.3)
3 ngắt trrong: ngắt timer 0, ngắt timer 1, ngắt port nối tiếp
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình
1 là hai loại LCD thông dụng
Hình 2.7: Hình dáng của LCD
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết Các chân này được đánh số thứ tự
và đặt tên như bên dưới :
Hình 2.8: Sơ đồ chân của LCD
Trang 172.2.2 Chức năng các chân
Chân số Tên Chức năng
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của
mạch điều khiển
2 Vdd Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3 Vee Chân này dùng để điều chỉnh độ tương phản của LCD
4
Rs Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ
“đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
5
R/w Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0”
để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế
độ đọc
6
E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
Trang 182.2.3 Các ký tự LCD LMB162A hiển thị được
2.2.4 Cách hiển thị các ký tự
Để hiển thị các ký tự đồ họa tùy ý thì ta phải ghi ký tự đó vào vùng CGRAM
rồi cho hiển thị ký tự đã vào lên LCD
Vùng CGRAM bắt đầu từ địa chỉ #000000b đến #111111b Khi ta ghi ở dạng 5x8 chấm thì địa chỉ bắt đầu của từng ký tự như hình sau:
Trang 19Ví dụ: để ghi ký tự R vào CGRAM(0) (từ địa chỉ #000000b đến #000111b) thì
ta phải ghi 8 byte đó các mã #00011110b, #00010001b, #00010001b, #00011110b,
#00010100b, #00010010b, #00010001b, #00000000b như hình sau
2.3 Bàn phím
Các phím có cấu tạo như sau : Một nút ấn bằng nhựa cứng trên có ghi số, ký hiệu tương ứng với vị trí của phím ấn Phía dưới nút ấn nhựa là 1 tấm cao su có độ đàn hồi tốt, gắn phía dưới cao su Là tấm than Đối diện với tấm than, trên mạch in là tiếp