Để có thể hiển thị Thứ – Giờ – Phút - Giây trên led 7 đoạn ở dạng số thập phân, ta cần biến đổi dữ liệu thời gian ở dạng số HEX sang BCD. Mục đích của việc biến đổi này là để chỉ cần thực hiện việc so sánh thời gian thực tạo ra từ 0 đến 9 thay vì phải so sánh từ 0 đến 59.
Dữ liệu thời gian thực nằm trong 4 byte 1004h, 1005h, 1006h,1007h được viết sang vùng đệm gồm 4 byte 1050h, 1051h,1052h,1053h tương ứng trước khi biến đổi từ HEX sang BCD để hiển thị.
Qua khảo sát cụ thể 60 giá trị đầu của số HEX từ 0h đến 3Bh, tương ứng với số BCD có giá trị từ 0 đến 59 người viết thấy có qui luật biến đổi như sau:
GIA SOÁ | BCD | HEX | GIA SOÁ | BCD | ||
00 | 00 | 1E | 30 | |||
01 | 01 | 1F | 31 | |||
02 | 02 | 20 | 32 | |||
03 | 03 | 21 | 33 | |||
04 | 04 | 22 | 34 | |||
05 | + 00h | 05 | 23 | + 12h | 35 | |
06 | 06 | 24 | 36 | |||
07 | 07 | 25 | 37 | |||
08 | 08 | 26 | 38 | |||
09 | 09 | 27 | 39 | |||
0A | 10 | 28 | 40 | |||
0B | 11 | 29 | 41 | |||
0C | 12 | 2A | 42 | |||
0D | 13 | 2B | 43 | |||
0E | 14 | 2C | 44 | |||
0F | + 06h | 15 | 2D | + 18h | 45 | |
10 | 16 | 2E | 46 | |||
11 | 17 | 2F | 47 | |||
12 | 18 | 30 | 48 |
Có thể bạn quan tâm!
- Sơ Đồ Khối Mạch Điều Khiển Báo Hiệu.
- Lưu Đồ Tổng Quát Chương Trình Main
- Lưu Đồ Chi Tiết Chương Trình Hottime
- Mô Tả Hệ Thống Và Hướng Dẫn Sử Dụng:
- Ứng dụng CPU Z80 - Thiết kế và thi công hệ thống báo giờ tự động - 11
- Ứng dụng CPU Z80 - Thiết kế và thi công hệ thống báo giờ tự động - 12
Xem toàn bộ 105 trang tài liệu này.
19 | 31 | 49 | ||||
14 | 20 | 32 | 50 | |||
15 | 21 | 33 | 51 | |||
16 | 22 | 34 | 52 | |||
17 | 23 | 35 | 53 | |||
18 | 24 | 36 | 54 | |||
19 | + 0Ch | 25 | 37 | + 1Eh | 55 | |
1A | 26 | 38 | 56 | |||
1B | 27 | 39 | 57 | |||
1C | 28 | 3A | 58 | |||
1D | 29 | 3B | 59 |
Cách khởi tạo 8279:
HL,2001h | ||
LD | (HL),00000000B | ; Hiển thị 8 kí tự lối vào trái |
LD soá 3 cho 5 | (HL),00100101B | ; Chia tần số xung clock ở ngõ vào chân |
Lưu đồ chương trình hiển thị.
Hệ
BẮT ĐẦU
CẤT AF, BC, DE, HL VÀO STACK
ĐỊA CHỈ LED THỨ - 1
INC HL
ĐỊA CHỈ LED GIÂY +1 ?
LD A,(HL)
HỒI PHỤC AF, BC, DE,HL
A < 0Ah ?
KẾT THÚC A < 14h ? A A+06h
A < 1Eh ? A A + 0Ch
A < 28h ? A A + 12h
A < 32h ? A A + 18h
A < 3Ch ? A A + 1Eh
HIỂN THỊ
Hình 33 : LƯU ĐỒ CHƯƠNG TRÌNH DISPLAY
3.3.7- Chương trình con KEYPRO:
Mô tả chương trình :
BẮT ĐẦU
Hệ thống báo giờ tự động
Các chức năng Settime, đặt Hottime/Skiptime cần sử dụng bàn phím để thay đổi giờ, phút đến giá trị mong muốn và quan sát Giờ Phút đang thay đổi trên màn hình. Chương trình con KEYPRO nhằm phục vụ yêu cầu chung đó.
KEYPRO sẽ xử lý các tổ hợp phím “Ins_+”, “Ins_ -“ ,“Del/Date _ +”, “Del/Date _ -“ và các phím “+”, “-“,”OK”. Mỗi phím khi ấn sẽ tạo ra 1 giá trị và thực hiện 1 chức năng cho trong bảng sau:
GIÁ TRỊ | CHỨC NĂNG | |
Date_+ | 0Edh | Tăng thứ |
Date_- | 0EBh | Giảm thứ |
Ins_+ | 0FCh | Tăng giờ |
Ins_- | 0FAh | Giảm giờ |
+ | 0FDh | Tăng phút |
_ | 0FBh | Giảm phút |
OK | 0F7h | Lưu Giờ Phút và thoát |
Bảng 8: CHỨC NĂNG VÀ GIÁ TRỊ CÁC PHÍM
Lưu ý: Các tổ hợp phím: ”Date_+” và “Date_-“, “Ins_+” và “Ins_-“ được tạo ra do ấn phím “+” hay ”-“ trong khi ấn và giữ phím “Ins”, “Date”. Vì bàn phím được thiết kế như là vùng nhớ có địa chỉ từ 4000h đến 4FFFh nên khi đọc bàn phím, chương trình con KEYPRO thực hiện lệnh đọc bộ nhớ tại địa chỉ 4000h hay lớn hơn (giới hạn trong vùng nhớ cho phép) với chu kỳ khoảng 175mS. Khoảng thời gian đó là đủ để chống dội cho phím được ấn đồng thời để quan sát được Giờ Phút đang thay đổi liên tục khi người sử dụng ấn và giữ phím “+” hay “-“. Mỗi khi có phím được ấn (ngoại trừ phím” OK”) nghĩa là thứ, giờ, phút đã có sự thay đổi, KEYPRO sẽ nhờ chương trình con DISPLAY hiển thị giờ phút đã thay đổi.
Chương trình triệu gọi KEYPRO phải truyền cho KEYPRO địa chỉ bộ nhớ để ghi giờ phút đã thay đổi, địa chỉ này phải đặt trong thanh ghi HL.
Lưu đồ chi tiết:
CẤT BC VÀO STACK
HIỂN THỊ THỚI GIAN ĐANG THAY ĐỔI
ĐỌC BÀN PHÍM
LẤY BC TỪ STACK
Y Y
TĂNG THỨ ? THỨ + 1 THỨ = 9 ? THỨ = 2 N N
Y Y
GIẢM THỨ ? THỨ – 1 THỨ = 1 ? THỨ = 8 N N
Y Y
TĂNG GIỜ ? GIỜ + 1 GIỜ = 24 ? GIỜ = 0 N N
Y Y
GIẢM GIỜ ? Giờ -1 GIỜ = -1 ? GIỜ = 23 N N
Y Y
TĂNG PHÚT ? PHúTù + 1 PhùúT = 60 ? PhúT = 0 N N
Y Y
GIẢM PHÚT ? PhúT –1 PhúT = -1 ? PhúT = 59 N N
N
PHẢI OK ?
Y
GHI THỜI GIAN THỰC VÀO BỘ NHỚÙ
KẾT THÚC
Hình 34 : LƯU ĐỒ CHI TẾT CHƯƠNG TRÌNH KEYPRO
3.3.8- Chương trình con ERROR.
Mô tả chương trình
Nhằm báo lỗi cho người sử dụng biết những lỗi như: xóa Hottime/Skiptime rỗng, thêm Hottime/Skiptime thứ 11.
Nhấn phím “OK” để bỏ lỗi (thoát khỏi ERROR)
Thông báo lỗi bằng cách chớp tắt chữ ERROR trên đèn hiển thị.
Lưu đồ:
BẮT ĐẦU
Lưu đồ chương trình ERROR như sau:
CẤT AF, BC, DE, HL VÀO STACK
HIỂN THỊ “ERROR”
TRÌ HOÃN
ĐỌC PHÍM
Y
PHẢI OK ?
N TẮT LED
TRÌ HOÃN
PHỤC HỒI AF ,BC, DE, HL TỪ STACK
KẾT THÚC
Hình 35 : LƯU ĐỒ CHI TIẾT CHƯƠNG TRÌNH ERROR
Tóm lại
Toàn bộ phần mềm được thiết kế để đáp ứng cho yêu cầu và mục đích của đề tài. Hệ Thống báo giờ tự động sử dụng các chương trình:
Chương trình MAIN để khởi động hệ thống, so sánh thời gian thực với các Restime, Hotime, Skiptime và thứ trong tuần để ra quyết định báo hiệu và điều khiển báo hiệu.
Chương trình RTP (Real Time Program) để tạo thời gian thực
Chương trình SETTIME phục vụ cho chỉnh sửa thời gian thực.
Chương trình HOTTIME phục vụ cho việc đặt thời điểm báo hiệu đột xuất.
Chương trình SKIPTIME phục vụ cho đặt thời điểm cấm báo hiệu.
Chương trình con KEYPRO xử lí bàn phím để phục vụ cho Settime, Hottime, Skiptime.
Chương trình con DISPLAY phục vụ cho hiển thị thời gian thực.
Chương trình con ERROR để thông báo lỗi cho người sử dụng.
IV- Thi công.