Tải bản đầy đủ (.doc) (42 trang)

báo cáo mạch đếm giờ

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 (491.05 KB, 42 trang )

MỤC LỤC
Trang web tham khảo :................................................................................42

A. PHẦN MỞ ĐẦU
1. Đặt vấn đề
Xuất phát từ xu thế hội nhập và toàn cầu hoá. Việc tiếp nhận những công
nghệ mới trong đó khoa học kỹ thuật là yếu tố khách quan và tất yếu để khẳng
định sự hưng thịnh của một quốc gia nói chung và của từng đơn vị lĩnh vực nói
riêng, giáo dục không nằm ngoài quy luật đó, việc ứng dụng khoa học kỹ thuật
trong giáo dục thể hiện sự lớn mạnh và trưởng thành trong công cuộc công
nghiệp hóa hiện đại hóa.
Hiện nay đã có rất nhiều ứng dụng khoa học được triển khai trong học tập và
giảng dạy tuy nhiên còn nhiều hạn chế do hầu hết những thiết bị đã được triển
khai hầu hết là các sản phẩm của thị trường chi phí cao và thiếu tính chủ động
trong sửa chữa và lắp đặt triển khai. Do đó thiết kế thiệt bị tính giờ phục vụ thi
thực hành trong các trường đại học là một ứng dụng thiết thực với chi phí thấp
hơn, đồng thời với vai trò là một trường kỹ thuật có sẵn linh kiện và các công cụ
thực hành, có thể chủ động trong chế tạo phục vụ nhu cầu lắp đặt và sử dụng.
Thực tế trong quá trình thi thực hành hay thi vấn đáp, quá trình coi thi và
quản lý thời gian thi còn gặp nhiều khó khăn do đó để khắc phục cũng như cải
tiến vấn dề này thi việc ứng dụng thiết bị báo giờ tự động thông minh sẽ giải
quyết những vấn đề đặt ra và nâng cao chất lượng các cuộc thi.
2. Phân tích đề tài
Trước tiên chúng ta phải xác định rõ đặc điểm và yêu cầu của bài toán

1


Đặc điểm:
- Thiết bị báo giờ được sử dụng trong các giờ kiểm tra thực hành, và thi vấn đáp
trong trường Đại Học Kỹ Thuật - Hậu Cần CAND.


- Thiết bị có khả năng chỉnh lại giờ.
- Thiết bị có khả năng dừng tạm thời.
Yêu cầu:
- Hệ thống làm việc ổn định.
- Có khả năng đưa vào ứng dụng trong thực tế.
Với thực tế bài toán này chúng ta phải thiết kế 3 thành phần cơ bản:
- Hệ thống điều khiển.
- Màn hình hiển thị và đèn báo (chuông báo).
- Hệ thống bàn phím.
3. Phạm vi của đề tài và phương hướng mở rộng
Do thời gian đề tài có hạn, kiến thức chuyên ngành và điều kiện cơ sở vật chất
phục vụ cho việc nghiên cứu còn hạn chế nên đề tài thiết kế thiết bị tính giờ phục
vụ thi thực hành và kiểm tra vấn đáp của chúng tôi chỉ nghiên cứu và phục vụ
cho các giờ kiểm tra thực hành và thi vấn đáp trong Trường Đại học Kỹ thuật Hậu cần CAND.
Phương hướng mở rộng của đề tài:
- Hiện tại, đề tài chỉ được nghiên cứu để áp dụng trong Trường Đại Học Kỹ
Thuật - Hậu Cần CAND. Đề tài sẽ được nghiên cứu thêm để áp dụng cho tất cả
các trường đại học, cao đẳng, trung cấp có các môn thi vấn đáp và thực hành
trong phạm vi cả nước.
- Thiết kế Module điều chỉnh bằng quét phím ma trận hoặc giao tiếp bàn phím
máy tính có thể lập trình thời gian theo ý muốn của từng khoa, từng trường.
- Xây dựng hệ thống đèn báo kèm theo chuông báo không dây sử dụng bộ thu
phát sóng.

2


B. PHẦN NỘI DUNG
CHƯƠNG 1. KHẢO SÁT QUY TRÌNH THI THỰC HÀNH VÀ THI VẤN
ĐÁP TẠI TRƯỜNG ĐẠI HỌC KT - HC CAND.

1.1. Khảo sát quy trình thi
1.1.1. Đối tượng điều tra
Các học phần, các môn học của các khoa: K2( Khoa Công Nghệ Thông
Tin), K3( Khoa Điện Tử Viên Thông), K1( Khoa Mật Mã Và An ninh Thông
Tin), K4 ( Khoa Thư Lưu Trữ) và các bộ môn: B4( Bộ Môn Tiếng Anh).
1.1.2. Thống kê mô tả đối tượng điều tra
a. Khảo sát khoa điện tử viễn thông ( K3 )
Khoa K3 tổ chức thi thực hành và vấn đáp các học phần: vật liệu và linh kiện
điện tử, kỹ thuật vi xử lý, multimedia, hệ thống viễn thông, hệ thống thông tin
quang, hệ thống bộ đàm, hệ thống thông tin di động… tại phòng thực hành tại
nhà 301, 302, 303 nhà D.
Quy trình thi do khoa K3 được tổ chức theo kế hoạch như sau:
Một phần thi kéo dài trong 30 Phút bao gồm:
- Phần bốc đề: Học viên bốc thăm hoặc giáo viên chấm thi lựa chọn ngẫu nhiên
1 trong số đề thi được đưa ra.
- Phần chuẩn bị của học viên theo nội dung đề thi cho trước: thời gian 10 phút.
3


