1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

54 1,1K 19

Đ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

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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!

Trang 2

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

Trang 3

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

START

KHAI BÁO CÁC BIẾN, CÁC CỔNG SỬ DỤNG TRÊN IC

KHỞI TẠO LCD, NGẮT NGOÀI 1, NGẮT TIMER 0, CÁC GIÁ TRỊ BAN ĐẦU CHO THỜI GIAN

HIỂN THỊ THỜI GIAN LÊN LCDKHỞI ĐỘNG TIMER 0

Trang 4

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

KHAI BÁO CÁC BIẾN, CÁC 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 chip(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.

On-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, NGẮT NGOÀI 1, 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Ị THỜI GIAN LÊN LCDKHỞ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

Trang 5

d Khối kiểm tra DEM_S

DEM_S = 0?

KIỂM TRA THỜI GIAN

THAY ĐỔI THỜI GIAN

NO

YES

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

DEM_S=0? KIỂM TRA THỜI

GIAN

NHẤN BACK

YES

KIỂM TRA DEM_S

- 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

Trang 6

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:

+ 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).

Trang 7

THAY ĐỔI 2 SỐ CUỐI CỦA NĂM

Trang 8

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

- 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

Trang 9

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

Trang 11

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

Trang 12

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

Trang 14

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

1 Giới thiệu chung về phần cứng

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ý

Trang 15

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 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.

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

Trang 16

Mô tả chân của LCD

3 VEE - Nguồn điều khiển tương phản

4 RS I RS= 0: chọn thanh ghi lệnh

RS=1: chọn thanh ghi dữ liệu

5 R/W I R/W =0 : ghi dữ liệu vào LCD

R/W =1đọc từ LCD module

7 DB0 I/O Bus dữ liệu 8 bit

8 DB1 I/O Bus dữ liệu 8 bit

9 DB2 I/O Bus dữ liệu 8 bit

10 DB3 I/O Bus dữ liệu 8 bit

11 DB4 I/O Bus dữ liệu 8 bit

12 DB5 I/O Bus dữ liệu 8 bit

13 DB6 I/O Bus dữ liệu 8 bit

14 DB7 I/O Bus dữ liệu 8 bit

Trang 17

Mã(Hexa) Lệnh đến thanh ghi của LCD

1 Xóa màn hình hiển thị

2 Trở về đầu dòng

4 Giả con trỏ ( dịch con trỏ sang trái)

6 Tăng con trỏ (dịch con trỏ sang phải)

5 Dịch hiển thị sang phải

7 Dịch hiển thị sang trái

8 Tắt con trỏ, tắt hiển thị

A Tắt hiển thị, bật con trỏ

C Bật hiển thị, tắt con trỏ

E Bật hiển thị ,nhấp nháy con trỏ

F Tắt con trỏ, nhấp nháy con trỏ

10 Dịch vị trí con trỏ sang trái

14 Dịch vị trí con trỏ sang phải

18 Dịch toàn bộ hiển thị sang trái

1C Dịch toàn bộ hiển thị sang phải

80 Đưa con trỏ về đầu dòng thứ nhất

C0 Đưa con trỏ về đầu dòng thứ hai

38 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ẽ

Trang 19

- 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

- 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ý :

Trang 20

Tác dụng và nguyên lý hoạt động của các khối trong sơ đồ nguyên lý:

Trang 21

+ 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

Sơ đồ mạch in:

Trang 22

Cách sử dụng mạch thực tế:

Trang 23

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ế

Trang 24

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

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ế.

Trang 25

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

Trang 26

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 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ế.

Trang 27

DATABUS EQU P0 ; CHAN DL LCD

SELECT EQU P3.3 ; KICH HOAT NGAT NGOAI BACK EQU P3.4 ; PHIM THAY DOI THOI GIAN

OK EQU P3.5 ; PHIM THAY DOI THOI GIAN

UP EQU P3.6 ; PHIM THAY DOI THOI GIAN DOWN EQU P3.7 ; PHIM THAY DOI THOI GIAN

XY EQU 30H ; VI TRI CON TRO

DAY EQU 31H ; CHON NGAY HIEN THI

