Tải bản đầy đủ (.docx) (53 trang)

Đồ Án ASSEMBLY:Thiết kế đồng hồ số hiển thị trên LCD 16*2 Sử dụng IC AT89S52.

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 (596.22 KB, 53 trang )

Lời nói đầu
Bất cứ một biến cố, sự việc, sự kiện gì xảy ra, hay làm bất cứ một việc gì
đó cũng cần có thời gian, thời gian gắn với mọi sự vật, sự việc không trừ một vật
nào.
Thời gian rất quan trọng và cần thiết trong cuộc sống của mỗi chúng ta, từ xa
xưa người ta đã sử dụng mặt trời, mặt trăng làm thước đo thời gian. Xã hội dần
phát triển đã có sự xuất hiện của đồng hồ (đồng hồ cát, đồng hồ cơ học . . .) với
sự tiến bộ của khoa học và công nghệ ngày này chúng ta có thể thay thế những
vật dụng đo, xác định thời gian cồng kềnh, đồng hồ cơ học bằng đồng đồng hồ
số, đồng hồ điện tử có độ chính xác cao, nhỏ gọn, tiện lợi, dễ sử dụng, sửa chữa
Và đó là những lý do chúng em chọn đề tài : “Thiết kế đồng hồ số hiển thị trên
LCD 16*2 gồm đầy đủ thứ, ngày, tháng, năm dương lịch, giờ, phút, giây và có sử
dụng bàn phím để thay đổi được thời gian. Thời gian 1 giây được tạo ra bằng
cách sử dụng Timer 0.” Sử dụng IC AT89S52.
Đề tài gồm 3 chương:
Chương I: Tổng quan về đề tài
Chương II: Hiện thực hóa đề tài
Chương III: Kết Luận
Em xin chân thành cảm ơn sự giúp đỡ ,chỉ bảo tận tình của thầy hướng dẫn trong
suốt khoảng thời gian chúng em thực hiện đề tài này!


1

Mục lục
CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI.................................................................................2
1.

Yêu cầu của đề tài...........................................................................................................2

2.



Lưu đồ thuật toán tổng quát..........................................................................................2

3.

Chức năng, nhiệm vụ của các khối trong lưu đồ.........................................................3
a.

Khối khai báo các biến, định nghĩa cổng sử dụng trên ic............................................3

b.

Khối khởi tạo LCD, ngắt ngoài, ngắt Timer 0, các giá trị ban đầu cho thời gian........3

c.

Khối hiển thị thời gian lên LCD và khởi động Timer 0.................................................3

d.

Khối kiểm tra DEM_S...................................................................................................4

e.

Khối thay đổi thời gian.................................................................................................4

f.

Khối kiểm tra thời gian.................................................................................................8


g.

Khối hiển thị thời gian lên LCD..................................................................................10

CHƯƠNG II: HIỆN THỰC HÓA ĐỀ TÀI......................................................................11
1.

Giới thiệu chung về phần cứng....................................................................................11
a.

Vi điều khiển AT89S52................................................................................................11

b.

Màn hình LCD 16x2....................................................................................................13

c.

Mạch tạo dao động.....................................................................................................14

d.

Mạch RESET...............................................................................................................15

2.

Thiết kế phần cứng.......................................................................................................15
a.

Sơ đồ khối....................................................................................................................15


b.

Xây dựng phần mềm (chương trình nguồn)................................................................16

c.

Thiết kế và hiện thực hóa phần cứng..........................................................................16

3.

Kết quả trên mạch mô phỏng và mạch thực tế..........................................................21
a.

Kết quả mô phỏng trên máy tính.................................................................................21

b.

Kết quả trên mạch thực tế...........................................................................................21

c.

So sánh giữa mô phỏng và thực tế..............................................................................21

d.

Ưu nhược điểm của thiết kế và hướng đi của đề tài...................................................22

CHƯƠNG III: KẾT LUẬN....................................................................................................23


Phục lục..................................................................................................................................24


2

CHƯƠNG I. TỔNG QUAN VỀ ĐỀ TÀI
1. Yêu cầu của đề tài
Thiết kế đồng hồ số hiện thị lên LCD 16x2 gồm đầy đủ thứ, ngày, tháng,
năm dương lịch, giờ, phút, giây có thể sử dụng bàn phím thay đổi được
thời gian. Thời gian được tạo ra bằng cách sử dụng Timer 0.