- Phần trả lời câu hỏi( Thực hành hoặc trả lời theo yêu cầu của giáo viên chấm
thi): thời gian 20 phút.
- Kết thúc phần thi.
b. Khảo sát khoa công nghệ thông tin ( K2 )
Khoa K2 tổ chức thi thực hành với máy tính tại các phòng máy 402 nhà
D6,402,403 nhà D4 gồm các học phần: hệ điều hành, thực tập cơ sở, lập trình
web, thiết kế và đánh giá hiệu năng mạng máy tính, bảo trì hệ thống máy tính…
Một phần thi kéo dài trong 30 đến 40 phút tùy theo thi thực hành hoặc thi hết
học phần bao gồm:
- Phần bốc đề của học viên.
- Phần chuẩn bị của học viên: Thời gian 20 đến 30 phút.

- Phần chấm điểm và đặt câu hỏi thêm của giáo viên chấm thi: Thời gian 10
phút.
(Lưu ý: Trong thời gian làm bài có thể xảy ra sự cố thì dừng thời gian làm bài để
sửa chữa máy tính bị lỗi ).
- Kết thúc phần thi.
c. Khảo sát bộ môn bộ môn tiếng anh ( B4 )
Các học phần thi thực hành bao gồm: tiếng anh II, tiếng anh chuyên ngành I,
tiếng anh chuyên ngành II.
Một phần thi thực hành sẽ được tiến hành trong thời gian 35 phút bao gồm:
- Học viên bốc đề: Học viên bốc ngẫu nhiên trong số đề thi được đưa ra.
- Học viên về vị trí chuẩn bị câu trả lời: thời gian 15 phút.
- Giáo viên gọi học viên lên làm bài thi.
- Học viên trả lời theo topic đã bốc( Giáo viên hỏi thêm câu hỏi theo topic của
học viên đã bốc): Thời gian 20 phút.
- Kết thúc bài thi.
d. Khảo sát khoa mật mã và an ninh thông tin ( K1 )
Các học phần thi thực hành: tin học văn phòng, máy mã thoại,..vv.
Một phần thi thực hành trên phòng mật mã bao gồm quy trình như sau:
- Giáo viên phát đề cho học viên.
- Học viên làm bài theo yêu cầu của đề thi yêu cầu: Thời gian 20 phút.
- Giáo viên chấm thi chấm bài trong thời gian học viên thục hành.
- Kết thúc phần thi.
e. Khảo sát khoa văn thư lưu trữ ( K4 )
4


Khoa K4 tổ chức thi thực hành trên máy tính với các học phần: kỹ thuật soạn
thảo văn bản trên máy tính, nghiệp vụ lưu trữ, quản trị văn phòng...vv, tính thời
gian theo quy trình như sau:
- Giáo viên phát đề cho từng học viên hoặc học viên bốc đề thi.

- Học viên làm bài thi: thời gian kiểm tra là 20 phút, thời gian thi hết học phần
là 30 phút.
- Học viên rời khỏi vị trí làm bài, giáo viên chấm bài thi.
1.2. Kết quả khảo sát
Qua khảo sát các khoa và bộ môn nhóm tổng hợp quy trình thi của từng
khoa, bộ môn được phỏng vấn lấy ý kiến theo bảng biểu như sau:

Khoa – Bộ
Môn

Quy Trình Thi

Thời
Gian

Tổng
Thời
gian thi

Phần bốc đề
K3
Khoa điện tử
viễn thông

Phần chuẩn bị

10 phút

Phần làm bài thi


20 phút

30 phút

Ghi chú

Trong quá trình thực
hành dụng cụ thiết
bị có sự cố thí sinh
tạm dừng thời gian
thi.

Kết thúc bài thi
Phần bốc đề
K2
Khoa công
nghệ thông tin

Phần làm bài thi

20-30
phút

Phần chấm thi và
trả lời câu hỏi thêm 10 phút
của giáo viên.
Học viên bốc đề.
Học viên về vị trí
chuẩn bị câu trả 15 phút
lời.


5

30-40
phút

Trong thời gian thi
máy tính bị lỗi học
viên dừng bài thi để
giáo viên sửa lỗi
máy, tiếp tục bài thi
sau khi máy hoạt
động bình thường
trở lại.


Bộ môn tiếng
anh

Phút
Giáo viên gọi học
viên lên làm bài
thi.

Học viên trả lời
theo topic đã bốc 20 phút
(Trả lời câu hỏi
thêm của giáo
viên).


Giáo viên phát đề
cho từng học viên
hoặc học viên bốc
đ ề thi.
K4
Khoa văn thư
lưu trữ

Học viên làm bài 20 phút
thi

20-30
phút

Học viên rời khỏi
vị trí làm bài, giáo
viên chấm bài thi.

K1
Khoa mật mã
và an ninh
thông tin

Thời gian kiểm tra
là 20 phút, thời gian
thi hết học phần là
30 phút.

