Tải bản đầy đủ (.pdf) (43 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.45 MB, 43 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN

ĐỒ ÁN 1
Đề 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


2

Máy Tính Bỏ Túi

Lời nói đầ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.


3

Máy Tính Bỏ Túi

MỤC LỤC
Trang
Trang bìa ………………………………………………………………………………….1
Lời nói đầu ………………………………………………………………………………..2
Phần 1: GIỚI THIỆU ……………………………………………………………………..4
Phần 2 : CƠ SỞ LÝ THUYẾT……………………………………………………………5
I Các linh kiện sử dụng trong mạch …………………………………………………..…..5
II Đặc điểm, cấu tạo, chức năng của các linh kiện …………………………………….....5
Phần 3 : THIẾT KẾ VÀ MÔ PHỎNG ……………………………………………...…..16
I Sơ đồ khối ……………………………………………………………………….….…16
Quét bàn phím …………………………………………………………………………..17
1 Hàm Num() …………………………………………………………………………...18
2 Hàm Dec() …………………………………………………………………………….20

3 Hàm Sign() ……………………………………………………………………………21
4 Hàm Calx() ……………………………………………………………………………23
II Mô phỏng ……………………………………………………………………….…….24
III Code chương trình ………………………………………………………………..….29
Phần 4 : KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN …………………………………..…..39
Các tài liệu tham khảo …………………………………………………………….…….39


4

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 đã được 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 và LCD với VXL.

II.

Yêu cầu của đặ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ó các chức năng cơ bản như sau:
 4 phép tính cơ bản: Cộng “+”, Trừ “-“, Nhân “x”, Chia “/”
 Có thể xử lí được 2 chữ số sau dấu chấm thập phân “.”
 Bàn phím bao gồm 10 phím số (từ 0 đến 9), 4 phím phép tính ( + - x /), 1 phím bằng (=),
1 phím chấm thập phân ( . )
=> Bàn phím 16 phím nên ta sẽ sử dụng ma trận phím 4x4 (Phím ON/Reset sẽ được tích
hợp với chân reset của VXL).

-

Sử dụng LCD 16x2 để hiện thị phép tính và kết quả.


5

Máy Tính Bỏ Túi

Phần 2

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 1 chiều 5V


ĐẶC ĐIỂM, CẤU TẠO, CHỨC NĂNG CỦA CÁC LINH KIỆN
1. Vi điều khiển AT89C51
a. Giới thiệu chung về 89C51

 Vi điều khiển (VĐK) là một hệ vi xử lý được tổ chức như một chip. IC VĐK AT89C51
tương thích với họ MCS51 có những đặc điểm sau :
-

Có 40 chân

-

8 KB EPROM bên trong

-

Dải tần số hoạt động từ 0Mhz đến 24 Mhz

-

Có 128 byte RAM

-

2 bộ định thời 16 bit

-

Mạch giao tiếp nối tiếp


-

64 KB vùng nhớ dữ liệu ngoại.

-

64 KB vùng nhớ mã ngoài

-

Bộ xử lý bit thao tác trên các bit riêng

-

4 μs cho hoạt động nhân hoặc chia

-

210 vị trí nhớ định địa chỉ, mỗi vị trí một bit

-

Có các thanh ghi chức năng, cơ chế điều khiển ngắt

-

Các bộ thời gian dung trong lĩnh vực chia tần số và tạp thời gian thực


Máy Tính Bỏ Túi

 Sơ đồ chân 89C51

89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có tác
dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập
hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ.
1. GND ( chân 20) : chân nối đất 0V.
2. Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951. Trong các thiết kế cỡ
nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO. Đối với các thiết
kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉvà bus dữliệu..
3. Port 1 là port IO trên các chân 1-8. Các chân được ký hiệu P1.0, P1.1, P1.2, … có thể
dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy
chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.

6


7

Máy Tính Bỏ Túi
4. Port 2 là 1 port có tác dụng kép trên các chân 21 - 28 được dùng như các đường xuất
nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
5. Port 3 là port có tác dụng kép trên các chân 10 - 17. Các chân của port này có nhiều chức
năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở 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 năng chuyển đổi

Tên
RxD

Ngõ vào dữ liệu nối tiếp

TxD

Ngõ xuất dữ liệu nối tiếp

INT0

Ngõ vào ngắt cứng thứ 0

INT1

Ngõ vào ngắt cứng thứ 1

TO

Ngõ vào của TIMER/COUNTER thứ 0

T1

Ngõ vào của TIMER/COUNTER thứ 1


WR

Tín hiệu ghi dữ liệu lên bộ nhớ ngoài

RD

Tín hiệu đọc bộ nhớ dữ liệu ngoài

6. PSEN ( Program store enable ): PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép
đọc bộ nhớ chương trình mở rộng thường được nói đến chân 0E\ (output enable) của
Eprom cho phép đọc các byte mã lệnh. PSEN ở mức thấp trong thời gian Microcontroller
8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được
chốt vào thanh ghi lệnh bên trong 8951 đểgiải mã lệnh. Khi 8951 thi hành chương trình
trong ROM nội PSEN sẽ ở mức logic 1.
7. ALE ( Address latch enable ) : Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng
là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra
ALE ởchân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉvà dữ
liệu khi kết nối chúng với IC chốt. Tín hiệu ra ở chân ALE là một xung trong khoảng thời
gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ 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 trên chip và có thể được dùng làm tín
hiệu clock cho các phần khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập
trình cho Eprom trong 8951.


Máy Tính Bỏ Túi
8. EA ( External access) : Chọn bộ nhớ trong hoặc ngoài. Nếu EA = 5V: chọn ROM nội.
Nếu EA =0V: chọn ROM ngoài.
9. RST ( Reset ) : Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951. Khi ngõ vào tín hiệu
này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những 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 được tích hợp bên trong 8951, khi sử dụng 8951 người thiết kế chỉ
cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử
dụng cho 8951 là 12Mhz.
11. Vcc : chân nguồn nối lên 5V .

b. Tổ chức bộ nhớ
Bộ nhớ bên trong chip bao gồm ROM, RAM và EPROM. RAM trên chip bao gồm
vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ, các thanh ghi
(bank) và các thanh ghi chức năng đặc biệt.
 Có 2 đặc tính đáng lưu ý:
+ Các thanh ghi và các port I/O được định địa chỉ theo kiểu ánh xạ bộ nhớ và được truy
xuất như một vị trí nhớ trong bộ nhớ.
+ Vùng track thường chú trong RAM trên chip thay vì ở trong RAM ngoài như đối với

các bộ vi xử lý.
Vùng RAM đa mục đích :
Có 80 byte, địa chỉ từ 30H đến 7FH. Bất cứ vị trí nào trong vùng RAM ta đều có thể
truy xuất tự do bằng cách sử dụng định địa chỉ trực tiếp hoặc gián tiếp.
Vùng RAM đại chỉ:
Chip 8951 chứa 210 vị trí định địa chỉ đó có 128byte chứa trong các byte ở địa chỉ 20H
đến 2FH (16bytex8=128bits), phần còn lại chứa trong các thanh ghi chức năng đặc biệt.
- Công dụng:
+ Truy xuất các bit riêng rẽ thông qua các phần mềm

8


9


Máy Tính Bỏ Túi

+ Các port có thể định địa chỉ từng bit, làm đơn giản việc giao tiếp băng phần mền với
các thiết bị xuất nhập đơn bit.
Các thanh ghi chức năng đặc biệt (SFR):
Không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chit có 21 địa chỉ
được định nghĩa.
Các thanh ghi chức năng đặc biệt bao gồm:
+ Từ trạng thái chương trình PSW: có địa chỉ là D0H
+ Thanh ghi B: Có địa chỉ F0H được dùng chung với thanh chứa A trong các
phép toán nhân và chia.
+ Con trỏ Stack (SP): là thanh ghi 8bit ở địa chỉ 81H, nó chứa địa chỉ của dữ liệu hiện

đang ở đỉnh của stack

+ Con trỏ dữ liệu DPTR: Dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ
liệu ngoài. DPTR là thanh ghi 16bit có địa chỉ 82H (bytethấp) và 83H (bytecao).

+ Các thanh ghi port :
Port 0 : đại chỉ 80H
Port 1 : địa chỉ 90H
Port 2: địa chỉ A0H
Port 3: địa chi B0H
+ Các thanh ghi định thời: 89C51có 2 bộ định thời/đếm dùng để định khoảng thời gian
hoặc đếm các sự kiện.
- Bộ định thời 0: địa chỉ 8AH (TL0) và 8CH (TH0)
- Bộ định thời 1: địa chỉ 8bH (TL1) và 8DH (TH1)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD ở địa
chỉ 89H và thanh ghi điều khiển bộ định thời TCON ở địa chỉ 88H (chỉ cóTCON được
định địa chỉ từng bit).



Máy Tính Bỏ Túi
+ Các thanh ghi của port nối tiếp: 89C51 có 1 port nối tiếp để truyền thông với các

thiết bị như các thiết bị đầu cuối hoặc model...
+ Các thanh nghi ngắt: có 1 cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt.
Các ngắt bị vô hiệu hóa sau khi reset hệ thống và được phép bằng cách vào thanh ghi IE
ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập bởi thanh ghi IP ở địa chỉ B8H.
+Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H

c. Tập lệnh của 89C51
* Các kiểu định địa chỉ: Trong tập lệnh có 8 chế độ đánh địa chỉ
- Thanh ghi đại chỉ
- Địa chỉ trực tiếp
- Địa chỉ gián tiếp
- Địa chỉ tức thời
- Địa chỉ tuyệt đối
- Địa chỉ tương đối
- Địa chỉ dài
- Địa chỉ tham chiếu
* Các nhóm lệnh của 89C51
+ Nhóm lệnh số học
+ Nhóm lệnh logic
+ Nhóm lệnh di chuyển dữ liệu
+ Nhóm lệnh xử lý bit
+ Nhóm lệnh rẽ nhánh

10



11

Máy Tính Bỏ Túi

2. Cơ cấu hiện thị LCD 16x2
a. Hình dáng và kích thước:
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à loại
LCD thông dụng.
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ư
hình 2 :

Hình 2 : Sơ đồ chân của LCD

Chân



Mô tả

hiệu
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với

1

Vss

2


VDD

3

VEE

Đ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

GND của mạch điều khiển
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


12

Máy Tính Bỏ Túi

“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.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với

5

R/W

logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic
“1” để LCD ở chế độ đọc.
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

6

E

nhận) thanh ghi bên trong nó khi phát hiện một xung (highto-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.
Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử dụng 8 đường bus này :

7 - 14

DB0 DB7

+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit
MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới



13

Máy Tính Bỏ Túi

DB7, bit MSB là DB7
Nguồn dương cho đèn nền
15

A

16

K

GND cho đèn nền
Bảng 1 : Chức năng các chân của LCD

Chú ý : Chân 15 và chân 16: ghi là A và K. Nó là anot và katot của một con led dùng để
sáng LCD trong bóng tối, chúng ta có thể k nối , nếu sử dụng nối chân 15 với trở 220 or
330 ôm lên VCC , chân 16 nối đất.
b. Các thành phần chức năng
- Cờ Busy (BF - Busy flag): Nếu BF = 1, LCD đang trong quá trình thực thi một lệnh.
Khi đó, các lệnh gởi tiếp theo sẽ bị bỏ qua. BF được đọc tại chân D7 khi RS = 0 và R/W
= 1. Do đó, trước khi thực hiện một lệnh, cần kiểm tra BF trước, nếu BF = 0 thì mới gởi
lệnh.
- Các chế độ truyền dữ liệu:
LCD 16x2 có 2 chế độ truyền dữ liệu : chế độ 8 bit ( dùng cả D0-D7 ) và chế độ 4 bit (
không dùng D3 - D0, chỉ dùng D7-D4 ). Trong trường hợp dùng chế độ 4 bit, dữ liệu 8
bit sẽ được truyền 2 lần: truyền 4 bit cao rồi tiếp tục truyền 4 bit thấp. Sau khi thực hiện

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 8051 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 nếu vượt quá mức cho phép thì sẽ làm cho VĐK
bị đơ. Để biết chính xác giá trị thạch anh cho từng loại VĐK ta cần xem kĩ trong
Datasheet của IC. 2 con tụ 33pF có nhiệm vụ ổn định xung nhịp cho thạch anh, từ đó ổn
định hoạt động của VĐK, nếu không có tụ cũng không sao.
a. - Mạch tạo dao động thạch anh 12MHz:

b. Cấp nguồn 5V cho vi điều khiển (Vcc: 5V chân 40; GND: 0V chân 20). Trong đó C1,C2=
30pF±10pF (thường được sử dụng với C1,C2 là tụ 33pF) dùng ổn định dao động cho
thạch anh.


2. Ma trận phím 4x4:
Như đã trình bày ở Phần I, ta cần sử dụng ma trận phím 4x4 gồm 4 hàng được đặt tên từ
Row 1 đến Row 4, và 4 cột được đặt tên từ Col 1 đến Col 4:
-

Mỗi linh kiện phím bấm có 2 chân: chân 1 và chân 2. Phím nằm trên cùng một hàng sẽ
có tất cả chân 1 được mắc song song với nhau và nối tới chân của VXL tương ứng với
Row đó. Phím nằm trên cùng cột sẽ có tất cả chân 2 mắc song song với nhau và nối tới


16

Máy Tính Bỏ Túi
chân của VXL tương ứng với Col đó. Mỗi phím sẽ nằm trên 1 cột và 1 hàng nhất định
được đánh số trước tạo thành ma trận bàn phím 4x4.
-

4 chân Row 1 đến Row 4 được nối tới 4 port P1.0 đến P1.3 của VXL.

-

4 chân Col 1 đến Col 4 đượ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 16x2 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ế độ 16bit nên tất cả các pin I/O từ D0 đến D7 đều được sử
dụng và nối tới port P2.0 đến P2.7 của VXL. Các port này đã được định nghĩa trong phần
code chương trình.

-

Chân VSS: chân Ground, sẽ được nối đất.


-

Chân VCC: Nguồn 5V, sẽ được nối tới nguồn 5V.

-

LCD của ta sẽ luôn làm việc trong chế độ ghi nên pin RW sẽ được nối đất.

-

Chân RS chọn thanh ghi và chân E cho phép được treo lên nguồn 5V và được nối tới port
P0.5 và P0.7 của VXL, mức logic của các pin này sẽ định nghĩa trong code chương trình
tùy theo từng hoàn cảnh làm việc của LCD.

-

Chân VEE: điều chỉnh độ tương phản của LCD được đặt mặc định, nối đất.

4. Vi Điều Khiển:
-

Trong đồ án này chúng ta sẽ sử dụng hoàn toàn ROM nội nên chân EA = 5V.

-

Pin RESET được nối tới một phím bấm được chống nảy phím bằng một tụ điện và điện
trở.

-


Chức năng chính của VXL: Giao tiếp với ma trận phím 4x4, tính toán và hiển thị lên
LCD. Các port được sử dụng:
P1.0 đến P1.3: nối với Row1 đến Row4 để thực hiện quét bàn phím.
P1.4 đến P1.7: nối tới Col1 đến Col4 để thực hiện quét bàn phím.
P2.0 đến P2.7: gửi thông tin tới LCD16x2.
P0.5 và P0.7: nối với RS và E của LCD16x2 để điều khiển LCD.

5. Mạch reset:
-

-

89x51 được reset bằng cách giữ chân RST ở mức cao tối thiểu là 2chu kì máy (lúc này
VCC được nạp vào tụ thường dùng từ 1uf > 10uf) rồi sau đó chuyển về mức thấp ( VCC
từ chân RST được xả qua R= 8.2k đến10k ). RST có thể tác động bằng tay(nút bấm) hoặc
tự động khi cấp nguồn bằng mạch RC như hình vẽ là chuẩn:
Một chu kỳ máy của 89x51 có 12 chu kỳ dao động.Nếu dùng thạch anh dao động chuẩn
12MHz 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à 10k.

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 đây là mạch mô phỏng nguyên lý cấu tạo máy tính bỏ túi sử dụng chip AT89C51,
ma trận phím 4x4 và LCD16x2 trên phần mềm Proteus:

19


Máy Tính Bỏ Túi

III: SƠ ĐỒ KHỐI
Chương trình chính:

 Ý tưởng quét bàn phím:
- Ban đầu, cho tất cả các cột (Col) và hàng (Row) lên mức logic 1.
- Lần lượt đặt từng Row về mức logic 0, với mỗi Row được đặt về 0 thực hiện hành
động quét cột (Col). Nếu một nút thuộc Row đó được bấm thì sẽ có một Col tương
ứng bị đặt về 0 (khi bấm nút chân 1 và chân 2 của phím bấm sẽ thông mạch, Row
= 0 => Col tương ứng phím bấm sẽ bị đưa về 0).

20



Máy Tính Bỏ Túi

- Bằng việc dừng việc quét bàn phím khi có 1 Col bị đưa về 0 và xác định Row nào
đang bằng = 0 tại thời điểm đó ta có thể xác định được vị trí phím được bấm.
Ví dụ:
R1=0;R2=R3=R4=1; // Đặt Row1=0
if(C1==0){d='7';s=7;Num();} //Nếu Col1=0 thì nhận diện phím 7 được bấm.
if(C2==0){d='8';s=8;Num();} //Nếu Col2=0 thì nhận diện phím 8 được bấm.
if(C3==0){d='9';s=9;Num();} //Nếu Col3=0 thì nhận diện phím 9 được bấm.
if(C4==0){d='+';h=1;Sign();} //Nếu Col4=0 thì nhận diện phím + được bấm.
- Với việc nhận diện phím nào đã được bấm, chương trình sẽ gọi tới các hàm con để
xử lí tương ứng: Với phím số, chương trình sẽ gọi tới hàm Num() bày sau đây>. Với phím dấu, chương trình sẽ gọi tới hàm Sign(). Với phím “=” sẽ
gọi hàm Cal().
Các hàm con trong chương trình:

 Lưu ý:
Tất cả các cờ và chuỗi a, b, c đều được mặc định = 0 ở đầu chương trình.
Mỗi khi một phím số được bấm, “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 bấm một phím dấu
(Sign), hàm Num() sẽ xác định được sẽ lưu vào chuỗi “a” (nếu chưa có 1 dấu nào
được bấm trước đó) hay lưu vào chuỗi “b” (đã có một dấu được bấm trước đó)
- Bằng việc sử dụng cờ “i” chương trình sẽ nhận được chuỗi số nhập từ trái sang
phải:
Khi i=0: chuỗi “a” sẽ bằng đúng số vừa được bấm “s”.
Khi i=1: chuỗi “a” sẽ bằng chuỗi “a” hiện tại thêm số vừa được bấm vào hàng đơn
vị: a=a*10+s
Khi i=2: chuỗi “a” sẽ có thêm phần thập phân được xác định bởi cờ “j”.
- Bằng việc sử dụng cờ “j” chương trình sẽ nhập được hàng thập phân bằng cách
đếm số phím đã được bấm sau dấu phẩy “.”
Sau khi bấm “.” (Hàm Void Dec() sẽ được trình bày dưới đây) cờ “i” được gán
bằng 2: (i=2) và khởi tạo thêm cờ j=1
- Với i=2 và j=1 chuỗi “a” sẽ được tính theo công thức: a=a+s*0.1 và j=j+1
Một cách tổng quát, sau khi phím “.” được bấm, mỗi lần một phím số được bấm
thì “j” sẽ được tăng thêm một và chuỗi “a” 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


×