2. Lưu đồ thuật toán tổng quát


3

3. Chức năng, nhiệm vụ của các khối trong lưu đồ
a. Khối khai báo các biến, định nghĩa cổng sử dụng trên ic

Ở khối này, ta sẽ khai báo các cổng (chân) được sử dụng trên Onchip(AT89S52), cổng điều khiển hoạt động của LCD, cổng gửi dữ liệu,
lệnh cho LCD thực thi. Ngoài ra còn khai báo một số biến sử dụng
trong chương trình nguồn.
b. Khối khởi tạo LCD, ngắt ngoài, ngắt Timer 0, các giá trị ban đầu cho
thời gian

- Khởi tạo LCD : khởi tạo cho LCD cho LCD hoạt động
- Khởi tạo ngắt ngoài: cho phép ngắt ngoài hoạt động, sử dụng ngắt
ngoài để tăng giá trị biến DEM_S
Kích hoạt ngắt ngoài bằng cách nhấn phím SELECT
- Khởi tạo ngắt Timer 0: chọn chế độ và nạp giá trị cho TH0,TL0.

Sau 20 lần vào ngắt Timer0 tăng biến lưu giá trị giây thêm 1.
- Khởi tạo các giá trị ban đầu cho thời gian : khởi tạo các giá trị thời
gian ban đầu
c. Khối hiển thị thời gian lên LCD và khởi động Timer 0

- Hiển thị các giá tri thời gian ban đầu đã khởi tạo lên LCD [(g)]
- Khởi động ngắt Timer 0 : Timer 0 bắt đầu hoạt động
d. Khối kiểm tra DEM_S


4

Nếu DEM_S khác 0 thì chuyển đến khối thay đổi thời gian, nếu
DEM_S bằng 0 chuyển đến khối kiểm tra thời gian
e. Khối thay đổi thời gian

- Do chương trình sử dụng ngắt ngoài nên sau khi khởi tạo ngắt ngoài
và cho phép ngắt ngoài hoạt động, thì bất cứ khi nào nhấn SELECT
chương trình dừng mọi công việc và vào thực hiện công việc trong
ngắt ngoài. Sau khi thực hiện xong công việc trong ngắt sẽ tự động
trở về thực hiện tiếp công việc đang làm.
- Nếu DEM_S khác 0 ta sẽ kiểm tra xem phím BACK có được nhấn
không:


5

+ Nếu phím BACK được nhấn : giảm DEM_S đi 1 đơn vị,
sau đó kiểm tra phím OK
+ Nếu BACK không được nhấn : đi đến kiểm tra phím OK

+ Nếu phím OK được nhấn : gán DEM_S=0 sau đó thoát khỏi
chương trình thay đổi thời gian và đi đến khối kiểm tra thời
gian
+Nếu OK không được nhấn : đi đến kiểm tra DEM_S (khối
kiểm tra DEM_S )
- Khối kiểm tra DEM_S
Ứng với mỗi giá trị của DEM_S ta sẽ chọn thay đổi từng giá trị thời
gian tương ứng.
Sau khi thực hiện thay đổi, quay trở lại kiểm tra xem phím BACK
có được nhấn hay không( thoát khỏi kiểm tra DEM_S).


6

- Các khối thay đổi thời gian (giờ, phút, giây, thứ . . .)


7

- Sau khi chọn được giá trị thời gian cần thay đổi, ta sẽ kiểm tra phím
UP có được nhấn hay không:
+ Nếu UP được nhấn thì giá trị cần thay đổi tăng thêm 1 đơn
vị
+ Nếu UP không được nhấn thì chuyển qua kiểm tra phím
DOWN
+ Nếu DOWN được nhấn thì giảm giá trị cần thay đổi đi 1
đơn vị
+ Nếu DOWN không được nhấn thì quay lại khối kiểm phím
BACK



8

f. Khối kiểm tra thời gian


9


10

- Khối kiểm tra thứ, ngày, tháng


11

g. Khối hiển thị thời gian lên LCD


12


13