Giáo viên phát đề
cho học viên.

Học viên làm bài
theo yêu cầu của
đề thi kết hợp giáo
viên chấm bài thi 20 phút
của học viên trong
khi làm bài.

20 phút

Trong quá trình thi
thiết bị gặp sự cố
học viên tạm dừng
phần thi, sau khi sửa
chữa, học viên tiếp
tục làm bài.

Kết thúc bài thi

1.3. Xây dựng phương án
Sau quá trình nghiên cứu khảo sát quy trình thi của các khoa, bộ môn
chúng tôi nhận thấy trong các kì thi của mỗi khoa bộ môn lại có những yêu cầu
6


và hình thức khác nhau do đó mỗi môn thi lại có nhưng quy trình thi khác nhau
được chia theo những khoảng thời gian khác nhau. Từ thực tế đó, cùng với yêu
cầu ứng dụng vào thực tế phục vụ quá trình thi cử trong trường, nâng cao hiệu
quả đào tạo chúng tôi quyết định lựa chọn phương pháp dùng vi điều khiển kết
hợp sử dụng ngôn ngữ lập trình để có thể thay đổi các khoảng thời gian cũng
như quy trình thi phù hợp với mỗi kỳ thi của từng khoa bộ môn đảm bảo tính

ứng dụng và linh hoạt trong quá trình sử dụng thiết bị báo giờ.

CHƯƠNG 2. THIẾT KẾ HỆ THỐNG
2.1. Sơ đồ tổng quát
2.1.1. Sơ đồ khối:
Khối nguồn

Thông
báo

Nút
nhấn

Vi SỬ LÝ
AT89C52

Hiển Thị
LCD 16x2

Hình 2.2.1: Sơ đồ khối
2.1.2. Chức năng các khối
-

Khối nguồn: Cung cấp nguồn nuôi tất cả linh kiện trong mạch.

Khối điều chỉnh: Chức năng của khối này là sử dụng ngắt của 89C52 để
yêu cầu việc điều chỉnh time theo ý của người sử dụng, cài đặt time ban đầu cho
đồng hồ. Tác động bởi các phím bấm (BUTTON).
- Khối đèn báo: Khối này gồm có 1 LED, đèn sáng khi có mức điện áp thay
đổi liên tục ở chân ra của vi điều khiển.

- Khối hiển thị: Khối này thực chất là LCD 16x2 để hiển thị time và các
thông tin mà lập trình viên cần hiển thị.

7


- Khối xử lý (vi điều khiển AT89C52): Vi điều khiển 89C52 là trung tâm xử
lý các thông tin của mạch. Cụ thể là :
AT89C52 đảm nhiệm việc đọc thời gian, chuyển đổi dữ liệu qua lại giữa RTC
với LCD để có thể hiển thị lên LCD.
Điều khiển LCD
Kiểm tra phím bấm
Điều khiển đèn LED
2.2. Các linh kiện sử dụng trong mạch
2.2.1. Giới thiệu về AT89C52
AT89C52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩm
AT89C52 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 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. Nó cung cấp những hổ trợ mở
rộng trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho
phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.
AT89C52 cung cấp những đặc tính chuẩn như: 8Kbyte bộ nhớ chỉ đọc có
thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3 TIMER/
COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán
song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.
Các đặc điểm của chip AT89C52 được tóm tắt như sau:
- 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
- Tần số hoạt động từ: 0Hz đến 24 MHz
- 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.
- 4 bit cho hoạt động nhân hoặc chia
a. Sơ đồ khối của AT89C52

8


Sơ đồ chân AT89C52

AT89C52

b. Mô tả chân AT89C52
Mặc dù các thành viên của họ 89C52 (ví dụ 8751, 89S52, 80C51, DS5000)
đều có các kiểu đóng vỏ khác nhau, chẳn (Quad Flat Pakage) và dạng chip không
có chân đỡ LCC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức
năng khác nhau như vào ra I/O, đọc RD giới hạn như hai hàng chân DIP (DualIn
- LinePakage), dạng vỏ dẹt vuông QPF, ghi WR, địa chỉ, dữ liệu và ngắt. Cần
phải lưu ý một số hãng cung cấp một phiên bản 89C52 có 20 chân với số cổng
vào ra ít hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên vì hầu hết các nhà
phát triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập
trung mô tả phiên bản này.

Hình 2.2.1.b1. Sơ đồ AT89C52

9



Chức năng của các chân AT 89C52
- Port 0: từ chân 32 đến chân 39 (P0.0 ÷ P0.7). Port 0 có 2 chức năng: 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 thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và
bus dữ liệu.
- Port 1: từ chân 1 đến chân 9 (P1.0 ÷ P1.7). Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần.
- Port 2: từ chân 21 đến chân 28 (P2.0 ÷ P2.7). Port 2 là một port có tác dụng
kép 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.
- Port 3: từ chân 10 đến chân 17 (P3.0 ÷ P3.7). Port 3 là port có tác dụng kép.
Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ
đến các đặc tính đặc biệt của AT89C52 như ở bảng sau:

Bit

Tên

Chức năng chuyển đổi

P3.0

RXD

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

P3.1

TXD


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

P3.2

INT0

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

P3.3

INT1

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

P3.4

T0