DEM_TIMER0 EQU 32H ; DEM SO LAN VAO NGAT

CD EQU 33H ; 2 SO DAU CUA NAM

EF EQU 34H ; 2 SO CUOI CUA NAM

TEMP EQU 35H ; BIEN LUU TRU CAC GIA TRI

Trang 28

MOV R3,#23 ;GIO

MOV R5,#10 ;THANG

MOV CD,#20 ;2 SO DAU CUA NAM

MOV EF,#10 ;2 SO CUOI CUA NAM

SETB EX1 ;CHO PHEP NGAT NGOAI 1

SETB IT1 ; NGAT NGOAI THEO SUON

;==================CAI DAT NGAT TRAN TIMER 0==============

; SETB EA DA KHAI BAO TRONG NGAT NGOAI

SETB ET0 ;CHO PHEP NGAT TRONG TIMER 0MOV TMOD,#01 ;TIMER 0 CHE DO 1

MOV TL0,#0BEH ;giai thich trong timer 0MOV TH0,#3CH

;=========IN CAC GIA TRI THOI GIAN KHOI TAO BAN DAU ======

Trang 30

MOV R4,#1THANG:

LJMP CHANGE_TIME ;NHAY DEN CHUONG TRINH THAY DOI TG

;==============HIEN THI SO BCD LEN LCD====================SHOW_BCD:

Trang 31

MOV A,XYMOV DATABUS,AACALL SEND_COMMANDMOV DATABUS,#' 'ACALL SEND_DATAMOV DATABUS,#' 'ACALL SEND_DATAACALL DELAY_SW

MOV DATABUS,AACALL SEND_COMMAND

ACALL SHOW_BCDACALL DELAY_SWRET

;========================================================POINTER_DAY:

PUSH DPHPUSH DPLMOV DATABUS,#0C0HACALL SEND_COMMANDMOV DPTR,#CHAR_SPACEACALL WRITE

ACALL DELAY_SWMOV DATABUS,#0C0HACALL SEND_COMMANDACALL DISPLAY_DAYACALL DELAY_SW

ACALL DISPLAY_DAYMOV DATABUS,#' 'ACALL SEND_DATA

Trang 32

MOV A,R4ACALL SHOW_BCDMOV DATABUS,#'-'ACALL SEND_DATA

ACALL SHOW_BCDMOV DATABUS,#'-'ACALL SEND_DATA

PUSH ACCMOV DATABUS,#0C4H ACALL SEND_COMMAND

ACALL SHOW_BCDMOV DATABUS,#':'ACALL SEND_DATA

ACALL SHOW_BCDMOV DATABUS,#':'ACALL SEND_DATA

Trang 33

SJMP EXIT_DAYTHU_2:

CJNE A,#02,THU_3MOV DPTR,#THU2ACALL WRITE

SJMP EXIT_DAYTHU_3:

CJNE A,#03,THU_4MOV DPTR,#THU3ACALL WRITE

SJMP EXIT_DAYTHU_4:

CJNE A,#04,THU_5MOV DPTR,#THU4ACALL WRITE

SJMP EXIT_DAYTHU_5:

CJNE A,#05,THU_6MOV DPTR,#THU5ACALL WRITE

SJMP EXIT_DAYTHU_6:

CJNE A,#06,THU_7MOV DPTR,#THU6ACALL WRITE

SJMP EXIT_DAYTHU_7:

CJNE A,#07,EXIT_DAYMOV DPTR,#THU7ACALL WRITE

Trang 34

MOV DATABUS,#0CHACALL SEND_COMMANDACALL DELAY

MOV DEM_S,#0LJMP EXIT_CHANGE_TIMEKT_DEM_S: ;QUAY VONG CHON GIA TRI THAY DOI

CJNE DEM_S,#0,DEM_S1MOV DEM_S,#8

LJMP LCD_PART2

CJNE DEM_S,#1,DEM_S2CJNE R6,#1,DEM_S11ACALL DISPLAY_CHANGE

DEM_S11:

MOV XY,#0C4HACALL POINTERACALL SCAN_UP

Ngày đăng: 20/02/2020, 14:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w