CHƯƠNG II: HIỆN THỰC HÓA ĐỀ TÀI
1. Giới thiệu chung về phần cứng
Các phần cứng sử dụng :
- VĐK AT89S52
- Màn hình LCD 16x2
- Khối tạo dao động thạch anh 12Mhz

- Các phím bấm
- Điện trở, tụ điện
a. Vi điều khiển AT89S52

AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản
phẩm AT89S52 thích hợp cho những ứng dụng điều khiển. Việc xử lý
trên byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện
bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội. Tập lệnh


14

cung cấp một bảng tiện dụng của những lệnh số học 8 bit gồm cả lệnh
nhân và lệnh chia.
AT89S52 là một vi điều khiển CMOS 8 bit hiệu năng cao, công suất
thấp với :
+ 8Kbyte EPROM có thể xóa và lập trình nhanh lên đến 10000
chu kỳ ghi/xóa.
+ 256 bytes RAM
+ Tần số hoạt động 0 Hz đến 33 Mhz
+ Sử dụng nguồn DC 4.0V – 5.5V
+ 3 bộ Timer/Couter 16 bit
+ 32 cổng vào ra….
AT89S52 có tất cả 40 chân. Trong số 40 chân có 32 chân dành cho 4
cổng P0, P1, P2 và P3, mỗi cổng có 8 chân. Các chân còn lại dành cho
nguồn Vcc,đất GND, các chân dao động XTAL1, XTAL2, RST khởi
động lại, cho phép chốt địa chỉ ALE, truy cập được địa chỉ ngoài EA,
cho phép cất chương trình PSEN.
AT89S52 được nâng cấp và phát triển dựa trên nền tảng của các vi
điều khiển trước đó( 89C51,89C52,89S51…) nên mọi câu lệnh,

chương trình chạy được trên các vi điều khiển trước cũng sẽ chạy được
trên 89S52. Ngoài ra các dòng 89S của Atmel có thêm một timer 2 và
khả năng nạp chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi.
( các chân sử dụng nạp chương trình MOSI, MISO, SCK, RST)
b. Màn hình LCD 16x2


15

Mô tả chân của LCD
Chân số
1
2
3
4

Ký hiệu
VSS
VCC
VEE
RS

I/O
I

5

R/W

I


6
7
8
9
10
11
12
13
14

E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7

I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O


Chức năng
Đất ( GND)
Nguồn cung cấp (+5v)
Nguồn điều khiển tương phản
RS= 0: chọn thanh ghi lệnh
RS=1: chọn thanh ghi dữ liệu
R/W =0 : ghi dữ liệu vào LCD
R/W =1đọc từ LCD module
Tín hiệu cho phép
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit
Bus dữ liệu 8 bit


Mã lệnh LCD
16
Mã(Hexa)
1
2
4
6
5
7
8

A
C
E
F
10
14
18
1C
80
C0
38

Lệnh đến thanh ghi của LCD
Xóa màn hình hiển thị
Trở về đầu dòng
Giả con trỏ ( dịch con trỏ sang trái)
Tăng con trỏ (dịch con trỏ sang phải)
Dịch hiển thị sang phải
Dịch hiển thị sang trái
Tắt con trỏ, tắt hiển thị
Tắt hiển thị, bật con trỏ
Bật hiển thị, tắt con trỏ
Bật hiển thị ,nhấp nháy con trỏ
Tắt con trỏ, nhấp nháy con trỏ
Dịch vị trí con trỏ sang trái
Dịch vị trí con trỏ sang phải
Dịch toàn bộ hiển thị sang trái
Dịch toàn bộ hiển thị sang phải
Đưa con trỏ về đầu dòng thứ nhất
Đưa con trỏ về đầu dòng thứ hai

Hai dòng và ma trận 5 *7

c. Mạch tạo dao động
Gồm 1 thạch anh 12Mhz, 2 tụ C1 và C2 như nhau và có giá trị điện
dung 22pF. Sơ đồ ghép nối với AT89S52 như hình vẽ

d. Mạch RESET
Gồm 1 tụ C1 có giá trị 10uF, 1 điện trở R có giá trị 10K, và một nút
bấm.


17

2. Thiết kế phần cứng
a. Sơ đồ khối