Ngõ vào TIMER/ COUNTER thứ 0

P3.5

T1

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

P3.6

WR


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

P3.7

RD

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

- PSEN (Program store enable): PSEN là tín hiệu ngõ ra có tác dụng cho phép
đọc bộ nhớ chương trình mở rộng và thường được nối đến chân OE của Eprom
cho phép đọc các byte mã lệnh. PSEN ở mức thấp trong thời gian AT89C52 lấy
lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được
chốt vào thanh ghi lệnh bên trong AT89C52 để giải mã lệnh. Khi AT89C52 thi
hành chương trình trong ROM nội, PSEN ở mức cao.
- ALE (Address Latch Enable): Khi AT89C52 truy xuất bộ nhớ bên ngoài, Port
0 có chức năng là bus địa chỉ và 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
10


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 ở 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.
- EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức
1 hoặc mức 0. Nếu ở mức1, AT89C52 thi hành chương trình từ ROM nội. Nếu ở
mức 0, AT89C52 thi hành chương trình từ bộ nhớ mở rộng. Chân EA được lấy
làm chân cấp nguồn 21V khi lập trình cho Eprom trong AT89C52.
- RST (Reset): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 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 phải tự động reset. Các giá trị tụ và điện trở được chọn là:
R1=10Ω, R2=220Ω, C=10 µF được mô tả trong hình 2.2.1-b2.

Hình 2.2.1-b2 - Sơ đồ chân RST
- Các ngõ vào bộ dao động X1, X2: Bộ tạo dao động được tích hợp bên trong
89C52. Khi sử dụng 89C52, người ta chỉ cần nối thêm thạch anh và các tụ. Tần
số thạch anh tùy thuộc vào mục đích của người sử dụng, giá trị tụ thường được
chọn là 33p.

Hình 2.2.1- b3 Ngõ vào bộ dao động
c. Các chế độ đặc biệt
Chế độ nghỉ

11


Trong chế độ nghỉ, CPU tự đi vào trạng thái ngủ trong khi tất cả các ngoại
vi bên trong chip vẫn tích cực. Chế độ này được điều khiển bởi phần mềm. Nội
dung của RAM trên chip và của tất cả các thanh ghi chức năng đặc biệt vẫn
không đổi trong khi thời gian tồn tại chế độ này. Chế độ nghỉ có thể được kết
thúc bởi một ngắt bất kỳ nào được phép hoặc bằng cách reset cứng.
Ta cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip vi
điều khiển sẽ tiếp tục bình thường việc thực thi chương trình từ nơi chương trình
bị tạm dừng, trong vòng 2 chu kỳ máy trước khi giải thuật reset phần mềm nắm
quyền điều khiển.
Ở chế độ nghỉ, phần cứng trên chip cẫm truy xuất RAM nội nhưng cho
phép truy xuất các chân của các port. Để tránh khả năng có một thao tác ghi
không mong muốn đến một chân port khi chế độ nghỉ kết thúc bằng reset, lệnh
tiếp theo yêu cầu chế độ nghỉ không nên là lệnh ghi đến chân port hoặc đến bộ
nhớ ngoài.

Chế độ nguồn giảm
Trong chế độ này, mạch dao động ngừng hoạt động và lệnh yêu cầu chế độ
nguồn giảm là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi
chức năng đặc biệt vẫn duy trì các giá trị của chúng cho đến khi chế độ nguồn
giảm kết thúc. Chỉ có một cách ra khỏi chế độ nguồn giảm, đó là reset cứng.
Việc reset sẽ xác định lại các thanh ghi chức năng đặc biệt nhưng không
làm thay đổi RAM trên chip. Việc reset không nên xảy ra (chân reset ở mức tích
cực) trước khi Vcc được khôi phục lại mức điện áp bình thường và phải kéo dài
trạng thái tích cực của chân reset đủ lâu để cho phép mạch dao động hoạt động
trở lại và đạt trạng thái ổn định.
Trạng thái của các chân trong thời gian tồn tại chế độ nghỉ và chế độ nguồn
giảm được cho trong bảng sau:
Bộ nhớ

AL
E

PSE
N

PORT
O

PORT
1

PORT
2

PORT

3

Bên trong

1

1

Dữ liệu

Dữ liệu

Dữ liệu

Dữ liệu

Nghỉ

Bên ngoài

1

1

Thả nổi

Dữ liệu

Dữ liệu


Dữ liệu

Nguồn

Bên trong

0

0

Dữ liệu

Dữ liệu

Dữ liệu

Dữ liệu

Bên ngoài

0

0

Thả nổi

Dữ liệu

Dữ liệu


Dữ liệu

Chế độ

Chương
trình

Nghỉ

12


d. Các bít khoá bộ nhớ chương trình
Trên chip có ba bit khoá, các bít này có thể không cho phép lập trình hoặc
cho phép lập trình, các bit này cho ta thêm một số đặc trưng nữa của AT89C51
như sau. Khi bit khoá 1 LB1 được lập trình, mức logic ở chân
được lấy mẫu
và được chốt trong khi reset. Nếu việc cấp nguồn cho chip không có công dụng
reset, mạch chốt được khởi động bằng một giá trị ngẫu nhiên và giá trị này được
duy trì cho đến khi có tác động reset. Điều cần thiết là giá trị được chốt của
phải phù hợp vơi mức logic hiện hành ở chân này.
Các bit khóa chương trình
Chế độ LB1