Chức năng của từng khối :
- Khối nguồn : cung cấp nguồn DC 5V cho toàn bộ hệ thống hoạt
động
- Khối xử lý trung tâm : sử dụng chip AT89S52
Xử lý mọi công việc của hệ thống, đọc tín hiệu từ khối Reset, bàn
phím, đưa dữ liệu ra khối hiển thị.
Lưu trữ dữ liệu của hệ thống.
- Khối tạo dao động : tạo dao động cho IC AT89S52 hoạt động


18

- Khối Reset : Reset lại hệ thống về trạng thái ban đầu
- Khối bàn phím : thay đổi dữ liệu

- Khối hiển thị: hiện thị dữ liệu
b. Xây dựng phần mềm (chương trình nguồn)
Chương trình nguồn được viết bằng ngôn ngữ Assembly, là chương
trình điều khiển hoạt động của IC AT89S52.
Chương trình chi tiết được in cuối phục lục
c. Thiết kế và hiện thực hóa phần cứng
Sử dụng phần mềm Altium Designer để thiết kế phần cứng gồm có :
+ Thiết kế sơ đồ nguyên lý
+ Thiết kế mạch in
+ Dựng mô hình 3D mạch thực trên máy tính

Sơ đồ nguyên lý :


19

Tác dụng và nguyên lý hoạt động của các khối trong sơ đồ nguyên lý:
+ Khối nguồn (POWER DC 5V) : Cung cấp nguồn một chiều 5V
cho toàn bộ mạch hoạt động.
+ Khối tạo dao động (DAO ĐỘNG 12 MHz) : tạo dao động có tần
số 12MHz đưa đến IC
+ Khối RESET ( RESET ) : Reset lại toàn bộ mạch trở về trạng thái
ban đầu. AT89S52 được reset bằng cách giữ chân RST ở mức cao
tối thiểu là 2 chu kỳ máy, khi mạch RESET được cấp nguồn, tụ
hóa 10uF được nạp và xả qua điện trở 10k xuống đất nên chân
RST của IC vẫn giữ mức thấp, khi nhấn phím RESET chân RST
đưa lên mức cao và IC được reset về trạng thái ban đầu.
+ Khối bàn phím ( PHÍM NHẤN ): thay đổi thời gian.
Các phím được nối với các chân tương ứng của IC chân 13 đến
chân 17. Bình thường các chân này đều ở mức tích cực cao, khi

được đưa xuống mức tích cực thấp thông qua phím bấm thì sẽ
thực hiện chức năng như trong chương trình nguồn đã lập trình.
+ Khối xử lý trung tâm(VI ĐIỀU KHIỂN) : sử dụng vi điều khiển
AT89S52 điều khiển mọi hoạt động của mạch. Khi được cấp
nguồn IC sẽ hoạt động, nhận tín hiệu điều khiển từ khối bàn
phím, điều khiển hoạt động của LCD và đưa dữ liệu lên hiển thị
trên LCD qua cổng P0.
+ Khối hiển thị( LCD 16x2 ): hiển thị dữ liệu từ AT89S52 gửi đến.


20

Sơ đồ mạch in:


21

Cách sử dụng mạch thực tế:
Sau khi cấp nguồn, mạch sẽ hoạt động, sử dụng 5 phím nhấn
SELECT/NEXT, BACK, OK, UP, DOWN để thay đổi các giá trị
thời gian theo ý mình mong muốn.
Khi mạch đang hoạt động bình thường nếu phím SELECT/NEXT
chưa được nhấn thì các phím còn lại không có tác dụng khi nhấn.
Để bắt đầu quá trình thay đổi thời gian ta thực hiện như sau:
- Nhấn phím SLECT/NEXT khi đó sẽ vào chương trình thay đổi thời
gian, màn hình LCD ban đầu sẽ hiển thị giờ, phút, giây và giá trị giờ
sẽ nhấp nháy, nghĩa là giá trị giờ đang được chọn để thay đổi. Nhấn
phím UP để tăng giờ và phím DOWN để giảm giờ đi một đơn vị.
Nếu nhấn giữ phím UP hoặc DOWN thì giá trị tăng giảm nhanh
hơn.

Để thay đổi phút ta nhấn phím SLECT/NEXT một lần nữa lúc này
giá trị phút trên màn hình LCD sẽ nhấp nháy và ta cũng sử dụng 2
phím UP và DOWN để tăng hoặc giảm phút…
Muốn quay lại thay đổi giá trị giờ thì ta nhấn phím BACK khi này
giá trị giờ sẽ được chọn và nhấp nháy.
Cứ như vậy khi ta nhấn phím SELECT/NEXT thì từng giá trị được
chọn để thay đổi sẽ nhấp nháy và phím BACK để quay lại giá trị
được chọn lúc trước.
Sau khi hoàn thành việc thay đổi thời gian, nhấn phím OK để xác
nhận kết thúc quá trình thay đổi thời gian.

3. Kết quả trên mạch mô phỏng và mạch thực tế
a. Kết quả mô phỏng trên máy tính
Sử dụng phần mềm Protus để mô phỏng:


22

Quá trình mô phỏng trên Protus đều đúng với lý thuyết, đảm bảo về
mặt thời gian và chức năng của đề tài yêu cầu.
b. Kết quả trên mạch thực tế
Mạch hoạt động ổn định đảm bảo đúng về lý thuyết, thời gian và
chức năng của đề tài yêu cầu.
c. So sánh giữa mô phỏng và thực tế
Mạch mô phỏng và mạch thực tế hoạt đông tương đối chính xác.
Mạch thực tế hoạt động đúng, chuẩn với thời gian thực, còn mạch mô
phỏng hoạt động ổn định nhưng xử lý chậm hơn thời gian thực tế.
Sử dụng máy mô phỏng Oscilloscope trong protus để kiểm tra quá
trình tạo thời gian 1s trên mạch mô phỏng, kết quả cho ra thời gian tạo
được 1s tương đối chính xác. Như vậy có thể nói mạch thực tế và mô

phỏng hoạt động không sai, nhưng do phần mềm nên mạch mô phỏng
hoạt động chậm hơn so với thời gian thực tế.


23

d. Ưu nhược điểm của thiết kế và hướng đi của đề tài
- Ưu điểm :
Đơn giản, dễ thực hiện, dễ sử dụng cũng như sửa chữa và
thay thế linh kiện.
- Nhược điểm :
Không giữ được thời gian thực khi cắt nguồn DC 5V.
- Hướng đi của đề tài:
Phát triển lên thành những ứng dụng liên quan đến thời gian
như : đồng hồ bấm giây, đồng hồ đếm ngược, đồng hồ hẹn giờ, lịch
van niên, âm lịch . . .

CHƯƠNG III: KẾT LUẬN
Qua đồ án môn học đã giúp chúng em nâng cao được về kỹ năng lập trình,
thiết kế, trình bày báo cáo, làm, sửa chữa và kiểm tra những vấn đề cơ bản trên


24

mạch thực tế. Cơ bản sử dụng thành thạo các phần mềm liên quan đến đề tài cần
sử dụng như :
-

Phần mềm viết chương trình nguồn : Notepad++
Phần mềm biên dịch chương trình : Keil uVision4

Phần mềm mô phỏng
: Protus
Phần mềm thiết kế phần cứng
: Altium Designer

Đối với đề tài : chúng em đã xây dựng được lưu đồ thuật toán, chương trình
nguồn, hiển thị đồng hồ số lên màn hình LCD theo đúng yêu cầu của đề tài.
Bên cạnh những việc đã làm được thì vẫn còn một vài việc chưa làm cho đề tài
được tối ưu như : Khi mạch hoạt động bình thường, nếu ngắt nguồn DC 5V ra
khỏi mạch thì mạch không giữ được thời gian thực đang chạy.
Hướng phát triển tiếp theo của đề tài :
- Giải quyết vấn đề đang còn tồn tại.
- Xây dựng các ứng dụng có liên quan đến thời gian, có thể ứng dụng
được trong thực tế.

Phục lục
Chương trình nguồn:
;==================== PROGRAM ===========================
;============= KHAI BAO CAC CHAN TIN HIEU ===============
RS
EQU
P2.0 ; CHAN DK LCD
RW
EQU
P2.2 ; CHAN DK LCD
EN
EQU
P2.4 ; CHAN DK LCD
DATABUS
EQU

P0
; CHAN DL LCD
SELECT
EQU
P3.3 ; KICH HOAT NGAT NGOAI


×