LB2

LB3

Loại bảo vệ


1

U

U

U

Không có đặc trưng khóa chương trình

2

P

U

U

Các lệnh MOVC được thực thi từ bộ nhớ
chương trình ngoài không được phép tìm nạp
lệnh từ bộ nhớ nội,
được lấy mẫu và được
chốt khi reset, hơn nữa việc lập trình trên
Flash bị cấm

3

P

P


U

Như chế độ 2, cấm thêm việc kiểm tra
chương trình

4

P

P

P

Như chế độ 3, cấm thêm việc thực thi chương
trình ngoài

e. Tóm tắt tập lệnh của AT89C52
Tập lệnh AT89C52 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và 24
lệnh 3 byte.
Các chế độ định địa chỉ:
Địa chỉ thanh ghi, Địa chỉ trực tiếp, Địa chỉ gián tiếp, Địa chỉ tức thời, Địa
chỉ tương đối, Địa chỉ tuyệt đối, Địa chỉ dài.
Các nhóm lệnh của AT89C52:
Nhóm lệnh số học:
ADD A,soure: cộng toán hạng vào A
SUBB A,soure: trừ bớt A bởi toán hạng nguồn
INC A: tăng giá trị A lên 1
DEC A: giảm A xuống 1


13


MUL AB: nhân A với B
DIV AB: chia A bởi B
DA ; hiệu đính
Nhóm lệnh logic.
ANL A,soure : lệnh nhân logic
ORL A,soure : lệnh cộng logic
XRL A,soure : lệnh xor logic
RL A : quay trái
RR A : quay phải
CLR A : xóa A
Nhóm lệnh di chuyển dữ liệu:
MOV A,soure : di chuyển toán hạng nguồn đến đích.
MOVC A,@A+DPTR: di chuyển từ bộ nhớ chương trình.
MOVX A,@Ri: di chuyển từ bộ nhớ dữ liệu
PUSH direct: cất vào stack
POP direct: lấy ra stack
XCH A,soure : trao đổi các byte.
XCHD A,@Ri: trao đổi các digit thấp.
Nhóm lệnh rẽ nhánh:
ACALL addr: gọi chương trình con
RET: quay chương trình con
RETI: quay về từ chương trình phục vụ ngắt
JMP addr: lệnh nhảy
CJNE A, direct, rel: so sánh và nhảy
2.2.2. Giới thiệu LCD
LCD được giới thiệu gồm 14 chân (hình 2.2.2).


14


Hình 2.2.2 Màn hình hiển thị LCD

a. Chức năng các chân của Module LCD 16x2

Chân
số


hiệu

Mức
logic

I/O

Chức năng

1

Vss

-

-

Nguồn cung cấp(GND)


2

Vdd

-

-

Nguồn cung cấp(+5V)

3

Vee

-

I

Điện áp để điều chỉnh độ tương phản

4

RS

0/1

I

Lựa chọn thanh ghi
0= thanh ghi lệnh

1=thanh ghi dữ liệu

5

R/W

0/1

I

0=ghi vào LCD module
1=đọc từ LCD module

6

E

1,1=>0

I

7

DB1

0/1

I/O

Tín hiệu cho phép

Data bus line 0 (LSB)
15


8

DB2

0/1

I/O

Data bus line 1

9

DB3

0/1

I/O

Data bus line 2

10

DB4

0/1


I/O

Data bus line 3

11

DB5

0/1

I/O

Data bus line 4

12

DB6

0/1

I/O

Data bus line 5

13

DB7

0/1


I/O

Data bus line 6

14

DB8

0/1

I/O

Data bus line 7 (MSB)

15

Vcc

-

-

Nguồn cung cấp

16

GND

-


-

mass

Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN.
- RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này cho phép
lựa chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc. Vì cả 2 thanh ghi này đều
được kết nối với các chân Data của LCD nên cần 1 bit để lựa chọn giữa chúng.
Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn.
Chúng ta đều biết thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu
muốn gởi 1 mã lệnh đến LCD thì chân RS phải được reset về 0. Ngược lại, khi
muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì chúng ta sẽ set RS=1 để
chọn thanh ghi DR. Hoạt động của chân RS được mô tả trong hình 2.2.2.a

Hình 2.2.2a: Hoạt động của chân RS.
- R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi. Nếu R/W=0 thì dữ liệu
sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD.
Nếu R/W = 1 thì dữ liệu sẽ được đọc từ LCD ra ngoài. Tuy nhiên, chỉ có duy
nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để
biết LCD có đang bận hay không (cờ Busy Flag - BF). Do LCD là một thiết bị
16


hoạt động tương đối chậm (so với vi điều khiển), vì thế một cờ BF được dùng để
báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xong nhiệm
vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD. Vì thế,
khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình con tạm
gọi là wait_LCD để chờ cho đến khi LCD rảnh. Có 2 cách để viết chương trình
wait_LCD. Cách 1 là đọc bit BF về kiểm tra và chờ BF=0, cách này đòi hỏi lệnh
đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộ điều

khiển ngoài. Cách 2 là viết một hàm delay một khoảng thời gian cố định nào đó
(tốt nhất là trên 1ms). Ưu điểm của cách 2 là sự đơn giản vì không cần đọc LCD,
do đó chân R/W không cần sử dụng và luôn được nối với GND. Tuy nhiên,
nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm
chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị.
- EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cần được
kết nối với bộ điều khiển để cho phép thao tác LCD. Để đọc và ghi data từ LCD
chúng ta cần tạo một “xung cạnh xuống” trên chân EN, nói theo cách khác,
muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất
dữ liệu đến các chân D0÷7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về
0 để tạo 1 xung cạnh xuống.
Để hiển thị chữ cái và con số, mã ASCII của các chữ cái từ A đến Z, a đến z và
các con số từ 0 ÷ 9 được gửi tới các chân D0 ÷ D7 khi RS = 1. Các mã lệnh
được gửi tới LCD để xóa màn hình hoặc đưa con trỏ về đầu dòng…( được liệt kê
trên bảng trên) thông các chân D0 ÷ D7. Có thế sử dụng RS = 0 để kiểm tra bit
cờ bận xem LCD đã sẵn sàng nhận thông tin chưa. Khi R/W = 1 và RS = 0: Nếu
D7 = 1 ( cờ bận bằng 1) - LCD đang bận các công việc bên trong và sẽ không
nhận thông tin, nếu D7 = 0 – LCD sẵn sàng nhận thông tin mới. Trong mọi
trường hợp cần kiểm tra cờ bận trước khi ghi bất kì dữ liệu nào lên LCD.
Các thanh ghi
- Thanh ghi IR: Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Chỉ việc
cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Ví dụ: Lệnh “hiển thị màn
hình và con trỏ” có mã lệnh là 00001110.
- Thanh ghi DR: Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM
DDRAM hoặc CGRAM ( ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM
này gửi ra cho MPU (ở chế độ đọc).
- Cờ báo bận BF: (Busy Flag) Khi đang thực thi các hoạt động bên trong, LCD bỏ
qua mọi giao tiếp với bên ngoài và bật cờ BF( thông qua chân DB7 khi có thiết lập
RS=0, R/W=1) lên để cho biết nó đang “bận”.
- Bộ đếm địa chỉ AC: (Address Counter) Khi một địa chỉ lệnh được nạp vào thanh

ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM (việc chọn lựa vùng RAM
tương tác đã được bao hàm trong mã lệnh). Sau khi ghi vào (đọc từ) RAM, bộ đếm
AC tự động tăng lên (giảm đi) 1 đơn vị. Bộ nhớ LCD Vùng RAM hiển thị

17


DDRAM: (Display Data RAM).
b. Mã lệnh của LCD HD4480
Mã lệnh
Lệnh

Xóa màn
hình

Đưa con
trỏ về vị
trí đầu

Thiết lập
chế độ

Bật tắt
hiển thị

Dịch con
trỏ hiển
thị

R

S

0

0

0

0

0

R/
W

0

0

0

0

0

Mô tả

Thời
gian
thi

hành

1

Xóa màn
hình đưa
con trỏ về
vị trí đầu

1.64m
s

x

Đưa con
trỏ về vị
trí đầu

D D D D D
D D D
B0 B1 B2 B3 B4 B5 B6 B7

0

0

0

0


0

0

0

0

0

0

0

0

0

0

0

0

0

0

0


0

0

0

1

1

S/
C

18

0

0

1

D

R/
L

0

1


I/
D

C

C

S

B

B

Thiết lập
hướng
dịch
chuyển
con
trỏ(I/D),
dịch hiển
thị(S)

Bật tắt
hiển thị,
con trỏ;
bật tắt chế
độ nhấp
nháy con
trỏ
Thiết lập

chiều dịch
chuyển
của con
trỏ và hiển

1.64m
s

40us

40us

40us


thị
Thiết lập
chức
năng

Thiết lập
địa chỉ
CGRAM
Thiết lập
địa chỉ
DDRAM

Đọc cờ
báo bận
và địa

chỉ
CGRAM
/
DDRAM

Ghi
CGRAM
/
DDRAM
Đọc
CGRAM
/
DDRAM

0

0

0

0

1

1

0

0


0

1

0

1

0

0

1

BF

0

1

1

D
L

N

F

C


CGRAM address

DDRAM address

CGRAM/ DDRAM address

Write data

Read data

19

B

Thiết lập
độ dài của
dữ liệu, số
dòng và
font chữ

40us

Thiết lập
địa chỉ
CGRAM

40us

Thiết lập

địa chỉ
DDRAM

40us

Đọc cờ
báo bận
và địa chỉ
của
CGRAM
hoặc
DDRAM(
tùy vào
lệnh trước
đó)
Ghi dữ
liệu vào
CGRAM
hoặc
DDRAM.
Đọc dữ
liệu từ
CGRAM
hoặc
DDRAM

40us

40us


40us


- Xóa LCD: lệnh này xóa toàn bộ nội dung DDRAM và vì thế xóa toàn bộ
hiển thị trên LCD. Vì đây là 1 lệnh ghi Instruction nên chân RS phải được reset
về 0 trước khi ghi lệnh này lên LCD. Mã lệnh xóa LCD là 0x01 (ghi vào D0 ÷
D7).
- Đưa con trỏ về vị trí đầu, dòng 1 của LCD: lệnh này thực hiện việc đưa con
trỏ về vị trí đầu tiên của bộ nhớ DDRAM, vì thế nếu sau lệnh này một biến được
ghi vào DDRAM thì biến này sẽ nằm ở vị trí đầu tiên (1;1). RS cũng phải bằng 0
trước khi ghi lệnh. Mã lệnh là 0x02 hoặc 0x03(chọn 1 trong 2 mã lệnh, tùy ý).
- Định vị trí con trỏ cho DDRAM: di chuyển con trỏ đến một vị trí tùy ý trong
DDRAM và vì thế có thể được dùng để chọn vị trí cần hiển thị trên LCD. Để
thực hiện lệnh này cần reset RS=0. Bit MSB của mã lệnh (D7) phải bằng 1, 7 bit
còn lại của mã lệnh chính là địa chỉ DDRAM muốn di chuyển đến. Ví dụ chúng
ta muốn di chuyển con trỏ đến vị trí thứ 3 trên dòng 2 của LCD (địa chỉ 42)
chúng ta cần ghi mã lệnh 0xAA vì 0xAA=10101010 (binary) trong đó bit MSB
bằng 1, bảy bit còn lại là 0101010 = 42 địa chỉ của ô nhớ muốn đến.
- Ghi dữ liệu vào CGRAM hoặc DDRAM: vì đây không phải là lệnh ghi
instruction mà là 1 lệnh ghi dữ liệu nên chân RS cần được set lên 1 trước khi ghi
lệnh vào LCD. Lệnh này cho phép ghi mã ASCII của một ký tự cần hiển thị vào
thanh ghi DDRAM. Trường hợp ghi vào CGRAM không được khảo sát.
- Xác lập các hiện thị liên tiếp cho LCD: nói một cách dễ hiểu, lệnh này chỉ ra
cách mà bạn muốn hiển thị một ký tự tiếp theo 1 ký tự trước đó. Ví dụ nếu bạn
muốn hiện thị 2 ký tự liên tiếp AB, trước hết bạn viết A tại vị trí 5, dòng 1. Sau
đó bạn ghi B vào LCD, lúc này có 4 cách mà LCD có thể hiển thị B như sau:
hiển thị B bên phải A tại vị trí số 6 (cách 1); B cũng có thể được hiển thị bên trái
A, tại vị trí số 4(cách 2); hoặc LCD có thể tự dịch chuyển A về bên trái đến vị trí
4 sau đó hiển thị B bên phải A, tại vị trí 5(cách 3); và khả năng cuối cùng là
LCD dịch chuyển A về bên phải đến vị trí 6 sau đó hiển thị B bên trái A, tại vị

trí 5(cách 4). Chúng ta có thể chọn 1 trong 4 cách hiển thị trên thông qua lệnh
Entry mode set. Đây là lệnh ghi Instruction nên RS=0, 5 bit cao D7:3=00000, bit
D2=1, hai bit còn lại D1: 0 chứa mã lệnh để lựa chọn 1 trong 4 cách hiển thị.
Xem lại bảng 2, bit D1 chứa giá trị I/D và D0 chứa S. Trong đó I/D nghĩa là tăng
hoặc giảm (Increment or Decrement). I/D= 1 là hiển thị tăng tức ký tự sau sẽ
hiển thị bên phải ký tự trước, nếu I/D=0 thì hiển thị giảm, tức ký tự sau hiển thị
bên trái ký tự trước. S là giá trị Shift, nếu S=1 thì các ký tự trước đó sẽ được
“đẩy” đi, ký tự sau chiếm chỗ ký tự trước, ngược lại nếu S=0 thì vị trí hiển thị
của các ký tự trước đó không thay đổi. Có thể tóm tắt 4 mode hiển thị ứng với 4
mã lệnh như sau:
D7:0 = 0x04 (00000100): hiển thị giảm và không shift (như cách 2 trong ví dụ).
D7:0 = 0x05 (00000101): hiển thị giảm và shift (như cách 4 trong ví dụ).
D7:0 = 0x06 (00000110): hiển thị tăng và không shift (như cách 1, khuyến

20


khích).
D7:0 = 0x07 (00000111): hiển thị tăng và shift (như cách 3 trong ví dụ).
Xác lập cách hiện thị cho LCD: lệnh này bao gồm các thông số cho phép
LCD hiển thị, cho phép hiển thị cursor và mở/tắt blinking. Đây cũng là một lệnh
ghi Instrcution nên RS phải bằng 0. Mã lệnh cho lệnh này có dạng 00001DCB
trong đó D (Display) cho phép hiển thị LCD nếu mang giá trị 1, C (Cursor) bằng
1 thì cursor sẽ được hiển thị và B là blinking cho cursor tại vị trí hiển thị
(blinking là dạng 1 ô đen nhấp nháy tại vị trí ký tự đang hiển thị). Mã lệnh được
dùng phổ biến cho lệnh này là 0x0E (00001110 - hiển thị cursor nhưng không
hiển thị blinking).
- Xác lập chức năng cho LCD: đây là lệnh thiết lập phương thức giao tiếp với
LCD, kích thước font chữ và số lượng line của LCD. RS cũng phải bằng 0 khi
sử dụng lệnh này. Mã lệnh function set có dạng 001D¬¬LNFxx. Trong đó nếu

DL=1 (DL: Data Length) thì mode giao tiếp 8 bit sẽ được dùng, lúc này tất cả
các chân từ D0 đến D7 phải được kết nối với bộ điều khiển ngoài. Nếu DL=0 thì
mode 4 bit được dùng, trong trường hợp này chỉ có 4 chân D4÷7 được dùng để
truyền nhận dữ liệu và kết nối với bộ điều khiển ngoài, các chân D0÷3 được để
trống. N quy định số dòng của LCD, vì chúng ta đang khảo sát LCD loại hiển thị
2 dòng nên N=1 (N=0 cho trường hợp LCD 1 dòng). F là kích thước font chữ
hiển thị, do LCD có 2 bộ font chữ có sẵn trong CGROM nên chúng ta cần lựa
chọn thông qua bit F, nếu F=1 bộ font 5x10 được sử dụng và nếu F=0 thì font
5x8 được hiển thị. 2 bit thấp trong mã lệnh này có thể được gán giá trị tùy ý. Mã
lệnh được dùng phổ biến cho lệnh function set là 0x38 (00111000 – giao tiếp 8
bit, 2 dòng với font 5x8 ) hoặc 0x28 (00101000 – giao tiếp 4 bit, 2 dòng với font
5x8 ). Ví dụ trong bài này sử dụng cả 2 mã lệnh trên.
c. Các bit viết tắt trong mã lệnh
Tên bit
I/D

Mô tả
0 = không dịch chuyển vị trí con trỏ

1 = dịch chuyển vị trí con
trỏ

S

0 = không dịch chuyển hiển thị

1 = dịch chuyển hiển thị

D


0 = tắt hiển thị

1 = bật hiển thị

C

0 = tắt con trỏ

1 = bật con trỏ

B

0 = con trỏ không nhấp nháy

1 = con trỏ nhấp nháy

S/C

0 = di chuyển con trỏ

1 = dịch chuyển hiển thị

R/L

0 = dịch trái

1 = dịch phải

21



DL

0 = chế độ 4bit dữ liệu

1 = chế độ 8bit dữ liệu

N

0 = 1 dòng

1 = 2 dòng

F

0 = font 5x7

1 = font 5x10

0 = không bận

1 = đang bận

BF

d. Mã Hex LCD
Mã Hex

Lệnh đến thanh ghi của LCD


1

Xoá màn hình hiển thị

2

Trở về đầu dòng

4

Giảm 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 hiển thị, tắt con trỏ

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 hiển thị, 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

Ép con trỏ về đầu dòng thứ nhất

C0

Ép con trỏ về đầu dòng thứ hai

22


38

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

*Module này không chiếm khối Digital, để chọn module này ta chỉ cần click
chọn trong mục Misc Digital
Module LCD được nối tới Port 2.
Các hàm API:
void LCD_Start (void);
void LCD_Init (void);
void LCD_Position (BYTE bRow, BYTE bCol);
void LCD_PrString (CHAR * sRamString);
void LCD_PrCString (const char * sRomString);
void LCD_PrHexByte (BYTE bValue);
void LCD_PrHexInt (INT iValue);

CHƯƠNG 3 : THIẾT KẾ MẠCH
3.1. Thuật toán
Bắt Đầu `


v

Lấy data từ AT86C52
Hiển thị lên LCD

Dò phím SET
Cbmin=

yes

yes
Dò phím SET
Cbsec=

yes
Dò phím SET
vdmin=

23

Set phút
chuẩn bị

Set giây chuẩn
bị

Set phút vấn
đáp



yes
Dò phím SET
vdsec=

No
Dò phím
lặp lại

yes

No

Chạy trễ
Cbtime

Set giây vấn đáp

Up
yes

BÁO ĐÈN

Tăng ô nhớ lên
1

Chạy trễ
vdtime

Đặt gt cho RTC


Đặt gt cho RTC

Giảm gt ô nhớ 1
yes

Down=
?

No

Hình 3.1: Sơ đồ thuật toán
3.2. Sơ đồ chi tiết các khối
Sau khi đã thiết kế sơ đồ khối của từng khối chúng ta bắt đầu đi thiết kế sơ
đồ nguyên lý cho từng khối như sau:
3.2.1. Khối nguồn
Nguồn cung cấp cho toàn mạch là +5v dc.

Hình 3.2.1a. Nguồn 5V

24


Ngoài ra có thể sử dụng mạch nguồn sử dụng vi mạch ổn áp 7805 với dòng 0.5
Mạch nguồn được thiết kế như sau:
D2

c o n n e c to r

+


S2
c o n g ta c

d io d e c a u

C1
100uF

1

U4
V IN

GND

1
2
3

-

2

J1

VOUT

3


LM 7805

VCC
D1

LED power
R2
220

Hình 3.2.1b. Mạch nguồn ổn áp 7805
Đối với role ta sử dụng nguồn nuôi riêng 12 V. Có thể điều chế theo nhiều cách
khác nhau. Đối với chuông ta sử dụng nguồn 220 mắc riêng rẽ.
3.2.2. Khối hiển thị LCD
LCD 16x2 và giao tiếp với vi điều khiển:

Hình 3.2.2a Sơ đồ khối hiển thị LCD

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×